{"version":3,"file":"okta-sign-in.min.js","mappings":"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JC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJnyD,GAAI,MACJoyD,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ,MAAO,MACPC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MA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","sources":["webpack://OktaSignIn/webpack/universalModuleDefinition","webpack://OktaSignIn/./node_modules/@sindresorhus/to-milliseconds/index.js","webpack://OktaSignIn/./node_modules/parse-ms/index.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/_commonjsHelpers.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/backbone.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/base.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/block-helper-missing.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/create-new-lookup-object.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/decorators.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/each.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/exception.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/handlebars.runtime.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/helper-missing.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/helpers.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/if.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/inline.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/js.cookie.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/log.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/logger.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/lookup.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/no-conflict.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/proto-access.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/runtime.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/safe-string.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/underscore-min.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/utils.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/with.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/_virtual/wrapHelper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars.runtime.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/base.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/decorators.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/exception.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/logger.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/runtime.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/safe-string.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/utils.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/lib/underscore/underscore-min.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/CourageForSigninWidget.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/framework/Collection.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/framework/ListView.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/framework/Model.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/framework/View.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/models/BaseCollection.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/models/BaseModel.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/models/BaseSchema.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/models/Model.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/models/SchemaProperty.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/BaseController.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/BaseRouter.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/ButtonFactory.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Class.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Clipboard.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Cookie.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Keys.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Logger.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/SchemaUtil.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/SettingsModel.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/StateMachine.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/StringUtil.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/TemplateUtil.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Time.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/Util.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/ViewUtil.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/handle-url.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-base64.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-i18n.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-img.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-markdown.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-xsrfTokenInput.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/jquery-wrapper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/markdownToHtml.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/util/underscore-wrapper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/vendor/lib/backbone.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/vendor/lib/js.cookie.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/vendor/plugins/chosen.jquery.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/vendor/plugins/jquery.custominput.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/vendor/plugins/jquery.placeholder.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/Backbone.ListView.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/BaseView.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/components/BaseButtonLink.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/components/BaseDropDown.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/components/Callout.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/components/Notification.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/BaseForm.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/BaseInput.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/components/ReadModeBar.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/components/Toolbar.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/EnumTypeHelper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/ErrorBanner.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/ErrorParser.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/FormUtil.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputContainer.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputFactory.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputLabel.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputRegistry.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputWrapper.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/SchemaFormFactory.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/BooleanSelect.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/CheckBox.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/DeletableBox.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/InputGroup.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/PasswordBox.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/Radio.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/Select.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/TextBox.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/TextBoxSet.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/empty.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/index.js","webpack://OktaSignIn/./packages/@okta/courage-dist/esm/src/util/scrollParent.js","webpack://OktaSignIn/./packages/vendor/TypingDnaRecorder-JavaScript/typingdna.js","webpack://OktaSignIn/./packages/vendor/duo_web_sdk/index.js","webpack://OktaSignIn/./polyfill/index.js","webpack://OktaSignIn/./src/util/Animations.js","webpack://OktaSignIn/./src/util/ColorsUtil.js","webpack://OktaSignIn/./src/util/CookieUtil.js","webpack://OktaSignIn/./src/util/CountryUtil.js","webpack://OktaSignIn/./src/util/CryptoUtil.js","webpack://OktaSignIn/./src/util/Enums.js","webpack://OktaSignIn/./src/util/ErrorCodes.js","webpack://OktaSignIn/./src/util/FactorUtil.js","webpack://OktaSignIn/./src/util/FidoUtil.js","webpack://OktaSignIn/./src/util/Hooks.js","webpack://OktaSignIn/./src/util/IDP.js","webpack://OktaSignIn/./src/util/LanguageUtil.js","webpack://OktaSignIn/./src/util/Logger.js","webpack://OktaSignIn/./src/util/OAuth2Util.js","webpack://OktaSignIn/./src/util/TimeUtil.js","webpack://OktaSignIn/./src/util/Util.js","webpack://OktaSignIn/./src/util/countryCallingCodes.js","webpack://OktaSignIn/./src/util/webauthn.js","webpack://OktaSignIn/./src/v1/BaseLoginRouter.js","webpack://OktaSignIn/./src/v1/controllers/AccountUnlockedController.js","webpack://OktaSignIn/./src/v1/controllers/ActivateTotpController.js","webpack://OktaSignIn/./src/v1/controllers/AdminConsentRequiredController.js","webpack://OktaSignIn/./src/v1/controllers/BarcodePushController.js","webpack://OktaSignIn/./src/v1/controllers/BarcodeTotpController.js","webpack://OktaSignIn/./src/v1/controllers/ConsentRequiredController.js","webpack://OktaSignIn/./src/v1/controllers/CustomPasswordExpiredController.js","webpack://OktaSignIn/./src/v1/controllers/DeviceActivateController.js","webpack://OktaSignIn/./src/v1/controllers/DeviceActivateTerminalController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollActivateCustomFactorController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollActivateEmailController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollCallAndSmsController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollChoicesController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollCustomFactorController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollDuoController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollEmailController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollHotpController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollOnPremController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollPasswordController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollQuestionController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollSymantecVipController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollTotpController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollU2FController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollUserController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollWebauthnController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollWindowsHelloController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollYubikeyController.js","webpack://OktaSignIn/./src/v1/controllers/EnrollmentLinkSentController.js","webpack://OktaSignIn/./src/v1/controllers/EnterPasscodePushFlowController.js","webpack://OktaSignIn/./src/v1/controllers/ErrorStateController.js","webpack://OktaSignIn/./src/v1/controllers/ForceIDPDiscoveryController.js","webpack://OktaSignIn/./src/v1/controllers/ForgotPasswordController.js","webpack://OktaSignIn/./src/v1/controllers/IDPDiscoveryController.js","webpack://OktaSignIn/./src/v1/controllers/ManualSetupPushController.js","webpack://OktaSignIn/./src/v1/controllers/ManualSetupTotpController.js","webpack://OktaSignIn/./src/v1/controllers/MfaVerifyController.js","webpack://OktaSignIn/./src/v1/controllers/PasswordExpiredController.js","webpack://OktaSignIn/./src/v1/controllers/PasswordResetController.js","webpack://OktaSignIn/./src/v1/controllers/PollController.js","webpack://OktaSignIn/./src/v1/controllers/PrimaryAuthController.js","webpack://OktaSignIn/./src/v1/controllers/PwdResetEmailSentController.js","webpack://OktaSignIn/./src/v1/controllers/RecoveryChallengeController.js","webpack://OktaSignIn/./src/v1/controllers/RecoveryLoadingController.js","webpack://OktaSignIn/./src/v1/controllers/RecoveryQuestionController.js","webpack://OktaSignIn/./src/v1/controllers/RefreshAuthStateController.js","webpack://OktaSignIn/./src/v1/controllers/RegistrationCompleteController.js","webpack://OktaSignIn/./src/v1/controllers/RegistrationController.js","webpack://OktaSignIn/./src/v1/controllers/UnlockAccountController.js","webpack://OktaSignIn/./src/v1/controllers/UnlockEmailSentController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyCustomFactorController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyDuoController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyPIVController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyU2FController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyWebauthnController.js","webpack://OktaSignIn/./src/v1/controllers/VerifyWindowsHelloController.js","webpack://OktaSignIn/./src/v1/models/AppState.js","webpack://OktaSignIn/./src/v1/models/BaseLoginModel.js","webpack://OktaSignIn/./src/v1/models/EnrollUser.js","webpack://OktaSignIn/./src/v1/models/Factor.js","webpack://OktaSignIn/./src/v1/models/IDPDiscovery.js","webpack://OktaSignIn/./src/v1/models/LoginModel.js","webpack://OktaSignIn/./src/v1/models/PrimaryAuth.js","webpack://OktaSignIn/./src/v1/models/ProfileSchema.js","webpack://OktaSignIn/./src/v1/models/RegistrationSchema.js","webpack://OktaSignIn/./src/v1/util/BaseLoginController.js","webpack://OktaSignIn/./src/v1/util/DeviceFingerprint.js","webpack://OktaSignIn/./src/v1/util/FormController.js","webpack://OktaSignIn/./src/v1/util/FormType.js","webpack://OktaSignIn/./src/v1/util/RegistrationFormFactory.js","webpack://OktaSignIn/./src/v1/util/RouterUtil.js","webpack://OktaSignIn/./src/v1/util/StoreLinks.js","webpack://OktaSignIn/./src/v1/util/TypingUtil.js","webpack://OktaSignIn/./src/v1/util/ValidationUtil.js","webpack://OktaSignIn/./src/v1/views/ResendEmailView.js","webpack://OktaSignIn/./src/v1/views/admin-consent/ScopeItem.js","webpack://OktaSignIn/./src/v1/views/admin-consent/ScopeList.js","webpack://OktaSignIn/./src/v1/views/consent/ScopeCheckBox.js","webpack://OktaSignIn/./src/v1/views/consent/ScopeItem.js","webpack://OktaSignIn/./src/v1/views/consent/ScopeList.js","webpack://OktaSignIn/./src/v1/views/enroll-choices/FactorList.js","webpack://OktaSignIn/./src/v1/views/enroll-choices/Footer.js","webpack://OktaSignIn/./src/v1/views/enroll-choices/RequiredFactorList.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/BarcodeView.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/EnterPasscodeForm.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/Footer.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/ManualSetupFooter.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/ManualSetupPushFooter.js","webpack://OktaSignIn/./src/v1/views/enroll-factors/PhoneTextBox.js","webpack://OktaSignIn/./src/v1/views/enrollUser/EnrollUserForm.js","webpack://OktaSignIn/./src/v1/views/expired-password/Footer.js","webpack://OktaSignIn/./src/v1/views/factor-verify/EmailMagicLinkForm.js","webpack://OktaSignIn/./src/v1/views/idp-discovery/IDPDiscoveryForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/HtmlErrorMessageView.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/InlineTOTPForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/NumberChallengeView.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/PassCodeForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/PasswordForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/PushForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/SecurityQuestionForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/SendEmailAndVerifyCodeForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/TOTPForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/YubikeyForm.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/dropdown/FactorsDropDown.js","webpack://OktaSignIn/./src/v1/views/mfa-verify/dropdown/FactorsDropDownOptions.js","webpack://OktaSignIn/./src/v1/views/primary-auth/CustomButtons.js","webpack://OktaSignIn/./src/v1/views/primary-auth/PrimaryAuthForm.js","webpack://OktaSignIn/./src/v1/views/registration/SubSchema.js","webpack://OktaSignIn/./src/v1/views/shared/AuthContainer.js","webpack://OktaSignIn/./src/v1/views/shared/ContactSupport.js","webpack://OktaSignIn/./src/v1/views/shared/FactorBeacon.js","webpack://OktaSignIn/./src/v1/views/shared/Footer.js","webpack://OktaSignIn/./src/v1/views/shared/FooterMFA.js","webpack://OktaSignIn/./src/v1/views/shared/FooterRegistration.js","webpack://OktaSignIn/./src/v1/views/shared/FooterSignout.js","webpack://OktaSignIn/./src/v1/views/shared/FooterWithBackLink.js","webpack://OktaSignIn/./src/v1/views/shared/FooterWithBackLinkOnError.js","webpack://OktaSignIn/./src/v1/views/shared/LoadingBeacon.js","webpack://OktaSignIn/./src/v1/views/shared/PIVBeacon.js","webpack://OktaSignIn/./src/v1/views/shared/PasswordRequirements.js","webpack://OktaSignIn/./src/v1/views/shared/SecurityBeacon.js","webpack://OktaSignIn/./src/v1/views/shared/SkipLink.js","webpack://OktaSignIn/./src/v1/views/shared/Spinner.js","webpack://OktaSignIn/./src/v1/views/shared/TextBox.js","webpack://OktaSignIn/./src/v1/views/shared/templates/consentLogoHeaderTemplate.js","webpack://OktaSignIn/./src/v2/client/constants.js","webpack://OktaSignIn/./src/v2/client/handleConfiguredFlow.js","webpack://OktaSignIn/./src/v2/client/index.js","webpack://OktaSignIn/./src/v2/client/interactionCodeFlow.js","webpack://OktaSignIn/./src/v2/client/sessionStorageHelper.js","webpack://OktaSignIn/./src/v2/ion/IonResponseHelper.js","webpack://OktaSignIn/./src/v2/ion/RemediationConstants.js","webpack://OktaSignIn/./src/v2/ion/ViewClassNamesFactory.js","webpack://OktaSignIn/./src/v2/ion/i18nTransformer.js","webpack://OktaSignIn/./src/v2/ion/responseTransformer.js","webpack://OktaSignIn/./src/v2/ion/transformIdxResponse.js","webpack://OktaSignIn/./src/v2/ion/ui-schema/ion-boolean-handler.js","webpack://OktaSignIn/./src/v2/ion/ui-schema/ion-object-handler.js","webpack://OktaSignIn/./src/v2/ion/ui-schema/ion-string-handler.js","webpack://OktaSignIn/./src/v2/ion/uiSchemaTransformer.js","webpack://OktaSignIn/./src/v2/view-builder/components/AuthenticatorEnrollOptions.js","webpack://OktaSignIn/./src/v2/view-builder/components/AuthenticatorFooter.js","webpack://OktaSignIn/./src/v2/view-builder/components/AuthenticatorVerifyOptions.js","webpack://OktaSignIn/./src/v2/view-builder/components/BaseAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/components/ChallengeWebauthnFooter.js","webpack://OktaSignIn/./src/v2/view-builder/components/EmailAuthenticatorHeader.js","webpack://OktaSignIn/./src/v2/view-builder/components/HeaderBeacon.js","webpack://OktaSignIn/./src/v2/view-builder/components/IdentifierFooter.js","webpack://OktaSignIn/./src/v2/view-builder/components/Link.js","webpack://OktaSignIn/./src/v2/view-builder/components/MdmOktaVerifyTerminalView.js","webpack://OktaSignIn/./src/v2/view-builder/components/OdaOktaVerifyTerminalView.js","webpack://OktaSignIn/./src/v2/view-builder/components/OktaVerifyAuthenticatorHeader.js","webpack://OktaSignIn/./src/v2/view-builder/components/ScopeCheckBox.js","webpack://OktaSignIn/./src/v2/view-builder/components/SkipOptionalEnrollmentButton.js","webpack://OktaSignIn/./src/v2/view-builder/components/ToggleTextLink.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseFooter.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseFormWithPolling.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseHeader.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseModel.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseOktaVerifyChallengeView.js","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseView.js","webpack://OktaSignIn/./src/v2/view-builder/internals/index.js","webpack://OktaSignIn/./src/v2/view-builder/utils/AuthenticatorUtil.js","webpack://OktaSignIn/./src/v2/view-builder/utils/ChallengeViewUtil.js","webpack://OktaSignIn/./src/v2/view-builder/utils/Constants.js","webpack://OktaSignIn/./src/v2/view-builder/utils/DeviceFingerprinting.js","webpack://OktaSignIn/./src/v2/view-builder/utils/LinksUtil.js","webpack://OktaSignIn/./src/v2/view-builder/utils/TimeZone.js","webpack://OktaSignIn/./src/v2/view-builder/views/AutoRedirectView.js","webpack://OktaSignIn/./src/v2/view-builder/views/EnrollProfileUpdateView.js","webpack://OktaSignIn/./src/v2/view-builder/views/EnrollProfileView.js","webpack://OktaSignIn/./src/v2/view-builder/views/IdentifierView.js","webpack://OktaSignIn/./src/v2/view-builder/views/IdentifyRecoveryView.js","webpack://OktaSignIn/./src/v2/view-builder/views/PollView.js","webpack://OktaSignIn/./src/v2/view-builder/views/RedirectIdPView.js","webpack://OktaSignIn/./src/v2/view-builder/views/SelectAuthenticatorEnrollView.js","webpack://OktaSignIn/./src/v2/view-builder/views/SelectAuthenticatorVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/TerminalView.js","webpack://OktaSignIn/./src/v2/view-builder/views/activation/RequestActivationEmailView.js","webpack://OktaSignIn/./src/v2/view-builder/views/authenticator/SelectAuthenticatorUnlockAccountView.js","webpack://OktaSignIn/./src/v2/view-builder/views/captcha/CaptchaView.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/AdminConsentView.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/AdminConsentViewHeader.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/ConsentViewForm.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EmailMagicLinkOTPTerminalView.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EnduserConsentAgreementText.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EnduserConsentView.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EnduserConsentViewFooter.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EnduserConsentViewHeader.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/EnduserEmailConsentView.js","webpack://OktaSignIn/./src/v2/view-builder/views/consent/GranularConsentView.js","webpack://OktaSignIn/./src/v2/view-builder/views/custom-app/ChallengeCustomAppResendPushView.js","webpack://OktaSignIn/./src/v2/view-builder/views/custom-otp/ChallengeCustomOTPAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/views/custom-password/ReEnrollCustomPasswordExpiryView.js","webpack://OktaSignIn/./src/v2/view-builder/views/device/DeviceChallengePollView.js","webpack://OktaSignIn/./src/v2/view-builder/views/device/DeviceCodeActivateView.js","webpack://OktaSignIn/./src/v2/view-builder/views/device/DeviceEnrollmentTerminalView.js","webpack://OktaSignIn/./src/v2/view-builder/views/device/SSOExtensionView.js","webpack://OktaSignIn/./src/v2/view-builder/views/device/SignInDeviceView.js","webpack://OktaSignIn/./src/v2/view-builder/views/duo/BaseDuoAuthenticatorForm.js","webpack://OktaSignIn/./src/v2/view-builder/views/duo/ChallengeDuoAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/views/duo/EnrollDuoAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/views/email/AuthenticatorEmailViewUtil.js","webpack://OktaSignIn/./src/v2/view-builder/views/email/BaseAuthenticatorEmailView.js","webpack://OktaSignIn/./src/v2/view-builder/views/email/ChallengeAuthenticatorDataEmailView.js","webpack://OktaSignIn/./src/v2/view-builder/views/email/ChallengeAuthenticatorEmailView.js","webpack://OktaSignIn/./src/v2/view-builder/views/email/EnrollAuthenticatorEmailView.js","webpack://OktaSignIn/./src/v2/view-builder/views/enroll-profile/i18nBaseAttributeMappings.js","webpack://OktaSignIn/./src/v2/view-builder/views/google-authenticator/ChallengeGoogleAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorGoogleAuthenticatorView.js","webpack://OktaSignIn/./src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorManualSetupView.js","webpack://OktaSignIn/./src/v2/view-builder/views/google-authenticator/EnrollGoogleAuthenticatorBarcodeView.js","webpack://OktaSignIn/./src/v2/view-builder/views/idp/AuthenticatorIdPEnrollView.js","webpack://OktaSignIn/./src/v2/view-builder/views/idp/AuthenticatorIdPVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/idp/BaseIdpAuthenticator.js","webpack://OktaSignIn/./src/v2/view-builder/views/on-prem/ChallengeAuthenticatorOnPremView.js","webpack://OktaSignIn/./src/v2/view-builder/views/on-prem/EnrollAuthenticatorOnPremView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ChallengeOktaVerifyFastPassView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ChallengeOktaVerifyResendPushView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ChallengeOktaVerifySSOExtensionView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ChallengeOktaVerifyTotpView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ChallengeOktaVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/EnrollChannelPollDescriptionView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/EnrollPollOktaVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/EnrollementChannelDataOktaVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/NumberChallengePhoneView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/NumberChallengePushView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/OVResendView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/ResendNumberChallengeView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/SelectEnrollmentChannelOktaVerifyView.js","webpack://OktaSignIn/./src/v2/view-builder/views/ov/SwitchEnrollChannelLinkView.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/ChallengeAuthenticatorPasswordView.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/EnrollAuthenticatorPasswordView.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/PasswordPolicyUtil.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/ReEnrollAuthenticatorPasswordView.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/ReEnrollAuthenticatorWarningPasswordView.js","webpack://OktaSignIn/./src/v2/view-builder/views/password/ResetAuthenticatorPasswordView.js","webpack://OktaSignIn/./src/v2/view-builder/views/phone/ChallengeAuthenticatorDataPhoneView.js","webpack://OktaSignIn/./src/v2/view-builder/views/phone/ChallengeAuthenticatorPhoneView.js","webpack://OktaSignIn/./src/v2/view-builder/views/phone/EnrollAuthenticatorDataPhoneView.js","webpack://OktaSignIn/./src/v2/view-builder/views/phone/EnrollAuthenticatorPhoneView.js","webpack://OktaSignIn/./src/v2/view-builder/views/piv/ChallengePIVView.js","webpack://OktaSignIn/./src/v2/view-builder/views/piv/PIVHeader.js","webpack://OktaSignIn/./src/v2/view-builder/views/security-question/ChallengeAuthenticatorSecurityQuestion.js","webpack://OktaSignIn/./src/v2/view-builder/views/security-question/EnrollAuthenticatorSecurityQuestionView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/BaseResendView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppDataView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppFormView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppPushOnlyFormView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/ChallengePushView.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/CustomAccessDeniedErrorMessage.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/email.js","webpack://OktaSignIn/./src/v2/view-builder/views/shared/polling.js","webpack://OktaSignIn/./src/v2/view-builder/views/signin/CustomButtons.js","webpack://OktaSignIn/./src/v2/view-builder/views/signin/SignInWithDeviceOption.js","webpack://OktaSignIn/./src/v2/view-builder/views/signin/SignInWithIdps.js","webpack://OktaSignIn/./src/v2/view-builder/views/signin/SignInWithWebAuthn.js","webpack://OktaSignIn/./src/v2/view-builder/views/symantec/AuthenticatorSymantecView.js","webpack://OktaSignIn/./src/v2/view-builder/views/webauthn/ChallengeWebauthnInfoView.js","webpack://OktaSignIn/./src/v2/view-builder/views/webauthn/ChallengeWebauthnView.js","webpack://OktaSignIn/./src/v2/view-builder/views/webauthn/EnrollWebAuthnResidentkeyLinkView.js","webpack://OktaSignIn/./src/v2/view-builder/views/webauthn/EnrollWebauthnInfoView.js","webpack://OktaSignIn/./src/v2/view-builder/views/webauthn/EnrollWebauthnView.js","webpack://OktaSignIn/./src/v2/view-builder/views/yubikey/AuthenticatorYubiKeyView.js","webpack://OktaSignIn/./src/widget/buildRenderOptions.js","webpack://OktaSignIn/./src/widget/createRouter.js","webpack://OktaSignIn/./src/authClient/default.ts","webpack://OktaSignIn/./src/authClient/oie.ts","webpack://OktaSignIn/./src/exports/cdn/default.ts","webpack://OktaSignIn/./src/exports/default.ts","webpack://OktaSignIn/./src/models/Hooks.ts","webpack://OktaSignIn/./src/models/Settings.ts","webpack://OktaSignIn/./src/router/default.ts","webpack://OktaSignIn/./src/types/index.ts","webpack://OktaSignIn/./src/util/BrowserFeatures.ts","webpack://OktaSignIn/./src/util/Bundles.ts","webpack://OktaSignIn/./src/util/Errors.ts","webpack://OktaSignIn/./src/util/OAuthErrors.ts","webpack://OktaSignIn/./src/v1/LoginRouter.ts","webpack://OktaSignIn/./src/v1/views/shared/Header.ts","webpack://OktaSignIn/./src/v2/BaseLoginRouter.ts","webpack://OktaSignIn/./src/v2/WidgetRouter.ts","webpack://OktaSignIn/./src/v2/client/emailVerifyCallback.ts","webpack://OktaSignIn/./src/v2/client/formatError.ts","webpack://OktaSignIn/./src/v2/client/startLoginFlow.ts","webpack://OktaSignIn/./src/v2/client/updateAppState.ts","webpack://OktaSignIn/./src/v2/controllers/FormController.ts","webpack://OktaSignIn/./src/v2/mixins/mixins.ts","webpack://OktaSignIn/./src/v2/models/AppState.ts","webpack://OktaSignIn/./src/v2/view-builder/ViewFactory.ts","webpack://OktaSignIn/./src/v2/view-builder/internals/BaseForm.ts","webpack://OktaSignIn/./src/v2/view-builder/internals/FormInputFactory.ts","webpack://OktaSignIn/./src/widget/OktaSignIn.ts","webpack://OktaSignIn/./src/widget/getAuthClient.ts","webpack://OktaSignIn/OktaAuth/webpack/universalModuleDefinition","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/construct.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/createClass.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/inherits.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/typeof.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/regenerator/index.js","webpack://OktaSignIn/OktaAuth/./lib/authn/util/stateToken.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/api.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/util/link2fn.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/util/poll.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/util/flattenEmbedded.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/util/links2fns.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/AuthnTransactionImpl.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/factory.ts","webpack://OktaSignIn/OktaAuth/./lib/browser/fingerprint.ts","webpack://OktaSignIn/OktaAuth/./lib/authn/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/base/factory.ts","webpack://OktaSignIn/OktaAuth/./lib/base/options.ts","webpack://OktaSignIn/OktaAuth/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://OktaSignIn/OktaAuth/./lib/browser/browserStorage.ts","webpack://OktaSignIn/OktaAuth/./lib/constants.ts","webpack://OktaSignIn/OktaAuth/./lib/core/AuthStateManager.ts","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/util.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/methods/native.js","webpack://OktaSignIn/OktaAuth/./node_modules/oblivious-set/dist/es/index.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/options.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","webpack://OktaSignIn/OktaAuth/./node_modules/unload/dist/es/browser.js","webpack://OktaSignIn/OktaAuth/./node_modules/unload/dist/es/index.js","webpack://OktaSignIn/OktaAuth/./node_modules/broadcast-channel/dist/esbrowser/leader-election.js","webpack://OktaSignIn/OktaAuth/./lib/services/LeaderElectionService.ts","webpack://OktaSignIn/OktaAuth/./lib/services/AutoRenewService.ts","webpack://OktaSignIn/OktaAuth/./lib/services/SyncStorageService.ts","webpack://OktaSignIn/OktaAuth/./lib/core/ServiceManager/browser.ts","webpack://OktaSignIn/OktaAuth/./lib/core/factory.ts","webpack://OktaSignIn/OktaAuth/./lib/core/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/core/options.ts","webpack://OktaSignIn/OktaAuth/./lib/core/storage.ts","webpack://OktaSignIn/OktaAuth/./lib/crypto/base64.ts","webpack://OktaSignIn/OktaAuth/./lib/crypto/browser.ts","webpack://OktaSignIn/OktaAuth/./lib/crypto/oidcHash.ts","webpack://OktaSignIn/OktaAuth/./lib/crypto/verifyToken.ts","webpack://OktaSignIn/OktaAuth/./lib/errors/AuthApiError.ts","webpack://OktaSignIn/OktaAuth/./lib/errors/AuthPollStopError.ts","webpack://OktaSignIn/OktaAuth/./lib/errors/AuthSdkError.ts","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://OktaSignIn/OktaAuth/./lib/errors/CustomError.ts","webpack://OktaSignIn/OktaAuth/./lib/errors/OAuthError.ts","webpack://OktaSignIn/OktaAuth/./lib/errors/index.ts","webpack://OktaSignIn/OktaAuth/./lib/features.ts","webpack://OktaSignIn/OktaAuth/./lib/http/OktaUserAgent.ts","webpack://OktaSignIn/OktaAuth/./lib/http/headers.ts","webpack://OktaSignIn/OktaAuth/./lib/http/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/fetch/fetchRequest.ts","webpack://OktaSignIn/OktaAuth/./lib/http/options.ts","webpack://OktaSignIn/OktaAuth/./lib/http/request.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/IdxTransactionManager.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticate.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/Authenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/OktaPassword.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/util.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/cancel.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/emailVerify.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/factory/OktaAuthIdx.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/factory/api.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/flow/AuthenticationFlow.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/flow/PasswordRecoveryFlow.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/flow/RegistrationFlow.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/flow/AccountUnlockFlow.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/flow/FlowSpecification.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/handleInteractionCodeRedirect.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/actionParser.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/generateIdxAction.ts","webpack://OktaSignIn/OktaAuth/./node_modules/jsonpath-plus/dist/index-browser-esm.js","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/idxResponseParser.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/remediationParser.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/parsers.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/v1/makeIdxState.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/idxState/index.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/interact.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/introspect.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/webauthn.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/options.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/poll.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/proceed.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/recoverPassword.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/register.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/AuthenticatorEnrollmentData.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/AuthenticatorVerificationData.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Base/AuthenticatorData.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Base/Remediator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Base/SelectAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/VerificationCodeAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/OktaVerifyTotp.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/SecurityQuestionEnrollment.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/SecurityQuestionVerification.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/WebauthnEnrollment.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/WebauthnVerification.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/authenticator/getAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Base/VerifyAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/ChallengeAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/ChallengePoll.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/EnrollAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/EnrollPoll.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/EnrollProfile.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/EnrollmentChannelData.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Identify.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/ReEnrollAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/RedirectIdp.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/ResetAuthenticator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/SelectAuthenticatorAuthenticate.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/SelectAuthenticatorEnroll.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/SelectEnrollProfile.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/SelectEnrollmentChannel.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/Skip.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/util.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/GenericRemediator/util.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediators/GenericRemediator/GenericRemediator.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/util.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/remediate.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/run.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/startTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/storage.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/transactionMeta.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/types/api.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/types/idx-js.ts","webpack://OktaSignIn/OktaAuth/./lib/idx/unlockAccount.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/profileApi.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/emailApi.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/phoneApi.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/factory.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/types.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/request.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/Base.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/EmailChallengeTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/EmailStatusTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/EmailTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/PhoneTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/ProfileSchemaTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/myaccount/transactions/ProfileTransaction.ts","webpack://OktaSignIn/OktaAuth/./lib/clock.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/TokenManager.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/sharedStorage.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/TransactionManager.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/decodeToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/endpoints/authorize.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/endpoints/token.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/endpoints/well-known.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/exchangeCodeForTokens.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/factory/api.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/factory/OktaAuthOAuth.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/getToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/getUserInfo.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/getWithPopup.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/getWithRedirect.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/getWithoutPrompt.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/handleOAuthResponse.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/mixin/index.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/mixin/browser.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/options/OAuthOptionsConstructor.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/parseFromUrl.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/renewToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/renewTokens.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/renewTokensWithRefresh.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/revokeToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/storage.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/types/Token.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/types/TokenManager.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/types/Transaction.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/browser.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/defaultTokenParams.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/errors.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/loginRedirect.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/oauth.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/oauthMeta.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/pkce.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/prepareTokenParams.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/refreshToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/urlParams.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/validateClaims.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/util/validateToken.ts","webpack://OktaSignIn/OktaAuth/./lib/oidc/verifyToken.ts","webpack://OktaSignIn/OktaAuth/./lib/session/api.ts","webpack://OktaSignIn/OktaAuth/./lib/session/factory.ts","webpack://OktaSignIn/OktaAuth/./lib/session/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/storage/BaseStorageManager.ts","webpack://OktaSignIn/OktaAuth/./lib/storage/SavedObject.ts","webpack://OktaSignIn/OktaAuth/./lib/storage/mixin.ts","webpack://OktaSignIn/OktaAuth/./lib/storage/options/browser.ts","webpack://OktaSignIn/OktaAuth/./lib/storage/options/StorageOptionsConstructor.ts","webpack://OktaSignIn/OktaAuth/./lib/util/PromiseQueue.ts","webpack://OktaSignIn/OktaAuth/./lib/util/console.ts","webpack://OktaSignIn/OktaAuth/./lib/util/misc.ts","webpack://OktaSignIn/OktaAuth/./lib/util/object.ts","webpack://OktaSignIn/OktaAuth/./lib/util/types.ts","webpack://OktaSignIn/OktaAuth/./lib/util/url.ts","webpack://OktaSignIn/OktaAuth/./node_modules/p-cancelable/index.js","webpack://OktaSignIn/OktaAuth/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://OktaSignIn/OktaAuth/./node_modules/detect-node/browser.js","webpack://OktaSignIn/OktaAuth/./node_modules/regenerator-runtime/runtime.js","webpack://OktaSignIn/OktaAuth/./node_modules/tiny-emitter/index.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://OktaSignIn/OktaAuth/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://OktaSignIn/OktaAuth/webpack/bootstrap","webpack://OktaSignIn/OktaAuth/webpack/runtime/compat get default export","webpack://OktaSignIn/OktaAuth/webpack/runtime/define property getters","webpack://OktaSignIn/OktaAuth/webpack/runtime/global","webpack://OktaSignIn/OktaAuth/webpack/runtime/hasOwnProperty shorthand","webpack://OktaSignIn/OktaAuth/webpack/runtime/make namespace object","webpack://OktaSignIn/OktaAuth/./lib/exports/default.ts","webpack://OktaSignIn/./node_modules/clipboard/lib/clipboard-action.js","webpack://OktaSignIn/./node_modules/clipboard/lib/clipboard.js","webpack://OktaSignIn/./node_modules/clipboard/node_modules/tiny-emitter/index.js","webpack://OktaSignIn/./node_modules/core-js/actual/array/find-index.js","webpack://OktaSignIn/./node_modules/core-js/actual/array/find.js","webpack://OktaSignIn/./node_modules/core-js/actual/array/from.js","webpack://OktaSignIn/./node_modules/core-js/actual/array/includes.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/assign.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/entries.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/from-entries.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/keys.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/actual/object/values.js","webpack://OktaSignIn/./node_modules/core-js/actual/string/ends-with.js","webpack://OktaSignIn/./node_modules/core-js/actual/string/includes.js","webpack://OktaSignIn/./node_modules/core-js/actual/string/starts-with.js","webpack://OktaSignIn/./node_modules/core-js/actual/symbol/iterator.js","webpack://OktaSignIn/./node_modules/core-js/es/array/find-index.js","webpack://OktaSignIn/./node_modules/core-js/es/array/find.js","webpack://OktaSignIn/./node_modules/core-js/es/array/from.js","webpack://OktaSignIn/./node_modules/core-js/es/array/includes.js","webpack://OktaSignIn/./node_modules/core-js/es/object/assign.js","webpack://OktaSignIn/./node_modules/core-js/es/object/entries.js","webpack://OktaSignIn/./node_modules/core-js/es/object/from-entries.js","webpack://OktaSignIn/./node_modules/core-js/es/object/keys.js","webpack://OktaSignIn/./node_modules/core-js/es/object/set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/es/object/values.js","webpack://OktaSignIn/./node_modules/core-js/es/promise/index.js","webpack://OktaSignIn/./node_modules/core-js/es/string/ends-with.js","webpack://OktaSignIn/./node_modules/core-js/es/string/includes.js","webpack://OktaSignIn/./node_modules/core-js/es/string/starts-with.js","webpack://OktaSignIn/./node_modules/core-js/es/symbol/iterator.js","webpack://OktaSignIn/./node_modules/core-js/es/typed-array/methods.js","webpack://OktaSignIn/./node_modules/core-js/es/typed-array/uint8-array.js","webpack://OktaSignIn/./node_modules/core-js/features/array/find-index.js","webpack://OktaSignIn/./node_modules/core-js/features/array/find.js","webpack://OktaSignIn/./node_modules/core-js/features/array/from.js","webpack://OktaSignIn/./node_modules/core-js/features/array/includes.js","webpack://OktaSignIn/./node_modules/core-js/features/object/assign.js","webpack://OktaSignIn/./node_modules/core-js/features/object/entries.js","webpack://OktaSignIn/./node_modules/core-js/features/object/from-entries.js","webpack://OktaSignIn/./node_modules/core-js/features/object/iterate-entries.js","webpack://OktaSignIn/./node_modules/core-js/features/object/iterate-keys.js","webpack://OktaSignIn/./node_modules/core-js/features/object/iterate-values.js","webpack://OktaSignIn/./node_modules/core-js/features/object/keys.js","webpack://OktaSignIn/./node_modules/core-js/features/object/set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/features/object/values.js","webpack://OktaSignIn/./node_modules/core-js/features/string/ends-with.js","webpack://OktaSignIn/./node_modules/core-js/features/string/includes.js","webpack://OktaSignIn/./node_modules/core-js/features/string/starts-with.js","webpack://OktaSignIn/./node_modules/core-js/features/symbol/iterator.js","webpack://OktaSignIn/./node_modules/core-js/full/array/find-index.js","webpack://OktaSignIn/./node_modules/core-js/full/array/find.js","webpack://OktaSignIn/./node_modules/core-js/full/array/from.js","webpack://OktaSignIn/./node_modules/core-js/full/array/includes.js","webpack://OktaSignIn/./node_modules/core-js/full/object/assign.js","webpack://OktaSignIn/./node_modules/core-js/full/object/entries.js","webpack://OktaSignIn/./node_modules/core-js/full/object/from-entries.js","webpack://OktaSignIn/./node_modules/core-js/full/object/iterate-entries.js","webpack://OktaSignIn/./node_modules/core-js/full/object/iterate-keys.js","webpack://OktaSignIn/./node_modules/core-js/full/object/iterate-values.js","webpack://OktaSignIn/./node_modules/core-js/full/object/keys.js","webpack://OktaSignIn/./node_modules/core-js/full/object/set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/full/object/values.js","webpack://OktaSignIn/./node_modules/core-js/full/string/ends-with.js","webpack://OktaSignIn/./node_modules/core-js/full/string/includes.js","webpack://OktaSignIn/./node_modules/core-js/full/string/starts-with.js","webpack://OktaSignIn/./node_modules/core-js/full/symbol/iterator.js","webpack://OktaSignIn/./node_modules/core-js/internals/a-callable.js","webpack://OktaSignIn/./node_modules/core-js/internals/a-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/a-possible-prototype.js","webpack://OktaSignIn/./node_modules/core-js/internals/add-to-unscopables.js","webpack://OktaSignIn/./node_modules/core-js/internals/an-instance.js","webpack://OktaSignIn/./node_modules/core-js/internals/an-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-buffer.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-copy-within.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-fill.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-from.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-includes.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-iteration-from-last.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-iteration.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-last-index-of.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-method-is-strict.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-reduce.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-slice-simple.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-slice.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-sort.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-species-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/array-species-create.js","webpack://OktaSignIn/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://OktaSignIn/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://OktaSignIn/./node_modules/core-js/internals/classof-raw.js","webpack://OktaSignIn/./node_modules/core-js/internals/classof.js","webpack://OktaSignIn/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://OktaSignIn/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://OktaSignIn/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://OktaSignIn/./node_modules/core-js/internals/create-iter-result-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://OktaSignIn/./node_modules/core-js/internals/create-property-descriptor.js","webpack://OktaSignIn/./node_modules/core-js/internals/create-property.js","webpack://OktaSignIn/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://OktaSignIn/./node_modules/core-js/internals/define-built-in.js","webpack://OktaSignIn/./node_modules/core-js/internals/define-built-ins.js","webpack://OktaSignIn/./node_modules/core-js/internals/define-global-property.js","webpack://OktaSignIn/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://OktaSignIn/./node_modules/core-js/internals/descriptors.js","webpack://OktaSignIn/./node_modules/core-js/internals/document-all.js","webpack://OktaSignIn/./node_modules/core-js/internals/document-create-element.js","webpack://OktaSignIn/./node_modules/core-js/internals/dom-iterables.js","webpack://OktaSignIn/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-ff-version.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-browser.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-deno.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-ios.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-node.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-user-agent.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-v8-version.js","webpack://OktaSignIn/./node_modules/core-js/internals/engine-webkit-version.js","webpack://OktaSignIn/./node_modules/core-js/internals/entry-unbind.js","webpack://OktaSignIn/./node_modules/core-js/internals/enum-bug-keys.js","webpack://OktaSignIn/./node_modules/core-js/internals/error-stack-clear.js","webpack://OktaSignIn/./node_modules/core-js/internals/error-stack-installable.js","webpack://OktaSignIn/./node_modules/core-js/internals/export.js","webpack://OktaSignIn/./node_modules/core-js/internals/fails.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-apply.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-bind-context.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-bind-native.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-call.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-name.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://OktaSignIn/./node_modules/core-js/internals/function-uncurry-this.js","webpack://OktaSignIn/./node_modules/core-js/internals/get-built-in.js","webpack://OktaSignIn/./node_modules/core-js/internals/get-iterator-method.js","webpack://OktaSignIn/./node_modules/core-js/internals/get-iterator.js","webpack://OktaSignIn/./node_modules/core-js/internals/get-method.js","webpack://OktaSignIn/./node_modules/core-js/internals/global.js","webpack://OktaSignIn/./node_modules/core-js/internals/has-own-property.js","webpack://OktaSignIn/./node_modules/core-js/internals/hidden-keys.js","webpack://OktaSignIn/./node_modules/core-js/internals/host-report-errors.js","webpack://OktaSignIn/./node_modules/core-js/internals/html.js","webpack://OktaSignIn/./node_modules/core-js/internals/ie8-dom-define.js","webpack://OktaSignIn/./node_modules/core-js/internals/ieee754.js","webpack://OktaSignIn/./node_modules/core-js/internals/indexed-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/inherit-if-required.js","webpack://OktaSignIn/./node_modules/core-js/internals/inspect-source.js","webpack://OktaSignIn/./node_modules/core-js/internals/install-error-cause.js","webpack://OktaSignIn/./node_modules/core-js/internals/internal-state.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-array.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-big-int-array.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-callable.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-forced.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-integral-number.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-pure.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-regexp.js","webpack://OktaSignIn/./node_modules/core-js/internals/is-symbol.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterate.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterator-close.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterator-create-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterator-define.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterators-core.js","webpack://OktaSignIn/./node_modules/core-js/internals/iterators.js","webpack://OktaSignIn/./node_modules/core-js/internals/length-of-array-like.js","webpack://OktaSignIn/./node_modules/core-js/internals/make-built-in.js","webpack://OktaSignIn/./node_modules/core-js/internals/math-trunc.js","webpack://OktaSignIn/./node_modules/core-js/internals/microtask.js","webpack://OktaSignIn/./node_modules/core-js/internals/new-promise-capability.js","webpack://OktaSignIn/./node_modules/core-js/internals/normalize-string-argument.js","webpack://OktaSignIn/./node_modules/core-js/internals/not-a-regexp.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-assign.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-create.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-define-properties.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-define-property.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-iterator.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-keys-internal.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-keys.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-to-array.js","webpack://OktaSignIn/./node_modules/core-js/internals/object-to-string.js","webpack://OktaSignIn/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://OktaSignIn/./node_modules/core-js/internals/own-keys.js","webpack://OktaSignIn/./node_modules/core-js/internals/path.js","webpack://OktaSignIn/./node_modules/core-js/internals/perform.js","webpack://OktaSignIn/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://OktaSignIn/./node_modules/core-js/internals/promise-native-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/promise-resolve.js","webpack://OktaSignIn/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://OktaSignIn/./node_modules/core-js/internals/queue.js","webpack://OktaSignIn/./node_modules/core-js/internals/require-object-coercible.js","webpack://OktaSignIn/./node_modules/core-js/internals/set-species.js","webpack://OktaSignIn/./node_modules/core-js/internals/set-to-string-tag.js","webpack://OktaSignIn/./node_modules/core-js/internals/shared-key.js","webpack://OktaSignIn/./node_modules/core-js/internals/shared-store.js","webpack://OktaSignIn/./node_modules/core-js/internals/shared.js","webpack://OktaSignIn/./node_modules/core-js/internals/species-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/string-multibyte.js","webpack://OktaSignIn/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://OktaSignIn/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://OktaSignIn/./node_modules/core-js/internals/task.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-absolute-index.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-big-int.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-index.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-indexed-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-length.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-object.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-offset.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-positive-integer.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-primitive.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-property-key.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-string-tag-support.js","webpack://OktaSignIn/./node_modules/core-js/internals/to-string.js","webpack://OktaSignIn/./node_modules/core-js/internals/try-to-string.js","webpack://OktaSignIn/./node_modules/core-js/internals/typed-array-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://OktaSignIn/./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack://OktaSignIn/./node_modules/core-js/internals/typed-array-from.js","webpack://OktaSignIn/./node_modules/core-js/internals/typed-array-species-constructor.js","webpack://OktaSignIn/./node_modules/core-js/internals/uid.js","webpack://OktaSignIn/./node_modules/core-js/internals/url-constructor-detection.js","webpack://OktaSignIn/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://OktaSignIn/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://OktaSignIn/./node_modules/core-js/internals/validate-arguments-length.js","webpack://OktaSignIn/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://OktaSignIn/./node_modules/core-js/internals/well-known-symbol-define.js","webpack://OktaSignIn/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://OktaSignIn/./node_modules/core-js/internals/well-known-symbol.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.aggregate-error.constructor.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.aggregate-error.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array-buffer.slice.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array.find-index.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array.find.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array.from.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array.includes.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.array.iterator.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.assign.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.entries.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.from-entries.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.keys.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.to-string.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.object.values.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.all-settled.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.all.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.any.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.catch.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.constructor.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.finally.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.race.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.reject.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.promise.resolve.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.string.ends-with.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.string.includes.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.string.iterator.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.string.starts-with.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.at.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.every.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.fill.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.filter.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.find-index.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.find-last.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.find.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.for-each.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.from.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.includes.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.index-of.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.iterator.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.join.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.map.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.of.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.reduce.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.reverse.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.set.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.slice.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.some.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.subarray.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.to-string.js","webpack://OktaSignIn/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://OktaSignIn/./node_modules/core-js/modules/esnext.object.iterate-entries.js","webpack://OktaSignIn/./node_modules/core-js/modules/esnext.object.iterate-keys.js","webpack://OktaSignIn/./node_modules/core-js/modules/esnext.object.iterate-values.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.url-search-params.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.url.constructor.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.url.js","webpack://OktaSignIn/./node_modules/core-js/modules/web.url.to-json.js","webpack://OktaSignIn/./node_modules/core-js/stable/array/find-index.js","webpack://OktaSignIn/./node_modules/core-js/stable/array/find.js","webpack://OktaSignIn/./node_modules/core-js/stable/array/from.js","webpack://OktaSignIn/./node_modules/core-js/stable/array/includes.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/assign.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/entries.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/from-entries.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/keys.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/set-prototype-of.js","webpack://OktaSignIn/./node_modules/core-js/stable/object/values.js","webpack://OktaSignIn/./node_modules/core-js/stable/string/ends-with.js","webpack://OktaSignIn/./node_modules/core-js/stable/string/includes.js","webpack://OktaSignIn/./node_modules/core-js/stable/string/starts-with.js","webpack://OktaSignIn/./node_modules/core-js/stable/symbol/iterator.js","webpack://OktaSignIn/./node_modules/core-js/web/url.js","webpack://OktaSignIn/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://OktaSignIn/./node_modules/delegate/src/closest.js","webpack://OktaSignIn/./node_modules/delegate/src/delegate.js","webpack://OktaSignIn/./node_modules/fast-text-encoding/text.min.js","webpack://OktaSignIn/./node_modules/good-listener/src/is.js","webpack://OktaSignIn/./node_modules/good-listener/src/listen.js","webpack://OktaSignIn/./node_modules/jquery/dist/jquery.js","webpack://OktaSignIn/./node_modules/q/q.js","webpack://OktaSignIn/./node_modules/regenerator-runtime/runtime.js","webpack://OktaSignIn/./node_modules/select/src/select.js","webpack://OktaSignIn/./node_modules/u2f-api-polyfill/u2f-api-polyfill.js","webpack://OktaSignIn/./node_modules/webcrypto-shim/webcrypto-shim.js","webpack://OktaSignIn/./packages/@okta/qtip2/dist/jquery.qtip.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/construct.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/createClass.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/inherits.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/typeof.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://OktaSignIn/./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack://OktaSignIn/./node_modules/@babel/runtime/regenerator/index.js","webpack://OktaSignIn/webpack/bootstrap","webpack://OktaSignIn/webpack/runtime/compat get default export","webpack://OktaSignIn/webpack/runtime/define property getters","webpack://OktaSignIn/webpack/runtime/hasOwnProperty shorthand","webpack://OktaSignIn/webpack/runtime/make namespace object","webpack://OktaSignIn/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"OktaSignIn\"] = factory();\n\telse\n\t\troot[\"OktaSignIn\"] = factory();\n})(self, function() {\nreturn ","'use strict';\n\nconst converters = {\n\tdays: value => value * 864e5,\n\thours: value => value * 36e5,\n\tminutes: value => value * 6e4,\n\tseconds: value => value * 1e3,\n\tmilliseconds: value => value,\n\tmicroseconds: value => value / 1e3,\n\tnanoseconds: value => value / 1e6\n};\n\nconst toMilliseconds = object => Object.entries(object).reduce((milliseconds, [key, value]) => {\n\tif (typeof value !== 'number') {\n\t\tthrow new TypeError(`Expected a \\`number\\` for key \\`${key}\\`, got \\`${value}\\` (${typeof value})`);\n\t}\n\n\tif (!converters[key]) {\n\t\tthrow new Error('Unsupported time key');\n\t}\n\n\treturn milliseconds + converters[key](value);\n}, 0);\n\nmodule.exports = toMilliseconds;\n// TODO: remove this for next major version\nmodule.exports.default = toMilliseconds;\n","'use strict';\nmodule.exports = milliseconds => {\n\tif (typeof milliseconds !== 'number') {\n\t\tthrow new TypeError('Expected a number');\n\t}\n\n\tconst roundTowardsZero = milliseconds > 0 ? Math.floor : Math.ceil;\n\n\treturn {\n\t\tdays: roundTowardsZero(milliseconds / 86400000),\n\t\thours: roundTowardsZero(milliseconds / 3600000) % 24,\n\t\tminutes: roundTowardsZero(milliseconds / 60000) % 60,\n\t\tseconds: roundTowardsZero(milliseconds / 1000) % 60,\n\t\tmilliseconds: roundTowardsZero(milliseconds) % 1000,\n\t\tmicroseconds: roundTowardsZero(milliseconds * 1000) % 1000,\n\t\tnanoseconds: roundTowardsZero(milliseconds * 1e6) % 1000\n\t};\n};\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nexport { commonjsGlobal, getDefaultExportFromCjs };\n","var backbone = {exports: {}};\n\nexport { backbone as b };\n","var base = {};\n\nexport { base as __exports };\n","var blockHelperMissing = {exports: {}};\n\nexport { blockHelperMissing as b };\n","var createNewLookupObject = {};\n\nexport { createNewLookupObject as __exports };\n","var decorators = {};\n\nexport { decorators as __exports };\n","var each = {exports: {}};\n\nexport { each as e };\n","var exception = {exports: {}};\n\nexport { exception as e };\n","var handlebars_runtime = {exports: {}};\n\nexport { handlebars_runtime as h };\n","var helperMissing = {exports: {}};\n\nexport { helperMissing as h };\n","var helpers = {};\n\nexport { helpers as __exports };\n","var _if = {exports: {}};\n\nexport { _if as _ };\n","var inline = {exports: {}};\n\nexport { inline as i };\n","var js_cookie = {exports: {}};\n\nexport { js_cookie as j };\n","var log = {exports: {}};\n\nexport { log as l };\n","var logger = {exports: {}};\n\nexport { logger as l };\n","var lookup = {exports: {}};\n\nexport { lookup as l };\n","var noConflict = {exports: {}};\n\nexport { noConflict as n };\n","var protoAccess = {};\n\nexport { protoAccess as __exports };\n","var runtime = {};\n\nexport { runtime as __exports };\n","var safeString = {exports: {}};\n\nexport { safeString as s };\n","var underscoreMin = {exports: {}};\n\nexport { underscoreMin as u };\n","var utils = {};\n\nexport { utils as __exports };\n","var _with = {exports: {}};\n\nexport { _with as _ };\n","var wrapHelper = {};\n\nexport { wrapHelper as __exports };\n","import { getDefaultExportFromCjs } from '../../../../_virtual/_commonjsHelpers.js';\nimport { h as handlebars_runtime } from '../../../../_virtual/handlebars.runtime.js';\nimport './handlebars/base.js';\nimport './handlebars/safe-string.js';\nimport './handlebars/exception.js';\nimport './handlebars/utils.js';\nimport './handlebars/runtime.js';\nimport './handlebars/no-conflict.js';\nimport { __exports as base } from '../../../../_virtual/base.js';\nimport { __exports as utils } from '../../../../_virtual/utils.js';\nimport { __exports as runtime } from '../../../../_virtual/runtime.js';\nimport { e as exception } from '../../../../_virtual/exception.js';\nimport { n as noConflict } from '../../../../_virtual/no-conflict.js';\nimport { s as safeString } from '../../../../_virtual/safe-string.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n} // istanbul ignore next\n\n\nfunction _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)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _handlebarsBase = base;\n\nvar base$1 = _interopRequireWildcard(_handlebarsBase); // Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\n\nvar _handlebarsSafeString = safeString.exports;\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = exception.exports;\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = utils;\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = runtime;\n\nvar runtime$1 = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = noConflict.exports;\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n\n\nfunction create() {\n var hb = new base$1.HandlebarsEnvironment();\n Utils.extend(hb, base$1);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n hb.VM = runtime$1;\n\n hb.template = function (spec) {\n return runtime$1.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\nexports['default'] = inst;\nmodule.exports = exports['default'];\n}(handlebars_runtime, handlebars_runtime.exports));\n\nvar _Handlebars2 = /*@__PURE__*/getDefaultExportFromCjs(handlebars_runtime.exports);\n\nexport { _Handlebars2 as default };\n","import { __exports as base } from '../../../../../_virtual/base.js';\nexport { __exports as default } from '../../../../../_virtual/base.js';\nimport './utils.js';\nimport './exception.js';\nimport './helpers.js';\nimport './decorators.js';\nimport './logger.js';\nimport './internal/proto-access.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\nimport { __exports as protoAccess } from '../../../../../_virtual/proto-access.js';\nimport { __exports as helpers } from '../../../../../_virtual/helpers.js';\nimport { __exports as decorators } from '../../../../../_virtual/decorators.js';\nimport { l as logger } from '../../../../../_virtual/logger.js';\nimport { e as exception } from '../../../../../_virtual/exception.js';\n\nbase.__esModule = true;\nbase.HandlebarsEnvironment = HandlebarsEnvironment; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = helpers;\n\nvar _decorators = decorators;\n\nvar _logger = logger.exports;\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = protoAccess;\n\nvar VERSION = '4.7.7';\nbase.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nbase.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\nbase.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2',\n // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\nbase.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n logger: _logger2['default'],\n log: _logger2['default'].log,\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\nvar log = _logger2['default'].log;\nbase.log = log;\nbase.createFrame = _utils.createFrame;\nbase.logger = _logger2['default'];\n","import { __exports as decorators } from '../../../../../_virtual/decorators.js';\nexport { __exports as default } from '../../../../../_virtual/decorators.js';\nimport './decorators/inline.js';\nimport { i as inline } from '../../../../../_virtual/inline.js';\n\ndecorators.__esModule = true;\ndecorators.registerDefaultDecorators = registerDefaultDecorators; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _decoratorsInline = inline.exports;\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n","import { i as inline } from '../../../../../../_virtual/inline.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n\n if (!props.partials) {\n props.partials = {};\n\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n}(inline, inline.exports));\n","import { e as exception } from '../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message); // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n /* istanbul ignore else */\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber; // Work around issue under safari where we can't directly set the column value\n\n /* istanbul ignore next */\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n}(exception, exception.exports));\n","import { __exports as helpers } from '../../../../../_virtual/helpers.js';\nexport { __exports as default } from '../../../../../_virtual/helpers.js';\nimport './helpers/block-helper-missing.js';\nimport './helpers/each.js';\nimport './helpers/helper-missing.js';\nimport './helpers/if.js';\nimport './helpers/log.js';\nimport './helpers/lookup.js';\nimport './helpers/with.js';\nimport { e as each } from '../../../../../_virtual/each.js';\nimport { h as helperMissing } from '../../../../../_virtual/helper-missing.js';\nimport { _ as _if } from '../../../../../_virtual/if.js';\nimport { l as log } from '../../../../../_virtual/log.js';\nimport { l as lookup } from '../../../../../_virtual/lookup.js';\nimport { _ as _with } from '../../../../../_virtual/with.js';\nimport { b as blockHelperMissing } from '../../../../../_virtual/block-helper-missing.js';\n\nhelpers.__esModule = true;\nhelpers.registerDefaultHelpers = registerDefaultHelpers;\nhelpers.moveHelperToHooks = moveHelperToHooks; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _helpersBlockHelperMissing = blockHelperMissing.exports;\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = each.exports;\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = helperMissing.exports;\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = _if.exports;\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = log.exports;\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = lookup.exports;\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = _with.exports;\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n\n _helpersEach2['default'](instance);\n\n _helpersHelperMissing2['default'](instance);\n\n _helpersIf2['default'](instance);\n\n _helpersLog2['default'](instance);\n\n _helpersLookup2['default'](instance);\n\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n","import { b as blockHelperMissing } from '../../../../../../_virtual/block-helper-missing.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = {\n data: data\n };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(blockHelperMissing, blockHelperMissing.exports));\n","import { commonjsGlobal } from '../../../../../../_virtual/_commonjsHelpers.js';\nimport { e as each } from '../../../../../../_virtual/each.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (commonjsGlobal.Symbol && context[commonjsGlobal.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[commonjsGlobal.Symbol.iterator]();\n\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n\n context = newContext;\n\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n\n priorKey = key;\n i++;\n });\n\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n}(each, each.exports));\n","import { h as helperMissing } from '../../../../../../_virtual/helper-missing.js';\nimport '../exception.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function ()\n /* [args, ]options */\n {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(helperMissing, helperMissing.exports));\n","import { _ as _if } from '../../../../../../_virtual/if.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n } // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n\n\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n}(_if, _if.exports));\n","import { l as log } from '../../../../../../_virtual/log.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function ()\n /* message, options */\n {\n var args = [undefined],\n options = arguments[arguments.length - 1];\n\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n\n args[0] = level;\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n}(log, log.exports));\n","import { l as lookup } from '../../../../../../_virtual/lookup.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n}(lookup, lookup.exports));\n","import { _ as _with } from '../../../../../../_virtual/with.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(_with, _with.exports));\n","import { __exports as createNewLookupObject$1 } from '../../../../../../_virtual/create-new-lookup-object.js';\nexport { __exports as default } from '../../../../../../_virtual/create-new-lookup-object.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\ncreateNewLookupObject$1.__esModule = true;\ncreateNewLookupObject$1.createNewLookupObject = createNewLookupObject;\n\nvar _utils = utils;\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n","import { __exports as protoAccess } from '../../../../../../_virtual/proto-access.js';\nexport { __exports as default } from '../../../../../../_virtual/proto-access.js';\nimport './create-new-lookup-object.js';\nimport '../logger.js';\nimport { __exports as createNewLookupObject } from '../../../../../../_virtual/create-new-lookup-object.js';\nimport { l as logger$1 } from '../../../../../../_virtual/logger.js';\n\nprotoAccess.__esModule = true;\nprotoAccess.createProtoAccessControl = createProtoAccessControl;\nprotoAccess.resultIsAllowed = resultIsAllowed;\nprotoAccess.resetLoggedProperties = resetLoggedProperties; // istanbul ignore next\n\nfunction _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)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _createNewLookupObject = createNewLookupObject;\n\nvar _logger = logger$1.exports;\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n var defaultPropertyWhiteList = Object.create(null); // eslint-disable-next-line no-proto\n\n defaultPropertyWhiteList['__proto__'] = false;\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n","import { __exports as wrapHelper$1 } from '../../../../../../_virtual/wrapHelper.js';\nexport { __exports as default } from '../../../../../../_virtual/wrapHelper.js';\n\nwrapHelper$1.__esModule = true;\nwrapHelper$1.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n\n var wrapper = function wrapper()\n /* dynamic arguments */\n {\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n\n return wrapper;\n}\n","import { l as logger } from '../../../../../_virtual/logger.js';\nimport './utils.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level]; // eslint-disable-next-line no-console\n\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\nexports['default'] = logger;\nmodule.exports = exports['default'];\n}(logger, logger.exports));\n","import { commonjsGlobal } from '../../../../../_virtual/_commonjsHelpers.js';\nimport { n as noConflict } from '../../../../../_virtual/no-conflict.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n}(noConflict, noConflict.exports));\n","import { __exports as runtime } from '../../../../../_virtual/runtime.js';\nexport { __exports as default } from '../../../../../_virtual/runtime.js';\nimport './utils.js';\nimport './exception.js';\nimport './base.js';\nimport './helpers.js';\nimport './internal/wrapHelper.js';\nimport './internal/proto-access.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\nimport { __exports as base } from '../../../../../_virtual/base.js';\nimport { __exports as protoAccess } from '../../../../../_virtual/proto-access.js';\nimport { __exports as helpers } from '../../../../../_virtual/helpers.js';\nimport { __exports as wrapHelper } from '../../../../../_virtual/wrapHelper.js';\nimport { e as exception } from '../../../../../_virtual/exception.js';\n\nruntime.__esModule = true;\nruntime.checkRevision = checkRevision;\nruntime.template = template;\nruntime.wrapProgram = wrapProgram;\nruntime.resolvePartial = resolvePartial;\nruntime.invokePartial = invokePartial;\nruntime.noop = noop; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n} // istanbul ignore next\n\n\nfunction _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)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _utils = utils;\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = base;\n\nvar _helpers = helpers;\n\nvar _internalWrapHelper = wrapHelper;\n\nvar _internalProtoAccess = protoAccess;\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d; // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n\n env.VM.checkRevision(templateSpec.compiler); // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n\n result = lines.join('\\n');\n }\n\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n } // Just add water\n\n\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n\n if (result == null) {\n return result;\n }\n\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n\n return programWrapper;\n },\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var data = options.data;\n\n ret._setup(options);\n\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context\n /*, options*/\n ) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var currentDepths = depths;\n\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data); // Wrapper function to get access to currentPartialBlock from the closure\n\n var fn = options.fn;\n\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({\n lookupProperty: lookupProperty\n }, options);\n });\n}\n","import { s as safeString } from '../../../../../_virtual/safe-string.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n}(safeString, safeString.exports));\n","import { __exports as utils } from '../../../../../_virtual/utils.js';\nexport { __exports as default } from '../../../../../_virtual/utils.js';\n\nutils.__esModule = true;\nutils.extend = extend;\nutils.indexOf = indexOf;\nutils.escapeExpression = escapeExpression;\nutils.isEmpty = isEmpty;\nutils.createFrame = createFrame;\nutils.blockParams = blockParams;\nutils.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj\n/* , ...source */\n) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\nutils.toString = toString; // Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n\n/* eslint-disable func-style */\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n}; // fallback for older versions of Chrome and Safari\n\n/* istanbul ignore next */\n\n\nif (isFunction(/x/)) {\n utils.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\n\nutils.isFunction = isFunction;\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\n\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nutils.isArray = isArray; // Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n } // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n\n\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n","import { commonjsGlobal } from '../../_virtual/_commonjsHelpers.js';\nimport { u as underscoreMin } from '../../_virtual/underscore-min.js';\n\n(function (module, exports) {\n!function (n, r) {\n module.exports = r() ;\n}(commonjsGlobal, function () {\n // Underscore.js 1.13.1\n // https://underscorejs.org\n // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n var n = \"1.13.1\",\n r = \"object\" == typeof self && self.self === self && self || \"object\" == typeof commonjsGlobal && commonjsGlobal.global === commonjsGlobal && commonjsGlobal || Function(\"return this\")() || {},\n t = Array.prototype,\n e = Object.prototype,\n u = \"undefined\" != typeof Symbol ? Symbol.prototype : null,\n o = t.push,\n i = t.slice,\n a = e.toString,\n f = e.hasOwnProperty,\n c = \"undefined\" != typeof ArrayBuffer,\n l = \"undefined\" != typeof DataView,\n s = Array.isArray,\n p = Object.keys,\n v = Object.create,\n h = c && ArrayBuffer.isView,\n y = isNaN,\n d = isFinite,\n g = !{\n toString: null\n }.propertyIsEnumerable(\"toString\"),\n b = [\"valueOf\", \"isPrototypeOf\", \"toString\", \"propertyIsEnumerable\", \"hasOwnProperty\", \"toLocaleString\"],\n m = Math.pow(2, 53) - 1;\n\n function j(n, r) {\n return r = null == r ? n.length - 1 : +r, function () {\n for (var t = Math.max(arguments.length - r, 0), e = Array(t), u = 0; u < t; u++) e[u] = arguments[u + r];\n\n switch (r) {\n case 0:\n return n.call(this, e);\n\n case 1:\n return n.call(this, arguments[0], e);\n\n case 2:\n return n.call(this, arguments[0], arguments[1], e);\n }\n\n var o = Array(r + 1);\n\n for (u = 0; u < r; u++) o[u] = arguments[u];\n\n return o[r] = e, n.apply(this, o);\n };\n }\n\n function _(n) {\n var r = typeof n;\n return \"function\" === r || \"object\" === r && !!n;\n }\n\n function w(n) {\n return void 0 === n;\n }\n\n function A(n) {\n return !0 === n || !1 === n || \"[object Boolean]\" === a.call(n);\n }\n\n function x(n) {\n var r = \"[object \" + n + \"]\";\n return function (n) {\n return a.call(n) === r;\n };\n }\n\n var S = x(\"String\"),\n O = x(\"Number\"),\n M = x(\"Date\"),\n E = x(\"RegExp\"),\n B = x(\"Error\"),\n N = x(\"Symbol\"),\n I = x(\"ArrayBuffer\"),\n T = x(\"Function\"),\n k = r.document && r.document.childNodes;\n \"function\" != typeof /./ && \"object\" != typeof Int8Array && \"function\" != typeof k && (T = function (n) {\n return \"function\" == typeof n || !1;\n });\n var D = T,\n R = x(\"Object\"),\n F = l && R(new DataView(new ArrayBuffer(8))),\n V = \"undefined\" != typeof Map && R(new Map()),\n P = x(\"DataView\");\n var q = F ? function (n) {\n return null != n && D(n.getInt8) && I(n.buffer);\n } : P,\n U = s || x(\"Array\");\n\n function W(n, r) {\n return null != n && f.call(n, r);\n }\n\n var z = x(\"Arguments\");\n !function () {\n z(arguments) || (z = function (n) {\n return W(n, \"callee\");\n });\n }();\n var L = z;\n\n function $(n) {\n return O(n) && y(n);\n }\n\n function C(n) {\n return function () {\n return n;\n };\n }\n\n function K(n) {\n return function (r) {\n var t = n(r);\n return \"number\" == typeof t && t >= 0 && t <= m;\n };\n }\n\n function J(n) {\n return function (r) {\n return null == r ? void 0 : r[n];\n };\n }\n\n var G = J(\"byteLength\"),\n H = K(G),\n Q = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\n var X = c ? function (n) {\n return h ? h(n) && !q(n) : H(n) && Q.test(a.call(n));\n } : C(!1),\n Y = J(\"length\");\n\n function Z(n, r) {\n r = function (n) {\n for (var r = {}, t = n.length, e = 0; e < t; ++e) r[n[e]] = !0;\n\n return {\n contains: function (n) {\n return r[n];\n },\n push: function (t) {\n return r[t] = !0, n.push(t);\n }\n };\n }(r);\n\n var t = b.length,\n u = n.constructor,\n o = D(u) && u.prototype || e,\n i = \"constructor\";\n\n for (W(n, i) && !r.contains(i) && r.push(i); t--;) (i = b[t]) in n && n[i] !== o[i] && !r.contains(i) && r.push(i);\n }\n\n function nn(n) {\n if (!_(n)) return [];\n if (p) return p(n);\n var r = [];\n\n for (var t in n) W(n, t) && r.push(t);\n\n return g && Z(n, r), r;\n }\n\n function rn(n, r) {\n var t = nn(r),\n e = t.length;\n if (null == n) return !e;\n\n for (var u = Object(n), o = 0; o < e; o++) {\n var i = t[o];\n if (r[i] !== u[i] || !(i in u)) return !1;\n }\n\n return !0;\n }\n\n function tn(n) {\n return n instanceof tn ? n : this instanceof tn ? void (this._wrapped = n) : new tn(n);\n }\n\n function en(n) {\n return new Uint8Array(n.buffer || n, n.byteOffset || 0, G(n));\n }\n\n tn.VERSION = n, tn.prototype.value = function () {\n return this._wrapped;\n }, tn.prototype.valueOf = tn.prototype.toJSON = tn.prototype.value, tn.prototype.toString = function () {\n return String(this._wrapped);\n };\n var un = \"[object DataView]\";\n\n function on(n, r, t, e) {\n if (n === r) return 0 !== n || 1 / n == 1 / r;\n if (null == n || null == r) return !1;\n if (n != n) return r != r;\n var o = typeof n;\n return (\"function\" === o || \"object\" === o || \"object\" == typeof r) && function n(r, t, e, o) {\n r instanceof tn && (r = r._wrapped);\n t instanceof tn && (t = t._wrapped);\n var i = a.call(r);\n if (i !== a.call(t)) return !1;\n\n if (F && \"[object Object]\" == i && q(r)) {\n if (!q(t)) return !1;\n i = un;\n }\n\n switch (i) {\n case \"[object RegExp]\":\n case \"[object String]\":\n return \"\" + r == \"\" + t;\n\n case \"[object Number]\":\n return +r != +r ? +t != +t : 0 == +r ? 1 / +r == 1 / t : +r == +t;\n\n case \"[object Date]\":\n case \"[object Boolean]\":\n return +r == +t;\n\n case \"[object Symbol]\":\n return u.valueOf.call(r) === u.valueOf.call(t);\n\n case \"[object ArrayBuffer]\":\n case un:\n return n(en(r), en(t), e, o);\n }\n\n var f = \"[object Array]\" === i;\n\n if (!f && X(r)) {\n if (G(r) !== G(t)) return !1;\n if (r.buffer === t.buffer && r.byteOffset === t.byteOffset) return !0;\n f = !0;\n }\n\n if (!f) {\n if (\"object\" != typeof r || \"object\" != typeof t) return !1;\n var c = r.constructor,\n l = t.constructor;\n if (c !== l && !(D(c) && c instanceof c && D(l) && l instanceof l) && \"constructor\" in r && \"constructor\" in t) return !1;\n }\n\n o = o || [];\n var s = (e = e || []).length;\n\n for (; s--;) if (e[s] === r) return o[s] === t;\n\n if (e.push(r), o.push(t), f) {\n if ((s = r.length) !== t.length) return !1;\n\n for (; s--;) if (!on(r[s], t[s], e, o)) return !1;\n } else {\n var p,\n v = nn(r);\n if (s = v.length, nn(t).length !== s) return !1;\n\n for (; s--;) if (p = v[s], !W(t, p) || !on(r[p], t[p], e, o)) return !1;\n }\n\n return e.pop(), o.pop(), !0;\n }(n, r, t, e);\n }\n\n function an(n) {\n if (!_(n)) return [];\n var r = [];\n\n for (var t in n) r.push(t);\n\n return g && Z(n, r), r;\n }\n\n function fn(n) {\n var r = Y(n);\n return function (t) {\n if (null == t) return !1;\n var e = an(t);\n if (Y(e)) return !1;\n\n for (var u = 0; u < r; u++) if (!D(t[n[u]])) return !1;\n\n return n !== hn || !D(t[cn]);\n };\n }\n\n var cn = \"forEach\",\n ln = \"has\",\n sn = [\"clear\", \"delete\"],\n pn = [\"get\", ln, \"set\"],\n vn = sn.concat(cn, pn),\n hn = sn.concat(pn),\n yn = [\"add\"].concat(sn, cn, ln),\n dn = V ? fn(vn) : x(\"Map\"),\n gn = V ? fn(hn) : x(\"WeakMap\"),\n bn = V ? fn(yn) : x(\"Set\"),\n mn = x(\"WeakSet\");\n\n function jn(n) {\n for (var r = nn(n), t = r.length, e = Array(t), u = 0; u < t; u++) e[u] = n[r[u]];\n\n return e;\n }\n\n function _n(n) {\n for (var r = {}, t = nn(n), e = 0, u = t.length; e < u; e++) r[n[t[e]]] = t[e];\n\n return r;\n }\n\n function wn(n) {\n var r = [];\n\n for (var t in n) D(n[t]) && r.push(t);\n\n return r.sort();\n }\n\n function An(n, r) {\n return function (t) {\n var e = arguments.length;\n if (r && (t = Object(t)), e < 2 || null == t) return t;\n\n for (var u = 1; u < e; u++) for (var o = arguments[u], i = n(o), a = i.length, f = 0; f < a; f++) {\n var c = i[f];\n r && void 0 !== t[c] || (t[c] = o[c]);\n }\n\n return t;\n };\n }\n\n var xn = An(an),\n Sn = An(nn),\n On = An(an, !0);\n\n function Mn(n) {\n if (!_(n)) return {};\n if (v) return v(n);\n\n var r = function () {};\n\n r.prototype = n;\n var t = new r();\n return r.prototype = null, t;\n }\n\n function En(n) {\n return _(n) ? U(n) ? n.slice() : xn({}, n) : n;\n }\n\n function Bn(n) {\n return U(n) ? n : [n];\n }\n\n function Nn(n) {\n return tn.toPath(n);\n }\n\n function In(n, r) {\n for (var t = r.length, e = 0; e < t; e++) {\n if (null == n) return;\n n = n[r[e]];\n }\n\n return t ? n : void 0;\n }\n\n function Tn(n, r, t) {\n var e = In(n, Nn(r));\n return w(e) ? t : e;\n }\n\n function kn(n) {\n return n;\n }\n\n function Dn(n) {\n return n = Sn({}, n), function (r) {\n return rn(r, n);\n };\n }\n\n function Rn(n) {\n return n = Nn(n), function (r) {\n return In(r, n);\n };\n }\n\n function Fn(n, r, t) {\n if (void 0 === r) return n;\n\n switch (null == t ? 3 : t) {\n case 1:\n return function (t) {\n return n.call(r, t);\n };\n\n case 3:\n return function (t, e, u) {\n return n.call(r, t, e, u);\n };\n\n case 4:\n return function (t, e, u, o) {\n return n.call(r, t, e, u, o);\n };\n }\n\n return function () {\n return n.apply(r, arguments);\n };\n }\n\n function Vn(n, r, t) {\n return null == n ? kn : D(n) ? Fn(n, r, t) : _(n) && !U(n) ? Dn(n) : Rn(n);\n }\n\n function Pn(n, r) {\n return Vn(n, r, 1 / 0);\n }\n\n function qn(n, r, t) {\n return tn.iteratee !== Pn ? tn.iteratee(n, r) : Vn(n, r, t);\n }\n\n function Un() {}\n\n function Wn(n, r) {\n return null == r && (r = n, n = 0), n + Math.floor(Math.random() * (r - n + 1));\n }\n\n tn.toPath = Bn, tn.iteratee = Pn;\n\n var zn = Date.now || function () {\n return new Date().getTime();\n };\n\n function Ln(n) {\n var r = function (r) {\n return n[r];\n },\n t = \"(?:\" + nn(n).join(\"|\") + \")\",\n e = RegExp(t),\n u = RegExp(t, \"g\");\n\n return function (n) {\n return n = null == n ? \"\" : \"\" + n, e.test(n) ? n.replace(u, r) : n;\n };\n }\n\n var $n = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n },\n Cn = Ln($n),\n Kn = Ln(_n($n)),\n Jn = tn.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n },\n Gn = /(.)^/,\n Hn = {\n \"'\": \"'\",\n \"\\\\\": \"\\\\\",\n \"\\r\": \"r\",\n \"\\n\": \"n\",\n \"\\u2028\": \"u2028\",\n \"\\u2029\": \"u2029\"\n },\n Qn = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n function Xn(n) {\n return \"\\\\\" + Hn[n];\n }\n\n var Yn = /^\\s*(\\w|\\$)+\\s*$/;\n var Zn = 0;\n\n function nr(n, r, t, e, u) {\n if (!(e instanceof r)) return n.apply(t, u);\n var o = Mn(n.prototype),\n i = n.apply(o, u);\n return _(i) ? i : o;\n }\n\n var rr = j(function (n, r) {\n var t = rr.placeholder,\n e = function () {\n for (var u = 0, o = r.length, i = Array(o), a = 0; a < o; a++) i[a] = r[a] === t ? arguments[u++] : r[a];\n\n for (; u < arguments.length;) i.push(arguments[u++]);\n\n return nr(n, e, this, this, i);\n };\n\n return e;\n });\n rr.placeholder = tn;\n var tr = j(function (n, r, t) {\n if (!D(n)) throw new TypeError(\"Bind must be called on a function\");\n var e = j(function (u) {\n return nr(n, e, r, this, t.concat(u));\n });\n return e;\n }),\n er = K(Y);\n\n function ur(n, r, t, e) {\n if (e = e || [], r || 0 === r) {\n if (r <= 0) return e.concat(n);\n } else r = 1 / 0;\n\n for (var u = e.length, o = 0, i = Y(n); o < i; o++) {\n var a = n[o];\n if (er(a) && (U(a) || L(a))) {\n if (r > 1) ur(a, r - 1, t, e), u = e.length;else for (var f = 0, c = a.length; f < c;) e[u++] = a[f++];\n } else t || (e[u++] = a);\n }\n\n return e;\n }\n\n var or = j(function (n, r) {\n var t = (r = ur(r, !1, !1)).length;\n if (t < 1) throw new Error(\"bindAll must be passed function names\");\n\n for (; t--;) {\n var e = r[t];\n n[e] = tr(n[e], n);\n }\n\n return n;\n });\n var ir = j(function (n, r, t) {\n return setTimeout(function () {\n return n.apply(null, t);\n }, r);\n }),\n ar = rr(ir, tn, 1);\n\n function fr(n) {\n return function () {\n return !n.apply(this, arguments);\n };\n }\n\n function cr(n, r) {\n var t;\n return function () {\n return --n > 0 && (t = r.apply(this, arguments)), n <= 1 && (r = null), t;\n };\n }\n\n var lr = rr(cr, 2);\n\n function sr(n, r, t) {\n r = qn(r, t);\n\n for (var e, u = nn(n), o = 0, i = u.length; o < i; o++) if (r(n[e = u[o]], e, n)) return e;\n }\n\n function pr(n) {\n return function (r, t, e) {\n t = qn(t, e);\n\n for (var u = Y(r), o = n > 0 ? 0 : u - 1; o >= 0 && o < u; o += n) if (t(r[o], o, r)) return o;\n\n return -1;\n };\n }\n\n var vr = pr(1),\n hr = pr(-1);\n\n function yr(n, r, t, e) {\n for (var u = (t = qn(t, e, 1))(r), o = 0, i = Y(n); o < i;) {\n var a = Math.floor((o + i) / 2);\n t(n[a]) < u ? o = a + 1 : i = a;\n }\n\n return o;\n }\n\n function dr(n, r, t) {\n return function (e, u, o) {\n var a = 0,\n f = Y(e);\n if (\"number\" == typeof o) n > 0 ? a = o >= 0 ? o : Math.max(o + f, a) : f = o >= 0 ? Math.min(o + 1, f) : o + f + 1;else if (t && o && f) return e[o = t(e, u)] === u ? o : -1;\n if (u != u) return (o = r(i.call(e, a, f), $)) >= 0 ? o + a : -1;\n\n for (o = n > 0 ? a : f - 1; o >= 0 && o < f; o += n) if (e[o] === u) return o;\n\n return -1;\n };\n }\n\n var gr = dr(1, vr, yr),\n br = dr(-1, hr);\n\n function mr(n, r, t) {\n var e = (er(n) ? vr : sr)(n, r, t);\n if (void 0 !== e && -1 !== e) return n[e];\n }\n\n function jr(n, r, t) {\n var e, u;\n if (r = Fn(r, t), er(n)) for (e = 0, u = n.length; e < u; e++) r(n[e], e, n);else {\n var o = nn(n);\n\n for (e = 0, u = o.length; e < u; e++) r(n[o[e]], o[e], n);\n }\n return n;\n }\n\n function _r(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = Array(u), i = 0; i < u; i++) {\n var a = e ? e[i] : i;\n o[i] = r(n[a], a, n);\n }\n\n return o;\n }\n\n function wr(n) {\n var r = function (r, t, e, u) {\n var o = !er(r) && nn(r),\n i = (o || r).length,\n a = n > 0 ? 0 : i - 1;\n\n for (u || (e = r[o ? o[a] : a], a += n); a >= 0 && a < i; a += n) {\n var f = o ? o[a] : a;\n e = t(e, r[f], f, r);\n }\n\n return e;\n };\n\n return function (n, t, e, u) {\n var o = arguments.length >= 3;\n return r(n, Fn(t, u, 4), e, o);\n };\n }\n\n var Ar = wr(1),\n xr = wr(-1);\n\n function Sr(n, r, t) {\n var e = [];\n return r = qn(r, t), jr(n, function (n, t, u) {\n r(n, t, u) && e.push(n);\n }), e;\n }\n\n function Or(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = 0; o < u; o++) {\n var i = e ? e[o] : o;\n if (!r(n[i], i, n)) return !1;\n }\n\n return !0;\n }\n\n function Mr(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = 0; o < u; o++) {\n var i = e ? e[o] : o;\n if (r(n[i], i, n)) return !0;\n }\n\n return !1;\n }\n\n function Er(n, r, t, e) {\n return er(n) || (n = jn(n)), (\"number\" != typeof t || e) && (t = 0), gr(n, r, t) >= 0;\n }\n\n var Br = j(function (n, r, t) {\n var e, u;\n return D(r) ? u = r : (r = Nn(r), e = r.slice(0, -1), r = r[r.length - 1]), _r(n, function (n) {\n var o = u;\n\n if (!o) {\n if (e && e.length && (n = In(n, e)), null == n) return;\n o = n[r];\n }\n\n return null == o ? o : o.apply(n, t);\n });\n });\n\n function Nr(n, r) {\n return _r(n, Rn(r));\n }\n\n function Ir(n, r, t) {\n var e,\n u,\n o = -1 / 0,\n i = -1 / 0;\n if (null == r || \"number\" == typeof r && \"object\" != typeof n[0] && null != n) for (var a = 0, f = (n = er(n) ? n : jn(n)).length; a < f; a++) null != (e = n[a]) && e > o && (o = e);else r = qn(r, t), jr(n, function (n, t, e) {\n ((u = r(n, t, e)) > i || u === -1 / 0 && o === -1 / 0) && (o = n, i = u);\n });\n return o;\n }\n\n function Tr(n, r, t) {\n if (null == r || t) return er(n) || (n = jn(n)), n[Wn(n.length - 1)];\n var e = er(n) ? En(n) : jn(n),\n u = Y(e);\n r = Math.max(Math.min(r, u), 0);\n\n for (var o = u - 1, i = 0; i < r; i++) {\n var a = Wn(i, o),\n f = e[i];\n e[i] = e[a], e[a] = f;\n }\n\n return e.slice(0, r);\n }\n\n function kr(n, r) {\n return function (t, e, u) {\n var o = r ? [[], []] : {};\n return e = qn(e, u), jr(t, function (r, u) {\n var i = e(r, u, t);\n n(o, r, i);\n }), o;\n };\n }\n\n var Dr = kr(function (n, r, t) {\n W(n, t) ? n[t].push(r) : n[t] = [r];\n }),\n Rr = kr(function (n, r, t) {\n n[t] = r;\n }),\n Fr = kr(function (n, r, t) {\n W(n, t) ? n[t]++ : n[t] = 1;\n }),\n Vr = kr(function (n, r, t) {\n n[t ? 0 : 1].push(r);\n }, !0),\n Pr = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n\n function qr(n, r, t) {\n return r in t;\n }\n\n var Ur = j(function (n, r) {\n var t = {},\n e = r[0];\n if (null == n) return t;\n D(e) ? (r.length > 1 && (e = Fn(e, r[1])), r = an(n)) : (e = qr, r = ur(r, !1, !1), n = Object(n));\n\n for (var u = 0, o = r.length; u < o; u++) {\n var i = r[u],\n a = n[i];\n e(a, i, n) && (t[i] = a);\n }\n\n return t;\n }),\n Wr = j(function (n, r) {\n var t,\n e = r[0];\n return D(e) ? (e = fr(e), r.length > 1 && (t = r[1])) : (r = _r(ur(r, !1, !1), String), e = function (n, t) {\n return !Er(r, t);\n }), Ur(n, e, t);\n });\n\n function zr(n, r, t) {\n return i.call(n, 0, Math.max(0, n.length - (null == r || t ? 1 : r)));\n }\n\n function Lr(n, r, t) {\n return null == n || n.length < 1 ? null == r || t ? void 0 : [] : null == r || t ? n[0] : zr(n, n.length - r);\n }\n\n function $r(n, r, t) {\n return i.call(n, null == r || t ? 1 : r);\n }\n\n var Cr = j(function (n, r) {\n return r = ur(r, !0, !0), Sr(n, function (n) {\n return !Er(r, n);\n });\n }),\n Kr = j(function (n, r) {\n return Cr(n, r);\n });\n\n function Jr(n, r, t, e) {\n A(r) || (e = t, t = r, r = !1), null != t && (t = qn(t, e));\n\n for (var u = [], o = [], i = 0, a = Y(n); i < a; i++) {\n var f = n[i],\n c = t ? t(f, i, n) : f;\n r && !t ? (i && o === c || u.push(f), o = c) : t ? Er(o, c) || (o.push(c), u.push(f)) : Er(u, f) || u.push(f);\n }\n\n return u;\n }\n\n var Gr = j(function (n) {\n return Jr(ur(n, !0, !0));\n });\n\n function Hr(n) {\n for (var r = n && Ir(n, Y).length || 0, t = Array(r), e = 0; e < r; e++) t[e] = Nr(n, e);\n\n return t;\n }\n\n var Qr = j(Hr);\n\n function Xr(n, r) {\n return n._chain ? tn(r).chain() : r;\n }\n\n function Yr(n) {\n return jr(wn(n), function (r) {\n var t = tn[r] = n[r];\n\n tn.prototype[r] = function () {\n var n = [this._wrapped];\n return o.apply(n, arguments), Xr(this, t.apply(tn, n));\n };\n }), tn;\n }\n\n jr([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function (n) {\n var r = t[n];\n\n tn.prototype[n] = function () {\n var t = this._wrapped;\n return null != t && (r.apply(t, arguments), \"shift\" !== n && \"splice\" !== n || 0 !== t.length || delete t[0]), Xr(this, t);\n };\n }), jr([\"concat\", \"join\", \"slice\"], function (n) {\n var r = t[n];\n\n tn.prototype[n] = function () {\n var n = this._wrapped;\n return null != n && (n = r.apply(n, arguments)), Xr(this, n);\n };\n });\n var Zr = Yr({\n __proto__: null,\n VERSION: n,\n restArguments: j,\n isObject: _,\n isNull: function (n) {\n return null === n;\n },\n isUndefined: w,\n isBoolean: A,\n isElement: function (n) {\n return !(!n || 1 !== n.nodeType);\n },\n isString: S,\n isNumber: O,\n isDate: M,\n isRegExp: E,\n isError: B,\n isSymbol: N,\n isArrayBuffer: I,\n isDataView: q,\n isArray: U,\n isFunction: D,\n isArguments: L,\n isFinite: function (n) {\n return !N(n) && d(n) && !isNaN(parseFloat(n));\n },\n isNaN: $,\n isTypedArray: X,\n isEmpty: function (n) {\n if (null == n) return !0;\n var r = Y(n);\n return \"number\" == typeof r && (U(n) || S(n) || L(n)) ? 0 === r : 0 === Y(nn(n));\n },\n isMatch: rn,\n isEqual: function (n, r) {\n return on(n, r);\n },\n isMap: dn,\n isWeakMap: gn,\n isSet: bn,\n isWeakSet: mn,\n keys: nn,\n allKeys: an,\n values: jn,\n pairs: function (n) {\n for (var r = nn(n), t = r.length, e = Array(t), u = 0; u < t; u++) e[u] = [r[u], n[r[u]]];\n\n return e;\n },\n invert: _n,\n functions: wn,\n methods: wn,\n extend: xn,\n extendOwn: Sn,\n assign: Sn,\n defaults: On,\n create: function (n, r) {\n var t = Mn(n);\n return r && Sn(t, r), t;\n },\n clone: En,\n tap: function (n, r) {\n return r(n), n;\n },\n get: Tn,\n has: function (n, r) {\n for (var t = (r = Nn(r)).length, e = 0; e < t; e++) {\n var u = r[e];\n if (!W(n, u)) return !1;\n n = n[u];\n }\n\n return !!t;\n },\n mapObject: function (n, r, t) {\n r = qn(r, t);\n\n for (var e = nn(n), u = e.length, o = {}, i = 0; i < u; i++) {\n var a = e[i];\n o[a] = r(n[a], a, n);\n }\n\n return o;\n },\n identity: kn,\n constant: C,\n noop: Un,\n toPath: Bn,\n property: Rn,\n propertyOf: function (n) {\n return null == n ? Un : function (r) {\n return Tn(n, r);\n };\n },\n matcher: Dn,\n matches: Dn,\n times: function (n, r, t) {\n var e = Array(Math.max(0, n));\n r = Fn(r, t, 1);\n\n for (var u = 0; u < n; u++) e[u] = r(u);\n\n return e;\n },\n random: Wn,\n now: zn,\n escape: Cn,\n unescape: Kn,\n templateSettings: Jn,\n template: function (n, r, t) {\n !r && t && (r = t), r = On({}, r, tn.templateSettings);\n var e = RegExp([(r.escape || Gn).source, (r.interpolate || Gn).source, (r.evaluate || Gn).source].join(\"|\") + \"|$\", \"g\"),\n u = 0,\n o = \"__p+='\";\n n.replace(e, function (r, t, e, i, a) {\n return o += n.slice(u, a).replace(Qn, Xn), u = a + r.length, t ? o += \"'+\\n((__t=(\" + t + \"))==null?'':_.escape(__t))+\\n'\" : e ? o += \"'+\\n((__t=(\" + e + \"))==null?'':__t)+\\n'\" : i && (o += \"';\\n\" + i + \"\\n__p+='\"), r;\n }), o += \"';\\n\";\n var i,\n a = r.variable;\n\n if (a) {\n if (!Yn.test(a)) throw new Error(\"variable is not a bare identifier: \" + a);\n } else o = \"with(obj||{}){\\n\" + o + \"}\\n\", a = \"obj\";\n\n o = \"var __t,__p='',__j=Array.prototype.join,\" + \"print=function(){__p+=__j.call(arguments,'');};\\n\" + o + \"return __p;\\n\";\n\n try {\n i = new Function(a, \"_\", o);\n } catch (n) {\n throw n.source = o, n;\n }\n\n var f = function (n) {\n return i.call(this, n, tn);\n };\n\n return f.source = \"function(\" + a + \"){\\n\" + o + \"}\", f;\n },\n result: function (n, r, t) {\n var e = (r = Nn(r)).length;\n if (!e) return D(t) ? t.call(n) : t;\n\n for (var u = 0; u < e; u++) {\n var o = null == n ? void 0 : n[r[u]];\n void 0 === o && (o = t, u = e), n = D(o) ? o.call(n) : o;\n }\n\n return n;\n },\n uniqueId: function (n) {\n var r = ++Zn + \"\";\n return n ? n + r : r;\n },\n chain: function (n) {\n var r = tn(n);\n return r._chain = !0, r;\n },\n iteratee: Pn,\n partial: rr,\n bind: tr,\n bindAll: or,\n memoize: function (n, r) {\n var t = function (e) {\n var u = t.cache,\n o = \"\" + (r ? r.apply(this, arguments) : e);\n return W(u, o) || (u[o] = n.apply(this, arguments)), u[o];\n };\n\n return t.cache = {}, t;\n },\n delay: ir,\n defer: ar,\n throttle: function (n, r, t) {\n var e,\n u,\n o,\n i,\n a = 0;\n t || (t = {});\n\n var f = function () {\n a = !1 === t.leading ? 0 : zn(), e = null, i = n.apply(u, o), e || (u = o = null);\n },\n c = function () {\n var c = zn();\n a || !1 !== t.leading || (a = c);\n var l = r - (c - a);\n return u = this, o = arguments, l <= 0 || l > r ? (e && (clearTimeout(e), e = null), a = c, i = n.apply(u, o), e || (u = o = null)) : e || !1 === t.trailing || (e = setTimeout(f, l)), i;\n };\n\n return c.cancel = function () {\n clearTimeout(e), a = 0, e = u = o = null;\n }, c;\n },\n debounce: function (n, r, t) {\n var e,\n u,\n o,\n i,\n a,\n f = function () {\n var c = zn() - u;\n r > c ? e = setTimeout(f, r - c) : (e = null, t || (i = n.apply(a, o)), e || (o = a = null));\n },\n c = j(function (c) {\n return a = this, o = c, u = zn(), e || (e = setTimeout(f, r), t && (i = n.apply(a, o))), i;\n });\n\n return c.cancel = function () {\n clearTimeout(e), e = o = a = null;\n }, c;\n },\n wrap: function (n, r) {\n return rr(r, n);\n },\n negate: fr,\n compose: function () {\n var n = arguments,\n r = n.length - 1;\n return function () {\n for (var t = r, e = n[r].apply(this, arguments); t--;) e = n[t].call(this, e);\n\n return e;\n };\n },\n after: function (n, r) {\n return function () {\n if (--n < 1) return r.apply(this, arguments);\n };\n },\n before: cr,\n once: lr,\n findKey: sr,\n findIndex: vr,\n findLastIndex: hr,\n sortedIndex: yr,\n indexOf: gr,\n lastIndexOf: br,\n find: mr,\n detect: mr,\n findWhere: function (n, r) {\n return mr(n, Dn(r));\n },\n each: jr,\n forEach: jr,\n map: _r,\n collect: _r,\n reduce: Ar,\n foldl: Ar,\n inject: Ar,\n reduceRight: xr,\n foldr: xr,\n filter: Sr,\n select: Sr,\n reject: function (n, r, t) {\n return Sr(n, fr(qn(r)), t);\n },\n every: Or,\n all: Or,\n some: Mr,\n any: Mr,\n contains: Er,\n includes: Er,\n include: Er,\n invoke: Br,\n pluck: Nr,\n where: function (n, r) {\n return Sr(n, Dn(r));\n },\n max: Ir,\n min: function (n, r, t) {\n var e,\n u,\n o = 1 / 0,\n i = 1 / 0;\n if (null == r || \"number\" == typeof r && \"object\" != typeof n[0] && null != n) for (var a = 0, f = (n = er(n) ? n : jn(n)).length; a < f; a++) null != (e = n[a]) && e < o && (o = e);else r = qn(r, t), jr(n, function (n, t, e) {\n ((u = r(n, t, e)) < i || u === 1 / 0 && o === 1 / 0) && (o = n, i = u);\n });\n return o;\n },\n shuffle: function (n) {\n return Tr(n, 1 / 0);\n },\n sample: Tr,\n sortBy: function (n, r, t) {\n var e = 0;\n return r = qn(r, t), Nr(_r(n, function (n, t, u) {\n return {\n value: n,\n index: e++,\n criteria: r(n, t, u)\n };\n }).sort(function (n, r) {\n var t = n.criteria,\n e = r.criteria;\n\n if (t !== e) {\n if (t > e || void 0 === t) return 1;\n if (t < e || void 0 === e) return -1;\n }\n\n return n.index - r.index;\n }), \"value\");\n },\n groupBy: Dr,\n indexBy: Rr,\n countBy: Fr,\n partition: Vr,\n toArray: function (n) {\n return n ? U(n) ? i.call(n) : S(n) ? n.match(Pr) : er(n) ? _r(n, kn) : jn(n) : [];\n },\n size: function (n) {\n return null == n ? 0 : er(n) ? n.length : nn(n).length;\n },\n pick: Ur,\n omit: Wr,\n first: Lr,\n head: Lr,\n take: Lr,\n initial: zr,\n last: function (n, r, t) {\n return null == n || n.length < 1 ? null == r || t ? void 0 : [] : null == r || t ? n[n.length - 1] : $r(n, Math.max(0, n.length - r));\n },\n rest: $r,\n tail: $r,\n drop: $r,\n compact: function (n) {\n return Sr(n, Boolean);\n },\n flatten: function (n, r) {\n return ur(n, r, !1);\n },\n without: Kr,\n uniq: Jr,\n unique: Jr,\n union: Gr,\n intersection: function (n) {\n for (var r = [], t = arguments.length, e = 0, u = Y(n); e < u; e++) {\n var o = n[e];\n\n if (!Er(r, o)) {\n var i;\n\n for (i = 1; i < t && Er(arguments[i], o); i++);\n\n i === t && r.push(o);\n }\n }\n\n return r;\n },\n difference: Cr,\n unzip: Hr,\n transpose: Hr,\n zip: Qr,\n object: function (n, r) {\n for (var t = {}, e = 0, u = Y(n); e < u; e++) r ? t[n[e]] = r[e] : t[n[e][0]] = n[e][1];\n\n return t;\n },\n range: function (n, r, t) {\n null == r && (r = n || 0, n = 0), t || (t = r < n ? -1 : 1);\n\n for (var e = Math.max(Math.ceil((r - n) / t), 0), u = Array(e), o = 0; o < e; o++, n += t) u[o] = n;\n\n return u;\n },\n chunk: function (n, r) {\n if (null == r || r < 1) return [];\n\n for (var t = [], e = 0, u = n.length; e < u;) t.push(i.call(n, e, e += r));\n\n return t;\n },\n mixin: Yr,\n default: tn\n });\n return Zr._ = Zr, Zr;\n});\n}(underscoreMin));\n\nvar _ = underscoreMin.exports;\n\nexport { _ as default };\n","import BaseCollection from './courage/models/BaseCollection.js';\nexport { default as BaseModel } from './courage/models/BaseModel.js';\nimport BaseSchema from './courage/models/BaseSchema.js';\nexport { default as Model } from './courage/models/Model.js';\nimport SchemaProperty from './courage/models/SchemaProperty.js';\nimport BaseController from './courage/util/BaseController.js';\nimport BaseRouter from './courage/util/BaseRouter.js';\nimport ButtonFactory from './courage/util/ButtonFactory.js';\nimport Class from './courage/util/Class.js';\nimport Cookie from './courage/util/Cookie.js';\nimport Clipboard from './courage/util/Clipboard.js';\nimport Keys from './courage/util/Keys.js';\nimport Logger from './courage/util/Logger.js';\nimport StringUtil from './courage/util/StringUtil.js';\nimport Util from './courage/util/Util.js';\nexport { default as Handlebars } from '../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport './courage/util/handlebars/handle-url.js';\nimport './courage/util/handlebars/helper-base64.js';\nimport './courage/util/handlebars/helper-i18n.js';\nimport './courage/util/handlebars/helper-img.js';\nimport './courage/util/handlebars/helper-markdown.js';\nimport './courage/util/handlebars/helper-xsrfTokenInput.js';\nexport { default as $ } from './courage/util/jquery-wrapper.js';\nexport { default as _ } from './courage/util/underscore-wrapper.js';\nexport { default as ListView } from './courage/views/Backbone.ListView.js';\nimport BaseView from './courage/views/BaseView.js';\nimport BaseDropDown from './courage/views/components/BaseDropDown.js';\nimport Notification from './courage/views/components/Notification.js';\nimport BaseForm from './courage/views/forms/BaseForm.js';\nimport Toolbar from './courage/views/forms/components/Toolbar.js';\nimport FormUtil from './courage/views/forms/helpers/FormUtil.js';\nimport InputRegistry from './courage/views/forms/helpers/InputRegistry.js';\nimport SchemaFormFactory from './courage/views/forms/helpers/SchemaFormFactory.js';\nimport BaseInput from './courage/views/forms/BaseInput.js';\nimport CheckBox from './courage/views/forms/inputs/CheckBox.js';\nimport PasswordBox from './courage/views/forms/inputs/PasswordBox.js';\nimport Radio from './courage/views/forms/inputs/Radio.js';\nimport Select from './courage/views/forms/inputs/Select.js';\nimport InputGroup from './courage/views/forms/inputs/InputGroup.js';\nimport TextBox from './courage/views/forms/inputs/TextBox.js';\nimport Callout from './courage/views/components/Callout.js';\nexport { default as Backbone } from './courage/vendor/lib/backbone.js';\nimport FrameworkView from './courage/framework/View.js';\nexport { default as FrameworkView } from './courage/framework/View.js';\nimport './util/scrollParent.js';\nexport { isModelPropertySchema } from './courage/framework/Model.js';\nimport './courage/util/SettingsModel.js';\n\nconst Controller = BaseController.extend({\n // The courage BaseController renders asynchronously in current versions of jQuery\n // https://github.com/okta/okta-ui/blob/master/packages/courage/src/util/BaseController.ts#L117-L119\n // https://api.jquery.com/jquery/#jQuery-callback\n // Override so that render is synchronous\n render: function (...args) {\n BaseView.prototype.render.apply(this, args);\n return this;\n }\n});\n\nSelect.prototype.remove = function () {\n // Patched to remove unneeded call to\n // this.$select.trigger('remove');\n // which causes error on IE11\n return BaseInput.prototype.remove.apply(this, arguments);\n}; // The string will be returned unchanged. All templates should be precompiled.\n\n\nFrameworkView.prototype.compileTemplate = function (str) {\n const compiledTmpl = function fakeTemplate() {\n return str;\n };\n\n compiledTmpl.source = ''; // to satisfy TS\n\n return compiledTmpl;\n}; // Override events to not support `Enter` submitting the form twice - OKTA-321999 and OKTA-317629\n\n\nconst events = {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'keyup input': function (e) {\n if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n};\nconst TextBoxForSigninWidget = TextBox.extend({\n events: events\n});\nconst PasswordBoxForSigninWidget = PasswordBox.extend({\n events: events\n});\nconst Form = BaseForm.extend({\n scrollOnError: function () {\n // scrollOnError is true by default. Override to false if `scrollOnError` has been set to false in widget settings.\n const {\n settings: settings\n } = this.options;\n\n if (settings.get('features.scrollOnError') === false) {\n return false;\n }\n\n return true;\n }\n});\nconst loc = StringUtil.localize;\nconst createButton = ButtonFactory.create;\nconst createCallout = Callout.create;\nconst registerInput = InputRegistry.register;\nconst Collection = BaseCollection;\nconst View = BaseView;\nconst Router = BaseRouter;\nconst internal = {\n util: {\n Util: Util,\n Cookie: Cookie,\n Clipboard: Clipboard,\n Logger: Logger,\n Class: Class,\n Keys: Keys\n },\n views: {\n components: {\n BaseDropDown: BaseDropDown,\n Notification: Notification\n },\n forms: {\n helpers: {\n FormUtil: FormUtil,\n SchemaFormFactory: SchemaFormFactory\n },\n components: {\n Toolbar: Toolbar\n },\n inputs: {\n TextBox: TextBoxForSigninWidget,\n PasswordBox: PasswordBoxForSigninWidget,\n CheckBox: CheckBox,\n Radio: Radio,\n Select: Select,\n InputGroup: InputGroup\n }\n }\n },\n models: {\n BaseSchema: BaseSchema,\n SchemaProperty: SchemaProperty\n }\n};\nregisterInput('text', TextBoxForSigninWidget);\nregisterInput('password', PasswordBoxForSigninWidget);\nregisterInput('checkbox', CheckBox);\nregisterInput('radio', Radio);\nregisterInput('select', Select);\nregisterInput('group', InputGroup);\n\nexport { Collection, Controller, Form, Router, View, createButton, createCallout, internal, loc, registerInput };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\n\nvar STATE = '__STATE__';\nvar FETCH_DATA = 'FETCH_DATA';\nvar PAGINATION_DATA = 'PAGINATION_DATA';\nvar DEFAULT_PARAMS = 'DEFAULT_PARAMS';\nvar LINK_BY_HEADER = 'LINK_BY_HEADER';\nvar XHR = 'XHR'; // ################################################\n// # Source: https://gist.github.com/deiu/9335803\n// ################################################\n// unquote string (utility)\n\nfunction unquote(value) {\n if (value.charAt(0) === '\"' && value.charAt(value.length - 1) === '\"') {\n return value.substring(1, value.length - 1);\n }\n\n return value;\n}\n/*\nparse a Link header\nLink:; rel=meta\nvar r = parseLinkHeader(xhr.getResponseHeader('Link');\nr['meta']['href'] outputs https://example.org/.meta\n*/\n\n\nfunction parseLinkHeader(header) {\n /* eslint max-statements: 0 */\n var linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\")))*(,|$)/g;\n var paramexp = /[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\"))/g;\n var matches = header.match(linkexp);\n var rels = {};\n\n for (var i = 0; i < matches.length; i++) {\n var split = matches[i].split('>');\n var href = split[0].substring(1);\n var link = {\n href: undefined,\n rel: undefined\n };\n link.href = href;\n var s = split[1].match(paramexp);\n\n for (var j = 0; j < s.length; j++) {\n var paramsplit = s[j].split('=');\n var name = paramsplit[0];\n link[name] = unquote(paramsplit[1]);\n }\n\n if (link.rel !== undefined) {\n rels[link.rel] = link;\n }\n }\n\n return rels;\n}\n/*\n * Sets the next page URL on the collection from link headers\n * See: http://www.rfc-editor.org/rfc/rfc5988.txt\n *\n * This method is looking for a link header with `rel=\"next\"`\n * An set's it as the next page's URL.\n *\n * If it doesn't find a next page, and current page is set by a link header\n * it assumes we are at the last page and deletes the current `next`\n */\n\n\nfunction setLinkHeadersPagination(collection, xhr) {\n try {\n var links = parseLinkHeader(xhr.getResponseHeader('link'));\n collection[STATE].set(LINK_BY_HEADER, true);\n collection.setPagination(links['next'].href);\n } catch (e) {\n if (collection[STATE].get(LINK_BY_HEADER)) {\n collection.setPagination(null);\n }\n }\n}\n\nfunction parseQuery(url) {\n var params = {};\n var rawQueryStr = url && url.split('?')[1];\n var queryString = rawQueryStr && decodeURIComponent(rawQueryStr.split('#')[0]).replace(/\\+/g, ' ');\n var props = queryString ? queryString.split('&') : [];\n\n for (var i = 0; i < props.length; i++) {\n var parts = props[i].split('=');\n params[parts.shift()] = parts.join('=');\n }\n\n return params;\n} // ################################################\n// # /Source\n// ################################################\n//\n\n\nconst collectionProps =\n/** @lends src/framework/Collection.prototype */\n{\n /**\n * Default fetch parameters\n * @type {Object|Function}\n */\n params: {},\n preinitialize: function (models, options) {\n const state = new Backbone.Model();\n\n const defaultParams = oktaUnderscore.defaults(options && options.params || {}, oktaUnderscore.result(this, 'params') || {});\n\n state.set(DEFAULT_PARAMS, defaultParams);\n this[STATE] = state; // Adds support for child class to convert to ES6 Class.\n // After conversion, `this.model` has to be a pure function to return Model Class.\n // The changes below is trying to distinguish the ambiguity between a Class and normal function,\n // as both are JavaScript function essentially.\n // There are three ways to define class for `this.model`\n // 1. Object properties: `model: BaseModel.extend({..})`\n // 2. Function constructor:\n // See example from\n // - appversions/src/models/CustomType.js\n // - appversions/src/models/EnumType.js\n // - appversions/src/models/SignOnMode.js\n // - authn-factors/src/models/Feature.js\n // - shared/src/models/SamlAttribute.js\n // 3. Function that returns a class.\n // model: function() { return BaseModel.extend({..}); }\n //\n // option 1 and 2 exists in code base today\n // option 3 is introduced to support child class to convert to ES6 class.\n // TODO: think of remove following check\n // The reason for `this.model !== Backbone.Model` is because `this.model` is default to `Backbone.Model`\n // set at Backbone.Collection.\n\n if (oktaUnderscore.isFunction(this.model) && this.model.length === 0 && this.model.isCourageModel !== true) {\n this.model = oktaUnderscore.result(this, 'model');\n }\n\n Backbone.Collection.prototype.preinitialize.apply(this, arguments);\n },\n\n /**\n * See [Backbone Collection.sync](http://backbonejs.org/#Collection-sync).\n */\n sync: function (method, collection, options) {\n var self = this;\n var success = options.success;\n\n options.success = function (resp, status, xhr) {\n // its important to set the pagination data *before* we call the success callback\n // because we want the pagination data to be ready when the collection triggers the `sync` event\n setLinkHeadersPagination(self, xhr);\n success.apply(null, arguments);\n };\n\n return Backbone.Collection.prototype.sync.call(this, method, collection, options);\n },\n\n /**\n * See [Backbone Collection.fetch](http://backbonejs.org/#Collection-fetch).\n */\n fetch: function (options) {\n options || (options = {});\n var state = this[STATE];\n var xhr = state.get(XHR);\n options.data = oktaUnderscore.extend({}, state.get(DEFAULT_PARAMS), options.data || {});\n options.fromFetch = true;\n state.set(FETCH_DATA, options.data);\n\n if (xhr && xhr.abort && options.abort !== false) {\n xhr.abort();\n }\n\n xhr = Backbone.Collection.prototype.fetch.call(this, options);\n state.set(XHR, xhr);\n return xhr;\n },\n\n /**\n * Set pagination data to get to the next page\n * @param {Mixed} params\n * @param {Object} [options]\n * @param {Boolean} [options.fromFetch] should we include data from the previous fetch call in this object\n * @example\n * collection.setPagination({q: 'foo', page: '2'}); //=> {q: 'foo', page: '2'}\n *\n * collection.setPagination('/path/to/resource?q=baz&page=4'); //=> {q: 'baz', page: '4'}\n *\n * collection.setPagination('/path/to/resource'); //=> {}\n *\n * collection.fetch({data: {q: 'foo'}});\n * collection.setPagination({page: 2}, {fromFetch: true}); //=> {q: 'foo', page: 2}\n *\n * any \"falsy\" value resets pagination\n * collection.setPagination(); //=> {}\n * collection.setPagination(null); //=> {}\n * collection.setPagination(false); //=> {}\n * collection.setPagination(''); //=> {}\n * collection.setPagination(0); //=> {}\n * @protected\n */\n setPagination: function (params, options) {\n /* eslint complexity: [2, 8] */\n if (oktaUnderscore.isString(params) && params) {\n params = parseQuery(params);\n }\n\n if (!oktaUnderscore.isObject(params) || oktaUnderscore.isArray(params) || !oktaUnderscore.size(params)) {\n params = null;\n } else if (options && options.fromFetch) {\n params = oktaUnderscore.extend({}, this.getFetchData(), params);\n }\n\n this[STATE].set(PAGINATION_DATA, params);\n },\n\n /**\n * Returns the `data` parameters applied in th most recent `fetch` call\n * It will include parameters set by {@link #params} and optios.params passed to the constructor\n * @return {Object}\n * @protected\n */\n getFetchData: function () {\n return this[STATE].get(FETCH_DATA) || {};\n },\n\n /**\n * Data object for constructing a request to fetch the next page\n * @return {Object}\n * @protected\n */\n getPaginationData: function () {\n return this[STATE].get(PAGINATION_DATA) || {};\n },\n\n /**\n * Does this collection have more data on the server (e.g is there a next \"page\")\n * @return {Boolean}\n */\n hasMore: function () {\n return oktaUnderscore.size(this.getPaginationData()) > 0;\n },\n\n /**\n * Get the next page from the server\n * @return {Object} xhr returned by {@link #fetch}\n */\n fetchMore: function () {\n if (!this.hasMore()) {\n throw new Error('Invalid Request');\n }\n\n return this.fetch({\n data: this.getPaginationData(),\n add: true,\n remove: false,\n update: true\n });\n },\n\n /**\n * See [Backbone Collection.reset](http://backbonejs.org/#Collection-reset).\n */\n reset: function (models, options) {\n options || (options = {}); // only reset the pagination when reset is being called explicitly.\n // this is to avoid link headers pagination being overriden and reset when\n // fetching the collection using `collection.fetch({reset: true})`\n\n if (!options.fromFetch) {\n this.setPagination(null);\n }\n\n return Backbone.Collection.prototype.reset.apply(this, arguments);\n },\n // we want \"where\" to be able to search through derived properties as well\n where: function (attrs, first) {\n if (oktaUnderscore.isEmpty(attrs)) {\n return first ? void 0 : [];\n }\n\n return this[first ? 'find' : 'filter'](function (model) {\n for (var key in attrs) {\n if (attrs[key] !== model.get(key)) {\n return false;\n }\n }\n\n return true;\n });\n },\n\n /**\n * See [Backbone Collection.create](http://backbonejs.org/#Collection-create).\n */\n create: function (model, options) {\n options || (options = {});\n\n if (!oktaUnderscore.result(model, 'urlRoot')) {\n options.url = oktaUnderscore.result(this, 'url');\n }\n\n return Backbone.Collection.prototype.create.call(this, model, options);\n },\n // Use Object.create instead of {} on _byId to avoid __proto__ functions to return\n // This can be removed once the issue has addressed in backbone framework\n // https://github.com/jashkenas/backbone/pull/4225\n _reset: function () {\n Backbone.Collection.prototype['_reset'].call(this);\n this._byId = Object.create(null);\n }\n};\n/**\n *\n * Archer.Collection is a standard [Backbone.Collection](http://backbonejs.org/#Collection) with pre-set `data`\n * parameters and built in pagination - works with [http link headers](https://tools.ietf.org/html/rfc5988)\n * out of the box:\n *\n * @class src/framework/Collection\n * @extends external:Backbone.Collection\n * @example\n * var Users = Archer.Collection.extend({\n * url: '/api/v1/users'\n * params: {expand: true}\n * });\n * var users = new Users(null, {params: {type: 'new'}}),\n * $button = this.$('a.fetch-more');\n *\n * $button.click(function () {\n * users.fetchMore();\n * });\n *\n * this.listenTo(users, 'sync', function () {\n * $button.toggle(users.hasMore());\n * });\n *\n * collection.fetch(); //=> '/api/v1/users?expand=true&type=new'\n */\n\nconst Collection = Backbone.Collection.extend(collectionProps);\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Collection Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\nCollection.isCourageCollection = true;\n\nexport { Collection as default };\n","import FrameworkView from './View.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\n\n/* eslint-disable max-statements */\n/**\n * Archer.ListView is a {@link src/framework/View} that operates on a\n * collection and builds a list of \"things\" of the same type.\n *\n * Automagically adds, removes and sorts upon standard collection events.\n *\n * Listen to collection events so the ListView will do the right thing when\n * a model is added or the collection is reset or sorted.\n *\n * @class src/framework/ListView\n * @extends src/framework/View\n * @param {Object} options options hash\n * @param {Object} options.collection The collection which this view operates on\n * @example\n * var UserList = Archer.ListView.extend({\n * tagName: 'ul',\n * item: '
  • {{fname}} {{lname}}
  • '\n * });\n *\n * var users = new Archer.Collection([\n * {fname: 'John', lname: 'Doe'},\n * {fname: 'Jane', lname: 'Doe'}\n * ]);\n *\n * var userList = new UserList({collection: users}).render();\n * userList.el; //=> \"\"\n *\n * users.push({fname: 'Jim', lname: 'Doe'});\n * userList.el; //=> \"\"\n *\n * users.first().destroy();\n * userList.el; //=> \"\"\n */\n\nvar ListView = FrameworkView.extend(\n/** @lends src/framework/ListView.prototype */\n{\n constructor: function () {\n FrameworkView.apply(this, arguments);\n\n if (!this.collection) {\n throw new Error('Missing collection');\n }\n\n this.listenTo(this.collection, 'reset sort', this.reset);\n this.listenTo(this.collection, 'add', this.addItem);\n\n if (this.fetchCollection) {\n this.collection.fetch();\n } else {\n this.collection.each(this.addItem, this);\n }\n },\n\n /**\n * The view/template we will use to render each model in the collection.\n * @type {String|module:Okta.View}\n */\n item: null,\n\n /**\n * A selector in the local template where to append each item\n * @type {String}\n */\n itemSelector: null,\n\n /**\n * Empty the list and re-add everything from the collection.\n * Usefull for handling `collection.reset()` or for handling the initial load\n * @protected\n */\n reset: function () {\n this.removeChildren();\n this.collection.each((model, index) => {\n this.addItem(model, index);\n });\n return this;\n },\n\n /**\n * Add an item view to the list that will represent one model from the collection\n *\n * Listen to the model so when it is destoyed or removed from the collection\n * this item will remove itself from the list\n *\n * @param {Backbone.Model} model The model this row operates on\n * @protected\n */\n addItem: function (model) {\n var view = this.add(this.item, this.itemSelector, {\n options: {\n model: model\n }\n }).last();\n\n if (this.state && this.state.get('trackItemAdded')) {\n this.state.trigger('itemAdded', view);\n }\n\n view.listenTo(model, 'destroy remove', view.remove);\n return this;\n },\n addShowMore: oktaUnderscore.noop\n});\n\nexport { ListView as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\nimport Logger from '../util/Logger.js';\n\nfunction isModelPropertySchema(obj) {\n return obj && obj.type || obj.deps;\n}\n\n/**\n * Archer.Model is a standard [Backbone.Model](http://backbonejs.org/#Model) with a few additions:\n *\n * - {@link src/framework/Model#derived Derived properties}\n * - {@link src/framework/Model#props Built in schema validation}\n * - {@link src/framework/Model#local Private properties (with schema validation)}\n * - {@link src/framework/Model#flat Flattening of nested objects}\n *\n * Both derived and private properties are filtered out when sending the data to the server.\n *\n * See [Backbone.Model](http://backbonejs.org/#Model-constructor).\n *\n * @class src/framework/Model\n * @extends external:Backbone.Model\n * @param {Object} [attributes] - Initial model attributes (data)\n * @param {Object} [options] - Options hash\n * @example\n * var Person = Archer.Model.extend({\n * props: {\n * 'fname': 'string',\n * 'lname': 'string'\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * },\n * derived: {\n * name: {\n * deps: ['fname', 'lname'],\n * fn: function (fname, lname) {\n * return fname + ' ' + lname;\n * }\n * }\n * }\n * });\n * var model = new Person({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('isLoggedIn', true);\n * model.get('isLoggedIn'); //=> true\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\nlet Model;\nconst statics = {\n ERROR_BLANK: 'model.validation.field.blank',\n ERROR_WRONG_TYPE: 'model.validation.field.wrong.type',\n ERROR_NOT_ALLOWED: 'model.validation.field.value.not.allowed',\n ERROR_INVALID: 'model.validation.field.invalid',\n ERROR_IARRAY_UNIQUE: 'model.validation.field.array.unique',\n ERROR_INVALID_FORMAT_EMAIL: 'model.validation.field.invalid.format.email',\n ERROR_INVALID_FORMAT_URI: 'model.validation.field.invalid.format.uri',\n ERROR_INVALID_FORMAT_IPV4: 'model.validation.field.invalid.format.ipv4',\n ERROR_INVALID_FORMAT_HOSTNAME: 'model.validation.field.invalid.format.hostname',\n ERROR_STRING_STRING_MIN_LENGTH: 'model.validation.field.string.minLength',\n ERROR_STRING_STRING_MAX_LENGTH: 'model.validation.field.string.maxLength'\n};\n\nfunction flatten(value, objectTypeFields, key, target) {\n var filter = oktaUnderscore.contains(objectTypeFields, key);\n\n target || (target = {});\n\n if (!filter && oktaUnderscore.isObject(value) && !oktaUnderscore.isArray(value) && !oktaUnderscore.isFunction(value)) {\n oktaUnderscore.each(value, function (val, i) {\n flatten(val, objectTypeFields, key ? key + '.' + i : i, target);\n });\n } // Case where target is an empty object. Guard against returning {undefined: undefined}.\n else if (key !== undefined) {\n target[key] = value;\n }\n\n return target;\n}\n\nfunction unflatten(data) {\n oktaUnderscore.each(data, function (value, key, data) {\n if (key.indexOf('.') === -1) {\n return;\n }\n\n var part;\n var ref = data;\n var parts = key.split('.');\n\n while ((part = parts.shift()) !== undefined) {\n if (!ref[part]) {\n ref[part] = parts.length ? {} : value;\n }\n\n ref = ref[part];\n }\n\n delete data[key];\n });\n\n return data;\n}\n\nfunction createMessage(field, msg) {\n var obj = {};\n obj[field.name] = msg;\n return obj;\n}\n\nfunction normalizeSchemaDef(field, name) {\n var target;\n\n if (oktaUnderscore.isString(field)) {\n target = {\n type: field\n };\n } else if (oktaUnderscore.isArray(field)) {\n target = {\n type: field[0],\n required: field[1],\n value: field[2]\n };\n } else {\n target = oktaUnderscore.clone(field);\n }\n\n oktaUnderscore.defaults(target, {\n required: false,\n name: name\n });\n\n return target;\n}\n\nfunction capitalize(string) {\n return string.toLowerCase().replace(/\\b[a-z]/g, function (letter) {\n return letter.toUpperCase();\n });\n}\n\nfunction _validateRegex(value, pattern, error) {\n if (!pattern.test(value)) {\n return error;\n }\n}\n\nvar StringFormatValidators = {\n /*eslint max-len: 0 */\n email: function (value) {\n // Taken from http://emailregex.com/ on 2017-03-06.\n var pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_EMAIL);\n },\n uri: function (value) {\n // source: https://mathiasbynens.be/demo/url-regex\n var pattern = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_URI);\n },\n ipv4: function (value) {\n // source: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n var pattern = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_IPV4);\n },\n hostname: function (value) {\n // source: http://www.regextester.com/23\n var pattern = /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_HOSTNAME);\n }\n};\n\nfunction validateStringFormat(field, value) {\n var validator = StringFormatValidators[field.format];\n\n if (field.format && !validator) {\n throw new TypeError(field.format + ' is not a supported string format');\n }\n\n return validator && validator(value);\n}\n\nfunction validateString(field, value) {\n var createMessageWith = oktaUnderscore.partial(createMessage, field);\n\n var invalidFormat = validateStringFormat(field, value);\n\n if (invalidFormat) {\n return createMessageWith(invalidFormat);\n }\n\n if (value && field.minLength && value.length < field.minLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MIN_LENGTH);\n }\n\n if (value && field.maxLength && value.length > field.maxLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MAX_LENGTH);\n }\n}\n\nfunction validateField(field, value) {\n /* eslint complexity: [2, 25], max-statements: [2, 30] */\n var createMessageWith = oktaUnderscore.partial(createMessage, field);\n\n var isDefined = !oktaUnderscore.isUndefined(value) && !oktaUnderscore.isNull(value);\n var checkType;\n var errorMessage; // If using an array validator, perform the validation\n\n if (Array.isArray(field.validate)) {\n const output = [];\n let foundError = false;\n let result;\n field.validate.forEach(item => {\n if (!value) {\n result = false;\n } else {\n switch (item.type.toLowerCase()) {\n case 'regex':\n result = new RegExp(item.value.pattern, item.value.flags || '').test(value);\n break;\n\n default:\n result = false;\n }\n } // Append the result.\n\n\n foundError = foundError || !result;\n output.push({\n // eslint-disable-next-line no-prototype-builtins\n message: item.hasOwnProperty('message') ? item.message : '',\n passed: result\n });\n });\n\n if (foundError) {\n return createMessageWith(output);\n }\n\n return;\n } // check required fields\n\n\n if (field.required && (!isDefined || oktaUnderscore.isNull(value) || value === '')) {\n return createMessageWith(Model.ERROR_BLANK);\n } // check type\n\n\n checkType = oktaUnderscore['is' + capitalize(field.type)];\n\n if (isDefined && field.type !== 'any' && (!oktaUnderscore.isFunction(checkType) || !checkType(value))) {\n return createMessageWith(Model.ERROR_WRONG_TYPE);\n } // validate string format\n\n\n if (value && field.type === 'string') {\n var error = validateString(field, value);\n\n if (error) {\n return error;\n }\n } // check pre set values (enum)\n\n\n if (isDefined && field.values && !oktaUnderscore.contains(field.values, value)) {\n return createMessageWith(Model.ERROR_NOT_ALLOWED);\n } // check validate method\n\n\n if (oktaUnderscore.isFunction(field.validate)) {\n var result = field.validate(value);\n\n if (oktaUnderscore.isString(result) && result) {\n return createMessageWith(result);\n } else if (result === false) {\n return createMessageWith(Model.ERROR_INVALID);\n }\n } // check array items\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n\n\n if (isDefined && field.type === 'array' && (errorMessage = validateArrayField(field, value))) {\n return createMessageWith(errorMessage);\n }\n}\n\nfunction validateArrayField(field, arr) {\n if (field.minItems && arr.length < field.minItems) {\n return 'model.validation.field.array.minItems';\n } else if (field.maxItems && arr.length > field.maxItems) {\n return 'model.validation.field.array.maxItems';\n } else if (field.uniqueItems && arr.length > oktaUnderscore.uniq(arr).length) {\n return Model.ERROR_IARRAY_UNIQUE;\n } else if (field.items) {\n /* eslint max-depth: [2, 3] */\n var arrayField = normalizeSchemaDef(field.items, 'placeholder');\n\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n var error = validateField(arrayField, value);\n\n if (error) {\n return error['placeholder'];\n }\n }\n }\n}\n\nconst props =\n/** @lends src/framework/Model.prototype */\n{\n /**\n * Pass props as an object to extend, describing the observable properties of your model. The props\n * properties should not be set on an instance, as this won't define new properties, they should only be passed to\n * extend.\n * Properties can be defined in three different ways:\n *\n * - As a string with the expected dataType. One of string, number, boolean, array, object, date, or any.\n * Eg: `name: 'string'`.\n * - An array of `[dataType, required, default]`\n * - An object `{type: 'string', format: '', required: true, value: '', values: [], validate: function() {}`\n * - `value` will be the value that the property will be set to if it is undefined, either by not being set during\n * initialization, or by being explicitly set to undefined.\n * - `format` is a json-schame derived string format. Supported formats are: `email`, `uri`, `hostname` and `ipv4`.\n * - If `required` is true, one of two things will happen. If a default is set for the property, the property will\n * start with that value. If a default is not set for the property, validation will fail\n * - If `values` array is passed, then you'll be able to change a property to one of those values only.\n * - If `validate` is defined, it should return false or a custom message string when the validation fails.\n * - If the type is defined as `array`, the array elements could be defined by `minItems` (Number),\n * `uniqueItems` (Boolean) and `items` (a field definition such as this one that will validate each array member)\n * To the `validate` method\n * - Trying to set a property to an invalid type will raise an exception.\n *\n * @type {Mixed|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * age: 'number',\n * paying: ['boolean', true, false], //required attribute, defaulted to false\n * type: {\n * type: 'string',\n * values: ['regular-hero', 'super-hero', 'mega-hero']\n * },\n * likes: {\n * type: 'string',\n * validate: function (value) {\n * return /^[\\w]+ing$/.test(value)\n * }\n * }\n * }\n * });\n */\n props: {},\n\n /**\n * Derived properties (also known as computed properties) are properties of the model that depend on the\n * other (props, local or even derived properties to determine their value. Best demonstrated with an example:\n *\n * Each derived property, is defined as an object with the current properties:\n *\n * - `deps` {Array} - An array of property names which the derived property depends on.\n * - `fn` {Function} - A function which returns the value of the computed property. It is called in the context of\n * the current object, so that this is set correctly.\n * - `cache` {Boolean} - - Whether to cache the property. Uncached properties are computed every time they are\n * accessed. Useful if it depends on the current time for example. Defaults to `true`.\n *\n * Derived properties are retrieved and fire change events just like any other property. They cannot be set\n * directly.\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * firstName: 'string',\n * lastName: 'string'\n * },\n * derived: {\n * fullName: {\n * deps: ['firstName', 'lastName'],\n * fn: function (firstName, lastName) {\n * return firstName + ' ' + lastName;\n * }\n * }\n * }\n * });\n *\n * var person = new Person({ firstName: 'Phil', lastName: 'Roberts' })\n * console.log(person.get('fullName')) //=> \"Phil Roberts\"\n *\n * person.set('firstName', 'Bob');\n * console.log(person.get('fullName')) //=> \"Bob Roberts\"\n */\n derived: {},\n\n /**\n * local properties are defined and work in exactly the same way as {@link src/framework/Model#props|props}, but generally only exist for\n * the lifetime of the page.\n * They would not typically be persisted to the server, and are not returned by calls to {@link src/framework/Model#toJSON|toJSON}.\n *\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * }\n * );\n */\n local: {},\n\n /**\n * Flatten the payload into dot notation string keys:\n *\n * @type {Boolean|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * 'profile.fname': 'string',\n * 'profile.lname': 'string',\n * 'profile.languages': 'object'\n * },\n * flat: true\n * });\n * var person = new Person({'profile': {\n * 'fname': 'John',\n * 'lname': 'Doe',\n * 'languages': {name: \"English\", value: \"EN\"}\n * }}, {parse: true});\n * person.get('profile'); //=> undefined\n * person.get('profile.fname'); //=> 'John'\n * person.get('profile.lname'); //=> 'Doe'\n * person.get('profile.languages'); //=> {name: \"English\", value: \"EN\"}\n * person.get('profile.languages.name'); //=> undefined\n * person.toJSON(); //=> {'profile': {'fname': 'John'} }\n */\n flat: true,\n\n /**\n * @deprecated\n * @alias Backbone.Model#defaults\n */\n defaults: {},\n // FIXME: preinitialize takes parameter `attributes` and `options`, which inherit from constructor.\n preinitialize: function (options, ...rest) {\n this.options = options || {};\n var schema = this['__schema__'] = {};\n var objectTypeFields = [];\n schema.computedProperties = {};\n schema.props = oktaUnderscore.clone(oktaUnderscore.result(this, 'props') || {});\n schema.derived = oktaUnderscore.clone(oktaUnderscore.result(this, 'derived') || {});\n schema.local = oktaUnderscore.clone(oktaUnderscore.result(this, 'local') || {});\n var defaults = {};\n\n oktaUnderscore.each(oktaUnderscore.extend({}, schema.props, schema.local), function (options, name) {\n var schemaDef = normalizeSchemaDef(options, name);\n\n if (!oktaUnderscore.isUndefined(schemaDef.value)) {\n defaults[name] = schemaDef.value;\n }\n\n if (schemaDef.type === 'object') {\n objectTypeFields.push(name);\n }\n }, this);\n\n if (oktaUnderscore.size(defaults)) {\n var localDefaults = oktaUnderscore.result(this, 'defaults');\n\n this.defaults = function () {\n return oktaUnderscore.defaults({}, defaults, localDefaults);\n };\n } // override `validate`\n\n\n this.validate = oktaUnderscore.wrap(this.validate, function (validate) {\n var args = oktaUnderscore.rest(arguments);\n\n var res = oktaUnderscore.extend(this._validateSchema.apply(this, args), validate.apply(this, args));\n\n return oktaUnderscore.size(res) && res || undefined;\n }); // override `parse`\n\n this.parse = oktaUnderscore.wrap(this.parse, function (parse) {\n var target = parse.apply(this, oktaUnderscore.rest(arguments));\n\n if (oktaUnderscore.result(this, 'flat')) {\n target = flatten(target, objectTypeFields);\n }\n\n return target;\n });\n Backbone.Model.prototype.preinitialize.call(this, options, ...rest);\n },\n // FIXME:\n // constructor takes parameter `attributes` and `options`.\n constructor: function () {\n Backbone.Model.apply(this, arguments);\n var schema = this['__schema__'];\n\n oktaUnderscore.each(schema.derived, function (options, name) {\n schema.computedProperties[name] = this.__getDerivedValue(name); // set initial value;\n\n var deps = isModelPropertySchema(options) ? options.deps || [] : [];\n\n if (deps.length) {\n this.on('cache:clear change:' + deps.join(' change:'), function () {\n var value = this.__getDerivedValue(name);\n\n if (value !== schema.computedProperties[name]) {\n schema.computedProperties[name] = value;\n this.trigger('change:' + name, this, value);\n }\n }, this);\n }\n }, this);\n\n this.on('sync', function () {\n this.__syncedData = this.toJSON();\n }, this);\n },\n validate: function () {},\n\n /**\n * Check if the schema settings allow this field to exist in the model\n * @param {String} key\n * @return {Boolean}\n */\n allows: function (key) {\n var schema = this['__schema__'];\n\n var all = oktaUnderscore.extend({}, schema.props, schema.local);\n\n if (!oktaUnderscore.has(all, key)) {\n Logger.warn('Field not defined in schema', key);\n }\n\n return true;\n },\n\n /**\n * Returns the schema for the specific property\n *\n * @param propName - The name of the property\n * @returns {*} | null\n */\n getPropertySchema: function (propName) {\n var schema = this['__schema__'];\n return oktaUnderscore.reduce([schema.props, schema.local], function (result, options) {\n return result || normalizeSchemaDef(options[propName], propName);\n }, null);\n },\n set: function (key, val) {\n var attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n } // Don't override a computed properties\n\n\n oktaUnderscore.each(attrs, function (value, key) {\n if (oktaUnderscore.has(this['__schema__'].derived, key)) {\n throw new Error(`overriding derived properties is not supported: ${key}`);\n }\n }, this); // Schema validation\n\n\n var errorFields = [];\n\n oktaUnderscore.each(attrs, function (value, key) {\n this.allows(key) || errorFields.push(key);\n }, this);\n\n if (errorFields.length) {\n throw new Error(`field not allowed: ${errorFields.join(', ')}`);\n }\n\n return Backbone.Model.prototype.set.apply(this, arguments);\n },\n get: function (attr) {\n var schema = this['__schema__'];\n\n if (oktaUnderscore.has(schema.derived, attr)) {\n if (schema.derived[attr].cache !== false) {\n return schema.computedProperties[attr];\n } else {\n return this.__getDerivedValue(attr);\n }\n }\n\n return Backbone.Model.prototype.get.apply(this, arguments);\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * See [Backbone.Model.toJSON](http://backbonejs.org/#Model-toJSON)\n *\n * @param {Object} options\n * @return {Object}\n * @example\n * var artist = new Model({\n * firstName: 'Wassily',\n * lastName: 'Kandinsky'\n * });\n *\n * artist.set({birthday: 'December 16, 1866'});\n * JSON.stringify(artist); //=> {'firstName':'Wassily','lastName':'Kandinsky','birthday':'December 16, 1866'}\n */\n toJSON: function (options) {\n options || (options = {});\n\n var res = oktaUnderscore.clone(Backbone.Model.prototype.toJSON.apply(this, arguments));\n\n var schema = this['__schema__']; // cleanup local properties\n\n if (!options.verbose) {\n res = oktaUnderscore.omit(res, oktaUnderscore.keys(schema.local));\n } else {\n // add derived properties\n oktaUnderscore.each(schema.derived, function (options, name) {\n res[name] = this.get(name);\n }, this);\n }\n\n if (this.flat) {\n res = unflatten(res);\n }\n\n return res;\n },\n\n /**\n * Removes all attributes from the model, including the id attribute.\n * Fires a `\"change\"` event unless `silent` is passed as an option.\n * Sets the default values to the model\n * @param {Object} [options]\n */\n reset: function (options) {\n this.clear(options);\n this.set(oktaUnderscore.result(this, 'defaults'), options);\n },\n\n /**\n * Is the data on the model has local modifications since the last sync event?\n * @return {Boolean} is the model in sync with the server\n */\n isSynced: function () {\n return oktaUnderscore.isEqual(this.__syncedData, this.toJSON());\n },\n\n /**\n * validate a specific field in the model.\n * @param {String} key\n * @return {Object} returns `{fieldName: errorMessage}` if invalid, otherwise undefined.\n * @readonly\n */\n validateField: function (key) {\n var schema = key && this.getPropertySchema(key);\n return schema && validateField(schema, this.get(key));\n },\n\n /**\n * Runs local schema validation. Invoked internally by {@link src/framework/Model#validate|validate}.\n * @return {Object}\n * @protected\n */\n _validateSchema: function () {\n var schema = this['__schema__'];\n return oktaUnderscore.reduce(oktaUnderscore.extend({}, schema.props, schema.local), function (memo, options, name) {\n return oktaUnderscore.extend(memo, this.validateField(name) || {});\n }, {}, this);\n },\n __getDerivedValue: function (name) {\n var options = this['__schema__'].derived[name];\n\n if (oktaUnderscore.isString(options)) {\n var key = options;\n options = {\n deps: [key],\n fn: function () {\n return this.get(key);\n }\n };\n }\n\n var deps = options.deps || [];\n return options.fn.apply(this, oktaUnderscore.map(deps, this.get, this));\n }\n};\nModel = Backbone.Model.extend(props, statics);\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Model Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\nModel.isCourageModel = true;\nvar FrameworkModel = Model;\n\nexport { FrameworkModel as default, isModelPropertySchema };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\n\nvar CHILDREN = '__children__';\nvar RENDERED = '__rendered__';\nvar PARENT = '__parent__';\nvar CHILD_DEFINITIONS = '__children_definitions__';\nvar ADD_TO_CONTAINER = '__add_to_container__';\n\nfunction getIndex(container, view) {\n for (var i = 0; i < container[CHILDREN].length; i++) {\n if (view.cid === container[CHILDREN][i].cid) {\n return i;\n }\n }\n}\n\nfunction noop() {}\n\nfunction doRender(view) {\n view[RENDERED] = true;\n var html = view.renderTemplate(view.template);\n\n if (html) {\n view.$el.html(html);\n } else if (view.length) {\n view.$el.empty();\n }\n\n view.each(function (view) {\n view[ADD_TO_CONTAINER]();\n });\n}\n\nfunction subscribeEvents(view) {\n var isEventPropertyRe = /^(?!(?:delegate|undelegate|_))([a-zA-Z0-9]+)(?:Events)$/;\n\n oktaUnderscore.each(oktaUnderscore.allKeys(view), function (key) {\n var matchKeys = key.match(isEventPropertyRe);\n\n if (!matchKeys) {\n return;\n }\n\n var bindings = oktaUnderscore.result(view, key);\n\n var entity = view.options[matchKeys[1]] || view[matchKeys[1]];\n\n if (!entity || !oktaUnderscore.isObject(bindings) || !oktaUnderscore.isFunction(entity.trigger)) {\n return;\n }\n\n oktaUnderscore.each(bindings, function (callback, event) {\n var callbacks = oktaUnderscore.isFunction(callback) ? [callback] : oktaUnderscore.reduce(callback.split(/\\s+/), (arr, name) => {\n if (oktaUnderscore.isFunction(view[name])) {\n arr.push(view[name]);\n }\n\n return arr;\n }, []);\n\n oktaUnderscore.each(callbacks, function (cb) {\n view.listenTo(entity, event, cb);\n });\n });\n });\n}\n/**\n * A View operates on a string template, an token based template, or a model based template, with a few added hooks.\n * It provides a collection of child views, when a child view could be a View or another View.\n * Conceptually, if we were in a file system, the View is a folder, when the concrete child views are files,\n * and the child Views are sub folders.\n *\n * *Technically, when using a View as a container, it could have its own concrete logic,\n * but conceptually we like to keep it separated so a view is either a concrete view or a collection of child views.*\n *\n * In addition to the standard backbone options, we added `settings` and `state` as first class options.\n * it will automatically assign `options` to `this.options` as an instance member.\n *\n * See [Backbone.View](http://backbonejs.org/#View).\n *\n * @class src/framework/View\n * @extends external:Backbone.View\n * @param {Object} [options] options hash\n * @example\n * var DocumentView = Archer.View.extend({\n * template: [\n * '
    ',\n * '
    ',\n * ''\n * ].join(''),\n * children: [[HeaderView, 'header'], [ContentView, 'article'], [FooterView, 'footer']]\n * });\n */\n\n\nlet View;\nconst proto = {\n /**\n * An object listing events and callback bind to this.{entity}\n * @name *Events\n * @memberof src/framework/View\n * @type {(Object|Function)}\n * @instance\n * @example\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render'\n * }\n * })\n * //equivalent to ==>\n * var FooView = View.extend({\n * initialize: function() {\n * this.listenTo(this.model, 'change:name', this.render);\n * }\n * });\n *\n *\n * //Multiple callbacks:\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render foo'\n * },\n * foo: function() {}\n * });\n *\n * //Callbacks As Function:\n * var FooView = View.extend({\n * stateEvents: {\n * 'change': function() {\n * }\n * });\n *\n * //Event Configuration As Function\n * var FooView = View.extend({\n * collectionEvents: function() {\n * var events = { 'change:name deleteItem': 'render' };\n * events['changeItem'] = 'spin';\n * events['addItem'] = function() {};\n * return events;\n * }\n * });\n */\n preinitialize: function (options) {\n /* eslint max-statements: [2, 17] */\n this.options = options || {};\n\n oktaUnderscore.extend(this, oktaUnderscore.pick(this.options, 'state', 'settings')); // init per-instance children collection\n\n\n this[CHILDREN] = [];\n this[RENDERED] = false;\n this[PARENT] = null;\n this[CHILD_DEFINITIONS] = this.children; // we want to make sure initialize is triggered *after* we append the views from the `this.views` array\n // FIXME:\n // It's actually can be done by override initialize method\n // initialize() { run extra login; super.initialize(); }\n // BUT the problem is child classes would override initialize without invoke super.\n // hence we have to also looking into (refactoring) ALL child classes.\n\n this.__original_initialize__ = this.initialize;\n this.initialize = noop;\n },\n constructor: function (options, ...rest) {\n Backbone.View.call(this, options);\n\n oktaUnderscore.each(oktaUnderscore.result(this, CHILD_DEFINITIONS), function (childDefinition) {\n this.add.apply(this, oktaUnderscore.isArray(childDefinition) ? childDefinition : [childDefinition]);\n }, this);\n\n delete this[CHILD_DEFINITIONS];\n\n const autoRender = oktaUnderscore.result(this, 'autoRender');\n\n if (autoRender && this.model) {\n var event = oktaUnderscore.isArray(autoRender) ? oktaUnderscore.map(autoRender, function (field) {\n return 'change:' + field;\n }).join(' ') : 'change';\n this.listenTo(this.model, event, function () {\n this.render();\n });\n }\n\n this.initialize = this.__original_initialize__;\n this.initialize.call(this, options, ...rest); // initialize in child class may have any number of parameters\n\n subscribeEvents(this);\n },\n\n /**\n * Unregister view from container\n * Note: this will not remove the view from the dom\n * and will not call the `remove` method on the view\n *\n * @param {src/framework/View} view the view to unregister\n * @private\n */\n unregister: function (view) {\n this.stopListening(view);\n var viewIndex = getIndex(this, view); // viewIndex is undefined when the view is not found (may have been removed)\n // check if it is undefined to prevent unexpected thing to happen\n // array.splice(undefined, x) removes the first x element(s) from the array\n // this protects us against issues when calling `remove` on a child view multiple times\n\n if (oktaUnderscore.isNumber(viewIndex)) {\n this[CHILDREN].splice(viewIndex, 1);\n }\n },\n\n /**\n * Should we auto render the view upon model change. Boolean or array of field names to listen to.\n * @type {Boolean|Array}\n * @deprecated Instead, please use modelEvents\n * @example\n * modelEvents: {\n * change:name: 'render'\n * }\n */\n autoRender: false,\n\n /**\n *\n * When the template is an underscore template, the render method will pass the options has to the template\n * And the associated model, if exists, when it will prefer the model over the options in case of a conflict.\n * {@link #render View.render}\n * @type {(String|Function)}\n * @example\n * var View = View.extend({\n * template: '

    {{name}}

    '\n * };\n */\n template: null,\n\n /**\n * A list of child view definitions to be passed to {@link #add this.add()}.\n * Note: these definitions will be added **before** the {@link #constructor initiliaze} method invokes.\n * @type {(Array|Function)}\n * @example\n * var Container = View.extend({\n * template: '

    ',\n * children: [\n * [ContentView, '.content'],\n * [OtherContentView, '.content'],\n * OtherView\n * ]\n * })\n *\n * var Container = View.extend({\n * template: '',\n * children: function () {\n * return [\n * [FormView, '.form-wrap', {options: {model: this.optiosn.otherModel}}]\n * ]\n * }\n * })\n */\n children: [],\n\n /**\n * Add a child view to the container.\n * If the container is already rendered, will also render the view and append it to the DOM.\n * Otherwise will render and append once the container is rendered.\n *\n * *We believe that for the sake of encapsulation, a view should control its own chilren, so we treat this method as\n * protected and even though technically you can call `view.add` externally we strongly discourage it.*\n *\n * @param {(src/framework/View|String)} view A class (or an instance which is discouraged) of a View - or an HTML\n * string/template\n * @param {String} [selector] selector in the view's template on which the view will be added to\n * @param {Object} [options]\n * @param {Boolean} [options.bubble=false] Bubble (proxy) events from this view up the chain\n * @param {Boolean} [options.prepend=false] Prepend the view instend of appending\n * @param {String} [options.selector] Selector in the view's template on which the view will be added to\n * @param {Object} [options.options] Extra options to pass to the child constructor\n * @protected\n * @returns {src/framework/View} - The instance of itself for the sake of chaining\n * @example\n * var Container = View.extend({\n *\n * template: [\n * '

    ',\n * '
    ',\n * ].join(''),\n *\n * initalize: function () {\n *\n * this.add(TitleView, 'h1'); // will be added to

    \n *\n * this.add(ContentView1, 'section'); // will be added to
    \n *\n * this.add(ContentView2, 'section', {prepend: true}); // will be add into
    **before** ContentView1\n *\n * this.add(OtherView, {\n * options: {\n * model: new Model()\n * }\n * }); // will be added **after** the
    element\n *\n * this.add('

    some html

    '); //=> \"

    some html

    \"\n * this.add('

    {{name}}

    '); //=> \"

    John Doe

    \"\n * this.add('{{name}}') //=> \"
    John Doe
    \"\n * this.add('{{name}} w00t') //=> \"
    John Doe w00t
    \"\n * }\n *\n * });\n *\n * var container - new View({name: 'John Doe'});\n */\n add: function (view, selector, bubble, prepend, extraOptions) {\n /* eslint max-statements: [2, 30], complexity: [2, 12] */\n var options = {};\n\n var args = oktaUnderscore.toArray(arguments); // This will throw if a compiled template function is passed accidentally\n\n\n if (oktaUnderscore.isFunction(view) && (!view.prototype || !view.prototype.render)) {\n throw new Error('Type passed to add() is not a View');\n }\n\n if (oktaUnderscore.isObject(selector)) {\n options = selector;\n selector = options.selector;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n } else if (oktaUnderscore.isObject(bubble)) {\n options = bubble;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n } // TODO: This will be deprecated at some point. Views should use precompiled templates\n\n\n if (oktaUnderscore.isString(view)) {\n view = function (template) {\n return View.extend({\n constructor: function () {\n try {\n var $el = Backbone.$(template);\n\n if ($el.length !== 1) {\n throw new Error('invalid Element');\n }\n\n var unescapingRexExp = /&(\\w+|#x\\d+);/g;\n var elementUnescapedOuterHTMLLength = $el.prop('outerHTML').replace(unescapingRexExp, ' ').length;\n var templateUnescapedLength = template.replace(unescapingRexExp, ' ').length;\n\n if (elementUnescapedOuterHTMLLength !== templateUnescapedLength) {\n throw new Error('invalid Element');\n }\n\n this.template = $el.html(); // Template string will be compiled by handlebars\n\n this.el = $el.empty()[0];\n } catch (e) {\n // not a valid html tag.\n this.template = template;\n }\n\n View.apply(this, arguments);\n }\n });\n }(view);\n }\n\n if (view.prototype && view.prototype instanceof View) {\n /* eslint new-cap: 0 */\n var viewOptions = oktaUnderscore.omit(oktaUnderscore.extend({}, this.options, extraOptions), 'el');\n\n args[0] = new view(viewOptions);\n return this.add.apply(this, args);\n } // prevent dups\n\n\n if (oktaUnderscore.isNumber(getIndex(this, view))) {\n throw new Error('Duplicate child');\n }\n\n view[PARENT] = this; // make the view responsible for adding itself to the parent:\n // * register the selector in the closure\n // * register a reference the parent in the closure\n\n view[ADD_TO_CONTAINER] = function (selector) {\n return function () {\n if (selector && view[PARENT].$(selector).length !== 1) {\n throw new Error('Invalid selector: ' + selector);\n }\n\n var $el = selector ? this[PARENT].$(selector) : this[PARENT].$el;\n this.render(); // we need to delegate events in case\n // the view was added and removed before\n\n this.delegateEvents(); // this[PARENT].at(index).$el.before(this.el);\n\n prepend ? $el.prepend(this.el) : $el.append(this.el);\n };\n }.call(view, selector); // if flag to bubble events is set\n // proxy all child view events\n\n\n if (bubble) {\n this.listenTo(view, 'all', function () {\n this.trigger.apply(this, arguments);\n });\n } // add to the dom if `render` has been called\n\n\n if (this.rendered()) {\n view[ADD_TO_CONTAINER]();\n } // add view to child views collection\n\n\n this[CHILDREN].push(view);\n return this;\n },\n\n /**\n * Remove all children from container\n */\n removeChildren: function () {\n this.each(function (view) {\n view.remove();\n });\n return this;\n },\n\n /**\n * Removes a view from the DOM, and calls stopListening to remove any bound events that the view has listenTo'd.\n * Also removes all childern of the view if any, and removes itself from its parent view(s)\n */\n remove: function () {\n this.removeChildren();\n\n if (this[PARENT]) {\n this[PARENT].unregister(this);\n }\n\n return Backbone.View.prototype.remove.apply(this, arguments);\n },\n\n /**\n * Compile the template to function you can apply tokens on on render time.\n * Uses the underscore tempalting engine by default\n * @protected\n * @param {String} template\n * @return {Function} a compiled template\n */\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n compileTemplate: function (template) {\n /* eslint @okta/okta-ui/no-specific-methods: 0*/\n return oktaUnderscore.template(template, undefined);\n },\n\n /**\n * Render a template with `this.model` and `this.options` as parameters\n * preferring the model over the options.\n *\n * @param {(String|Function)} template The template to build\n * @return {String} An HTML string\n * @protected\n */\n renderTemplate: function (template) {\n if (oktaUnderscore.isString(template)) {\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n template = this.compileTemplate(template);\n }\n\n if (oktaUnderscore.isFunction(template)) {\n return template(this.getTemplateData());\n }\n },\n\n /**\n * The data hash passed to the compiled template\n * @return {Object}\n * @protected\n */\n getTemplateData: function () {\n var modelData = this.model && this.model.toJSON({\n verbose: true\n }) || {};\n\n var options = oktaUnderscore.omit(this.options, ['state', 'settings', 'model', 'collection']);\n\n return oktaUnderscore.defaults({}, modelData, options);\n },\n\n /**\n * Renders the template to `$el` and append all children in order\n * {@link #template View.template}\n */\n render: function () {\n this.preRender();\n doRender(this);\n this.postRender();\n return this;\n },\n\n /**\n * Pre render routine. Will be called right *before* the logic in {@link #render} is executed\n * @method\n */\n preRender: noop,\n\n /**\n * Post render routine. Will be called right *after* the logic in {@link #render} is executed\n * @method\n */\n postRender: noop,\n\n /**\n * Was this instance rendered\n */\n rendered: function () {\n return this[RENDERED];\n },\n\n /**\n * Get all direct child views.\n * @returns {src/framework/View[]}\n * @example\n * var container = View.extend({\n * children: [View1, View2]\n * }).render();\n * container.getChildren() //=> [view1, view2];\n */\n getChildren: function () {\n return this.toArray();\n },\n\n /**\n * Get a child by index\n * @param {number} index\n * @returns {src/framework/View} The child view\n */\n at: function (index) {\n return this.getChildren()[index];\n },\n\n /**\n * Invokes a method on all children down the tree\n *\n * @param {String} method The method to invoke\n */\n invoke: function (methodName) {\n var args = oktaUnderscore.toArray(arguments);\n\n this.each(function (child) {\n // if child has children, bubble down the tree\n if (child.size()) {\n child.invoke.apply(child, args);\n } // run the function on the child\n\n\n if (oktaUnderscore.isFunction(child[methodName])) {\n child[methodName].apply(child, args.slice(1));\n }\n });\n return this;\n }\n};\nView = Backbone.View.extend(\n/** @lends src/framework/View.prototype */\nproto); // Code borrowed from Backbone.js source\n// Underscore methods that we want to implement on the Container.\n\nvar methods = ['each', 'map', 'reduce', 'reduceRight', 'find', 'filter', 'reject', 'every', 'some', 'contains', 'toArray', 'size', 'first', 'initial', 'rest', 'last', 'without', 'indexOf', 'shuffle', 'lastIndexOf', 'isEmpty', 'chain', 'where', 'findWhere'];\n\noktaUnderscore.each(methods, function (method) {\n View.prototype[method] = function () {\n var args = oktaUnderscore.toArray(arguments);\n\n args.unshift(oktaUnderscore.toArray(this[CHILDREN]));\n return oktaUnderscore[method].apply(oktaUnderscore, args);\n };\n});\n/**\n * See [_.each](http://underscorejs.org/#each)\n * @name each\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n\n/**\n * See [_.map](http://underscorejs.org/#map)\n * @name map\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n\n/**\n * See [_.reduce](http://underscorejs.org/#reduce)\n * @name reduce\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n\n/**\n * See [_.reduceRight](http://underscorejs.org/#reduceRight)\n * @name reduceRight\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n\n/**\n * See [_.find](http://underscorejs.org/#find)\n * @name find\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.filter](http://underscorejs.org/#filter)\n * @name filter\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.reject](http://underscorejs.org/#reject)\n * @name reject\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.every](http://underscorejs.org/#every)\n * @name every\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n\n/**\n * See [_.some](http://underscorejs.org/#some)\n * @name some\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n\n/**\n * See [_.contains](http://underscorejs.org/#contains)\n * @name contains\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n */\n\n/**\n * See [_.toArray](http://underscorejs.org/#toArray)\n * @name toArray\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.size](http://underscorejs.org/#size)\n * @name size\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.first](http://underscorejs.org/#first)\n * @name first\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.initial](http://underscorejs.org/#initial)\n * @name initial\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.last](http://underscorejs.org/#last)\n * @name last\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.rest](http://underscorejs.org/#rest)\n * @name rest\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [index]\n */\n\n/**\n * See [_.without](http://underscorejs.org/#without)\n * @name without\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.indexOf](http://underscorejs.org/#indexOf)\n * @name indexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Boolean} [isSorted]\n */\n\n/**\n * See [_.shuffle](http://underscorejs.org/#shuffle)\n * @name shuffle\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.shuffle](http://underscorejs.org/#lastIndexOf)\n * @name lastIndexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Number} [fromIndex]\n */\n\n/**\n * See [_.isEmpty](http://underscorejs.org/#isEmpty)\n * @name isEmpty\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.chain](http://underscorejs.org/#chain)\n * @name chain\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.where](http://underscorejs.org/#where)\n * @name where\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n\n/**\n * See [_.findWhere](http://underscorejs.org/#findWhere)\n * @name findWhere\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a View Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\n\nView.isCourageView = true;\nvar FrameworkView = View;\n\nexport { FrameworkView as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Collection from '../framework/Collection.js';\n\nconst baseCollectionProps =\n/** @lends module:Okta.Collection.prototype */\n{\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n // TODO: may not be simplily moved to initialize as\n // child class override initialize but didn't invoke parent.initialize.\n // need to refactor child classes first.\n constructor: function () {\n Collection.apply(this, arguments);\n\n if (oktaUnderscore.result(this, 'secureJSON')) {\n this.sync = oktaUnderscore.wrap(this.sync, function (sync, method, collection, options) {\n return sync.call(this, method, collection, oktaUnderscore.extend({\n dataType: 'secureJSON'\n }, options));\n });\n }\n }\n};\n/**\n * Wrapper around the more generic {@link src/framework/Collection} that\n * contains Okta-specific logic.\n * @class module:Okta.Collection\n * @extends src/framework/Collection\n */\n\nvar BaseCollection = Collection.extend(baseCollectionProps);\n\nexport { BaseCollection as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Model from './Model.js';\n\nconst hasProps = function (model) {\n const local = oktaUnderscore.omit(model.local, oktaUnderscore.keys(model._builtInLocalProps));\n\n return oktaUnderscore.size(model.props) + oktaUnderscore.size(local) > 0;\n};\n\nconst props =\n/** @lends module:Okta.BaseModel.prototype */\n{\n /**\n * @type {Boolean}\n */\n flat: false,\n constructor: function () {\n Model.apply(this, arguments);\n this.on('sync', this._setSynced);\n },\n allows: function () {\n if (hasProps(this)) {\n return Model.prototype.allows.apply(this, arguments);\n } else {\n return true;\n }\n },\n // bw compatibility support for old computed properties\n set: function (key, val) {\n let attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n } // computed properties\n\n\n oktaUnderscore(attrs).each(function (fn, attr) {\n if (!fn || !oktaUnderscore.isArray(fn.__attributes)) {\n return;\n }\n\n this.on('change:' + fn.__attributes.join(' change:'), function () {\n const val = this.get(attr);\n\n if (val !== this['__schema__'].computedProperties[attr]) {\n this['__schema__'].computedProperties[attr] = val;\n this.trigger('change:' + attr, val);\n }\n }, this);\n }, this);\n\n return Model.prototype.set.apply(this, arguments);\n },\n\n /**\n * Get the current value of an attribute from the model. For example: `note.get(\"title\")`\n *\n * See [Model.get](http://backbonejs.org/#Model-get)\n * @param {String} attribute\n * @return {Mixed} The value of the model attribute\n */\n get: function () {\n const value = Model.prototype.get.apply(this, arguments);\n\n if (oktaUnderscore.isFunction(value)) {\n return value.apply(this, oktaUnderscore.map(value.__attributes || [], this.get, this));\n }\n\n return value;\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * ```javascript\n * var artist = new Model({\n * firstName: \"Wassily\",\n * lastName: \"Kandinsky\"\n * });\n *\n * artist.set({birthday: \"December 16, 1866\"});\n * alert(JSON.stringify(artist)); // {\"firstName\":\"Wassily\",\"lastName\":\"Kandinsky\",\"birthday\":\"December 16, 1866\"}\n * ```\n * See [Model.toJSON](http://backbonejs.org/#Model-toJSON)\n * @param {Object} options\n * @return {Object}\n */\n toJSON: function (options) {\n options || (options = {});\n const res = Model.prototype.toJSON.apply(this, arguments); // cleanup computed properties\n\n oktaUnderscore(res).each(function (value, key) {\n if (typeof value === 'function') {\n if (options.verbose) {\n res[key] = this.get(key);\n } else {\n delete res[key];\n }\n }\n }, this); // cleanup private properties\n\n\n if (!options.verbose) {\n oktaUnderscore(res).each(function (value, key) {\n if (/^__\\w+__$/.test(key)) {\n delete res[key];\n }\n });\n }\n\n return res;\n },\n sanitizeAttributes: function (attributes) {\n const attrs = {};\n\n oktaUnderscore.each(attributes, function (value, key) {\n if (!oktaUnderscore.isFunction(value)) {\n attrs[key] = value;\n }\n });\n\n return attrs;\n },\n reset: function (options) {\n this.clear(options);\n this.set(this.sanitizeAttributes(this.defaults), options);\n },\n clear: function (options) {\n const attrs = {};\n\n oktaUnderscore.each(this.sanitizeAttributes(this.attributes), function (value, key) {\n attrs[key] = void 0;\n });\n\n return this.set(attrs, oktaUnderscore.extend({}, options, {\n unset: true\n }));\n },\n\n /**\n * @private\n */\n _setSynced: function (newModel) {\n this._syncedData = newModel && oktaUnderscore.isFunction(newModel.toJSON) ? newModel.toJSON() : {};\n },\n\n /**\n * @private\n */\n _getSynced: function () {\n return this._syncedData;\n },\n isSynced: function () {\n return oktaUnderscore.isEqual(this._getSynced(), this.toJSON());\n }\n};\nconst statics =\n/** @lends module:Okta.BaseModel.prototype */\n{\n /**\n * @static\n *\n * Example:\n *\n * ```javascript\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); // Joe Doe\n * model.toJSON(); // {fname: 'Joe', lname: 'Doe'}\n * ```\n *\n * @param {Array} attributes (optional) - an array of the attribute names this method depends on\n * @param {Function} callback the function that computes the value of the property\n *\n * @deprecated Use {@link #derived} instead\n */\n ComputedProperty: function (attributes, fn) {\n // First parameter is optional\n if (!fn && typeof attributes === 'function') {\n fn = attributes;\n } else {\n fn.__attributes = attributes;\n }\n\n return fn;\n }\n};\n/**\n * @class module:Okta.BaseModel\n * @extends module:Okta.Model\n * @deprecated Use {@link module:Okta.Model|Okta.Model} instead\n * @example\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('__private__', 'private property');\n * model.get('__private__'); //=> \"private property\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\n\nvar BaseModel = Model.extend(props, statics);\n\nexport { BaseModel as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport BaseCollection from './BaseCollection.js';\nimport BaseModel from './BaseModel.js';\nimport SchemaProperty from './SchemaProperty.js';\n\nconst parseProperties = function (resp) {\n const schemaMeta = oktaUnderscore.pick(resp, 'id', 'name', 'displayName');\n\n const properties = oktaUnderscore.map(resp.schema.properties, function (property, name) {\n return oktaUnderscore.extend({\n name: name\n }, property);\n });\n\n oktaUnderscore.each(properties, function (property) {\n property['__schemaMeta__'] = schemaMeta;\n\n if (property.__metadata) {\n property['__metadata__'] = property.__metadata;\n delete property.__metadata;\n }\n });\n\n return properties;\n};\n\nconst BaseSchemaSchema = BaseModel.extend({\n defaults: {\n id: undefined,\n displayName: undefined,\n name: undefined\n },\n constructor: function () {\n this.properties = new SchemaProperty.Collection();\n BaseModel.apply(this, arguments);\n },\n getProperties: function () {\n return this.properties;\n },\n clone: function () {\n const model = BaseModel.prototype.clone.apply(this, arguments);\n model.getProperties().set(this.getProperties().toJSON({\n verbose: true\n }));\n return model;\n },\n parse: function (resp) {\n const properties = parseProperties(resp);\n this.properties.set(properties, {\n parse: true\n });\n return oktaUnderscore.omit(resp, 'schema');\n },\n trimProperty: function (property) {\n return oktaUnderscore.omit(property, 'name');\n },\n toJSON: function () {\n const json = BaseModel.prototype.toJSON.apply(this, arguments);\n json.schema = {\n properties: {}\n };\n this.getProperties().each(function (model) {\n const property = model.toJSON();\n json.schema.properties[property.name] = this.trimProperty(property);\n }, this);\n return json;\n },\n save: function () {\n this.getProperties().each(function (model) {\n model.cleanup();\n });\n return BaseModel.prototype.save.apply(this, arguments);\n }\n});\nconst BaseSchemaSchemas = BaseCollection.extend({\n model: BaseSchemaSchema\n});\nvar BaseSchema = {\n parseProperties: parseProperties,\n Model: BaseSchemaSchema,\n Collection: BaseSchemaSchemas\n};\n\nexport { BaseSchema as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport FrameworkModel from '../framework/Model.js';\n\n/**\n * Wrapper around the more generic {@link src/framework/Model} that\n * contains Okta-specific logic.\n * @class module:Okta.Model\n * @extends src/framework/Model\n */\nvar Model = FrameworkModel.extend(\n/** @lends module:Okta.Model.prototype */\n{\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n _builtInLocalProps: {\n __edit__: 'boolean',\n __pending__: 'boolean'\n },\n preinitialize: function () {\n this.local = oktaUnderscore.defaults({}, oktaUnderscore.result(this, 'local'), this._builtInLocalProps);\n FrameworkModel.prototype.preinitialize.apply(this, arguments);\n },\n constructor: function () {\n FrameworkModel.apply(this, arguments);\n\n if (oktaUnderscore.result(this, 'secureJSON')) {\n this.sync = oktaUnderscore.wrap(this.sync, function (sync, method, model, options) {\n return sync.call(this, method, model, oktaUnderscore.extend({\n dataType: 'secureJSON'\n }, options));\n });\n }\n }\n});\n\nexport { Model as default };\n","import oktaJQueryStatic from '../util/jquery-wrapper.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\nimport BaseCollection from './BaseCollection.js';\nimport BaseModel from './BaseModel.js';\nimport Logger from '../util/Logger.js';\nimport SchemaUtils from '../util/SchemaUtil.js';\nimport StringUtil from '../util/StringUtil.js';\nimport EnumTypeHelper from '../views/forms/helpers/EnumTypeHelper.js';\n\n/* eslint-disable @okta/okta/no-exclusive-language */\nconst loc = StringUtil.localize;\nconst STRING = SchemaUtils.STRING;\nconst NUMBER = SchemaUtils.NUMBER;\nconst INTEGER = SchemaUtils.INTEGER;\nconst OBJECT = SchemaUtils.OBJECT;\n\nconst getArrayTypeName = function (type, elementType) {\n return type + 'of' + elementType;\n};\n\nconst SchemaPropertySubSchema = BaseModel.extend({\n defaults: {\n description: undefined,\n minLength: undefined,\n maxLength: undefined,\n format: undefined\n },\n parse: function (resp) {\n if (oktaUnderscore.isString(resp.format)) {\n const matcher = /^\\/(.+)\\/$/.exec(resp.format);\n\n if (matcher) {\n resp.format = matcher[1];\n }\n }\n\n return resp;\n }\n});\nconst SchemaPropertySubSchemaCollection = BaseCollection.extend({\n model: SchemaPropertySubSchema\n});\nconst SchemaPropertySubSchemaAllOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'allOf'\n});\nconst SchemaPropertySubSchemaOneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'oneOf'\n});\nconst SchemaPropertySubSchemaNoneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'noneOf'\n});\nconst constraintTypeErrorMessages = {\n string: loc('schema.validation.field.value.must.string', 'courage'),\n number: loc('schema.validation.field.value.must.number', 'courage'),\n integer: loc('schema.validation.field.value.must.integer', 'courage'),\n object: loc('schema.validation.field.value.must.object', 'courage')\n};\nconst loginFormatNonePattern = '.+';\nconst escapedLoginCharsRe = /[^a-zA-Z0-9-]/;\nconst constraintHandlers = {\n between: '_checkBetweenConstraints',\n greaterThan: '_checkGreaterThanConstraint',\n lessThan: '_checkLessThanConstraint',\n equals: '_checkEqualsConstraint'\n};\nconst SchemaPropertySchemaProperty = BaseModel.extend({\n idAttribute: 'name',\n local: {\n __oneOf__: {\n type: 'array',\n minItems: 1\n }\n },\n defaults: {\n // OKTA-28445, set empty string by default as the key for each property when syncing with server\n // so that server can respond with error when a name is not provided\n name: '',\n title: undefined,\n type: undefined,\n description: undefined,\n required: false,\n format: undefined,\n // choose disable option be default.\n union: undefined,\n subSchemas: undefined,\n settings: {\n permissions: {\n SELF: SchemaUtils.PERMISSION.READ_ONLY\n }\n },\n unique: undefined,\n __metadata__: undefined,\n __isSensitive__: BaseModel.ComputedProperty(['settings'], function (settings) {\n return !!(settings && settings.sensitive && settings.sensitive !== 'NOT_SENSITIVE');\n }),\n __isPendingSensitive__: BaseModel.ComputedProperty(['settings'], function (settings) {\n return !!(settings && settings.sensitive && settings.sensitive === 'PENDING_SENSITIVE');\n }),\n __unique__: false,\n __isUniqueValidated__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED;\n }),\n __isPendingUniqueness__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtils.UNIQUENESS.PENDING_UNIQUENESS;\n }),\n __isUniqueness__: BaseModel.ComputedProperty(['__isUniqueValidated__', '__isPendingUniqueness__'], function (isValidated, isPending) {\n return isValidated || isPending;\n }),\n __canBeSensitive__: BaseModel.ComputedProperty(['__metadata__'], function (metadata) {\n return !!(metadata && metadata.sensitivizable);\n }),\n __userPermission__: SchemaUtils.PERMISSION.READ_ONLY,\n __displayType__: undefined,\n __displayTypeLabel__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return SchemaUtils.DATATYPE[displayType] || displayType;\n }),\n __supportsMinMax__: false,\n // use the private naming convention for these computed properties,\n // to deal with the complexity in cloning schema with properties (toJSON({verbose: true})),\n // to make sure these attributes are being excluded from api request\n __isReadOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtils.MUTABILITY.READONLY;\n }),\n __isWriteOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtils.MUTABILITY.WRITEONLY;\n }),\n __displayScope__: undefined,\n __isScopeSelf__: BaseModel.ComputedProperty(['scope'], function (scope) {\n return scope === SchemaUtils.SCOPE.SELF;\n }),\n __isNoneScopeArrayType__: BaseModel.ComputedProperty(['__isScopeSelf__', '__displayType__'], function (isScopeSelf, displayType) {\n return !isScopeSelf && SchemaUtils.isArrayDataType(displayType);\n }),\n __isImported__: BaseModel.ComputedProperty(['externalName'], function (externalName) {\n return !!externalName;\n }),\n __isFromBaseSchema__: BaseModel.ComputedProperty(['__schemaMeta__'], function (schemaMeta) {\n return schemaMeta && schemaMeta.name === 'base';\n }),\n // Only UI can turn on __enumDefined__ and reprocess the enum/oneOf value; otherwise,\n // it should leave existing value untouch\n __enumDefined__: false,\n __supportEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains(SchemaUtils.SUPPORTENUM, displayType);\n }),\n __isNumberTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.NUMBER, SchemaUtils.ARRAYDISPLAYTYPE.arrayofnumber], displayType);\n }),\n __isIntegerTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.INTEGER, SchemaUtils.ARRAYDISPLAYTYPE.arrayofinteger], displayType);\n }),\n __isObjectTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.OBJECT, SchemaUtils.ARRAYDISPLAYTYPE.arrayofobject], displayType);\n }),\n __isStringTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.STRING, SchemaUtils.ARRAYDISPLAYTYPE.arrayofstring], displayType);\n }),\n __enumConstraintType__: BaseModel.ComputedProperty(['__isStringTypeEnum__', '__isNumberTypeEnum__', '__isIntegerTypeEnum__', '__isObjectTypeEnum__'], function (isStringType, isNumberType, isIntegerType, isObjectType) {\n if (isStringType) {\n return STRING;\n }\n\n if (isNumberType) {\n return NUMBER;\n }\n\n if (isIntegerType) {\n return INTEGER;\n }\n\n if (isObjectType) {\n return OBJECT;\n }\n }),\n __isEnumDefinedAndSupported__: BaseModel.ComputedProperty(['__enumDefined__', '__supportEnum__'], function (enumDefined, supportEnum) {\n return enumDefined && supportEnum;\n }),\n __isLoginOfBaseSchema__: BaseModel.ComputedProperty(['__isFromBaseSchema__', 'name'], function (isFromBaseSchema, name) {\n return isFromBaseSchema && name === 'login';\n }),\n __isLoginFormatRestrictionToEmail__: BaseModel.ComputedProperty(['__loginFormatRestriction__'], function (loginFormatRestriction) {\n return loginFormatRestriction === SchemaUtils.LOGINPATTERNFORMAT.EMAIL;\n })\n },\n initialize: function () {\n BaseModel.prototype.initialize.apply(this, arguments);\n this.listenTo(this, 'change:__displayType__', this._updateTypeFormatConstraints);\n this.listenTo(this, 'change:type change:format change:items', this._updateDisplayType);\n this.listenTo(this, 'change:__minVal__ change:__maxVal__', this._updateMinMax);\n this.listenTo(this, 'change:__equals__', this._convertEqualsToMinMax);\n this.listenTo(this, 'change:__constraint__', this._setConstraintText);\n\n this._setConstraintText();\n\n this._setLoginPattern();\n },\n parse: function (resp) {\n /* eslint complexity: [2, 9] */\n resp = oktaUnderscore.clone(resp);\n\n if (resp.type === 'object' && resp.extendedType === 'image') {\n resp.type = 'image';\n }\n\n resp['__displayType__'] = SchemaUtils.getDisplayType(resp.type, resp.format, resp.items ? resp.items.format ? resp.items.format : resp.items.type : undefined);\n\n this._setRangeConstraints(resp);\n\n resp['__supportsMinMax__'] = SchemaUtils.SUPPORTSMINMAX.indexOf(resp['__displayType__']) !== -1;\n resp['__displayScope__'] = SchemaUtils.DISPLAYSCOPE[resp.scope] || SchemaUtils.DISPLAYSCOPE.NA;\n\n if (resp.settings && resp.settings.permissions && resp.settings.permissions.SELF) {\n resp['__userPermission__'] = resp.settings.permissions.SELF;\n }\n\n this._setMasterOverride(resp);\n\n this._setSubSchemas(resp);\n\n this._setUniqueness(resp);\n\n return resp;\n },\n validate: function () {\n const enumValidationError = this._validateEnumOneOf();\n\n if (enumValidationError) {\n return enumValidationError;\n }\n\n if (!this.get('__supportsMinMax__') || !this.get('__constraint__')) {\n return undefined;\n }\n\n const constraitType = this.get('__constraint__');\n const constraitHandler = this[constraintHandlers[constraitType]];\n\n if (oktaUnderscore.isFunction(constraitHandler)) {\n return constraitHandler.call(this);\n } else {\n Logger.warn('No constraint handler found for: ' + constraitType);\n return undefined;\n }\n },\n _checkBetweenConstraints: function () {\n const minVal = this.get('__minVal__');\n const maxVal = this.get('__maxVal__');\n\n if (!minVal && !maxVal) {\n return;\n }\n\n if (!minVal) {\n return {\n __minVal__: 'Min value is required'\n };\n }\n\n if (!maxVal) {\n return {\n __maxVal__: 'Max value is required'\n };\n }\n\n let val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n\n val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n\n if (val) {\n return val;\n }\n\n if (+minVal >= +maxVal) {\n return {\n __maxVal__: 'Max val must be greater than min val'\n };\n }\n },\n _checkGreaterThanConstraint: function () {\n const minVal = this.get('__minVal__');\n\n if (!minVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n },\n _checkLessThanConstraint: function () {\n const maxVal = this.get('__maxVal__');\n\n if (!maxVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n\n if (val) {\n return val;\n }\n },\n _checkEqualsConstraint: function () {\n const equals = this.get('__equals__');\n\n if (!equals) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__equals__', 'Constraint');\n\n if (val) {\n return val;\n }\n },\n _checkIntegerConstraints: function (field, name) {\n const val = this.get(field);\n const error = {}; // eslint-disable-next-line no-restricted-globals\n\n if (isNaN(val)) {\n error[field] = name + ' must be a number';\n return error;\n }\n\n if (+val < 0) {\n error[field] = name + ' must be greater than 0';\n return error;\n }\n },\n _setMasterOverride: function (resp) {\n if (resp.settings && resp.settings.masterOverride && resp.settings.masterOverride) {\n const masterOverrideValue = resp.settings.masterOverride.value;\n\n if (oktaUnderscore.isArray(masterOverrideValue) && !oktaUnderscore.isEmpty(masterOverrideValue)) {\n resp['__masterOverrideType__'] = 'OVERRIDE';\n resp['__masterOverrideValue__'] = masterOverrideValue || [];\n } else {\n resp['__masterOverrideType__'] = resp.settings.masterOverride.type;\n }\n } else {\n resp['__masterOverrideType__'] = 'INHERIT';\n }\n },\n _setRangeConstraints: function (resp) {\n /* eslint complexity: [2, 11] */\n if (resp['__displayType__'] === STRING) {\n resp['__minVal__'] = resp.minLength;\n resp['__maxVal__'] = resp.maxLength;\n } else if (resp['__displayType__'] === INTEGER || resp['__displayType__'] === NUMBER) {\n resp['__minVal__'] = resp.minimum;\n resp['__maxVal__'] = resp.maximum;\n }\n\n if (resp['__minVal__'] && resp['__maxVal__']) {\n if (resp['__minVal__'] === resp['__maxVal__']) {\n resp['__constraint__'] = 'equals';\n resp['__equals__'] = resp['__minVal__'];\n } else {\n resp['__constraint__'] = 'between';\n }\n } else if (!resp['__minVal__'] && resp['__maxVal__']) {\n resp['__constraint__'] = 'lessThan';\n } else if (!resp['__maxVal__'] && resp['__minVal__']) {\n resp['__constraint__'] = 'greaterThan';\n }\n },\n _setSubSchemas: function (resp) {\n if (resp.allOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaAllOfCollection(resp.allOf, {\n parse: true\n });\n } else if (resp.oneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaOneOfCollection(resp.oneOf, {\n parse: true\n });\n } else if (resp.noneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaNoneOfCollection(resp.noneOf, {\n parse: true\n });\n }\n },\n _setUniqueness: function (resp) {\n const unique = resp && resp.unique;\n resp['__unique__'] = !!(unique && (unique === SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED || unique === SchemaUtils.UNIQUENESS.PENDING_UNIQUENESS));\n },\n _setLoginPattern: function () {\n if (!this.get('__isLoginOfBaseSchema__')) {\n return;\n }\n\n const pattern = this.get('pattern');\n\n if (pattern === loginFormatNonePattern) {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.NONE);\n } else if (pattern) {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.CUSTOM);\n this.set('__loginFormatRestrictionCustom__', this._extractLoginPattern(pattern));\n } else {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.EMAIL);\n }\n },\n _updateDisplayType: function () {\n const type = this.get('type');\n\n if (type === STRING && this.get('format')) {\n this.set('__displayType__', SchemaUtils.FORMATDISPLAYTYPE[this.get('format')]);\n } else {\n const items = this.get('items');\n const arraytype = items && (items.format ? items.format : items.type);\n\n if (type && arraytype) {\n this.set('__displayType__', SchemaUtils.ARRAYDISPLAYTYPE[getArrayTypeName(type, arraytype)]);\n } else {\n this.set('__displayType__', type);\n }\n }\n },\n _validateEnumOneOf: function () {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return;\n }\n\n const enumOneOf = this.get('__oneOf__') || [];\n\n if (oktaUnderscore.isEmpty(enumOneOf)) {\n return {\n __oneOf__: loc('model.validation.field.blank', 'courage')\n };\n }\n\n if (!this._isValidateOneOfConstraint(enumOneOf)) {\n const constraintType = this.get('__enumConstraintType__');\n const errorTypeMsg = constraintTypeErrorMessages[constraintType];\n return {\n __oneOf__: errorTypeMsg\n };\n }\n },\n _isValidateOneOfConstraint: function (values) {\n const constraintType = this.get('__enumConstraintType__');\n return oktaUnderscore.all(values, function (value) {\n return EnumTypeHelper.isConstraintValueMatchType(value.const, constraintType);\n });\n },\n toJSON: function () {\n let json = BaseModel.prototype.toJSON.apply(this, arguments);\n json.settings = {\n permissions: {}\n };\n json.settings.permissions['SELF'] = this.get('__userPermission__'); // omit \"sensitive\" filed will have default it value to false.\n\n if (this.get('__isSensitive__')) {\n json.settings.sensitive = this.get('__isSensitive__');\n }\n\n if (this.get('type') === 'image') {\n json.type = 'object';\n json.extendedType = 'image';\n }\n\n json = this._enumAssignment(json);\n json = this._attributeOverrideToJson(json);\n json = this._normalizeUnionValue(json);\n json = this._patternAssignment(json);\n json = this._uniquenessAssignment(json);\n return json;\n },\n _attributeOverrideToJson: function (json) {\n const masterOverrideType = this.get('__masterOverrideType__');\n const masterOverrideValue = this.get('__masterOverrideValue__');\n\n if (masterOverrideType === 'OKTA_MASTERED') {\n json.settings.masterOverride = {\n type: 'OKTA_MASTERED'\n };\n } else if (masterOverrideType === 'OVERRIDE') {\n json.settings.masterOverride = {\n type: 'ORDERED_LIST',\n value: []\n };\n\n if (masterOverrideValue instanceof BaseCollection) {\n oktaUnderscore.each(masterOverrideValue.toJSON(), function (overrideProfile) {\n json.settings.masterOverride.value.push(overrideProfile.id);\n });\n } else if (masterOverrideValue instanceof Array) {\n json.settings.masterOverride.value = masterOverrideValue;\n }\n\n if (oktaUnderscore.isEmpty(json.settings.masterOverride.value)) {\n delete json.settings.masterOverride;\n }\n }\n\n if (masterOverrideType === 'INHERIT') {\n delete json.settings.masterOverride;\n }\n\n return json;\n },\n\n /**\n * Only allow set \"union\" value when isScopeSelf is NONE and displayType is\n * array of (string/number/integer), otherwise reset to default.\n *\n * @see /universal-directory/shared/views/components/UnionGroupValuesRadio.js\n */\n _normalizeUnionValue: function (json) {\n if (!this.get('__isNoneScopeArrayType__')) {\n json['union'] = undefined;\n }\n\n return json;\n },\n _enumAssignment: function (json) {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return json;\n } // backfill empty title by constraint\n\n\n const enumOneOf = this._getEnumOneOfWithTitleCheck();\n\n if (this.get('type') === 'array') {\n delete json.items.enum;\n json.items.oneOf = enumOneOf;\n } else {\n delete json.enum;\n json.oneOf = enumOneOf;\n }\n\n return json;\n },\n _patternAssignment: function (json) {\n if (!this.get('__isLoginOfBaseSchema__') || !this.get('__loginFormatRestriction__')) {\n return json;\n }\n\n switch (this.get('__loginFormatRestriction__')) {\n case SchemaUtils.LOGINPATTERNFORMAT.EMAIL:\n delete json.pattern;\n break;\n\n case SchemaUtils.LOGINPATTERNFORMAT.CUSTOM:\n json.pattern = this._buildLoginPattern(this.get('__loginFormatRestrictionCustom__'));\n break;\n\n case SchemaUtils.LOGINPATTERNFORMAT.NONE:\n json.pattern = loginFormatNonePattern;\n break;\n }\n\n return json;\n },\n _uniquenessAssignment: function (json) {\n if (!this.get('__unique__')) {\n delete json.unique;\n } else if (!this.get('__isUniqueness__')) {\n json.unique = SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED;\n }\n\n return json;\n },\n\n /**\n * Character should be escaped except letters, digits and hyphen\n */\n _escapedRegexChar: function (pattern, index) {\n const char = pattern.charAt(index);\n\n if (escapedLoginCharsRe.test(char)) {\n return '\\\\' + char;\n }\n\n return char;\n },\n _buildLoginPattern: function (pattern) {\n let result = '';\n\n for (var i = 0; i < pattern.length; i++) {\n result += this._escapedRegexChar(pattern, i);\n }\n\n return '[' + result + ']+';\n },\n _extractLoginPattern: function (pattern) {\n const re = /^\\[(.*)\\]\\+/;\n const matches = pattern.match(re);\n return matches ? matches[1].replace(/\\\\(.)/g, '$1') : pattern;\n },\n _getEnumOneOfWithTitleCheck: function () {\n const enumOneOf = this.get('__oneOf__');\n return oktaUnderscore.map(enumOneOf, function (value) {\n if (oktaJQueryStatic.trim(value.title) !== '') {\n return value;\n }\n\n value.title = !oktaUnderscore.isString(value.const) ? JSON.stringify(value.const) : value.const;\n return value;\n });\n },\n _updateTypeFormatConstraints: function () {\n const displayType = this.get('__displayType__'); // OKTA-31952 reset format according to its displayType\n\n this.unset('format', {\n silent: true\n });\n this.unset('items', {\n silent: true\n });\n this.set(SchemaUtils.DISPLAYTYPES[displayType]);\n\n if (displayType !== NUMBER && displayType !== INTEGER) {\n this.unset('minimum');\n this.unset('maximum');\n }\n\n if (displayType !== STRING) {\n this.unset('minLength');\n this.unset('maxLength');\n }\n\n this.unset('__minVal__');\n this.unset('__maxVal__');\n this.unset('__equals__');\n this.set('__supportsMinMax__', SchemaUtils.SUPPORTSMINMAX.indexOf(this.get('__displayType__')) !== -1);\n },\n _updateMinMax: function () {\n let min;\n let max;\n const displayType = this.get('__displayType__');\n\n if (displayType === STRING) {\n min = 'minLength';\n max = 'maxLength';\n } else if (displayType === INTEGER || displayType === NUMBER) {\n min = 'minimum';\n max = 'maximum';\n }\n\n if (this.get('__minVal__')) {\n this.set(min, parseInt(this.get('__minVal__'), 10));\n } else {\n this.unset(min);\n }\n\n if (this.get('__maxVal__')) {\n this.set(max, parseInt(this.get('__maxVal__'), 10));\n } else {\n this.unset(max);\n }\n },\n _convertEqualsToMinMax: function () {\n const equals = this.get('__equals__');\n\n if (equals) {\n this.set('__minVal__', equals);\n this.set('__maxVal__', equals);\n }\n },\n\n /*\n Normally we would use a derived property here but derived properties do not work with the model Clone function\n so we use this workaround instead.\n */\n _setConstraintText: function () {\n const constraint = this.get('__constraint__');\n const min = this.get('__minVal__');\n const max = this.get('__maxVal__');\n const equals = this.get('__equals__');\n\n switch (constraint) {\n case 'between':\n this.set('__constraintText__', 'Between ' + min + ' and ' + max);\n break;\n\n case 'greaterThan':\n this.set('__constraintText__', 'Greater than ' + min);\n break;\n\n case 'lessThan':\n this.set('__constraintText__', 'Less than ' + max);\n break;\n\n case 'equals':\n this.set('__constraintText__', 'Equals ' + equals);\n break;\n\n default:\n this.set('__constraintText__', '');\n break;\n }\n },\n cleanup: function () {\n if (this.get('__constraint__') === 'lessThan') {\n this.unset('__minVal__');\n } else if (this.get('__constraint__') === 'greaterThan') {\n this.unset('__maxVal__');\n }\n\n if (this.get('scope') !== SchemaUtils.SCOPE.SYSTEM) {\n if (this.get('__isScopeSelf__') === true) {\n this.set({\n scope: SchemaUtils.SCOPE.SELF\n }, {\n silent: true\n });\n } else {\n this.unset('scope');\n }\n }\n\n if (!this.get('__unique__')) {\n this.unset('unique');\n }\n },\n\n /**\n * Since there is not an dedicated attribute to flag enum type,\n * use enum values to determine whether the property is enum type or not.\n */\n isEnumType: function () {\n return !!this.getEnumValues();\n },\n getEnumValues: function () {\n return this.get('oneOf') || this.get('enum') || this.get('items') && this.get('items')['oneOf'] || this.get('items') && this.get('items')['enum'];\n },\n detectHasEnumDefined: function () {\n const enumValues = this.getEnumValues();\n\n if (!enumValues) {\n return;\n }\n\n this.set('__oneOf__', EnumTypeHelper.convertToOneOf(enumValues));\n this.set('__enumDefined__', true);\n }\n});\nconst SchemaPropertySchemaProperties = BaseCollection.extend({\n model: SchemaPropertySchemaProperty,\n clone: function () {\n return new this.constructor(this.toJSON({\n verbose: true\n }), {\n parse: true\n });\n },\n areAllReadOnly: function () {\n return oktaUnderscore.all(this.pluck('__isReadOnly__'));\n },\n createModelProperties: function () {\n return this.reduce(function (p, schemaProperty) {\n const type = schemaProperty.get('type');\n p[schemaProperty.id] = oktaUnderscore.clone(SchemaUtils.DISPLAYTYPES[type]);\n\n if (SchemaUtils.SUPPORTSMINMAX.indexOf(type) !== -1) {\n p[schemaProperty.id].minLength = schemaProperty.get('minLength');\n p[schemaProperty.id].maxLength = schemaProperty.get('maxLength');\n }\n\n if (type === 'string') {\n p[schemaProperty.id].format = schemaProperty.get('format');\n }\n\n return p;\n }, {});\n }\n});\nvar SchemaProperty = {\n Model: SchemaPropertySchemaProperty,\n Collection: SchemaPropertySchemaProperties\n};\n\nexport { SchemaProperty as default };\n","import oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport BaseRouter from './BaseRouter.js';\nimport SettingsModel from './SettingsModel.js';\nimport StateMachine from './StateMachine.js';\nimport BaseView from '../views/BaseView.js';\n\nfunction clean(obj) {\n const res = {};\n\n oktaUnderscore.each(obj, function (value, key) {\n if (!oktaUnderscore.isNull(value)) {\n res[key] = value;\n }\n });\n\n return res;\n}\n\nconst proto =\n/** @lends module:Okta.Controller.prototype */\n{\n preinitialize: function (options = {}) {\n // If 'state' is passed down as options, use it, else create a 'new StateMachine()'\n this.state = oktaUnderscore.result(this, 'state');\n const hasStateBeenInitialized = this.state instanceof StateMachine || options.state instanceof StateMachine;\n\n if (!hasStateBeenInitialized) {\n const stateData = oktaUnderscore.defaults(clean(options.state), this.state || {}); // TODO:\n // `framework/View.js set `this.state = options.state.`.\n // Therefore we could consider to do\n // 1. `options.state = new StateMachine()`\n // 2. remove `delete options.state`\n\n\n this.state = new StateMachine(stateData);\n delete options.state;\n }\n\n if (!options.settings) {\n // allow the controller to live without a router\n options.settings = new SettingsModel(oktaUnderscore.omit(options || {}, 'el'));\n this.listen('notification', BaseRouter.prototype._notify);\n this.listen('confirmation', BaseRouter.prototype._confirm);\n }\n\n BaseView.prototype.preinitialize.call(this, options);\n },\n constructor: function (options = {}) {\n BaseView.call(this, options);\n this.listenTo(this.state, '__invoke__', function () {\n const args = oktaUnderscore.toArray(arguments);\n\n const method = args.shift();\n\n if (oktaUnderscore.isFunction(this[method])) {\n this[method].apply(this, args);\n }\n });\n let MainView; // if `this.View` is already a Backbone View\n\n if (this.View && this.View.isCourageView) {\n MainView = this.View;\n } // if `this.View` is a pure function that returns a Backbone View\n else if (oktaUnderscore.result(this, 'View') && oktaUnderscore.result(this, 'View').isCourageView) {\n MainView = oktaUnderscore.result(this, 'View');\n }\n\n if (MainView) {\n this.add(new MainView(this.toJSON()));\n }\n },\n\n /**\n * The default values of our application state\n * @type {Object}\n * @default {}\n */\n state: {},\n\n /**\n * The main view this controller operate on\n * @type {module:Okta.View}\n * @default null\n */\n View: null,\n\n /**\n * Renders the {@link module:Okta.Controller#View|main view} after the DOM is ready\n * in case the controller is the root component of the page (e.g there's no router)\n */\n render: function () {\n const args = arguments;\n const self = this;\n oktaJQueryStatic(function () {\n BaseView.prototype.render.apply(self, args);\n });\n return this;\n },\n\n /**\n * Creates the view constructor options\n * @param {Object} [options] Extra options\n * @return {Object} The view constructor options\n */\n toJSON: function (options) {\n return oktaUnderscore.extend(oktaUnderscore.pick(this, 'state', 'settings', 'collection', 'model'), options || {});\n },\n\n /**\n * Removes the child views, empty the DOM element and stop listening to events\n */\n remove: function () {\n this.removeChildren();\n this.stopListening();\n this.$el.empty();\n return this;\n }\n};\n/**\n * A Controller is our application control flow component.\n *\n * Typically it will:\n * - Initialize the models, controller and main views\n * - Listen to events\n * - Create, read, update and delete models\n * - Create modal dialogs, confirmation dialogs and alert dialogs\n * - Control the application flow\n *\n * The constructor is responsible for:\n * - Create the application state object\n * - Assign or creates the application settings object\n * - Create an instance of the main view with the relevant parameters\n *\n * See:\n * [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World),\n * [Test Spec](https://github.com/okta/okta-ui/blob/master/packages/courage/test/spec/util/BaseController_spec.js)\n *\n * @class module:Okta.Controller\n * @param {Object} options Options Hash\n * @param {SettingsModel} [options.settings] Application Settings Model\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\n\nvar BaseController = BaseView.extend(proto);\n\nexport { BaseController as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport ConfirmationDialog from '../../empty.js';\nimport oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport Logger from './Logger.js';\nimport SettingsModel from './SettingsModel.js';\nimport Notification from '../views/components/Notification.js';\n\nfunction getRoute(router, route) {\n const root = oktaUnderscore.result(router, 'root') || '';\n\n if (root && oktaUnderscore.isString(route)) {\n return [root, route].join('/').replace(/\\/{2,}/g, '/');\n }\n\n return route;\n}\n/**\n * BaseRouter is a standard [Backbone.Router](http://backbonejs.org/#Router)\n * with a few additions:\n * - Explicit mapping between routes and controllers\n * - Support for rendering notification and confirmation dialogs\n *\n * Checkout the [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World)\n * for a step-by-step guide to using this.\n *\n * @class module:Okta.Router\n * @extends external:Backbone.Router\n * @param {Object} options options hash\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\n\n\nconst props =\n/** @lends module:Okta.Router.prototype */\n{\n /**\n * The root URL for the router. When setting {@link http://backbonejs.org/#Router-routes|routes},\n * it will be prepended to each route.\n * @type {String|Function}\n */\n root: '',\n listen: Notification.prototype.listen,\n constructor: function (options = {}) {\n this.el = options.el;\n /**\n * Make sure `this.settings` has been set before invoke super - `Backbone.Router.apply`,\n * which will invoke `this.initialize`, which could use `this.settings`.\n *\n * In theory we can set `this.settings` in `this.initialize` and assume `child.initialize`\n * will invoke `super.initialize` first. But in reality, `child.initialize` doesn't call\n * `super.initialize` at all.\n */\n\n this.settings = new SettingsModel(oktaUnderscore.omit(options, 'el'));\n\n if (options.root) {\n this.root = options.root;\n }\n\n Backbone.Router.apply(this, arguments);\n this.listen('notification', this._notify);\n this.listen('confirmation', this._confirm);\n },\n\n /**\n * Fires up a confirmation dialog\n *\n * @param {Object} options Options Hash\n * @param {String} options.title The title\n * @param {Array} buttonOrder The order of the buttons\n * @param {String} options.subtitle The explain text\n * @param {String} options.save The text for the save button\n * @param {Function} options.ok The callback function to run when hitting \"OK\"\n * @param {String} options.cancel The text for the cancel button\n * @param {Function} options.cancelFn The callback function to run when hitting \"Cancel\"\n * @param {Boolean} options.noCancelButton Don't render the cancel button (useful for alert dialogs)\n * @param {Boolean} options.noSubmitButton Don't render the primary button (useful for alert dialogs)\n * @private\n *\n * @return {Okta.View} the dialog view\n */\n _confirm: function (options = {}) {\n const Dialog = ConfirmationDialog.extend(oktaUnderscore.pick(options, 'title', 'subtitle', 'save', 'ok', 'cancel', 'cancelFn', 'noCancelButton', 'noSubmitButton', 'content', 'danger', 'type', 'closeOnOverlayClick', 'buttonOrder'));\n const dialog = new Dialog({\n model: this.settings\n }); // The model is here because itsa part of the BaseForm paradigm.\n // It will be ignored in the context of a confirmation dialog.\n\n dialog.render();\n return dialog; // test hook\n },\n\n /**\n * Fires up a notification banner\n *\n * @param {Object} options Options Hash\n * @return {Okta.View} the notification view\n * @private\n */\n _notify: function (options) {\n const notification = new Notification(options);\n oktaJQueryStatic('#content').prepend(notification.render().el);\n return notification; // test hook\n },\n\n /**\n * Renders a Controller\n * This will initialize new instance of a controller and call render on it\n *\n * @param {Okta.Controller} Controller The controller Class we which to render\n * @param {Object} [options] Extra options to the controller constructor\n */\n render: function (Controller, options) {\n this.unload();\n options = oktaUnderscore.extend(oktaUnderscore.pick(this, 'settings', 'el'), options || {});\n this.controller = new Controller(options);\n this.controller.render();\n },\n\n /**\n * Starts the backbone history object\n *\n * Waits for the dom to be ready before calling `Backbone.history.start()` (IE issue).\n *\n * See [Backbone History](http://backbonejs.org/#History) for more information.\n */\n start: function (...args) {\n oktaJQueryStatic(function () {\n if (Backbone.History.started) {\n Logger.error('History has already been started');\n return;\n }\n\n Backbone.history.start(...args);\n });\n },\n\n /**\n * Removes active controller and frees up event listeners\n */\n unload: function () {\n if (this.controller) {\n this.stopListening(this.controller);\n this.stopListening(this.controller.state);\n this.controller.remove();\n }\n },\n route: function (route, name, callback) {\n return Backbone.Router.prototype.route.call(this, getRoute(this, route), name, callback);\n },\n navigate: function (fragment, options) {\n return Backbone.Router.prototype.navigate.call(this, getRoute(this, fragment), options);\n }\n};\nvar BaseRouter = Backbone.Router.extend(props);\n\nexport { BaseRouter as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport BaseButtonLink from '../views/components/BaseButtonLink.js';\n\n/* eslint '@okta/okta-ui/no-deprecated-methods': [0, [{ name: 'BaseButtonLink.extend', use: 'Okta.createButton'}, ]] */\n/**\n * A factory method wrapper for {@link BaseButtonLink} creation\n * @class module:Okta.internal.util.ButtonFactory\n */\n\nfunction normalizeEvents(options) {\n const events = oktaUnderscore.extend(options.click ? {\n click: options.click\n } : {}, options.events || {});\n\n const target = {};\n\n oktaUnderscore.each(events, function (fn, eventName) {\n target[eventName] = function (e) {\n if (!options.href) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (!(this.disabled && eventName === 'click')) {\n fn.apply(this, arguments);\n }\n };\n });\n\n return target;\n}\n\nvar ButtonFactory = /** @lends module:Okta.internal.util.ButtonFactory */\n{\n /**\n * Creates a {@link module:Okta.internal.views.components.BaseButtonLink|BaseButtonLink}.\n * @param {Object} options Options hash\n * @param {String} [options.title] The button text\n * @param {String} [options.icon]\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @param {String} [options.href] The button link\n * @param {Function} [options.click] On click callback\n * @param {Object} [options.events] a [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @returns {module:Okta.internal.views.components.BaseButtonLink} BaseButtonLink prototype (\"class\")\n */\n create: function (options) {\n options = oktaUnderscore.clone(options);\n options.attrs = options.attributes;\n delete options.attributes;\n return BaseButtonLink.extend(oktaUnderscore.extend(options, {\n events: normalizeEvents(options)\n }));\n }\n};\n\nexport { ButtonFactory as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport oktaUnderscore from './underscore-wrapper.js';\n\nfunction Class(options) {\n this.options = oktaUnderscore.clone(options || {});\n this.cid = oktaUnderscore.uniqueId('class');\n this.initialize.apply(this, arguments);\n}\n\noktaUnderscore.extend(Class.prototype, Backbone.Events, {\n initialize: function () {}\n});\n\nClass.extend = Backbone.Model.extend;\n\nexport { Class as default };\n","import clipboard from 'clipboard';\nimport oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport FrameworkView from '../framework/View.js';\nimport Class from './Class.js';\n\nconst Clipboard = clipboard;\nconst OPTIONS = ['success', 'error', 'target', 'text'];\nconst ClipboardClipboardWrapper = Class.extend({\n initialize: function (el, options) {\n /* eslint complexity:0, max-statements: [2, 24] */\n options = oktaUnderscore.pick(options || {}, OPTIONS);\n let trigger;\n let target;\n let text;\n\n if (oktaUnderscore.isString(el)) {\n trigger = el;\n }\n\n if (oktaUnderscore.isElement(el)) {\n trigger = el;\n }\n\n if (el instanceof oktaJQueryStatic) {\n trigger = el.selector; // TODO: use stronger type\n }\n\n if (el instanceof FrameworkView) {\n trigger = el.el;\n }\n\n if (oktaUnderscore.isFunction(options.target)) {\n target = options.target;\n }\n\n if (oktaUnderscore.isElement(options.target)) {\n target = oktaUnderscore.constant(options.target);\n }\n\n if (oktaUnderscore.isString(options.text)) {\n text = oktaUnderscore.constant(options.text);\n } else if (oktaUnderscore.isFunction(options.text)) {\n text = options.text;\n }\n\n this.__instance = new Clipboard(trigger, {\n target: target,\n text: text\n });\n this.done = oktaUnderscore.partial(this.__setCallback, 'success');\n this.error = oktaUnderscore.partial(this.__setCallback, 'error');\n this.done(options.success);\n this.error(options.error);\n },\n __setCallback: function (event, callback) {\n if (!oktaUnderscore.isFunction(callback)) {\n return;\n }\n\n this.__instance.on(event, callback);\n\n return this.__instance;\n }\n});\n/**\n * @class Clipboard\n * @abstract\n *\n * Abstract class that initializes a Clipboard\n * https://clipboardjs.com/\n *\n * ### Example:\n *\n * ```javascript\n * //attach a selector\n * Clipboard.attach('.copy-button');\n *\n * //attach a node, and set a constant string\n * Clipboard.attach(buttonView.el, {\n * text: 'this is the content'\n * });\n *\n * //attach a view, set text dynamically, and set callback\n * Clipboard.attach(buttonView, {\n * text: function (triggerNode) {\n * return $(triggerNode).attr('foo') + model.get('userName');\n * }\n * }).done(function (targetNode) {\n * var msg = ['\"', targetNode.text, '\" is copied'].join('');\n * view.notify('success', msg);\n * });\n *\n * //attach a jquery object, set the target node, and set callback\n * Clipboard.attach($('.customizeTarget'), {\n * target: function (triggerNode) {\n * return triggerNode;\n * },\n * success: function (targetNode) {\n * view.notify('success', 'copied!');\n * }\n * });\n *\n * ```\n */\n\nvar Clipboard$1 = {\n /**\n * @param {String|Node|View|jQuery} [el] el could be a selector (recommended),\n * a dom node, a view or a jquery object\n * @param {Object} [options] Options hash\n * @param {Node|Function} [options.target] a static dom node\n * or a function that takes trigger node and returns a target node\n * @param {String|Function} [options.text] a static string or a function that returns a string dynamically\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @return {Object} The clipboard object\n */\n attach: function (el, options) {\n return new ClipboardClipboardWrapper(el, options);\n }\n};\n\nexport { Clipboard$1 as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Cookie$1 from '../vendor/lib/js.cookie.js';\n\nconst SECURED_COOKIE = /^https/.test(window.location.href);\nvar Cookie = {\n setCookie: function (name, value, options) {\n Cookie$1.set(name, value, oktaUnderscore.defaults(options || {}, {\n secure: SECURED_COOKIE,\n path: '/'\n }));\n },\n getCookie: function () {\n return Cookie$1.get.apply(Cookie$1, arguments);\n },\n removeCookie: function () {\n return Cookie$1.remove.apply(Cookie$1, arguments);\n }\n};\n\nexport { Cookie as default };\n","var Keys = {\n UP: 38,\n DOWN: 40,\n DEL: 46,\n TAB: 9,\n RETURN: 13,\n ENTER: 13,\n ESC: 27,\n COMMA: 188,\n PAGEUP: 33,\n PAGEDOWN: 34,\n SPACE: 32,\n BACKSPACE: 8,\n __isKey: function (e, key) {\n return (e.which || e.keyCode) === this[key];\n },\n isEnter: function (e) {\n return this.__isKey(e, 'ENTER');\n },\n isEsc: function (e) {\n return this.__isKey(e, 'ESC');\n },\n isSpaceBar: function (e) {\n return this.__isKey(e, 'SPACE');\n }\n};\n\nexport { Keys as default };\n","function log(level, ...args) {\n if (window.console && window.okta && window.okta.debug) {\n window.console[level](...args);\n }\n}\n/**\n * Utility library of logging functions.\n * @class module:Okta.Logger\n */\n\n\nvar Logger = /** @lends module:Okta.Logger */\n{\n /**\n * See [console.trace](https://developer.mozilla.org/en-US/docs/Web/API/Console.trace)\n * @static\n */\n trace: function (...args) {\n return log('trace', ...args);\n },\n\n /**\n * See [console.dir](https://developer.mozilla.org/en-US/docs/Web/API/Console.dir)\n * @static\n */\n dir: function (...args) {\n return log('dir', ...args);\n },\n\n /**\n * See [console.time](https://developer.mozilla.org/en-US/docs/Web/API/Console.time)\n * @static\n */\n time: function (...args) {\n return log('time', ...args);\n },\n\n /**\n * See [console.timeEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.timeEnd)\n * @static\n */\n timeEnd: function (...args) {\n return log('timeEnd', ...args);\n },\n\n /**\n * See [console.group](https://developer.mozilla.org/en-US/docs/Web/API/Console.group)\n * @static\n */\n group: function (...args) {\n return log('group', ...args);\n },\n\n /**\n * See [console.groupEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.groupEnd)\n * @static\n */\n groupEnd: function (...args) {\n return log('groupEnd', ...args);\n },\n\n /**\n * See [console.assert](https://developer.mozilla.org/en-US/docs/Web/API/Console.assert)\n * @static\n */\n assert: function (...args) {\n return log('assert', ...args);\n },\n\n /**\n * See [console.log](https://developer.mozilla.org/en-US/docs/Web/API/Console.log)\n * @static\n */\n log: function (...args) {\n return log('log', ...args);\n },\n\n /**\n * See [console.info](https://developer.mozilla.org/en-US/docs/Web/API/Console.info)\n * @static\n */\n info: function (...args) {\n return log('info', ...args);\n },\n\n /**\n * See [console.warn](https://developer.mozilla.org/en-US/docs/Web/API/Console.warn)\n * @static\n */\n warn: function (...args) {\n return log('warn', ...args);\n },\n\n /**\n * See [console.error](https://developer.mozilla.org/en-US/docs/Web/API/Console.error)\n * @static\n */\n error: function (...args) {\n return log('error', ...args);\n }\n};\n\nexport { Logger as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport StringUtil from './StringUtil.js';\n\nconst loc = StringUtil.localize;\nconst SchemaUtils = {\n STRING: 'string',\n NUMBER: 'number',\n INTEGER: 'integer',\n BOOLEAN: 'boolean',\n OBJECT: 'object',\n FORMATDISPLAYTYPE: {\n 'date-time': 'date',\n uri: 'uri',\n email: 'email',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country-code',\n 'language-code': 'language-code',\n 'country_code': 'country_code',\n 'language_code': 'language_code',\n locale: 'locale',\n timezone: 'timezone',\n 'ref-id': 'reference'\n },\n ARRAYDISPLAYTYPE: {\n arrayofobject: 'arrayofobject',\n arrayofstring: 'arrayofstring',\n arrayofnumber: 'arrayofnumber',\n arrayofinteger: 'arrayofinteger',\n 'arrayofref-id': 'arrayofref-id'\n },\n DISPLAYTYPES: {\n date: {\n type: 'string',\n format: 'date-time'\n },\n uri: {\n type: 'string',\n format: 'uri'\n },\n email: {\n type: 'string',\n format: 'email'\n },\n // TODO: Resolve inconsistencies in hyphens vs. underscores for these properties (OKTA-202818)\n // use country-code if attribute should be restricted to country code type\n 'country-code': {\n type: 'string',\n format: 'country-code'\n },\n 'language-code': {\n type: 'string',\n format: 'language-code'\n },\n 'country_code': {\n type: 'string'\n },\n 'language_code': {\n type: 'string'\n },\n locale: {\n type: 'string',\n format: 'locale'\n },\n timezone: {\n type: 'string',\n format: 'timezone'\n },\n string: {\n type: 'string'\n },\n number: {\n type: 'number'\n },\n boolean: {\n type: 'boolean'\n },\n integer: {\n type: 'integer'\n },\n reference: {\n type: 'string',\n format: 'ref-id'\n },\n arrayofobject: {\n type: 'array',\n items: {\n type: 'object'\n }\n },\n arrayofstring: {\n type: 'array',\n items: {\n type: 'string'\n }\n },\n arrayofnumber: {\n type: 'array',\n items: {\n type: 'number'\n }\n },\n arrayofinteger: {\n type: 'array',\n items: {\n type: 'integer'\n }\n },\n 'arrayofref-id': {\n type: 'array',\n items: {\n type: 'string',\n format: 'ref-id'\n }\n },\n image: {\n type: 'image'\n },\n password: {\n type: 'string'\n }\n },\n SUPPORTSMINMAX: ['string', 'number', 'integer', 'password'],\n SUPPORTENUM: ['string', 'number', 'integer', 'object', 'arrayofstring', 'arrayofnumber', 'arrayofinteger', 'arrayofobject'],\n DATATYPE: {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n integer: 'integer',\n date: 'datetime',\n object: 'object',\n arrayofobject: 'object array',\n arrayofstring: 'string array',\n arrayofnumber: 'number array',\n arrayofinteger: 'integer array',\n 'arrayofref-id': 'reference array',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country code',\n 'language-code': 'language code',\n 'country_code': 'country code',\n 'language_code': 'language code',\n reference: 'reference',\n timezone: 'timezone',\n image: 'image'\n },\n MUTABILITY: {\n READONLY: 'READ_ONLY',\n WRITEONLY: 'WRITE_ONLY',\n READWRITE: 'READ_WRITE',\n IMMUTABLE: 'IMMUTABLE'\n },\n SCOPE: {\n NONE: 'NONE',\n SELF: 'SELF',\n SYSTEM: 'SYSTEM'\n },\n DISPLAYSCOPE: {\n SELF: 'User personal',\n SYSTEM: 'System',\n NA: 'None'\n },\n UNION: {\n DISABLE: 'DISABLE',\n ENABLE: 'ENABLE'\n },\n UNION_OPTIONS: {\n DISABLE: loc('universal-directory.profiles.attribute.form.union.enable.display', 'courage'),\n ENABLE: loc('universal-directory.profiles.attribute.form.union.disable.display', 'courage')\n },\n PERMISSION: {\n HIDE: 'HIDE',\n READ_ONLY: 'READ_ONLY',\n WRITE_ONLY: 'WRITE_ONLY',\n READ_WRITE: 'READ_WRITE'\n },\n ENDUSER_ATTRIBUTE_PERMISSION_OPTIONS: {\n HIDE: loc('universal-directory.profiles.attribute.enduser.permission.hide', 'courage'),\n READ_ONLY: loc('universal-directory.profiles.attribute.enduser.permission.readonly', 'courage'),\n READ_WRITE: loc('universal-directory.profiles.attribute.enduser.permission.readwrite', 'courage')\n },\n ATTRIBUTE_LEVEL_MASTERING_OPTIONS: {\n INHERIT: loc('universal-directory.profiles.attribute.source.inherit', 'courage'),\n // eslint-disable-next-line @okta/okta/no-exclusive-language\n OKTA_MASTERED: loc('universal-directory.profiles.attribute.source.oktamastered', 'courage'),\n OVERRIDE: loc('universal-directory.profiles.attribute.source.override', 'courage')\n },\n USERNAMETYPE: {\n NONE: 'non-username',\n OKTA_TO_APP: 'okta-to-app-username',\n OKTA_TO_AD: 'okta-to-ad-username',\n APP_TO_OKTA: 'app-to-okta-username',\n IDP_TO_OKTA: 'idp-to-okta-username'\n },\n LOGINPATTERNFORMAT: {\n EMAIL: 'EMAIL',\n CUSTOM: 'CUSTOM',\n NONE: 'NONE'\n },\n UNIQUENESS: {\n NOT_UNIQUE: 'NOT_UNIQUE',\n PENDING_UNIQUENESS: 'PENDING_UNIQUENESS',\n UNIQUE_VALIDATED: 'UNIQUE_VALIDATED'\n },\n\n /*\n * Get a display string for a schema attribute type.\n * @param {String} type Type of an attribute\n * @param {String} format Format of an attribute\n * @param {String} itemType Item type of an attribute if an array\n * @param {String} defaultValue The default value if an attribute type is undefined\n * @return {String} the display value\n */\n getDisplayType: function (type, format, itemType, defaultValue) {\n let displayType; // type is undefined for\n // - an un-mapped source attribute from mapping\n // - an source attribute which is mapped to username target attribute\n\n if (type) {\n // format is only defined for complicated types (ex. reference, date time, array)\n // not for simple types (ex. string, integer, boolean)\n if (format) {\n displayType = this.FORMATDISPLAYTYPE[format];\n } else {\n // itemType is only defined for array type\n // to specify an array element type (ex. string, integer, number)\n displayType = itemType ? this.ARRAYDISPLAYTYPE[type + 'of' + itemType] : type;\n }\n }\n\n if (!displayType) {\n displayType = typeof defaultValue === 'undefined' ? '' : defaultValue;\n }\n\n return displayType;\n },\n\n /*\n * Get attribute mapping source attribute username type\n * @param {String} mappingDirection\n * @param {String} targetName The mapping target attribute name\n * @param {String} appName The app name that's mapped to/from Okta\n * @return {String} the source attribute username type value\n */\n getSourceUsernameType: function (mappingDirection, targetName, appName) {\n let sourceUsernameType = this.USERNAMETYPE.NONE;\n /* eslint complexity: [2, 7] */\n\n if (mappingDirection === 'oktaToApp') {\n if (targetName === 'userName') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_APP;\n } else if (targetName === 'cn') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_AD;\n }\n } else if (mappingDirection === 'appToOkta' && targetName === 'login') {\n if (appName === 'saml_idp') {\n sourceUsernameType = this.USERNAMETYPE.IDP_TO_OKTA;\n } else {\n sourceUsernameType = this.USERNAMETYPE.APP_TO_OKTA;\n }\n }\n\n return sourceUsernameType;\n },\n isArrayDataType: function (type) {\n return oktaUnderscore.contains(oktaUnderscore.values(this.ARRAYDISPLAYTYPE), type);\n },\n isObjectDataType: function (type) {\n return this.DATATYPE.object === type;\n }\n};\n\nexport { SchemaUtils as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Model from '../models/Model.js';\n\n/**\n * @class SettingsModel\n * @extends {Okta.Model}\n * @private\n */\nconst props = {\n local: function () {\n const settings = window.okta && window.okta.settings || {};\n const theme = window.okta && window.okta.theme || '';\n return {\n orgId: ['string', false, settings.orgId],\n orgName: ['string', false, settings.orgName],\n serverStatus: ['string', false, settings.serverStatus],\n persona: ['string', false, settings.persona],\n isDeveloperConsole: ['boolean', false, settings.isDeveloperConsole],\n isPreview: ['boolean', false, settings.isPreview],\n permissions: ['array', true, settings.permissions || []],\n theme: ['string', false, theme]\n };\n },\n constructor: function () {\n Model.apply(this, arguments);\n this.features = window._features || [];\n },\n\n /**\n * Checks if the user have a feature flag enabled (Based of the org level feature flag)\n * @param {String} feature Feature name\n * @return {Boolean}\n */\n hasFeature: function (feature) {\n return oktaUnderscore.contains(this.features, feature);\n },\n\n /**\n * Checks if any of the given feature flags are enabled (Based of the org level feature flags)\n * @param {Array} featureArray Features names\n * @return {Boolean} true if any of the give features are enabled. False otherwise\n */\n hasAnyFeature: function (featureArray) {\n return oktaUnderscore.some(featureArray, this.hasFeature, this);\n },\n\n /**\n * Checks if the user have a specific permission (based on data passed from JSP)\n * @param {String} permission Permission name\n * @return {Boolean}\n */\n hasPermission: function (permission) {\n return oktaUnderscore.contains(this.get('permissions'), permission);\n },\n\n /**\n * Checks if the org has ds theme set\n * @return {Boolean}\n */\n isDsTheme: function () {\n return this.get('theme') === 'dstheme';\n }\n};\nvar SettingsModel = Model.extend(props);\n\nexport { SettingsModel as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Model from '../models/Model.js';\n\n/**\n * @class StateMachine\n * @extends Okta.Model\n * @private\n *\n * A state object that holds the applciation state\n */\nvar StateMachine = Model.extend({\n /**\n * Invokes a method on the applicable {@link Okta.Controller}\n *\n * ```javascript\n * state.invoke('methodName', 'param1', 'param2')\n * // Will call\n * contoller.methodName('param1', 'param2')\n * ```\n * @param {String} methodName the name of the controller method to invoke on the controller\n */\n invoke: function () {\n const args = oktaUnderscore.toArray(arguments);\n\n args.unshift('__invoke__');\n this.trigger.apply(this, args);\n }\n});\n\nexport { StateMachine as default };\n","import oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport Bundles from 'okta-i18n-bundles';\n\nconst entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n ''': '\\'',\n '/': '/'\n};\nconst emailValidator = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(?!-)((\\[?[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]?)|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/**\n* Converts the locale code identifier from \"${languageCode}-${countryCode}\" to \"${languageCode}_${countryCode}\"\n* Follows the ISO-639-1 language code and 2-letter ISO-3166-1-alpha-2 country code structure.\n* @param {String} locale code identifier\n* @return {String} converted locale code identifier\n*/\n\nconst parseLocale = locale => {\n if (/-/.test(locale)) {\n const parts = locale.split('-');\n parts[1] = parts[1].toUpperCase();\n return parts.join('_');\n }\n\n return locale;\n};\n/* eslint max-len: 0*/\n\n/**\n * Returns the language bundle based on the current locale.\n * - If a locale is not provided, default to English ('en')\n * - Legacy Support: If the named language bundle does not exist, fall back to the default named bundle.\n *\n * @param {*} bundleName\n */\n\n\nfunction getBundle(bundleName) {\n if (!bundleName) {\n return Bundles[oktaUnderscore.keys(Bundles)[0]];\n }\n\n const locale = parseLocale(window && window.okta && window.okta.locale) || 'en';\n return Bundles[`${bundleName}_${locale}`] || Bundles[bundleName];\n}\n/**\n *\n * CustomEvent polyfill for IE\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#polyfill\n */\n\n\nfunction IECustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n}\n/**\n * Call the window.okta.emitL10nError function if it is defined\n * @param {String} key The i18n key\n * @param {String} bundleName The i18n bundle name\n * @param {String} reason Could be 'bundle' (Bundle not found), 'key' (Key not found) or 'parameters' (Parameters mismatch).\n */\n\n\nfunction emitL10nError(key, bundleName, reason) {\n // CustomEvent polyfill for IE\n if (!window.CustomEvent) {\n window.CustomEvent = IECustomEvent;\n } // dispatchEvent for sentry\n\n\n if (typeof window.CustomEvent === 'function') {\n const event = new CustomEvent('okta-i18n-error', {\n detail: {\n type: 'l10n-error',\n key: key,\n bundleName: bundleName,\n reason: reason\n }\n });\n document.dispatchEvent(event);\n }\n}\n\nconst StringUtil =\n/** @lends module:Okta.internal.util.StringUtil */\n{\n /** @static */\n sprintf: function () {\n const args = Array.prototype.slice.apply(arguments);\n let value = args.shift();\n let oldValue = value;\n /* eslint max-statements: [2, 15] */\n\n function triggerError() {\n throw new Error('Mismatch number of variables: ' + arguments[0] + ', ' + JSON.stringify(args));\n }\n\n for (var i = 0, l = args.length; i < l; i++) {\n const entity = args[i];\n const regex = new RegExp('\\\\{' + i + '\\\\}', 'g');\n value = value.replace(regex, entity);\n\n if (entity === undefined || entity === null || value === oldValue) {\n triggerError();\n }\n\n oldValue = value;\n }\n\n if (/\\{[\\d+]\\}/.test(value)) {\n triggerError();\n }\n\n return value;\n },\n\n /**\n * Converts a URI encoded query string into a hash map\n * @param {String} query The query string\n * @return {Object} The map\n * @static\n * @example\n * StringUtil.parseQuery('foo=bar&baz=qux') // {foo: 'bar', baz: 'qux'}\n */\n parseQuery: function (query) {\n const params = {};\n const pairs = decodeURIComponent(query.replace(/\\+/g, ' ')).split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const data = pair.split('=');\n params[data.shift()] = data.join('=');\n }\n\n return params;\n },\n\n /** @static */\n encodeJSObject: function (jsObj) {\n return encodeURIComponent(JSON.stringify(jsObj));\n },\n\n /** @static */\n decodeJSObject: function (jsObj) {\n try {\n return JSON.parse(decodeURIComponent(jsObj));\n } catch (e) {\n return null;\n }\n },\n\n /** @static */\n unescapeHtml: function (string) {\n return String(string).replace(/&[\\w#\\d]{2,};/g, function (s) {\n return entityMap[s] || s;\n });\n },\n\n /**\n * Get the original i18n template directly without string format with parameters\n * @param {String} key The key\n * @param {String} bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n */\n getTemplate: function (key, bundleName) {\n const bundle = getBundle(bundleName);\n\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n\n if (bundle[key]) {\n return bundle[key];\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Translate a key to the localized value\n * @static\n * @param {String} key The key\n * @param {String} [bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n * @param {Array} [params] A list of parameters to apply as tokens to the i18n value\n * @return {String} The localized value\n */\n localize: function (key, bundleName, params) {\n const bundle = getBundle(bundleName);\n /* eslint complexity: [2, 6] */\n\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n\n let value = bundle[key];\n\n try {\n params = params && params.slice ? params.slice(0) : [];\n params.unshift(value);\n value = StringUtil.sprintf.apply(null, params);\n\n if (value) {\n return value;\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n } catch (e) {\n emitL10nError(key, bundleName, 'parameters');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Convert a string to a float if valid, otherwise return the string.\n * Valid numbers may contain a negative sign and a decimal point.\n * @static\n * @param {String} string The string to convert to a number\n * @return {String|Number} Returns a number if the string can be casted, otherwise returns the original string\n */\n parseFloat: function (string) {\n const number = +string;\n return typeof string === 'string' && number === parseFloat(string) ? number : string;\n },\n\n /**\n * Convert a string to an integer if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an integer\n * @return {String|integer} Returns an integer if the string can be casted, otherwise, returns the original string\n */\n parseInt: function (string) {\n const int = +string;\n return oktaUnderscore.isString(string) && int === parseInt(string, 10) ? int : string;\n },\n\n /**\n * Convert a string to an object if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an object\n * @return {String|object} Returns an object if the string can be casted, otherwise, returns the original string\n */\n parseObject: function (string) {\n if (!oktaUnderscore.isString(string)) {\n return string;\n }\n\n try {\n const object = JSON.parse(string);\n return oktaJQueryStatic.isPlainObject(object) ? object : string;\n } catch (e) {\n return string;\n }\n },\n\n /**\n * Returns a random string from [a-z][A-Z][0-9] of a given length\n * @static\n * @param {Number} length The length of the random string.\n * @return {String} Returns a random string from [a-z][A-Z][0-9] of a given length\n */\n randomString: function (length) {\n const characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n\n if (length === undefined) {\n length = oktaUnderscore.random(characters.length);\n } else if (length === 0) {\n return '';\n }\n\n const stringArray = [];\n\n while (length--) {\n stringArray.push(characters[oktaUnderscore.random(characters.length - 1)]);\n }\n\n return stringArray.join('');\n },\n\n /**\n * Returns if a str ends with another string\n * @static\n * @param {String} str The string to search\n * @param {String} ends The string it should end with\n *\n * @return {Boolean} Returns if the str ends with ends\n */\n endsWith: function (str, ends) {\n str += '';\n ends += '';\n return str.length >= ends.length && str.substring(str.length - ends.length) === ends;\n },\n\n /** @static */\n isEmail: function (str) {\n const target = oktaJQueryStatic.trim(str);\n return !oktaUnderscore.isEmpty(target) && emailValidator.test(target);\n }\n};\n\nexport { StringUtil as default };\n","import _Handlebars2 from '../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from './underscore-wrapper.js';\n\n/* eslint @okta/okta-ui/no-specific-methods: 0 */\n/**\n * @class module:Okta.internal.util.TemplateUtil\n * @hideconstructor\n */\n\nvar TemplateUtil = /** @lends module:Okta.internal.util.TemplateUtil */\n{\n /**\n * Compiles a Handlebars template\n * @static\n * @method\n */\n // TODO: This will be deprecated at some point. Views should use pre-compiled templates\n tpl: oktaUnderscore.memoize(function (tpl) {\n /* eslint @okta/okta-ui/no-specific-methods: 0 */\n return function (context) {\n return _Handlebars2.compile(tpl)(context);\n };\n })\n};\n\nexport { TemplateUtil as default };\n","var Time = {\n DEBOUNCE_DELAY: 200,\n LOADING_FADE: 400,\n UNLOADING_FADE: 400,\n ROW_EXPANDER_TRANSITION: 150,\n HIDE_ADD_MAPPING_FORM: 300\n};\n\nexport { Time as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport BaseView from '../views/BaseView.js';\n\nvar Util = {\n redirect: function (url) {\n window.location = url;\n },\n reloadPage: function () {\n window.location.reload();\n },\n constantError: function (errorMessage) {\n return function () {\n throw new Error(errorMessage);\n };\n },\n\n /**\n * Simply convert an URL query key value pair object into an URL query string.\n * Remember NOT to escape the query string when using this util.\n * example:\n * input: {userId: 123, instanceId: undefined, expand: 'schema,app'}\n * output: '?userId=123&expand=schema,app'\n */\n getUrlQueryString: function (queries) {\n oktaUnderscore.isObject(queries) || (queries = {});\n\n const queriesString = oktaUnderscore.without(oktaUnderscore.map(queries, function (value, key) {\n if (value !== undefined && value !== null) {\n return key + '=' + encodeURIComponent(value);\n }\n }), undefined).join('&');\n\n return oktaUnderscore.isEmpty(queriesString) ? '' : '?' + queriesString;\n },\n isABaseView: function (obj) {\n return obj instanceof BaseView || obj.prototype instanceof BaseView || obj === BaseView;\n },\n isSafari: function () {\n // All native, android and iOS chrome browsers has \"Safari\" in their userAgent string, so this regex should\n // evaluate to true for only Safari browser and not any chrome browsers.\n // https://stackoverflow.com/questions/7944460/detect-safari-browser\n // https://stackoverflow.com/questions/13807810/ios-chrome-detection/13808053#13808053\n return /^((?!chrome|android|crios).)*safari/i.test(navigator.userAgent);\n }\n};\n\nexport { Util as default };\n","import oktaUnderscore from './underscore-wrapper.js';\n\nfunction changeEventString(doWhen) {\n return 'change:' + oktaUnderscore.keys(doWhen).join(' change:');\n}\n\nfunction calcDoWhen(value, key) {\n const modelValue = this.model.get(key);\n\n if (oktaUnderscore.isFunction(value)) {\n return value.call(this, modelValue);\n } else {\n return value === modelValue;\n }\n}\n\nfunction _doWhen(view, doWhen, fn) {\n const toggle = oktaUnderscore.bind(fn, view, view, doWhen);\n\n view.render = oktaUnderscore.wrap(view.render, function (render) {\n const val = render.call(view);\n toggle({\n animate: false\n });\n return val;\n });\n view.listenTo(view.model, changeEventString(doWhen), function () {\n toggle({\n animate: true\n });\n });\n}\n\nvar ViewUtil = {\n applyDoWhen: function (view, doWhen, fn) {\n if (!(view.model && oktaUnderscore.isObject(doWhen) && oktaUnderscore.size(doWhen) && oktaUnderscore.isFunction(fn))) {\n return;\n }\n\n _doWhen(view, doWhen, function (view, doWhen, options) {\n const result = oktaUnderscore.every(oktaUnderscore.map(doWhen, calcDoWhen, view));\n\n fn.call(view, result, options);\n });\n }\n};\n\nexport { ViewUtil as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\n\nconst clonedEscapeExpression = _Handlebars2.Utils.escapeExpression;\n\n_Handlebars2.Utils.escapeExpression = function (string) {\n return clonedEscapeExpression(string).replace(/=/g, '=');\n};\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\n\n_Handlebars2.registerHelper('base64ToHex', function base64ToHex(base64String) {\n const raw = atob(base64String);\n let result = '';\n\n if (raw.length > 0) {\n const firstHex = raw.charCodeAt(0).toString(16);\n result += firstHex.length === 2 ? firstHex : `0${firstHex}`;\n\n for (let i = 1; i < raw.length; i += 1) {\n let hex = raw.charCodeAt(i).toString(16);\n hex = hex.length === 2 ? hex : `0${hex}`;\n result += ` ${hex}`;\n }\n }\n\n return result.toUpperCase();\n});\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../underscore-wrapper.js';\nimport Logger from '../Logger.js';\nimport StringUtil from '../StringUtil.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\nconst hbsEscape = _Handlebars2.Utils.escapeExpression;\n\nfunction trim(str) {\n return str && str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction replaceTagsWithPlaceholders(source, tag, tagValue) {\n const escapedBeginningTag = hbsEscape(`<${tag}>`);\n const escapedEndTag = hbsEscape(``);\n const [beginningTag, endTag] = tagValue.split(tag);\n\n if (!source.includes(escapedBeginningTag) && !source.includes(escapedEndTag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${source}\"`);\n } else if (!tagValue.includes(tag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${tagValue}\"`);\n } else if (!beginningTag || !endTag) {\n throw Error(`Template value \"${tagValue}\" must contain beginning and closing tags`);\n }\n\n return source.replace(escapedBeginningTag, beginningTag).replace(escapedEndTag, endTag);\n}\n/* eslint max-statements: [2, 18] */\n\n\n_Handlebars2.registerHelper('i18n', function i18n(options) {\n let params;\n const key = trim(options.hash.code);\n const bundle = trim(options.hash.bundle);\n const args = trim(options.hash.arguments);\n const tags = Object.keys(options.hash).filter(prop => prop.match(/^\\$\\d+/)).map(prop => ({\n tag: prop,\n value: options.hash[prop]\n }));\n\n if (args) {\n params = oktaUnderscore.map(trim(args).split(';'), function mapParam(param) {\n param = trim(param);\n let val;\n /*\n * the context(data) may be a deep object, ex {user: {name: 'John', gender: 'M'}}\n * arguments may be 'user.name'\n * return data['user']['name']\n */\n\n oktaUnderscore.each(param.split('.'), p => {\n val = val ? val[p] : this[p];\n });\n\n return val;\n }, this);\n }\n\n const localizedValue = StringUtil.localize(key, bundle, params);\n\n if (tags.length < 1) {\n // No HTML tags provided - return the localized and escaped string\n return localizedValue;\n }\n\n let escapedString = hbsEscape(localizedValue);\n\n try {\n tags.forEach(tag => {\n escapedString = replaceTagsWithPlaceholders(escapedString, tag.tag, tag.value);\n });\n return new _Handlebars2.SafeString(escapedString);\n } catch (err) {\n Logger.error(err.toString());\n return localizedValue;\n }\n});\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../underscore-wrapper.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\nconst CACHE_BUST_URL_PREFIX = '/assets';\n\nfunction prependCachebustPrefix(path) {\n if (path.indexOf(CACHE_BUST_URL_PREFIX) === 0) {\n return path;\n }\n\n return CACHE_BUST_URL_PREFIX + path;\n}\n\n_Handlebars2.registerHelper('img', function img(options) {\n const cdn = typeof okta !== 'undefined' && okta.cdnUrlHostname || '';\n\n const hash = oktaUnderscore.pick(options.hash, ['src', 'alt', 'width', 'height', 'class', 'title']);\n\n hash.src = `${cdn}${prependCachebustPrefix(hash.src)}`;\n\n const attrs = oktaUnderscore.map(hash, (value, attr) => {\n const encodedValue = attr === 'src' ? encodeURI(value) : _Handlebars2.Utils.escapeExpression(value);\n return `${attr}=\"${encodedValue}\"`;\n });\n\n return new _Handlebars2.SafeString(``);\n});\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport mdToHtml from '../markdownToHtml.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\n_Handlebars2.registerHelper('markdown', function markdown(mdText) {\n return mdToHtml(_Handlebars2, mdText);\n});\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../jquery-wrapper.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\n_Handlebars2.registerHelper('xsrfTokenInput', function xsrfTokenInput() {\n return new _Handlebars2.SafeString(``);\n});\n","import $ from 'jquery';\n\n/* eslint-disable @okta/okta-ui/enforce-requirejs-names, @okta/okta-ui/no-specific-modules */\n$.ajaxSetup({\n beforeSend: function (xhr) {\n xhr.setRequestHeader('X-Okta-XsrfToken', $('#_xsrfToken').text());\n },\n converters: {\n 'text secureJSON': function (str) {\n if (str.substring(0, 11) === 'while(1){};') {\n str = str.substring(11);\n }\n\n return JSON.parse(str);\n }\n }\n}); // Selenium Hook\n// Widget such as autocomplete and autosuggest needs to be triggered from the running version of jQuery.\n// We have 2 versions of jQuery running in parallel and they don't share the same events bus\n\nconst oktaJQueryStatic = $;\nwindow.jQueryCourage = oktaJQueryStatic;\n\nexport { oktaJQueryStatic as default };\n","import oktaUnderscore from './underscore-wrapper.js';\n\n// Simple \"markdown parser\" - just handles markdown formatted links. If we\nconst RE_LINK = /\\[[^\\]]*\\]\\([^)]*\\)/gi;\nconst RE_LINK_HREF = /\\]\\(([^)]*)\\)/i;\nconst RE_LINK_TEXT = /\\[([^\\]]*)\\]/i;\nconst RE_LINK_JS = /javascript:/gi; // Converts links\n// FROM:\n// [some link text](http://the/link/url)\n// TO:\n// some link text\n\nfunction mdToHtml(Handlebars, markdownText) {\n // TODO: use precompiled templates OKTA-309852\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n const linkTemplate = Handlebars.compile('{{text}}');\n /* eslint @okta/okta-ui/no-specific-methods: 0*/\n\n let res;\n\n if (!oktaUnderscore.isString(markdownText)) {\n res = '';\n } else {\n res = Handlebars.Utils.escapeExpression(markdownText).replace(RE_LINK_JS, '').replace(RE_LINK, function (mdLink) {\n return linkTemplate({\n href: mdLink.match(RE_LINK_HREF)[1],\n text: mdLink.match(RE_LINK_TEXT)[1]\n });\n });\n }\n\n return new Handlebars.SafeString(res);\n}\n\nexport { mdToHtml as default };\n","import _Handlebars2 from '../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport _ from '../../../lib/underscore/underscore-min.js';\n\n/* eslint @okta/okta-ui/no-specific-methods: 0, @okta/okta-ui/no-specific-modules: 0 */\n\n_.mixin({\n resultCtx: function (object, property, context, defaultValue) {\n let value = _.isObject(object) ? object[property] : void 0;\n\n if (_.isFunction(value)) {\n value = value.call(context || object);\n }\n\n if (value) {\n return value;\n } else {\n return !_.isUndefined(defaultValue) ? defaultValue : value;\n }\n },\n isInteger: function (x) {\n return _.isNumber(x) && x % 1 === 0;\n },\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function (source, data) {\n const template = _Handlebars2.compile(source);\n\n if (data) {\n return template(data);\n }\n\n const fn = function (data) {\n return template(data);\n };\n\n fn.source = ''; // to conform with \"CompiledTemplate\" type definition\n\n return fn;\n }\n});\n\nconst oktaUnderscore = _;\n\nexport { oktaUnderscore as default };\n","import { commonjsGlobal } from '../../../../_virtual/_commonjsHelpers.js';\nimport { b as backbone } from '../../../../_virtual/backbone.js';\nimport $ from 'jquery';\nimport '../../../../lib/underscore/underscore-min.js';\nimport { u as underscoreMin } from '../../../../_virtual/underscore-min.js';\n\n(function (module, exports) {\n// Backbone.js 1.4.0\n// (c) 2010-2019 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\nconst jQuery = $;\n(function (factory) {\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self || typeof commonjsGlobal == 'object' && commonjsGlobal.global === commonjsGlobal && commonjsGlobal; // Set up Backbone appropriately for the environment. Start with AMD.\n\n {\n var _ = underscoreMin.exports,\n $;\n\n try {\n $ = jQuery;\n } catch (e) {}\n\n factory(root, exports, _, $); // Finally, as a browser global.\n }\n})(function (root, Backbone, _, $) {\n // Initial Setup\n // -------------\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone; // Create a local reference to a common array method we'll want to use later.\n\n var slice = Array.prototype.slice; // Current version of the library. Keep in sync with `package.json`.\n\n Backbone.VERSION = '1.4.0'; // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n\n Backbone.$ = $; // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n\n Backbone.noConflict = function () {\n root.Backbone = previousBackbone;\n return this;\n }; // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n\n\n Backbone.emulateHTTP = false; // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n\n Backbone.emulateJSON = false; // Backbone.Events\n // ---------------\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n\n var Events = Backbone.Events = {}; // Regular expression used to split event strings.\n\n var eventSplitter = /\\s+/; // A private global variable to share between listeners and listenees.\n\n var _listening; // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n\n\n var eventsApi = function (iteratee, events, name, callback, opts) {\n var i = 0,\n names;\n\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n\n for (names = _.keys(name); i < names.length; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n\n return events;\n }; // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n\n\n Events.on = function (name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening; // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n\n _listening.interop = false;\n }\n\n return this;\n }; // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n\n\n Events.listenTo = function (obj, name, callback) {\n if (!obj) return this;\n\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id]; // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n } // Bind callbacks on obj.\n\n\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n if (error) throw error; // If the target obj is not Backbone.Events, track events manually.\n\n if (listening.interop) listening.on(name, callback);\n return this;\n }; // The reducing API that adds a callback to the `events` object.\n\n\n var onApi = function (events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context,\n ctx = options.ctx,\n listening = options.listening;\n if (listening) listening.count++;\n handlers.push({\n callback: callback,\n context: context,\n ctx: context || ctx,\n listening: listening\n });\n }\n\n return events;\n }; // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n\n\n var tryCatchOn = function (obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n }; // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n\n\n Events.off = function (name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n }; // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n\n\n Events.stopListening = function (obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]]; // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n\n if (!listening) break;\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n return this;\n }; // The reducing API that removes a callback from the `events` object.\n\n\n var offApi = function (events, name, callback, options) {\n if (!events) return;\n var context = options.context,\n listeners = options.listeners;\n var i = 0,\n names; // Delete all event listeners and \"drop\" events.\n\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n\n return;\n }\n\n names = name ? [name] : _.keys(events);\n\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name]; // Bail out if there are no events stored.\n\n if (!handlers) break; // Find any remaining events.\n\n var remaining = [];\n\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n\n if (callback && callback !== handler.callback && callback !== handler.callback._callback || context && context !== handler.context) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n } // Replace events if there are any remaining. Otherwise, clean up.\n\n\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n }; // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n\n\n Events.once = function (name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n }; // Inversion-of-control versions of `once`.\n\n\n Events.listenToOnce = function (obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n }; // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n\n\n var onceMap = function (map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function () {\n offer(name, once);\n callback.apply(this, arguments);\n });\n\n once._callback = callback;\n }\n\n return map;\n }; // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n\n\n Events.trigger = function (name) {\n if (!this._events) return this;\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n }; // Handles triggering the appropriate event callbacks.\n\n\n var triggerApi = function (objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n\n return objEvents;\n }; // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n\n\n var triggerEvents = function (events, args) {\n var ev,\n i = -1,\n l = events.length,\n a1 = args[0],\n a2 = args[1],\n a3 = args[2];\n\n switch (args.length) {\n case 0:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx);\n\n return;\n\n case 1:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1);\n\n return;\n\n case 2:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2);\n\n return;\n\n case 3:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3);\n\n return;\n\n default:\n while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);\n\n return;\n }\n }; // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n\n\n var Listening = function (listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on; // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n\n Listening.prototype.off = function (name, callback) {\n var cleanup;\n\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n\n if (cleanup) this.cleanup();\n }; // Cleans up memory bindings between the listener and the listenee.\n\n\n Listening.prototype.cleanup = function () {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n }; // Aliases for backwards compatibility.\n\n\n Events.bind = Events.on;\n Events.unbind = Events.off; // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n\n _.extend(Backbone, Events); // Backbone.Model\n // --------------\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n\n\n var Model = Backbone.Model = function (attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n\n var defaults = _.result(this, 'defaults');\n\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n }; // Attach all inheritable methods to the Model prototype.\n\n\n _.extend(Model.prototype, Events, {\n // A hash of attributes whose current and previous value differ.\n changed: null,\n // The value returned during the last failed validation.\n validationError: null,\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // Return a copy of the model's `attributes` object.\n toJSON: function (options) {\n return _.clone(this.attributes);\n },\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function () {\n return Backbone.sync.apply(this, arguments);\n },\n // Get the value of an attribute.\n get: function (attr) {\n return this.attributes[attr];\n },\n // Get the HTML-escaped value of an attribute.\n escape: function (attr) {\n return _.escape(this.get(attr));\n },\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function (attr) {\n return this.get(attr) != null;\n },\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function (attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function (key, val, options) {\n if (key == null) return this; // Handle both `\"key\", value` and `{key: value}` -style arguments.\n\n var attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {}); // Run validation.\n\n if (!this._validate(attrs, options)) return false; // Extract attributes and options.\n\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes; // For each `set` attribute, update or delete the current value.\n\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n\n unset ? delete current[attr] : current[attr] = val;\n } // Update the `id`.\n\n\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute); // Trigger all relevant attribute changes.\n\n if (!silent) {\n if (changes.length) this._pending = options;\n\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n } // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n\n\n if (changing) return this;\n\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n\n this._pending = false;\n this._changing = false;\n return this;\n },\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function (attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {\n unset: true\n }));\n },\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function (options) {\n var attrs = {};\n\n for (var key in this.attributes) attrs[key] = void 0;\n\n return this.set(attrs, _.extend({}, options, {\n unset: true\n }));\n },\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function (attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function (diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n\n return hasChanged ? changed : false;\n },\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function (attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function () {\n return _.clone(this._previousAttributes);\n },\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function (options) {\n options = _.extend({\n parse: true\n }, options);\n var model = this;\n var success = options.success;\n\n options.success = function (resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function (key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({\n validate: true,\n parse: true\n }, options);\n var wait = options.wait; // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n } // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n\n\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n\n options.success = function (resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n\n wrapError(this, options); // Set temporary attributes if `{wait: true}` to properly find new ids.\n\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options); // Restore attributes.\n\n this.attributes = attributes;\n return xhr;\n },\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function (options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function () {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function (resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n\n if (!wait) destroy();\n return xhr;\n },\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function () {\n var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function (resp, options) {\n return resp;\n },\n // Create a new model with identical attributes to this one.\n clone: function () {\n return new this.constructor(this.attributes);\n },\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function () {\n return !this.has(this.idAttribute);\n },\n // Check if the model is currently in a valid state.\n isValid: function (options) {\n return this._validate({}, _.extend({}, options, {\n validate: true\n }));\n },\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function (attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {\n validationError: error\n }));\n return false;\n }\n }); // Backbone.Collection\n // -------------------\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n\n\n var Collection = Backbone.Collection = function (models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n\n this._reset();\n\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({\n silent: true\n }, options));\n }; // Default options for `Collection#set`.\n\n\n var setOptions = {\n add: true,\n remove: true,\n merge: true\n };\n var addOptions = {\n add: true,\n remove: false\n }; // Splices `insert` into `array` at index `at`.\n\n var splice = function (array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n }; // Define the Collection's inheritable methods.\n\n\n _.extend(Collection.prototype, Events, {\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function (options) {\n return this.map(function (model) {\n return model.toJSON(options);\n });\n },\n // Proxy `Backbone.sync` by default.\n sync: function () {\n return Backbone.sync.apply(this, arguments);\n },\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function (models, options) {\n return this.set(models, _.extend({\n merge: false\n }, options, addOptions));\n },\n // Remove a model, or a list of models from the set.\n remove: function (models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var removed = this._removeModels(models, options);\n\n if (!options.silent && removed.length) {\n options.changes = {\n added: [],\n merged: [],\n removed: removed\n };\n this.trigger('update', this, options);\n }\n\n return singular ? removed[0] : removed;\n },\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function (models, options) {\n if (models == null) return;\n options = _.extend({}, setOptions, options);\n\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null; // Turn bare objects into model references, and prevent invalid models\n // from being added.\n\n var model, i;\n\n for (i = 0; i < models.length; i++) {\n model = models[i]; // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n\n var existing = this.get(model);\n\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n\n models[i] = existing; // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n\n if (model) {\n toAdd.push(model);\n\n this._addReference(model, options);\n\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n } // Remove stale models.\n\n\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n\n if (toRemove.length) this._removeModels(toRemove, options);\n } // See if sorting is needed, update `length` and splice in new models.\n\n\n var orderChanged = false;\n var replace = !sortable && add && remove;\n\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function (m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n } // Silently sort the collection if appropriate.\n\n\n if (sort) this.sort({\n silent: true\n }); // Unless silenced, it's time to fire all appropriate add/sort/update events.\n\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n\n if (sort || orderChanged) this.trigger('sort', this, options);\n\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n } // Return the added (or merged) model (or models).\n\n\n return singular ? models[0] : models;\n },\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function (models, options) {\n options = options ? _.clone(options) : {};\n\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n\n options.previousModels = this.models;\n\n this._reset();\n\n models = this.add(models, _.extend({\n silent: true\n }, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n // Add a model to the end of the collection.\n push: function (model, options) {\n return this.add(model, _.extend({\n at: this.length\n }, options));\n },\n // Remove a model from the end of the collection.\n pop: function (options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n // Add a model to the beginning of the collection.\n unshift: function (model, options) {\n return this.add(model, _.extend({\n at: 0\n }, options));\n },\n // Remove a model from the beginning of the collection.\n shift: function (options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n // Slice out a sub-array of models from the collection.\n slice: function () {\n return slice.apply(this.models, arguments);\n },\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function (obj) {\n if (obj == null) return void 0;\n return this._byId[obj] || this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] || obj.cid && this._byId[obj.cid];\n },\n // Returns `true` if the model is in the collection.\n has: function (obj) {\n return this.get(obj) != null;\n },\n // Get the model at the given index.\n at: function (index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function (attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function (attrs) {\n return this.where(attrs, true);\n },\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function (options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this); // Run sort based on type of `comparator`.\n\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n // Pluck an attribute from each model in the collection.\n pluck: function (attr) {\n return this.map(attr + '');\n },\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function (options) {\n options = _.extend({\n parse: true\n }, options);\n var success = options.success;\n var collection = this;\n\n options.success = function (resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function (model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n\n options.success = function (m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n\n model.save(null, options);\n return model;\n },\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function (resp, options) {\n return resp;\n },\n // Create a new collection with an identical list of models as this one.\n clone: function () {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n // Define how to uniquely identify models in the collection.\n modelId: function (attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n // Get an iterator of all models in this collection.\n values: function () {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n // Get an iterator of all model IDs in this collection.\n keys: function () {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function () {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function () {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function (attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n // Internal method called by both remove and set.\n _removeModels: function (models, options) {\n var removed = [];\n\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--; // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n\n this._removeReference(model, options);\n }\n\n return removed;\n },\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function (model) {\n return model instanceof Model;\n },\n // Internal method to create a model's ties to a collection.\n _addReference: function (model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n // Internal method to sever a model's ties to a collection.\n _removeReference: function (model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function (event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n\n this.trigger.apply(this, arguments);\n }\n }); // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n\n /* global Symbol */\n\n\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n } // CollectionIterator\n // ------------------\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n\n\n var CollectionIterator = function (collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n }; // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n\n\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3; // All Iterators should themselves be Iterable.\n\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function () {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function () {\n if (this._collection) {\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n\n this._index++; // Construct a value depending on what kind of values should be iterated.\n\n var value;\n\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes);\n\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else {\n // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n\n return {\n value: value,\n done: false\n };\n } // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n\n\n this._collection = void 0;\n }\n\n return {\n value: void 0,\n done: true\n };\n }; // Backbone.View\n // -------------\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n\n\n var View = Backbone.View = function (options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n\n _.extend(this, _.pick(options, viewOptions));\n\n this._ensureElement();\n\n this.initialize.apply(this, arguments);\n }; // Cached regex to split keys for `delegate`.\n\n\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/; // List of view options to be set as properties.\n\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; // Set up all inheritable **Backbone.View** properties and methods.\n\n _.extend(View.prototype, Events, {\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function (selector) {\n return this.$el.find(selector);\n },\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function () {\n return this;\n },\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function () {\n this._removeElement();\n\n this.stopListening();\n return this;\n },\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function () {\n this.$el.remove();\n },\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function (element) {\n this.undelegateEvents();\n\n this._setElement(element);\n\n this.delegateEvents();\n return this;\n },\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function (el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function (events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n\n return this;\n },\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function (eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function () {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function (eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function (tagName) {\n return document.createElement(tagName);\n },\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function (attributes) {\n this.$el.attr(attributes);\n }\n }); // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n\n\n var addMethod = function (base, length, method, attribute) {\n switch (length) {\n case 1:\n return function () {\n return base[method](this[attribute]);\n };\n\n case 2:\n return function (value) {\n return base[method](this[attribute], value);\n };\n\n case 3:\n return function (iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n\n case 4:\n return function (iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n\n default:\n return function () {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function (Class, base, methods, attribute) {\n _.each(methods, function (length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n }; // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n\n\n var cb = function (iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function (model) {\n return model.get(iteratee);\n };\n return iteratee;\n };\n\n var modelMatcher = function (attrs) {\n var matcher = _.matches(attrs);\n\n return function (model) {\n return matcher(model.attributes);\n };\n }; // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n\n\n var collectionMethods = {\n forEach: 3,\n each: 3,\n map: 3,\n collect: 3,\n reduce: 0,\n foldl: 0,\n inject: 0,\n reduceRight: 0,\n foldr: 0,\n find: 3,\n detect: 3,\n filter: 3,\n select: 3,\n reject: 3,\n every: 3,\n all: 3,\n some: 3,\n any: 3,\n include: 3,\n includes: 3,\n contains: 3,\n invoke: 0,\n max: 3,\n min: 3,\n toArray: 1,\n size: 1,\n first: 3,\n head: 3,\n take: 3,\n initial: 3,\n rest: 3,\n tail: 3,\n drop: 3,\n last: 3,\n without: 0,\n difference: 0,\n indexOf: 3,\n shuffle: 1,\n lastIndexOf: 3,\n isEmpty: 1,\n chain: 1,\n sample: 3,\n partition: 3,\n groupBy: 3,\n countBy: 3,\n sortBy: 3,\n indexBy: 3,\n findIndex: 3,\n findLastIndex: 3\n }; // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n\n var modelMethods = {\n keys: 1,\n values: 1,\n pairs: 1,\n invert: 1,\n pick: 0,\n omit: 0,\n chain: 1,\n isEmpty: 1\n }; // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([[Collection, collectionMethods, 'models'], [Model, modelMethods, 'attributes']], function (config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function (obj) {\n var mappings = _.reduce(_.functions(obj), function (memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n }); // Backbone.sync\n // -------------\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n\n\n Backbone.sync = function (method, model, options) {\n var type = methodMap[method]; // Default options, unless specified.\n\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n }); // Default JSON-request options.\n\n\n var params = {\n type: type,\n dataType: 'json'\n }; // Ensure that we have a URL.\n\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n } // Ensure that we have the appropriate request data.\n\n\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n } // For older servers, emulate JSON by encoding the request into an HTML-form.\n\n\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {\n model: params.data\n } : {};\n } // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n\n\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n\n options.beforeSend = function (xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n } // Don't process data on a non-GET request.\n\n\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n } // Pass along `textStatus` and `errorThrown` from jQuery.\n\n\n var error = options.error;\n\n options.error = function (xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n }; // Make the request, allowing the user to override any Ajax options.\n\n\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n }; // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n\n\n var methodMap = {\n create: 'POST',\n update: 'PUT',\n patch: 'PATCH',\n delete: 'DELETE',\n read: 'GET'\n }; // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n\n Backbone.ajax = function () {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n }; // Backbone.Router\n // ---------------\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n\n\n var Router = Backbone.Router = function (options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n\n this._bindRoutes();\n\n this.initialize.apply(this, arguments);\n }; // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n\n\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g; // Set up all inheritable **Backbone.Router** properties and methods.\n\n _.extend(Router.prototype, Events, {\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function (route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function (callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function (fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function () {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n\n var route,\n routes = _.keys(this.routes);\n\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n }).replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n }); // Backbone.History\n // ----------------\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n\n\n var History = Backbone.History = function () {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this); // Ensure that `History` can be used outside of the browser.\n\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n }; // Cached regex for stripping a leading hash/slash and trailing space.\n\n\n var routeStripper = /^[#\\/]|\\s+$/g; // Cached regex for stripping leading and trailing slashes.\n\n var rootStripper = /^\\/+|\\/+$/g; // Cached regex for stripping urls of hash.\n\n var pathStripper = /#.*$/; // Has the history handling already been started?\n\n History.started = false; // Set up all inheritable **Backbone.History** properties and methods.\n\n _.extend(History.prototype, Events, {\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n // Are we at the app root?\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n // Does the pathname match the root?\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n // Get the pathname and search params, without the root.\n getPath: function () {\n var path = this.decodeFragment(this.location.pathname + this.getSearch()).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n\n return fragment.replace(routeStripper, '');\n },\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function (options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true; // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n\n this.options = _.extend({\n root: '/'\n }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment(); // Normalize root to always include a leading and trailing slash.\n\n this.root = ('/' + this.root + '/').replace(rootStripper, '/'); // Transition from hashChange to pushState or vice versa if both are\n // requested.\n\n if (this._wantsHashChange && this._wantsPushState) {\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath()); // Return immediately as browser will do redirect to new url\n\n return true; // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {\n replace: true\n });\n }\n } // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n\n\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body; // Using `appendChild` will throw on IE < 9 if the document is not ready.\n\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n } // Add a cross-platform `addEventListener` shim for older browsers.\n\n\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n }; // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n\n\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function () {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n }; // Remove window listeners.\n\n\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n } // Clean up the iframe if necessary.\n\n\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n } // Some environments will throw when clearing an undefined interval.\n\n\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function (route, callback) {\n this.handlers.unshift({\n route: route,\n callback: callback\n });\n },\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function (e) {\n var current = this.getFragment(); // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function (fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function (fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {\n trigger: !!options\n }; // Normalize the fragment.\n\n fragment = this.getFragment(fragment || ''); // Don't include a trailing slash on the root.\n\n var rootPath = this.root;\n\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n\n var url = rootPath + fragment; // Strip the fragment of the query and hash for matching.\n\n fragment = fragment.replace(pathStripper, ''); // Decode for matching.\n\n var decodedFragment = this.decodeFragment(fragment);\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment; // If pushState is available, we use it to set the fragment as a real URL.\n\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url); // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow; // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n } // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n\n } else {\n return this.location.assign(url);\n }\n\n if (options.trigger) return this.loadUrl(fragment);\n },\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n }); // Create the default Backbone.history.\n\n\n Backbone.history = new History(); // Helpers\n // -------\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n\n var extend = function (protoProps, staticProps) {\n var parent = this;\n var child; // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function () {\n return parent.apply(this, arguments);\n };\n } // Add static properties to the constructor function, if supplied.\n\n\n _.extend(child, parent, staticProps); // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n\n\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is needed\n // later.\n\n child.__super__ = parent.prototype;\n return child;\n }; // Set up inheritance for the model, collection, router, view and history.\n\n\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend; // Throw an error when a URL is needed, and none is supplied.\n\n var urlError = function () {\n throw new Error('A \"url\" property or function must be specified');\n }; // Wrap an optional error callback with a fallback error event.\n\n\n var wrapError = function (model, options) {\n var error = options.error;\n\n options.error = function (resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n}(backbone, backbone.exports));\n\nvar Backbone = backbone.exports;\n\nexport { Backbone as default };\n","import { j as js_cookie } from '../../../../_virtual/js.cookie.js';\n\n/*!\n * JavaScript Cookie v2.1.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n\n(function (module, exports) {\n(function (factory) {\n {\n module.exports = factory();\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n\n return result;\n }\n\n function init(converter) {\n function api(key, value, attributes) {\n var result; // Write\n\n if (arguments.length > 1) {\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n try {\n result = JSON.stringify(value);\n\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n if (!converter.write) {\n value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n } else {\n value = converter.write(value, key);\n }\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n return document.cookie = [key, '=', value, attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n attributes.path && '; path=' + attributes.path, attributes.domain && '; domain=' + attributes.domain, attributes.secure ? '; secure' : ''].join('');\n } // Read\n\n\n if (!key) {\n result = {};\n } // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n\n\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var name = parts[0].replace(rdecode, decodeURIComponent);\n var cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);\n\n if (this.json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n api.get = api.set = api;\n\n api.getJSON = function () {\n return api.apply({\n json: true\n }, [].slice.call(arguments));\n };\n\n api.defaults = {};\n\n api.remove = function (key, attributes) {\n api(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n api.withConverter = init;\n return api;\n }\n\n return init(function () {});\n});\n}(js_cookie));\n\nvar Cookie = js_cookie.exports;\n\nexport { Cookie as default };\n","import $ from 'jquery';\n\n(function () {\n var SelectParser;\n\n SelectParser = function () {\n function SelectParser() {\n this.options_index = 0;\n this.parsed = [];\n }\n\n SelectParser.prototype.add_node = function (child) {\n if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n return this.add_group(child);\n } else {\n return this.add_option(child);\n }\n };\n\n SelectParser.prototype.add_group = function (group) {\n var group_position, option, _i, _len, _ref, _results;\n\n group_position = this.parsed.length;\n this.parsed.push({\n array_index: group_position,\n group: true,\n label: group.label,\n children: 0,\n disabled: group.disabled\n });\n _ref = group.childNodes;\n _results = [];\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n\n _results.push(this.add_option(option, group_position, group.disabled));\n }\n\n return _results;\n };\n\n SelectParser.prototype.add_option = function (option, group_position, group_disabled) {\n if (option.nodeName.toUpperCase() === \"OPTION\") {\n if (option.text !== \"\") {\n if (group_position != null) {\n this.parsed[group_position].children += 1;\n }\n\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n value: option.value,\n text: option.text,\n html: option.innerHTML,\n selected: option.selected,\n disabled: group_disabled === true ? group_disabled : option.disabled,\n group_array_index: group_position,\n classes: option.className,\n style: option.style.cssText\n });\n } else {\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n empty: true\n });\n }\n\n return this.options_index += 1;\n }\n };\n\n return SelectParser;\n }();\n\n SelectParser.select_to_array = function (select) {\n var child, parser, _i, _len, _ref;\n\n parser = new SelectParser();\n _ref = select.childNodes;\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n child = _ref[_i];\n parser.add_node(child);\n }\n\n return parser.parsed;\n };\n\n this.SelectParser = SelectParser;\n}).call($);\n(function () {\n var AbstractChosen, root;\n root = this;\n\n AbstractChosen = function () {\n function AbstractChosen(form_field, options) {\n this.form_field = form_field;\n this.options = options != null ? options : {};\n\n if (!AbstractChosen.browser_is_supported()) {\n return;\n }\n\n this.is_multiple = this.form_field.multiple;\n this.set_default_text();\n this.set_default_values();\n this.setup();\n this.set_up_html();\n this.register_observers();\n this.finish_setup();\n }\n\n AbstractChosen.prototype.set_default_values = function () {\n var _this = this;\n\n this.click_test_action = function (evt) {\n return _this.test_active_click(evt);\n };\n\n this.activate_action = function (evt) {\n return _this.activate_field(evt);\n };\n\n this.active_field = false;\n this.mouse_on_container = false;\n this.results_showing = false;\n this.result_highlighted = null;\n this.result_single_selected = null;\n this.allow_single_deselect = this.options.allow_single_deselect != null && this.form_field.options[0] != null && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n this.disable_search_threshold = this.options.disable_search_threshold || 0;\n this.disable_search = this.options.disable_search || false;\n this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n this.search_contains = this.options.search_contains || false;\n this.single_backstroke_delete = this.options.single_backstroke_delete || false;\n this.max_selected_options = this.options.max_selected_options || Infinity;\n return this.inherit_select_classes = this.options.inherit_select_classes || false;\n };\n\n AbstractChosen.prototype.set_default_text = function () {\n if (this.form_field.getAttribute(\"data-placeholder\")) {\n this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n } else if (this.is_multiple) {\n this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n } else {\n this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n }\n\n return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n };\n\n AbstractChosen.prototype.mouse_enter = function () {\n return this.mouse_on_container = true;\n };\n\n AbstractChosen.prototype.mouse_leave = function () {\n return this.mouse_on_container = false;\n };\n\n AbstractChosen.prototype.input_focus = function (evt) {\n var _this = this;\n\n if (this.is_multiple) {\n if (!this.active_field) {\n return setTimeout(function () {\n return _this.container_mousedown();\n }, 50);\n }\n } else {\n if (!this.active_field) {\n return this.activate_field();\n }\n }\n };\n\n AbstractChosen.prototype.input_blur = function (evt) {\n var _this = this;\n\n if (!this.mouse_on_container) {\n this.active_field = false;\n return setTimeout(function () {\n return _this.blur_test();\n }, 100);\n }\n };\n\n AbstractChosen.prototype.result_add_option = function (option) {\n var classes, style;\n option.dom_id = this.container_id + \"_o_\" + option.array_index;\n classes = [];\n\n if (!option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"active-result\");\n }\n\n if (option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"disabled-result\");\n }\n\n if (option.selected) {\n classes.push(\"result-selected\");\n }\n\n if (option.group_array_index != null) {\n classes.push(\"group-option\");\n }\n\n if (option.classes !== \"\") {\n classes.push(option.classes);\n }\n\n style = option.style.cssText !== \"\" && option.style !== \"\" ? \" style=\\\"\" + option.style + \"\\\"\" : \"\";\n return \"
  • \" + option.html + \"
  • \";\n };\n\n AbstractChosen.prototype.results_update_field = function () {\n this.set_default_text();\n\n if (!this.is_multiple) {\n this.results_reset_cleanup();\n }\n\n this.result_clear_highlight();\n this.result_single_selected = null;\n return this.results_build();\n };\n\n AbstractChosen.prototype.results_toggle = function () {\n if (this.results_showing) {\n return this.results_hide();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.results_search = function (evt) {\n if (this.results_showing) {\n return this.winnow_results();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.choices_count = function () {\n var option, _i, _len, _ref;\n\n if (this.selected_option_count != null) {\n return this.selected_option_count;\n }\n\n this.selected_option_count = 0;\n _ref = this.form_field.options;\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n\n if (option.selected) {\n this.selected_option_count += 1;\n }\n }\n\n return this.selected_option_count;\n };\n\n AbstractChosen.prototype.choices_click = function (evt) {\n evt.preventDefault();\n\n if (!(this.results_showing || this.is_disabled)) {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.keyup_checker = function (evt) {\n var stroke, _ref;\n\n stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;\n this.search_field_scale();\n\n switch (stroke) {\n case 8:\n if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {\n return this.keydown_backstroke();\n } else if (!this.pending_backstroke) {\n this.result_clear_highlight();\n return this.results_search();\n }\n\n break;\n\n case 13:\n evt.preventDefault();\n\n if (this.results_showing) {\n return this.result_select(evt);\n }\n\n break;\n\n case 27:\n if (this.results_showing) {\n this.results_hide();\n }\n\n return true;\n\n case 9:\n case 38:\n case 40:\n case 16:\n case 91:\n case 17:\n break;\n\n default:\n return this.results_search();\n }\n };\n\n AbstractChosen.prototype.generate_field_id = function () {\n var new_id;\n new_id = this.generate_random_id();\n this.form_field.id = new_id;\n return new_id;\n };\n\n AbstractChosen.prototype.generate_random_char = function () {\n var chars, rand;\n chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n rand = Math.floor(Math.random() * chars.length);\n return chars.substring(rand, rand + 1);\n };\n\n AbstractChosen.prototype.container_width = function () {\n if (this.options.width != null) {\n return this.options.width;\n } else {\n return \"\" + this.form_field.offsetWidth + \"px\";\n }\n };\n\n AbstractChosen.browser_is_supported = function () {\n var _ref;\n\n if (window.navigator.appName === \"Microsoft Internet Explorer\") {\n return null !== (_ref = document.documentMode) && _ref >= 8;\n }\n\n return true;\n };\n\n AbstractChosen.default_multiple_text = \"Select Some Options\";\n AbstractChosen.default_single_text = \"Select an Option\";\n AbstractChosen.default_no_result_text = \"No results match\";\n return AbstractChosen;\n }();\n\n root.AbstractChosen = AbstractChosen;\n}).call($);\n(function () {\n var $$1,\n Chosen,\n root,\n _ref,\n __hasProp = {}.hasOwnProperty,\n __extends = function (child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n root = this;\n var AbstractChosen = root.AbstractChosen;\n $$1 = $;\n $$1.fn.extend({\n chosen: function (options) {\n if (!AbstractChosen.browser_is_supported()) {\n return this;\n }\n\n return this.each(function (input_field) {\n var $this;\n $this = $$1(this);\n\n if (!$this.hasClass(\"chzn-done\")) {\n return $this.data(\"chosen\", new Chosen(this, options));\n }\n });\n }\n });\n\n Chosen = function (_super) {\n __extends(Chosen, _super);\n\n function Chosen() {\n _ref = Chosen.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n Chosen.prototype.setup = function () {\n this.form_field_jq = $$1(this.form_field);\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.is_rtl = this.form_field_jq.hasClass(\"chzn-rtl\");\n };\n\n Chosen.prototype.finish_setup = function () {\n return this.form_field_jq.addClass(\"chzn-done\");\n };\n\n Chosen.prototype.set_up_html = function () {\n var container_classes, container_props;\n this.container_id = this.form_field.id.length ? this.form_field.id.replace(/[^\\w]/g, \"_\") : this.generate_field_id();\n this.container_id += \"_chzn\";\n container_classes = [\"chzn-container\"];\n container_classes.push(\"chzn-container-\" + (this.is_multiple ? \"multi\" : \"single\"));\n\n if (this.inherit_select_classes && this.form_field.className) {\n container_classes.push(this.form_field.className);\n }\n\n if (this.is_rtl) {\n container_classes.push(\"chzn-rtl\");\n }\n\n container_props = {\n \"id\": this.container_id,\n \"class\": container_classes.join(\" \"),\n \"style\": \"width: \" + this.container_width() + \";\",\n \"title\": this.form_field.title\n };\n this.container = $$1(\"
    \", container_props);\n\n if (this.is_multiple) {\n this.container.html(\"
      \");\n } else {\n this.container.html(\"\" + this.default_text + \"
        \");\n }\n\n this.form_field_jq.hide().after(this.container);\n this.dropdown = this.container.find(\"div.chzn-drop\").first();\n this.search_field = this.container.find(\"input\").first();\n this.search_results = this.container.find(\"ul.chzn-results\").first();\n this.search_field_scale();\n this.search_no_results = this.container.find(\"li.no-results\").first();\n\n if (this.is_multiple) {\n this.search_choices = this.container.find(\"ul.chzn-choices\").first();\n this.search_container = this.container.find(\"li.search-field\").first();\n } else {\n this.search_container = this.container.find(\"div.chzn-search\").first();\n this.selected_item = this.container.find(\".chzn-single\").first();\n }\n\n this.results_build();\n this.set_tab_index();\n this.set_label_behavior();\n return this.form_field_jq.trigger(\"liszt:ready\", {\n chosen: this\n });\n };\n\n Chosen.prototype.register_observers = function () {\n var _this = this;\n\n this.container.mousedown(function (evt) {\n _this.container_mousedown(evt);\n });\n this.container.mouseup(function (evt) {\n _this.container_mouseup(evt);\n });\n this.container.mouseenter(function (evt) {\n _this.mouse_enter(evt);\n });\n this.container.mouseleave(function (evt) {\n _this.mouse_leave(evt);\n });\n this.search_results.mouseup(function (evt) {\n _this.search_results_mouseup(evt);\n });\n this.search_results.mouseover(function (evt) {\n _this.search_results_mouseover(evt);\n });\n this.search_results.mouseout(function (evt) {\n _this.search_results_mouseout(evt);\n });\n this.search_results.bind(\"mousewheel DOMMouseScroll\", function (evt) {\n _this.search_results_mousewheel(evt);\n });\n this.form_field_jq.bind(\"liszt:updated\", function (evt) {\n _this.results_update_field(evt);\n });\n this.form_field_jq.bind(\"liszt:activate\", function (evt) {\n _this.activate_field(evt);\n });\n this.form_field_jq.bind(\"liszt:open\", function (evt) {\n _this.container_mousedown(evt);\n });\n this.search_field.blur(function (evt) {\n _this.input_blur(evt);\n });\n this.search_field.keyup(function (evt) {\n _this.keyup_checker(evt);\n });\n this.search_field.keydown(function (evt) {\n _this.keydown_checker(evt);\n });\n this.search_field.focus(function (evt) {\n _this.input_focus(evt);\n });\n\n if (this.is_multiple) {\n return this.search_choices.click(function (evt) {\n _this.choices_click(evt);\n });\n } else {\n return this.container.click(function (evt) {\n evt.preventDefault();\n });\n }\n };\n\n Chosen.prototype.search_field_disabled = function () {\n this.is_disabled = this.form_field_jq[0].disabled;\n\n if (this.is_disabled) {\n this.container.addClass(\"chzn-disabled\");\n this.search_field[0].disabled = true;\n\n if (!this.is_multiple) {\n this.selected_item.unbind(\"focus\", this.activate_action);\n }\n\n return this.close_field();\n } else {\n this.container.removeClass(\"chzn-disabled\");\n this.search_field[0].disabled = false;\n\n if (!this.is_multiple) {\n return this.selected_item.bind(\"focus\", this.activate_action);\n }\n }\n };\n\n Chosen.prototype.container_mousedown = function (evt) {\n if (!this.is_disabled) {\n if (evt && evt.type === \"mousedown\" && !this.results_showing) {\n evt.preventDefault();\n }\n\n if (!(evt != null && $$1(evt.target).hasClass(\"search-choice-close\"))) {\n if (!this.active_field) {\n if (this.is_multiple) {\n this.search_field.val(\"\");\n }\n\n $$1(document).click(this.click_test_action);\n this.results_show();\n } else if (!this.is_multiple && evt && ($$1(evt.target)[0] === this.selected_item[0] || $$1(evt.target).parents(\"a.chzn-single\").length)) {\n evt.preventDefault();\n this.results_toggle();\n }\n\n return this.activate_field();\n }\n }\n };\n\n Chosen.prototype.container_mouseup = function (evt) {\n if (evt.target.nodeName === \"ABBR\" && !this.is_disabled) {\n return this.results_reset(evt);\n }\n };\n\n Chosen.prototype.search_results_mousewheel = function (evt) {\n var delta, _ref1, _ref2;\n\n delta = -((_ref1 = evt.originalEvent) != null ? _ref1.wheelDelta : void 0) || ((_ref2 = evt.originialEvent) != null ? _ref2.detail : void 0);\n\n if (delta != null) {\n evt.preventDefault();\n\n if (evt.type === \"DOMMouseScroll\") {\n delta = delta * 40;\n }\n\n return this.search_results.scrollTop(delta + this.search_results.scrollTop());\n }\n };\n\n Chosen.prototype.blur_test = function (evt) {\n if (!this.active_field && this.container.hasClass(\"chzn-container-active\")) {\n return this.close_field();\n }\n };\n\n Chosen.prototype.close_field = function () {\n $$1(document).unbind(\"click\", this.click_test_action);\n this.active_field = false;\n this.results_hide();\n this.container.removeClass(\"chzn-container-active\");\n this.clear_backstroke();\n this.show_search_field_default();\n return this.search_field_scale();\n };\n\n Chosen.prototype.activate_field = function () {\n this.container.addClass(\"chzn-container-active\");\n this.active_field = true;\n this.search_field.val(this.search_field.val());\n return this.search_field.focus();\n };\n\n Chosen.prototype.test_active_click = function (evt) {\n if ($$1(evt.target).parents(\"#\" + this.container_id).length) {\n return this.active_field = true;\n } else {\n return this.close_field();\n }\n };\n\n Chosen.prototype.results_build = function () {\n var content, data, _i, _len, _ref1;\n\n this.parsing = true;\n this.selected_option_count = null;\n this.results_data = root.SelectParser.select_to_array(this.form_field);\n\n if (this.is_multiple) {\n this.search_choices.find(\"li.search-choice\").remove();\n } else if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\").find(\"span\").text(this.default_text);\n\n if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {\n this.search_field[0].readOnly = true;\n this.container.addClass(\"chzn-container-single-nosearch\");\n } else {\n this.search_field[0].readOnly = false;\n this.container.removeClass(\"chzn-container-single-nosearch\");\n }\n }\n\n content = \"\";\n _ref1 = this.results_data;\n\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n data = _ref1[_i];\n\n if (data.group) {\n content += this.result_add_group(data);\n } else if (!data.empty) {\n content += this.result_add_option(data);\n\n if (data.selected && this.is_multiple) {\n this.choice_build(data);\n } else if (data.selected && !this.is_multiple) {\n this.selected_item.removeClass(\"chzn-default\").find(\"span\").text(data.text);\n\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n }\n }\n\n this.search_field_disabled();\n this.show_search_field_default();\n this.search_field_scale();\n this.search_results.html(content);\n return this.parsing = false;\n };\n\n Chosen.prototype.result_add_group = function (group) {\n group.dom_id = this.container_id + \"_g_\" + group.array_index;\n return \"
      • \" + $$1(\"
        \").text(group.label).html() + \"
      • \";\n };\n\n Chosen.prototype.result_do_highlight = function (el) {\n var high_bottom, high_top, maxHeight, visible_bottom, visible_top;\n\n if (el.length) {\n this.result_clear_highlight();\n this.result_highlight = el;\n this.result_highlight.addClass(\"highlighted\");\n maxHeight = parseInt(this.search_results.css(\"maxHeight\"), 10);\n visible_top = this.search_results.scrollTop();\n visible_bottom = maxHeight + visible_top;\n high_top = this.result_highlight.position().top + this.search_results.scrollTop();\n high_bottom = high_top + this.result_highlight.outerHeight();\n\n if (high_bottom >= visible_bottom) {\n return this.search_results.scrollTop(high_bottom - maxHeight > 0 ? high_bottom - maxHeight : 0);\n } else if (high_top < visible_top) {\n return this.search_results.scrollTop(high_top);\n }\n }\n };\n\n Chosen.prototype.result_clear_highlight = function () {\n if (this.result_highlight) {\n this.result_highlight.removeClass(\"highlighted\");\n }\n\n return this.result_highlight = null;\n };\n\n Chosen.prototype.results_show = function () {\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n\n this.container.addClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:showing_dropdown\", {\n chosen: this\n });\n this.results_showing = true;\n this.search_field.focus();\n this.search_field.val(this.search_field.val());\n return this.winnow_results();\n };\n\n Chosen.prototype.results_hide = function () {\n if (this.results_showing) {\n this.result_clear_highlight();\n this.container.removeClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:hiding_dropdown\", {\n chosen: this\n });\n }\n\n return this.results_showing = false;\n };\n\n Chosen.prototype.set_tab_index = function (el) {\n var ti;\n\n if (this.form_field_jq.attr(\"tabindex\")) {\n ti = this.form_field_jq.attr(\"tabindex\");\n this.form_field_jq.attr(\"tabindex\", -1);\n return this.search_field.attr(\"tabindex\", ti);\n }\n };\n\n Chosen.prototype.set_label_behavior = function () {\n var _this = this;\n\n this.form_field_label = this.form_field_jq.parents(\"label\");\n\n if (!this.form_field_label.length && this.form_field.id.length) {\n this.form_field_label = $$1(\"label[for='\" + this.form_field.id + \"']\");\n }\n\n if (this.form_field_label.length > 0) {\n return this.form_field_label.click(function (evt) {\n if (_this.is_multiple) {\n return _this.container_mousedown(evt);\n } else {\n return _this.activate_field();\n }\n });\n }\n };\n\n Chosen.prototype.show_search_field_default = function () {\n if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {\n this.search_field.val(this.default_text);\n return this.search_field.addClass(\"default\");\n } else {\n this.search_field.val(\"\");\n return this.search_field.removeClass(\"default\");\n }\n };\n\n Chosen.prototype.search_results_mouseup = function (evt) {\n var target;\n target = $$1(evt.target).hasClass(\"active-result\") ? $$1(evt.target) : $$1(evt.target).parents(\".active-result\").first();\n\n if (target.length) {\n this.result_highlight = target;\n this.result_select(evt);\n return this.search_field.focus();\n }\n };\n\n Chosen.prototype.search_results_mouseover = function (evt) {\n var target;\n target = $$1(evt.target).hasClass(\"active-result\") ? $$1(evt.target) : $$1(evt.target).parents(\".active-result\").first();\n\n if (target) {\n return this.result_do_highlight(target);\n }\n };\n\n Chosen.prototype.search_results_mouseout = function (evt) {\n if ($$1(evt.target).hasClass(\"active-result\" )) {\n return this.result_clear_highlight();\n }\n };\n\n Chosen.prototype.choice_build = function (item) {\n var choice,\n close_link,\n _this = this;\n\n choice = $$1(\"
      • \", {\n \"class\": \"search-choice\"\n }).html(\"\" + item.html + \"\");\n\n if (item.disabled) {\n choice.addClass(\"search-choice-disabled\");\n } else {\n close_link = $$1(\"\", {\n href: \"#\",\n \"class\": \"search-choice-close\",\n rel: item.array_index\n });\n close_link.click(function (evt) {\n return _this.choice_destroy_link_click(evt);\n });\n choice.append(close_link);\n }\n\n return this.search_container.before(choice);\n };\n\n Chosen.prototype.choice_destroy_link_click = function (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (!this.is_disabled) {\n return this.choice_destroy($$1(evt.target));\n }\n };\n\n Chosen.prototype.choice_destroy = function (link) {\n if (this.result_deselect(link.attr(\"rel\"))) {\n this.show_search_field_default();\n\n if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {\n this.results_hide();\n }\n\n link.parents(\"li\").first().remove();\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.results_reset = function () {\n this.form_field.options[0].selected = true;\n this.selected_option_count = null;\n this.selected_item.find(\"span\").text(this.default_text);\n\n if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\");\n }\n\n this.show_search_field_default();\n this.results_reset_cleanup();\n this.form_field_jq.trigger(\"change\");\n\n if (this.active_field) {\n return this.results_hide();\n }\n };\n\n Chosen.prototype.results_reset_cleanup = function () {\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.selected_item.find(\"abbr\").remove();\n };\n\n Chosen.prototype.result_select = function (evt) {\n var high, high_id, item, position;\n\n if (this.result_highlight) {\n high = this.result_highlight;\n high_id = high.attr(\"id\");\n this.result_clear_highlight();\n\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n\n if (this.is_multiple) {\n high.removeClass(\"active-result\");\n } else {\n this.search_results.find(\".result-selected\").removeClass(\"result-selected\");\n this.result_single_selected = high;\n this.selected_item.removeClass(\"chzn-default\");\n }\n\n high.addClass(\"result-selected\");\n position = high_id.substr(high_id.lastIndexOf(\"_\") + 1);\n item = this.results_data[position];\n item.selected = true;\n this.form_field.options[item.options_index].selected = true;\n this.selected_option_count = null;\n\n if (this.is_multiple) {\n this.choice_build(item);\n } else {\n this.selected_item.find(\"span\").first().text(item.text);\n\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n\n if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {\n this.results_hide();\n }\n\n this.search_field.val(\"\");\n\n if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {\n this.form_field_jq.trigger(\"change\", {\n \"selected\": this.form_field.options[item.options_index].value\n });\n }\n\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.result_activate = function (el, option) {\n if (option.disabled) {\n return el.addClass(\"disabled-result\");\n } else if (this.is_multiple && option.selected) {\n return el.addClass(\"result-selected\");\n } else {\n return el.addClass(\"active-result\");\n }\n };\n\n Chosen.prototype.result_deactivate = function (el) {\n return el.removeClass(\"active-result result-selected disabled-result\");\n };\n\n Chosen.prototype.result_deselect = function (pos) {\n var result, result_data;\n result_data = this.results_data[pos];\n\n if (!this.form_field.options[result_data.options_index].disabled) {\n result_data.selected = false;\n this.form_field.options[result_data.options_index].selected = false;\n this.selected_option_count = null;\n result = $$1(\"#\" + this.container_id + \"_o_\" + pos);\n result.removeClass(\"result-selected\").addClass(\"active-result\").show();\n this.result_clear_highlight();\n this.winnow_results();\n this.form_field_jq.trigger(\"change\", {\n deselected: this.form_field.options[result_data.options_index].value\n });\n this.search_field_scale();\n return true;\n } else {\n return false;\n }\n };\n\n Chosen.prototype.single_deselect_control_build = function () {\n if (!this.allow_single_deselect) {\n return;\n }\n\n if (!this.selected_item.find(\"abbr\").length) {\n this.selected_item.find(\"span\").first().after(\"\");\n }\n\n return this.selected_item.addClass(\"chzn-single-with-deselect\");\n };\n\n Chosen.prototype.winnow_results = function () {\n var found, option, part, parts, regex, regexAnchor, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len1, _ref1;\n\n this.no_results_clear();\n results = 0;\n searchText = this.search_field.val() === this.default_text ? \"\" : $$1(\"
        \").text($$1.trim(this.search_field.val())).html();\n regexAnchor = this.search_contains ? \"\" : \"^\";\n regex = new RegExp(regexAnchor + searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), \"i\");\n zregex = new RegExp(searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), \"i\");\n _ref1 = this.results_data;\n\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n option = _ref1[_i];\n\n if (!option.empty) {\n if (option.group) {\n $$1(\"#\" + option.dom_id).css(\"display\", \"none\");\n } else {\n found = false;\n result_id = option.dom_id;\n result = $$1(\"#\" + result_id);\n\n if (regex.test(option.html)) {\n found = true;\n results += 1;\n } else if (this.enable_split_word_search && (option.html.indexOf(\" \") >= 0 || option.html.indexOf(\"[\") === 0)) {\n parts = option.html.replace(/\\[|\\]/g, \"\").split(\" \");\n\n if (parts.length) {\n for (_j = 0, _len1 = parts.length; _j < _len1; _j++) {\n part = parts[_j];\n\n if (regex.test(part)) {\n found = true;\n results += 1;\n }\n }\n }\n }\n\n if (found) {\n if (searchText.length) {\n startpos = option.html.search(zregex);\n text = option.html.substr(0, startpos + searchText.length) + \"\" + option.html.substr(startpos + searchText.length);\n text = text.substr(0, startpos) + \"\" + text.substr(startpos);\n } else {\n text = option.html;\n }\n\n result.html(text);\n this.result_activate(result, option);\n\n if (option.group_array_index != null) {\n $$1(\"#\" + this.results_data[option.group_array_index].dom_id).css(\"display\", \"list-item\");\n }\n } else {\n if (this.result_highlight && result_id === this.result_highlight.attr(\"id\")) {\n this.result_clear_highlight();\n }\n\n this.result_deactivate(result);\n }\n }\n }\n }\n\n if (results < 1 && searchText.length) {\n return this.no_results(searchText);\n } else {\n return this.winnow_results_set_highlight();\n }\n };\n\n Chosen.prototype.winnow_results_set_highlight = function () {\n var do_high, selected_results;\n\n if (!this.result_highlight) {\n selected_results = !this.is_multiple ? this.search_results.find(\".result-selected.active-result\") : [];\n do_high = selected_results.length ? selected_results.first() : this.search_results.find(\".active-result\").first();\n\n if (do_high != null) {\n return this.result_do_highlight(do_high);\n }\n }\n };\n\n Chosen.prototype.no_results = function (terms) {\n var no_results_html;\n no_results_html = $$1(\"
      • \" + this.results_none_found + \" \\\"\\\"
      • \");\n no_results_html.find(\"span\").first().html(terms);\n return this.search_results.append(no_results_html);\n };\n\n Chosen.prototype.no_results_clear = function () {\n return this.search_results.find(\".no-results\").remove();\n };\n\n Chosen.prototype.keydown_arrow = function () {\n var next_sib;\n\n if (this.results_showing && this.result_highlight) {\n next_sib = this.result_highlight.nextAll(\"li.active-result\").first();\n\n if (next_sib) {\n return this.result_do_highlight(next_sib);\n }\n } else {\n return this.results_show();\n }\n };\n\n Chosen.prototype.keyup_arrow = function () {\n var prev_sibs;\n\n if (!this.results_showing && !this.is_multiple) {\n return this.results_show();\n } else if (this.result_highlight) {\n prev_sibs = this.result_highlight.prevAll(\"li.active-result\");\n\n if (prev_sibs.length) {\n return this.result_do_highlight(prev_sibs.first());\n } else {\n if (this.choices_count() > 0) {\n this.results_hide();\n }\n\n return this.result_clear_highlight();\n }\n }\n };\n\n Chosen.prototype.keydown_backstroke = function () {\n var next_available_destroy;\n\n if (this.pending_backstroke) {\n this.choice_destroy(this.pending_backstroke.find(\"a\").first());\n return this.clear_backstroke();\n } else {\n next_available_destroy = this.search_container.siblings(\"li.search-choice\").last();\n\n if (next_available_destroy.length && !next_available_destroy.hasClass(\"search-choice-disabled\")) {\n this.pending_backstroke = next_available_destroy;\n\n if (this.single_backstroke_delete) {\n return this.keydown_backstroke();\n } else {\n return this.pending_backstroke.addClass(\"search-choice-focus\");\n }\n }\n }\n };\n\n Chosen.prototype.clear_backstroke = function () {\n if (this.pending_backstroke) {\n this.pending_backstroke.removeClass(\"search-choice-focus\");\n }\n\n return this.pending_backstroke = null;\n };\n\n Chosen.prototype.keydown_checker = function (evt) {\n var stroke, _ref1;\n\n stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;\n this.search_field_scale();\n\n if (stroke !== 8 && this.pending_backstroke) {\n this.clear_backstroke();\n }\n\n switch (stroke) {\n case 8:\n this.backstroke_length = this.search_field.val().length;\n break;\n\n case 9:\n if (this.results_showing && !this.is_multiple) {\n this.result_select(evt);\n }\n\n this.mouse_on_container = false;\n break;\n\n case 13:\n evt.preventDefault();\n break;\n\n case 38:\n evt.preventDefault();\n this.keyup_arrow();\n break;\n\n case 40:\n evt.preventDefault();\n this.keydown_arrow();\n break;\n }\n };\n\n Chosen.prototype.search_field_scale = function () {\n var div, style, style_block, styles, w, _i, _len;\n\n if (this.is_multiple) {\n w = 0;\n style_block = \"position:absolute; left: -1000px; top: -1000px; display:none;\";\n styles = [\"font-size\", \"font-style\", \"font-weight\", \"font-family\", \"line-height\", \"text-transform\", \"letter-spacing\"];\n\n for (_i = 0, _len = styles.length; _i < _len; _i++) {\n style = styles[_i];\n style_block += style + \":\" + this.search_field.css(style) + \";\";\n }\n\n div = $$1(\"
        \", {\n \"style\": style_block\n });\n div.text(this.search_field.val());\n $$1(\"body\").append(div);\n w = div.width() + 25;\n div.remove();\n\n if (!this.f_width) {\n this.f_width = this.container.outerWidth();\n }\n\n if (w > this.f_width - 10) {\n w = this.f_width - 10;\n }\n\n return this.search_field.css({\n \"width\": w + \"px\"\n });\n }\n };\n\n Chosen.prototype.generate_random_id = function () {\n var string;\n string = \"sel\" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char();\n\n while ($$1(\"#\" + string).length > 0) {\n string += this.generate_random_char();\n }\n\n return string;\n };\n\n return Chosen;\n }(AbstractChosen);\n\n root.Chosen = Chosen;\n}).call($);\n","import $ from 'jquery';\n\n/**\n * There are following local modifications:\n * - Author: Uzi Kilon ukilon@okta.com\n * Bug: OKTA-20830 - solves the conflict when there are multiple labels\n */\n\n/**\n * --------------------------------------------------------------------\n * jQuery customInput plugin\n * Author: Maggie Costello Wachs maggie@filamentgroup.com, Scott Jehl, scott@filamentgroup.com\n * Copyright (c) 2009 Filament Group\n * licensed under MIT (filamentgroup.com/examples/mit-license.txt)\n * --------------------------------------------------------------------\n*/\n(function () {\n var jQuery = $;\n\n var $$1 = jQuery;\n\n jQuery.fn.customInput = function () {\n return $$1(this).each(function () {\n if ($$1(this).is('[type=checkbox],[type=radio]')) {\n var input = $$1(this); // get the associated label using the input's id\n\n var label = input.siblings('label[for=\"' + input.attr('id') + '\"]:first');\n\n if (!label.length) {\n label = input.closest('label[for=\"' + input.attr('id') + '\"]:first');\n } // wrap the input + label in a div\n\n\n input.add(label).wrapAll('
        '); // necessary for browsers that don't support the :hover pseudo class on labels\n\n label.hover(function () {\n $$1(this).addClass('hover');\n }, function () {\n $$1(this).removeClass('hover');\n }); //bind custom event, trigger it, bind click,focus,blur events\n\n input.bind('updateState', function () {\n input.is(':checked') ? label.addClass('checked') : label.removeClass('checked checkedHover checkedFocus');\n }).trigger('updateState').click(function () {\n $$1('input[name=\"' + $$1(this).attr('name') + '\"]').trigger('updateState');\n }).focus(function () {\n label.addClass('focus');\n\n if (input.is(':checked')) {\n $$1(this).addClass('checkedFocus');\n }\n }).blur(function () {\n label.removeClass('focus checkedFocus');\n });\n }\n });\n };\n})();\n","import $ from 'jquery';\n\n/*! http://mths.be/placeholder v2.0.7 by @mathias */\n\n(function () {\n var $$1 = $;\n\n var isInputSupported = ('placeholder' in document.createElement('input')),\n isTextareaSupported = ('placeholder' in document.createElement('textarea')),\n prototype = $$1.fn,\n valHooks = $$1.valHooks,\n hooks,\n placeholder;\n\n if (isInputSupported && isTextareaSupported) {\n placeholder = prototype.placeholder = function () {\n return this;\n };\n\n placeholder.input = placeholder.textarea = true;\n } else {\n placeholder = prototype.placeholder = function () {\n var $this = this;\n $this.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]').not('.placeholder').bind({\n 'focus.placeholder': clearPlaceholder,\n 'blur.placeholder': setPlaceholder\n }).data('placeholder-enabled', true).trigger('blur.placeholder');\n return $this;\n };\n\n placeholder.input = isInputSupported;\n placeholder.textarea = isTextareaSupported;\n hooks = {\n 'get': function (element) {\n var $element = $$1(element);\n return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;\n },\n 'set': function (element, value) {\n var $element = $$1(element);\n\n if (!$element.data('placeholder-enabled')) {\n return element.value = value;\n }\n\n if (value == '') {\n element.value = value; // Issue #56: Setting the placeholder causes problems if the element continues to have focus.\n\n if (element != document.activeElement) {\n // We can't use `triggerHandler` here because of dummy text/password inputs :(\n setPlaceholder.call(element);\n }\n } else if ($element.hasClass('placeholder')) {\n clearPlaceholder.call(element, true, value) || (element.value = value);\n } else {\n element.value = value;\n } // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363\n\n\n return $element;\n }\n };\n isInputSupported || (valHooks.input = hooks);\n isTextareaSupported || (valHooks.textarea = hooks);\n $$1(function () {\n // Look for forms\n $$1(document).delegate('form', 'submit.placeholder', function () {\n // Clear the placeholder values so they don't get submitted\n var $inputs = $$1('.placeholder', this).each(clearPlaceholder);\n setTimeout(function () {\n $inputs.each(setPlaceholder);\n }, 10);\n });\n }); // Clear placeholder values upon page reload\n\n $$1(window).bind('beforeunload.placeholder', function () {\n $$1('.placeholder').each(function () {\n this.value = '';\n });\n });\n }\n\n function args(elem) {\n // Return an object of element attributes\n var newAttrs = {},\n rinlinejQuery = /^jQuery\\d+$/;\n $$1.each(elem.attributes, function (i, attr) {\n if (attr.specified && !rinlinejQuery.test(attr.name)) {\n newAttrs[attr.name] = attr.value;\n }\n });\n return newAttrs;\n }\n\n function clearPlaceholder(event, value) {\n var input = this,\n $input = $$1(input);\n\n if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {\n if ($input.data('placeholder-password')) {\n $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); // If `clearPlaceholder` was called from `$.valHooks.input.set`\n\n if (event === true) {\n return $input[0].value = value;\n }\n\n $input.focus();\n } else {\n input.value = '';\n $input.removeClass('placeholder');\n input == document.activeElement && input.select();\n }\n }\n }\n\n function setPlaceholder() {\n var $replacement,\n input = this,\n $input = $$1(input),\n id = this.id;\n\n if (input.value == '') {\n if (input.type == 'password') {\n if (!$input.data('placeholder-textinput')) {\n try {\n $replacement = $input.clone().attr({\n 'type': 'text'\n });\n } catch (e) {\n $replacement = $$1('').attr($$1.extend(args(this), {\n 'type': 'text'\n }));\n }\n\n $replacement.removeAttr('name').data({\n 'placeholder-password': true,\n 'placeholder-id': id\n }).bind('focus.placeholder', clearPlaceholder);\n $input.data({\n 'placeholder-textinput': $replacement,\n 'placeholder-id': id\n }).before($replacement);\n }\n\n $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); // Note: `$input[0] != input` now!\n }\n\n $input.addClass('placeholder');\n $input[0].value = $input.attr('placeholder');\n } else {\n $input.removeClass('placeholder');\n }\n }\n})();\n","import ListView from '../framework/ListView.js';\nimport BaseView from './BaseView.js';\n\n/**\n * See {@link src/framework/ListView} for more detail and examples from the base class.\n * @class module:Okta.ListView\n * @extends src/framework/ListView\n * @mixes module:Okta.View\n */\n\nvar Backbone_ListView = BaseView.decorate(ListView);\n\nexport { Backbone_ListView as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\nimport FrameworkView from '../framework/View.js';\nimport TemplateUtil from '../util/TemplateUtil.js';\n\nconst eventBus = oktaUnderscore.clone(Backbone.Events); // add `broadcast` and `listen` functionality to all views\n// We use one event emitter per all views\n// This means we need to be very careful with event names\n\n\nconst proto = {\n constructor: function (options, ...rest) {\n FrameworkView.call(this, options, ...rest);\n this.module && this.$el.attr('data-view', this.module.id);\n },\n\n /**\n * @deprecated Use {@link #removeChildren}\n */\n empty: function () {\n return this.removeChildren();\n },\n compileTemplate: TemplateUtil.tpl,\n\n /**\n *\n * Broadcasts a global event that all views and controllers can subscribe to\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName A unique identifier for the event\n * @param {...String} param Parameter to pass with the event (can pass more than one parameter)\n * @deprecated For internal use only\n * @private\n */\n broadcast: function () {\n eventBus.trigger.apply(eventBus, arguments);\n return this;\n },\n\n /**\n * Subscribe to broadcast events\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName The event identifier to subscribe\n * @param {Function} fn The callback function to invoke\n * @deprecated For internal use only\n * @private\n */\n listen: function (name, fn) {\n eventBus.off(name, fn);\n this.listenTo(eventBus, name, fn);\n return this;\n },\n\n /**\n * Shows a notification box\n * @param {String} level success / warning / error\n * @param {String} message The message to display\n * @param {Object} [options]\n * @param {Number} [options.width] Set a custom width\n * @param {String} [options.title] Set a custom title\n * @param {Boolean} [options.hide=true] Do we want to auto-hide this notification?\n * @param {Boolean} [options.dismissable] Show a dismiss button\n * @example\n * view.notify('success', 'Group created successfully');\n */\n notify: function (level, message, options) {\n this.broadcast('notification', oktaUnderscore.defaults({\n message: message,\n level: level\n }, options));\n return this;\n },\n\n /**\n * Shows a confirmation dialog\n *\n * Uses https://www.ericmmartin.com/projects/simplemodal/.\n * If you want to configure the simplemodal options use ConfirmationDialog instead.\n *\n * The main difference between this and the native javascript `confirm` method\n * Is this method is non blocking (note the callback pattern).\n *\n * The callback function will run in the context (`this`) of the invoking view.\n *\n * @param {String} [title] The title of the confirmation dialog\n * @param {String} [message] The message of the confirmation dialog\n * @param {Function} [okfn] The callback to run when the user hits \"OK\" (runs in the context of the invoking view)\n * @param {Function} [cancelfn] The callback to run when the user hits \"Cancel\"\n * (runs in the context of the invoking view)\n * @example\n * view.confirm('Delete Group', 'Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * // title will be auto-set to \"Okta\"\n * view.confirm('Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * view.confirm({\n * title: 'Delete Group', //=> Modal title\n * subtitle: 'Are you sure you want to delete the selected group?', //=> Modal subtitle\n * content: '

        THIS WILL DELETE THE GROUP!

        ', //=> A template or a view to add to the modal\n * save: 'Delete Group', //=> Button label\n * ok: _.bind(model.save, model) // Callback function on hitting \"ok\" button\n * cancel: 'Cancel', //=> Button label\n * cancelFn: _.bind(model.destroy, model) // Callback function on hitting \"cancel\" button\n * });\n */\n confirm: function (title, message, okfn, cancelfn) {\n let options;\n /* eslint max-statements: [2, 12] */\n\n if (typeof title === 'object') {\n options = title;\n } else {\n // eslint-disable-next-line no-lonely-if\n if (arguments.length === 2 && oktaUnderscore.isFunction(message)) {\n options = {\n title: 'Okta',\n // eslint-disable-line @okta/okta/no-unlocalized-text\n subtitle: title,\n ok: message\n };\n } else {\n options = {\n title: title,\n subtitle: message,\n ok: okfn,\n cancelFn: cancelfn\n };\n }\n }\n\n if (oktaUnderscore.isFunction(options.ok)) {\n options.ok = oktaUnderscore.bind(options.ok, this);\n }\n\n if (oktaUnderscore.isFunction(options.cancelFn)) {\n options.cancelFn = oktaUnderscore.bind(options.cancelFn, this);\n }\n\n this.broadcast('confirmation', options);\n return this;\n },\n\n /**\n * Shows an alert box\n *\n * The main difference between this and the native javascript `alert` method\n * Is this method is non blocking.\n *\n * @param {String} message The message\n * @example\n * view.alert('Mission complete');\n */\n alert: function (params) {\n if (oktaUnderscore.isString(params)) {\n params = {\n subtitle: params\n };\n }\n\n this.confirm(oktaUnderscore.extend({}, params, {\n noCancelButton: true\n }));\n return this;\n }\n};\n/**\n * See {@link src/framework/View} for more detail and examples from the base class.\n * @class module:Okta.View\n * @extends src/framework/View\n */\n\n/** @lends module:Okta.View.prototype */\n\nvar BaseView = FrameworkView.extend(proto,\n/** @lends View.prototype */\n{\n /** @method */\n decorate: function (TargetView) {\n const BaseViewView = TargetView.extend({});\n\n oktaUnderscore.defaults(BaseViewView.prototype, proto);\n\n return BaseViewView;\n }\n});\n\nexport { BaseView as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport ViewUtil from '../../util/ViewUtil.js';\nimport BaseView from '../BaseView.js';\n\nconst disabledEvents = {\n click: function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n/**\n * A configurable button\n * @class module:Okta.internal.views.components.BaseButtonLink\n * @extends module:Okta.View\n * @example\n * var View = BaseButtonLink.extend({\n * title: 'Click Me',\n * icon: 'help-text'\n * })\n */\n\nvar BaseButtonLink = BaseView.extend(\n/** @lends module:Okta.internal.views.components.BaseButtonLink.prototype */\n{\n attributes: function () {\n const defaultAttrs = {\n 'data-se': 'button'\n };\n\n const additionalAttr = this.__getAttribute('attrs');\n\n return oktaUnderscore.extend(defaultAttrs, additionalAttr);\n },\n\n /**\n * The main text for the button\n * @name title\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * The link for the button\n * @name href\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @name icon\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * A [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @name events\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {Object}\n * @instance\n */\n tagName: 'a',\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 67\n },\n \"end\": {\n \"line\": 1,\n \"column\": 76\n }\n }\n }) : helper));\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 54\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 54\n },\n \"end\": {\n \"line\": 1,\n \"column\": 83\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n\n /**\n * Make this button visible, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n visible: true,\n\n /**\n * Make this button enabled, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n enabled: true,\n\n /**\n * The setting to determine when the button is enabled, default to {} and\n * enabled takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n enableWhen: {},\n\n /**\n * The setting to determine when the button is visible, default to {} and\n * visible takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n showWhen: {},\n constructor: function (options) {\n this.options = options || {};\n const data = this.getTemplateData();\n this.disabled = false;\n BaseView.apply(this, arguments);\n this.$el.addClass('link-button');\n\n if (data.icon) {\n this.$el.addClass('link-button-icon');\n\n if (!data.title) {\n this.$el.addClass('icon-only');\n }\n }\n },\n getTemplateData: function () {\n return {\n href: this.__getAttribute('href'),\n title: this.__getAttribute('title'),\n icon: this.__getAttribute('icon')\n };\n },\n initialize: function () {\n ViewUtil.applyDoWhen(this, oktaUnderscore.resultCtx(this, 'enableWhen', this), this.toggle);\n ViewUtil.applyDoWhen(this, oktaUnderscore.resultCtx(this, 'showWhen', this), this.toggleVisible);\n },\n render: function () {\n BaseView.prototype.render.apply(this, arguments);\n\n if (!oktaUnderscore.result(this, 'enabled')) {\n this.toggle(false);\n }\n\n if (!oktaUnderscore.result(this, 'visible')) {\n this.toggleVisible(false);\n }\n\n const data = this.getTemplateData();\n this.$el.attr('href', data.href || '#');\n return this;\n },\n __getAttribute: function (name, defaultValue) {\n let value = oktaUnderscore.resultCtx(this.options, name, this);\n\n if (oktaUnderscore.isUndefined(value)) {\n value = oktaUnderscore.result(this, name);\n }\n\n return !oktaUnderscore.isUndefined(value) ? value : defaultValue;\n },\n enable: function () {\n this.toggle(true);\n },\n disable: function () {\n this.toggle(false);\n },\n show: function () {\n this.toggleVisible(true);\n },\n hide: function () {\n this.toggleVisible(false);\n },\n toggle: function (enable) {\n const bool = !!enable && oktaUnderscore.result(this, 'enabled'); //this is to toggle the enability\n\n\n this.disabled = !bool;\n this.$el.toggleClass('link-button-disabled btn-disabled disabled', this.disabled);\n this.delegateEvents(this.disabled ? disabledEvents : null);\n },\n toggleVisible: function (visible) {\n const hidden = !visible || !oktaUnderscore.result(this, 'visible');\n this.$el.toggleClass('hide', hidden);\n }\n});\n\nexport { BaseButtonLink as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport BaseView from '../BaseView.js';\n\nconst optionsTemplate = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 133\n },\n \"end\": {\n \"line\": 1,\n \"column\": 142\n }\n }\n }) : helper));\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

        \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 192\n },\n \"end\": {\n \"line\": 1,\n \"column\": 204\n }\n }\n }) : helper)) + \"

        \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 66\n },\n \"end\": {\n \"line\": 1,\n \"column\": 120\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 120\n },\n \"end\": {\n \"line\": 1,\n \"column\": 149\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 149\n },\n \"end\": {\n \"line\": 1,\n \"column\": 215\n }\n }\n })) != null ? stack1 : \"\") + \"\";\n },\n \"useData\": true\n});\n\nconst BaseDropDownDropDownOption = BaseView.extend({\n tagName: 'li',\n events: {\n click: function (e) {\n e.preventDefault();\n this.action && this.action.call(this);\n }\n },\n constructor: function () {\n BaseView.apply(this, arguments);\n this.$el.addClass('okta-dropdown-option option');\n },\n render: function () {\n this.$el.html(optionsTemplate({\n icon: oktaUnderscore.result(this, 'icon'),\n className: oktaUnderscore.result(this, 'className') || '',\n title: oktaUnderscore.result(this, 'title'),\n subtitle: oktaUnderscore.result(this, 'subtitle'),\n seleniumId: oktaUnderscore.result(this, 'seleniumId')\n }));\n\n if (oktaUnderscore.result(this, 'disabled')) {\n this.disable();\n }\n\n return this;\n },\n disable: function () {\n this.$el.addClass('option-disabled');\n this.$el.find('a').attr('tabindex', '-1');\n }\n});\nvar BaseDropDown = BaseView.extend({\n events: {\n 'click a.option-selected': function (e) {\n e.preventDefault();\n\n if (oktaUnderscore.result(this, 'disabled')) {\n e.stopPropagation();\n }\n },\n 'click .dropdown-disabled': function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n items: [],\n constructor: function () {\n const className = this.className; // In this very specific case we want to NOT append className to $el\n // but to the tag in the template\n // so we want to disable backbone default functionality.\n\n this.className = null;\n BaseView.apply(this, arguments);\n this.className = className;\n this.$el.addClass('dropdown more-actions float-l');\n\n oktaUnderscore.each(oktaUnderscore.result(this, 'items'), function (option) {\n this.addOption(option, this.options);\n }, this);\n },\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"screenReaderText\") || (depth0 != null ? lookupProperty(depth0, \"screenReaderText\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"screenReaderText\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 249\n },\n \"end\": {\n \"line\": 1,\n \"column\": 269\n }\n }\n }) : helper)) + \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 146\n },\n \"end\": {\n \"line\": 1,\n \"column\": 200\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"screenReaderText\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 200\n },\n \"end\": {\n \"line\": 1,\n \"column\": 283\n }\n }\n })) != null ? stack1 : \"\") + \"\" + alias4((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 318\n },\n \"end\": {\n \"line\": 1,\n \"column\": 327\n }\n }\n }) : helper)) + \"
          \";\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n const className = [oktaUnderscore.result(this, 'className') || '', oktaUnderscore.result(this, 'disabled') ? 'dropdown-disabled' : ''];\n return {\n icon: oktaUnderscore.result(this, 'icon'),\n className: oktaJQueryStatic.trim(className.join(' ')),\n title: oktaUnderscore.result(this, 'title'),\n screenReaderText: oktaUnderscore.result(this, 'screenReaderText')\n };\n },\n addOption: function (proto, options) {\n this.add(BaseDropDownDropDownOption.extend(proto), 'ul.options-wrap', {\n options: options || {}\n });\n }\n});\n\nexport { BaseDropDown as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport Time from '../../util/Time.js';\nimport BaseView from '../BaseView.js';\n\nfunction getOption(callout, option) {\n return oktaUnderscore.resultCtx(callout.options, option, callout) || oktaUnderscore.result(callout, option);\n}\n\nfunction getTopClass(callout) {\n let klass = 'infobox clearfix infobox-' + getOption(callout, 'type');\n\n switch (getOption(callout, 'size')) {\n case 'standard':\n klass += '';\n break;\n\n case 'slim':\n klass += ' infobox-slim';\n break;\n\n case 'compact':\n klass += ' infobox-compact';\n break;\n\n case 'large':\n klass += ' infobox-md';\n break;\n }\n\n if (getOption(callout, 'dismissible')) {\n klass += ' infobox-dismiss';\n }\n\n return klass;\n}\n\nconst events = {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.$el.fadeOut(Time.UNLOADING_FADE, () => {\n this.trigger('dismissed');\n this.remove();\n });\n }\n};\n\nconst template = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 286\n },\n \"end\": {\n \"line\": 1,\n \"column\": 295\n }\n }\n }) : helper)) + \"

          \";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 347\n },\n \"end\": {\n \"line\": 1,\n \"column\": 359\n }\n }\n }) : helper)) + \"

          \";\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"
            \" + ((stack1 = lookupProperty(helpers, \"each\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"bullets\") : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(8, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 420\n },\n \"end\": {\n \"line\": 1,\n \"column\": 483\n }\n }\n })) != null ? stack1 : \"\") + \"
          \";\n },\n \"8\": function (container, depth0, helpers, partials, data) {\n return \"
        • \" + container.escapeExpression(container.lambda(depth0, depth0)) + \"
        • \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"dismissible\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 202\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 252\n },\n \"end\": {\n \"line\": 1,\n \"column\": 307\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 307\n },\n \"end\": {\n \"line\": 1,\n \"column\": 370\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"bullets\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(7, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 370\n },\n \"end\": {\n \"line\": 1,\n \"column\": 495\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n});\n\nconst CalloutCallout = BaseView.extend(\n/** @lends src/views/components/Callout.prototype */\n{\n attributes: {\n 'data-se': 'callout'\n },\n\n /**\n * Custom HTML or view to inject to the callout\n * @type {String|Okta.View}\n */\n content: null,\n\n /**\n * Size of icon. options are standard, large, compact\n * @type {String}\n */\n size: 'standard',\n\n /**\n * Type of the callout. Valid values are: info, success, warning, error, tip\n * @type {String}\n */\n type: 'info',\n\n /**\n * Can the callout be dismissed\n * @type {Boolean}\n */\n dismissible: false,\n\n /**\n * Callout title\n * @type {String}\n */\n title: null,\n\n /**\n * Callout subtitle\n * @type {String}\n */\n subtitle: null,\n\n /**\n * Array of strings to render as bullet points\n * @type {Array}\n */\n bullets: null,\n\n /**\n * Fired after the callout is dismised - applies when\n * {@link module:Okta.internal.views.components.Callout|dismissible} is set to true\n * @event src/views/components/Callout#dismissed\n */\n constructor: function () {\n this.events = oktaUnderscore.defaults(this.events || {}, events);\n BaseView.apply(this, arguments);\n this.$el.addClass(getTopClass(this));\n this.template = template;\n const content = getOption(this, 'content');\n\n if (content) {\n this.add(content);\n }\n },\n getTemplateData: function () {\n let icon = getOption(this, 'type');\n const size = getOption(this, 'size');\n\n if (icon === 'tip') {\n // css is inconsistent\n icon = 'light-bulb';\n }\n\n switch (size) {\n case 'slim':\n icon = '';\n break;\n\n case 'large':\n icon = [icon, '-', '24'].join('');\n break;\n\n default:\n icon = [icon, '-', '16'].join('');\n }\n\n return {\n icon: icon,\n title: getOption(this, 'title'),\n subtitle: getOption(this, 'subtitle'),\n bullets: getOption(this, 'bullets'),\n dismissible: getOption(this, 'dismissible')\n };\n }\n});\n/**\n * @class src/views/components/Callout\n * @extends module:Okta.View\n */\n\n/**\n * @class module:Okta.internal.views.components.Callout\n */\n\nvar Callout = /** @lends module:Okta.internal.views.components.Callout */\n{\n /**\n * Creates a {@link src/views/components/Callout|Callout}.\n * @static\n * @param {Object} options\n * @param {String|Function} [options.size] Size of icon. options are standard, large, compact, slim\n * @param {String|Okta.View} [options.content] Custom HTML or view to inject to the callout\n * @param {String|Function} [options.title] Callout title\n * @param {String|Function} [options.subtitle] Callout subtitle\n * @param {Array|Function} [options.bullets] Array of strings to render as bullet points\n * @param {Boolean|Function} [options.dismissible] Can the callout be dismissed\n * @param {String|Function} [options.type] Callout type. Valid values are: info, success, warning, error, tip\n *\n * @return {src/views/components/Callout}\n */\n create: function (options) {\n return new CalloutCallout(options);\n }\n};\n\nexport { Callout as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport BaseView from '../BaseView.js';\nimport StringUtil from '../../util/StringUtil.js';\n\nconst defaults = {\n level: 'success',\n hide: true,\n fade: 400,\n delay: 3000,\n width: 0,\n dismissable: false\n};\nvar Notification = BaseView.extend({\n className: 'infobox infobox-confirm infobox-confirm-fixed',\n events: {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.fadeOut();\n }\n },\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 220\n },\n \"end\": {\n \"line\": 1,\n \"column\": 229\n }\n }\n }) : helper)) + \"

          \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"dismissable\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 164\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 203\n },\n \"end\": {\n \"line\": 1,\n \"column\": 241\n }\n }\n })) != null ? stack1 : \"\") + \"

          \" + alias4((helper = (helper = lookupProperty(helpers, \"message\") || (depth0 != null ? lookupProperty(depth0, \"message\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"message\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 244\n },\n \"end\": {\n \"line\": 1,\n \"column\": 255\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n }),\n initialize: function () {\n this.options = oktaUnderscore.defaults({}, this.options, defaults);\n\n if (!this.options.message) {\n switch (this.options.level) {\n case 'success':\n this.options.message = StringUtil.localize('notification.default.message.success', 'courage');\n break;\n\n case 'error':\n this.options.message = StringUtil.localize('notification.default.message.error', 'courage');\n break;\n\n case 'warning':\n this.options.message = StringUtil.localize('notification.default.message.warning', 'courage');\n break;\n }\n }\n\n this.$el.addClass('infobox-' + this.options.level);\n\n if (this.options.width) {\n this.$el.width(this.options.width);\n }\n },\n getTemplateData: function () {\n return oktaUnderscore.extend(oktaUnderscore.pick(this.options, 'level', 'message', 'title'), {\n dismissable: this.options.hide === false || this.options.dismissable === true\n });\n },\n postRender: function () {\n if (this.options.hide) {\n oktaUnderscore.delay(oktaUnderscore.bind(this.fadeOut, this), this.options.delay);\n }\n },\n fadeOut: function () {\n this.$el.fadeOut(this.options.fade, oktaUnderscore.bind(this.remove, this));\n }\n});\n\nexport { Notification as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport StringUtil from '../../util/StringUtil.js';\nimport BaseView from '../BaseView.js';\nimport ReadModeBar from './components/ReadModeBar.js';\nimport Toolbar from './components/Toolbar.js';\nimport ErrorBanner from './helpers/ErrorBanner.js';\nimport ErrorParser from './helpers/ErrorParser.js';\nimport FormUtil from './helpers/FormUtil.js';\nimport InputContainer from './helpers/InputContainer.js';\nimport InputFactory from './helpers/InputFactory.js';\nimport InputLabel from './helpers/InputLabel.js';\nimport InputWrapper from './helpers/InputWrapper.js';\nimport SettingsModel from '../../util/SettingsModel.js';\n\nconst template = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 75\n },\n \"end\": {\n \"line\": 1,\n \"column\": 84\n }\n }\n }) : helper)) + \"

          \";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return (stack1 = lookupProperty(helpers, \"if\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(4, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 192\n },\n \"end\": {\n \"line\": 1,\n \"column\": 288\n }\n }\n })) != null ? stack1 : \"\";\n },\n \"4\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 267\n },\n \"end\": {\n \"line\": 1,\n \"column\": 276\n }\n }\n }) : helper)) + \"

          \";\n },\n \"6\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 385\n },\n \"end\": {\n \"line\": 1,\n \"column\": 397\n }\n }\n }) : helper)) + \"

          \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"hasReadMode\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 96\n }\n }\n })) != null ? stack1 : \"\") + \"
          \" + ((stack1 = lookupProperty(helpers, \"unless\").call(alias1, depth0 != null ? lookupProperty(depth0, \"hasReadMode\") : depth0, {\n \"name\": \"unless\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 169\n },\n \"end\": {\n \"line\": 1,\n \"column\": 299\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(6, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 299\n },\n \"end\": {\n \"line\": 1,\n \"column\": 408\n }\n }\n })) != null ? stack1 : \"\") + \"
          \";\n },\n \"useData\": true\n});\n\nconst sectionTitleTemplate = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 24\n },\n \"end\": {\n \"line\": 1,\n \"column\": 33\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n});\n\nconst pointerEventsSupported = oktaJQueryStatic('
          ').css({\n 'pointer-events': 'auto'\n})[0].style.pointerEvents === 'auto'; // polyfill for `pointer-events: none;` in IE < 11\n// Logic borrowed from https://github.com/kmewhort/pointer_events_polyfill (BSD)\n\nfunction pointerEventsPolyfill(e) {\n if (!pointerEventsSupported && this.$el.hasClass('o-form-saving')) {\n const $el = oktaJQueryStatic(e.currentTarget);\n $el.css('display', 'none');\n const underneathElem = document.elementFromPoint(e.clientX, e.clientY);\n $el.css('display', 'block');\n e.target = underneathElem;\n oktaJQueryStatic(underneathElem).trigger(e);\n return false;\n }\n}\n\nconst events = {\n submit: function (e) {\n e.preventDefault();\n\n this.__save();\n }\n};\n\noktaUnderscore.each(['click', 'dblclick', 'mousedown', 'mouseup'], function (event) {\n events[event + ' .o-form-input'] = pointerEventsPolyfill;\n});\n\nconst attributes = function (model) {\n model || (model = {});\n const collection = model && model.collection || {};\n return {\n method: 'POST',\n action: oktaUnderscore.result(model, 'urlRoot') || oktaUnderscore.result(collection, 'url') || window.location.pathname,\n 'data-se': 'o-form',\n slot: 'content'\n };\n};\n\nconst convertSavingState = function (rawSavingStateEvent, defaultEvent) {\n rawSavingStateEvent || (rawSavingStateEvent = '');\n let savingStateEvent = [];\n\n if (oktaUnderscore.isString(rawSavingStateEvent)) {\n savingStateEvent = rawSavingStateEvent.split(' ');\n }\n\n savingStateEvent = oktaUnderscore.union(savingStateEvent, defaultEvent);\n return savingStateEvent.join(' ');\n};\n\nconst getErrorSummary = function (responseJSON = {}) {\n if (Array.isArray(responseJSON.errorCauses) && responseJSON.errorCauses.length > 0) {\n //set errorSummary from first errorCause which is not field specific error\n return responseJSON.errorCauses[0].errorSummary;\n } else {\n //set errorSummary from top level errorSummary\n return responseJSON.errorSummary;\n }\n};\n/**\n * A Form utility framework\n *\n * Okta.Form is a form that operates on one flat model\n * It exposes one main factory method, {@link module:Okta.Form#addInput|addInput}, which add inputs to the form,\n * and each input operates on one field in the model, identified by the `name` field.\n *\n * See:\n * [Basic O-Form Tutorial](https://github.com/okta/courage/wiki/Basic-O-Form)\n *\n * @class module:Okta.Form\n * @extends module:Okta.View\n * @param {Object} options options hash (See {@link module:Okta.View|View})\n * @param {Object} options.model the model this form operates on\n * @param {Boolean} [options.label-top=false] position label on top of inputs\n * @param {Boolean} [options.wide=false] Use a wide input layout for all input\n */\n\n/**\n * Fired when the \"Save\" button is clicked\n * @event module:Okta.Form#save\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired after the model is successfully saved - applies when {@link module:Okta.Form#autoSave|autoSave}\n * is set to true\n * @event module:Okta.Form#saved\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the model fires an invalid event or an error event;\n * @event module:Okta.Form#error\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the form layout is likely to be resized\n * @event module:Okta.Form#resize\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the \"Cancel\" button is clicked\n * @event module:Okta.Form#cancel\n */\n\n\nvar BaseForm = BaseView.extend(\n/** @lends module:Okta.Form.prototype */\n{\n /**\n * Specifies how to validate form:\n * - In case \"local\" string provided as a value of the property,\n * the form will validate only fields added as inputs to the form;\n * - In case array is provided, the validation will be performed only for fields specified in array;\n * - In case function is provided, provided function will be used as a validation function,\n * it must return an error object with the format {fieldName: 'error text'} with as many fields as you need.\n * @name validate\n * @memberof module:Okta.Form\n * @type {String|Array|Function}\n * @instance\n */\n constructor: function (options) {\n /* eslint max-statements: 0, complexity: 0 */\n options || (options = {});\n this.options = options;\n\n if (options.settings) {\n this.settings = options.settings;\n } else {\n this.settings = options.settings = new SettingsModel();\n }\n\n this.id = oktaUnderscore.uniqueId('form');\n this.tagName = 'form';\n\n oktaUnderscore.defaults(this.events, events);\n\n oktaUnderscore.defaults(this.attributes, attributes(options.model));\n\n this.__buttons = [];\n this.__errorFields = {};\n\n this.__saveModelState(options.model);\n\n const step = oktaUnderscore.result(this, 'step');\n\n if (step) {\n // checking exists of `this.save` hence don't have to change to\n // `_.result(this, 'save')` which will execute the function and\n // is not the intent.\n if (!this.save) {\n const totalStep = oktaUnderscore.result(this, 'totalSteps');\n\n this.save = !totalStep || step === totalStep ? StringUtil.localize('oform.button.finish', 'courage') : StringUtil.localize('oform.button.next', 'courage');\n }\n\n this.className = oktaUnderscore.result(this, 'className') + ' wizard';\n }\n\n this.className = oktaUnderscore.result(this, 'className') + ' o-form';\n this.__toolbar = this.__createToolbar(options);\n BaseView.call(this, options);\n\n oktaUnderscore.each(oktaUnderscore.result(this, 'inputs') || [], function (input) {\n // to ingore extra argumests from `each` iteratee function\n // http://underscorejs.org/#each\n this.__addLayoutItem(input);\n }, this);\n\n this.add(this.__toolbar, ''); // NOTES: this.model shall be initialized after calling\n // super (BaseView.call(this, options)) above.\n //\n\n this.listenTo(this.model, 'change:__edit__', this.__applyMode);\n this.listenTo(this.model, 'invalid error', oktaUnderscore.throttle(function (model, resp, showBanner) {\n this.__showErrors(model, resp, showBanner !== false);\n }, 100, {\n trailing: false\n }));\n this.listenTo(this.model, 'form:resize', function () {\n this.trigger('resize');\n });\n this.listenTo(this.model, 'form:cancel', oktaUnderscore.throttle(this.__cancel, 100, {\n trailing: false\n }));\n this.listenTo(this.model, 'form:previous', oktaUnderscore.throttle(this.__previous, 100, {\n trailing: false\n }));\n this.__save = oktaUnderscore.throttle(this.__save, 200, {\n trailing: false\n });\n this.listenTo(this.model, 'form:save', function () {\n this.$el.submit();\n });\n this.listenTo(this.model, 'sync', function () {\n if (this.model.get('__edit__')) {\n this.model.set('__edit__', false, {\n silent: true\n });\n }\n\n this.__saveModelState(this.model);\n\n this.render();\n });\n let hasSavingState = this.getAttribute('hasSavingState');\n\n if (this.getAttribute('autoSave')) {\n this.listenTo(this, 'save', function (model) {\n const xhr = model.save();\n\n if (xhr && xhr.done) {\n xhr.done(() => {\n this.trigger('saved', model);\n });\n }\n });\n\n if (oktaUnderscore.isUndefined(hasSavingState)) {\n hasSavingState = true;\n }\n }\n /*\n * Attach model event listeners\n * by default, model's request event starts the form saving state,\n * error and sync event stops it\n * you can define customized saving start and stop state, like\n * customSavingState: {start: 'requestingAdditionalInfo', stop: 'retrievedAdditionalInfo'}\n * doing this does not override the default events\n */\n\n\n if (hasSavingState) {\n const customSavingState = this.getAttribute('customSavingState', {});\n this.listenTo(this.model, convertSavingState(customSavingState.start || '', ['request']), this.__setSavingState);\n this.listenTo(this.model, convertSavingState(customSavingState.stop || '', ['error', 'sync']), this.__clearSavingState);\n }\n },\n\n /**\n * Create the bottom button bar\n * @param {Object} options options h\n * @return {Okta.View} The toolbar\n * @private\n */\n __createToolbar: function (options) {\n const danger = this.getAttribute('danger');\n const saveBtnClassName = danger === true ? 'button-error' : 'button-primary';\n\n const step = oktaUnderscore.result(this, 'step');\n\n const toolbar = new Toolbar(oktaUnderscore.extend({\n save: this.save || StringUtil.localize('oform.save', 'courage'),\n saveId: this.saveId,\n saveClassName: saveBtnClassName,\n cancel: this.cancel || StringUtil.localize('oform.cancel', 'courage'),\n noCancelButton: this.noCancelButton || false,\n noSubmitButton: this.noSubmitButton || false,\n buttonOrder: this.buttonOrder,\n hasPrevStep: step && step > 1\n }, options || this.options));\n\n oktaUnderscore.each(this.__buttons, function (args) {\n toolbar.addButton.apply(toolbar, args);\n });\n\n return toolbar;\n },\n className: '',\n attributes: {},\n events: {},\n\n /**\n * An array of input configurations to render in the form\n * @type {Array}\n */\n inputs: [],\n template: null,\n\n /**\n * Does the form support read/edit toggle.\n * @type {Boolean|Function}\n * @default false\n */\n read: false,\n\n /**\n * Is the form in readOnly mode.\n * @type {Boolean|Function}\n * @default false\n */\n readOnly: false,\n\n /**\n * Should we not render the button bar\n * @type {Boolean|Function}\n * @default false\n */\n noButtonBar: false,\n\n /**\n * Should we not render a cancel button\n * @type {Boolean|Function}\n * @default false\n */\n noCancelButton: false,\n\n /**\n * Should we not render a save button\n * @type {Boolean}\n * @default false\n */\n noSubmitButton: false,\n\n /**\n * Set the order of the save, cancel and previous buttons (left to right).\n * @type {Array.}\n * @default ['previous', 'save', 'cancel']\n */\n buttonOrder: ['previous', 'save', 'cancel'],\n\n /**\n * The text on the save button\n * @type {String}\n * @default \"Save\"\n */\n save: null,\n\n /**\n * The text on the cancel button\n * @type {String}\n * @default \"Cancel\"\n */\n cancel: null,\n\n /**\n * To use button-error to style the submit button instead of button-primary.\n * @type {Boolean|Function}\n * @default false\n */\n danger: false,\n\n /**\n * A layout CSS class to add to the form\n * @type {String|Function}\n * @default \"\"\n */\n layout: '',\n\n /**\n * The step this form is in the context of a wizard\n * @type {Number}\n */\n step: undefined,\n\n /**\n * The total numbers of steps the wizard this form is a part of has\n * @type {Number}\n */\n totalSteps: undefined,\n\n /**\n * The form's title\n * @type {String|Function}\n */\n title: null,\n\n /**\n * The form's subtitle\n * @type {String|Function}\n */\n subtitle: null,\n\n /**\n * Auto-save the model when hitting save. Triggers a `saved` event when done\n * @type {Boolean}\n * @default false\n */\n autoSave: false,\n\n /**\n * Scroll to the top of the form on error\n * @type {Boolean|Function}\n * @default true\n */\n scrollOnError: true,\n\n /**\n * Show the error banner upon error\n * @type {Boolean|Function}\n * @default true\n */\n showErrors: true,\n\n /**\n * The form's scrollable area\n * @type {String}\n * @default \".o-form-content\"\n */\n resizeSelector: '.o-form-content',\n\n /**\n * Sets whether or not the form shows the saving state when\n * the model is saved. Has no effect on setSavingState and clearSavingState as those are manual calls\n * to trigger/clear the saving state.\n * @name hasSavingState\n * @memberof module:Okta.Form\n * @type {Boolean}\n * @default false\n * @instance\n */\n\n /**\n * Get an attribute value from options or instance.\n * Prefer options value over instance value\n * @param {String} name Name of the attribute\n * @param {Object} defaultValue the default value to return if the attribute is not found\n * @return {Object} The value\n */\n getAttribute: function (name, defaultValue) {\n let value = oktaUnderscore.resultCtx(this.options, name, this);\n\n if (oktaUnderscore.isUndefined(value)) {\n value = oktaUnderscore.result(this, name);\n }\n\n return !oktaUnderscore.isUndefined(value) ? value : defaultValue;\n },\n\n /**\n * Does this form have a \"read\" mode\n * @return {Boolean}\n */\n hasReadMode: function () {\n return !!this.getAttribute('read');\n },\n\n /**\n * Is this form in \"read only\" mode\n * @return {Boolean}\n */\n isReadOnly: function () {\n return !!this.getAttribute('readOnly');\n },\n\n /**\n * Does this form have a button bar\n * @return {Boolean}\n */\n hasButtonBar: function () {\n return !(this.getAttribute('noButtonBar') || this.isReadOnly());\n },\n render: function () {\n this.__readModeBar && this.__readModeBar.remove();\n\n if (this.hasReadMode() && !this.isReadOnly()) {\n const readModeBar = ReadModeBar.extend({\n formTitle: this.getAttribute('title', '')\n });\n this.__readModeBar = this.add(readModeBar, '.o-form-title-bar').last();\n }\n\n const html = template({\n layout: this.getAttribute('layout', ''),\n title: this.getAttribute('title', '', true),\n subtitle: this.getAttribute('subtitle', '', true),\n hasReadMode: this.hasReadMode()\n });\n this.$el.html(html);\n delete this.template;\n BaseView.prototype.render.apply(this, arguments);\n\n this.__applyMode();\n\n return this;\n },\n\n /**\n * Changes form UI to indicate saving. Disables all inputs and buttons. Use this function if you have set\n * hasSavingState to false on the the form\n * @private\n */\n __setSavingState: function () {\n this.model.trigger('form:set-saving-state');\n this.$el.addClass('o-form-saving');\n },\n\n /**\n * Changes form UI back to normal from the saving state. Use this function if you are have set hasSavingState\n * to false on the form\n * @private\n */\n __clearSavingState: function () {\n this.model.trigger('form:clear-saving-state');\n this.$el.removeClass('o-form-saving');\n },\n\n /**\n * Toggles the visibility of the bottom button bar\n * @private\n */\n __toggleToolbar: function () {\n this.__toolbar && this.__toolbar.remove();\n\n if (this.hasButtonBar() && this._editMode()) {\n this.__toolbar = this.__createToolbar();\n this.add(this.__toolbar, '');\n }\n\n this.trigger('resize');\n },\n\n /**\n * Cancels this form\n * - Reset the model to the previous state\n * - Clears all errors\n * - Triggers a `cancel` event\n * - Sets the model to read mode (if applicable)\n * @private\n * @fires cancel\n */\n __cancel: function () {\n const edit = this.model.get('__edit__');\n /* eslint max-statements: [2, 12] */\n\n this.model.clear({\n silent: true\n });\n let data;\n\n if (this.model.sanitizeAttributes) {\n data = this.model.sanitizeAttributes(this.__originalModel);\n } else {\n data = oktaUnderscore.clone(this.__originalModel);\n }\n\n this.model.set(data, {\n silent: true\n });\n this.trigger('cancel', this.model);\n this.model.trigger('cache:clear');\n\n if (edit) {\n this.model.set('__edit__', false, {\n silent: true\n });\n this.model.trigger('change:__edit__', this.model, false);\n }\n\n this.clearErrors();\n },\n\n /**\n * Runs {@link module:Okta.Form#validate|validate} to check the model state.\n * Triggers an \"invalid\" event on the model if validation fails\n * @returns {Boolean}\n */\n isValid: function () {\n let res;\n const self = this;\n\n function validateArray(arr) {\n return oktaUnderscore.reduce(arr, function (memo, fieldName) {\n return oktaUnderscore.extend(memo, self.model.validateField(fieldName));\n }, {});\n }\n\n if (oktaUnderscore.isUndefined(this.validate)) {\n return this.model.isValid();\n } else if (oktaUnderscore.isFunction(this.validate)) {\n res = this.validate();\n } else if (oktaUnderscore.isArray(this.validate)) {\n res = validateArray(this.validate);\n } else if (this.validate === 'local') {\n res = validateArray(this.getInputs().map(function (input) {\n return input.options.name;\n }));\n }\n\n if (!oktaUnderscore.isEmpty(res)) {\n this.model.trigger('invalid', this.model, res);\n return false;\n } else {\n return true;\n }\n },\n\n /**\n * A throttled function that saves the form not more than once every 100 ms\n * Basically all this method does is trigger a `save` event\n * @fires save\n * @private\n */\n __save: function () {\n this.clearErrors();\n\n if (this.isValid()) {\n this.trigger('save', this.model);\n }\n },\n\n /**\n * In the context of a wizard, go to previous state\n * Technically all this method does is trigger a `previous` event\n * @param {Event} e\n * @private\n */\n __previous: function () {\n this.trigger('previous', this.model);\n },\n\n /**\n * Renders the form in the correct mode based on the model.\n * @private\n */\n __applyMode: function () {\n this.clearErrors();\n\n this.__toggleToolbar();\n\n if (this._editMode()) {\n this.$el.addClass('o-form-edit-mode');\n this.$el.removeClass('o-form-read-mode');\n this.$('.o-form-content').removeClass('rounded-btm-4');\n this.focus();\n } else {\n this.$el.removeClass('o-form-edit-mode');\n this.$el.addClass('o-form-read-mode');\n this.$('.o-form-content').addClass('rounded-btm-4');\n }\n },\n\n /**\n * Is the form in edit mode\n * @return {Boolean}\n * @private\n */\n _editMode: function () {\n return this.model.get('__edit__') || !this.hasReadMode();\n },\n\n /**\n * Function can be overridden to alter top level error summary.\n * @param {Object} responseJSON\n *\n * @example\n * // responseJSON object\n * {\n * errorCauses: [{errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"}]\n * errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"\n * errorCode: \"E0000001\"\n * errorId: \"oaepsrTCHrhT-eIi8XTm6KWWg\"\n * errorLink: \"E0000001\"\n * errorSummary: \"Api validation failed: networkZone\"\n * }\n *\n * @method\n * @default _.identity\n */\n parseErrorMessage: oktaUnderscore.identity,\n _handleErrorScroll: function () {\n if (!this.getAttribute('scrollOnError')) {\n return;\n }\n\n const $el = oktaJQueryStatic('#' + this.id + ' .o-form-error-container');\n\n if ($el.length) {\n let $scrollContext = $el.scrollParent();\n let scrollTop; // scrollParent was almost awesome...\n // but it returns document if there are no other scrollable parents\n // document does not have offset, so here we have to replace with html, body\n // Additionally when the scroll context is html, body, $el.offset().top is fixed\n // versus when it has a different scroll context it's dynamic and requires the\n // calculation below.\n\n if ($scrollContext[0] === document) {\n $scrollContext = oktaJQueryStatic('html, body');\n scrollTop = $el.offset().top;\n } else {\n scrollTop = $scrollContext.scrollTop() + $el.offset().top - $scrollContext.offset().top;\n }\n\n $scrollContext.animate({\n scrollTop: scrollTop\n }, 400);\n }\n },\n\n /**\n * Show an error message based on an XHR error\n * @param {Okta.BaseModel} model the model\n * @param {jqXHR} xhr The jQuery XmlHttpRequest Object\n * @private\n */\n __showErrors: function (model, resp, showBanner) {\n this.trigger('error', model);\n /* eslint max-statements: 0 */\n\n if (!this.getAttribute('showErrors')) {\n return;\n }\n\n let errorSummary;\n let responseJSON = ErrorParser.getResponseJSON(resp);\n const validationErrors = ErrorParser.parseFieldErrors(resp); // trigger events for field validation errors\n\n if (oktaUnderscore.size(validationErrors)) {\n oktaUnderscore.each(validationErrors, function (errors, field) {\n this.model.trigger('form:field-error', this.__errorFields[field] || field, oktaUnderscore.map(errors, function (error) {\n return /^model\\.validation/.test(error) ? StringUtil.localize(error, 'courage') : error;\n }));\n }, this);\n } else {\n responseJSON = this.parseErrorMessage(responseJSON);\n errorSummary = getErrorSummary(responseJSON);\n } // show the error message\n\n\n if (showBanner) {\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(ErrorBanner, '.o-form-error-container', {\n options: {\n errorSummary: errorSummary\n }\n });\n } // slide to and focus on the error message\n\n\n this._handleErrorScroll();\n\n this.model.trigger('form:resize');\n },\n\n /**\n * Clears the error banner\n * @private\n */\n clearErrors: function () {\n this.$('.o-form-error-container').removeClass('o-form-has-errors');\n this.model.trigger('form:clear-errors');\n this.model.trigger('form:resize');\n },\n\n /**\n * Toggles between edit and read mode\n */\n toggle: function () {\n this.model.set('__edit__', !this.hasReadMode() || !this.model.get('__edit__'));\n return this;\n },\n __addLayoutItem: function (input) {\n if (InputFactory.supports(input)) {\n this.addInput(input);\n } else {\n this.__addNonInputLayoutItem(input);\n }\n },\n __addNonInputLayoutItem: function (item) {\n const itemOptions = oktaUnderscore.omit(item, 'type');\n\n switch (item.type) {\n case 'sectionTitle':\n this.addSectionTitle(item.title, oktaUnderscore.omit(itemOptions, 'title'));\n break;\n\n case 'divider':\n this.addDivider(itemOptions);\n break;\n\n default:\n throw new Error('unknown input: ' + item.type);\n }\n },\n\n /**\n * Adds a view to the buttons tool bar\n * @param {Object} params parameterized button options\n * @param {Object} options options to send to {@link module:Okta.View#add|View.add}\n */\n addButton: function (params, options) {\n this.__toolbar && this.__toolbar.addButton(params, options);\n\n this.__buttons.push([params, options]);\n },\n\n /**\n * Adds a divider\n */\n addDivider: function (options) {\n this.add('
          ');\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Adds section header\n * @param {String} title\n */\n addSectionTitle: function (title, options) {\n this.add(sectionTitleTemplate({\n title: title\n }));\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Add a form input\n * @param {Object} options Options to describe the input\n * @param {String} options.type The input type.\n * The options are: `text`, `textarea`, `select`, `checkbox`, `radio`, `switch`,\n * `password`, `number`, `textselect`, `date`, `grouppicker`, `admingrouppicker`, `su-orgspicker`\n * `file/image`, `file/cert`, `checkboxset`, `list`, `group`, `zonepicker`\n * @param {String} options.name The name of the model field this input mutates\n * @param {String|Function} [options.label]\n * The input label text.\n * When passed as a function, will invoke the function (in the context of the {@link InputLabel})\n * on render time, and use the returned value.\n * @param {String} [options.sublabel] The input sub label text\n * @param {String} [options.tooltip] A popover tooltip to be displayed next to the label\n * @param {String} [options.placeholder] Placeholder text.\n * @param {String} [options.explain] Explanation text to render below the input\n * @param {Okta.View} [options.customExplain] A custom view to render below the input (deprecated)\n * @param {Boolean} [options.disabled=false] Make this input disabled\n * @param {Boolean} [options.wide=false] Use a wide input layout\n * @param {Boolean} [options.label-top=false] position label on top of an input\n * @param {Boolean} [options.explain-top=false] position explain on top of an input (requires label-top=true)\n * @param {Number} [options.multi] have multiple in-line inputs. useful when `input` is passed as an array of inputs\n * @param {String} [options.errorField] The API error field here that maps to this input\n * @param {Boolean} [options.inlineValidation=true] Validate input on focusout\n * @param {String} [options.ariaLabel] Used to add aria-label attribute to the input when label is not present.\n * @param {Boolean} [options.group=false] Grouping set of inputs using fieldset and legend. Mainly for radio\n * @param {Object} [options.options]\n * In the context of `radio` and `select`, a key/value set of options\n *\n * @param {Object} [options.params]\n * Widget specific parameters. Varies per input.\n *\n * @param {BaseInput|Object[]} [options.input]\n * - A custom input \"class\" or instance - preferably a **class**, so we can automagically assign the right\n * parameters when initializing it\n * - An array of input definition object literals (such as this one)\n *\n * @param {Object} [options.showWhen]\n * Setting to define when to show (or hide) the input. The input is visible by default.\n *\n * @param {Object} [options.bindings]\n * Bind a certain model attribute to a callback function, so the function is being called on render,\n * and any time this model field changes.\n * This is similar to `showWhen` but is not limited to toggling.\n *\n * @param {Function} [options.render]\n * A post-render hook that will run upon render on InputWrapper\n *\n * @param {String|Function} className A className to apply on the {@link InputWrapper}\n *\n * @param {Function} [options.initialize]\n * An `initialize` function to run when initializing the {@link InputWrapper}\n * Useful for state mutation on start time, and complex state logic\n *\n * @example\n * // showhen: the field will be visible when `advanced` is set to `true`\n * // and `mode` is set to `\"ON\"`.\n * showWhen: {\n * 'advanced': true,\n * 'mode': function (value) {\n * return value == 'ON'; // this is identical to this.model.get('mode') == 'ON'\n * }\n * }\n *\n * @example\n * // bindings\n * bindings: {\n * 'status mode': function (status, mode) {\n * var labelView = this.getLabel();\n * if (status == 1) {\n * labelView.options.label = 'Something';\n * }\n * else {\n * labelView.options.label = mode;\n * }\n * labelView.render();\n * }\n * }\n */\n addInput: function (_options) {\n _options = oktaUnderscore.clone(_options);\n FormUtil.validateInput(_options, this.model);\n const inputsOptions = FormUtil.generateInputOptions(_options, this, this.__createInput).reverse(); // We need a local variable here to keep track\n // as addInput can be called either directy or through the inputs array.\n\n if (oktaUnderscore.isEmpty(this.getInputs().toArray())) {\n oktaUnderscore.extend(inputsOptions[0], {\n validateOnlyIfDirty: true\n });\n }\n\n const inputs = oktaUnderscore.map(inputsOptions, this.__createInput, this);\n\n oktaUnderscore.each(inputsOptions, function (input) {\n if (input.errorField) {\n this.__errorFields[input.errorField] = input.name;\n }\n }, this);\n\n const options = {\n inputId: oktaUnderscore.last(inputs).options.inputId,\n input: inputs,\n multi: inputsOptions.length > 1 ? inputsOptions.length : undefined\n };\n\n oktaUnderscore.extend(options, oktaUnderscore.omit(this.options, 'input'), oktaUnderscore.omit(_options, 'input'));\n\n const inputWrapper = this.__createWrapper(options);\n\n if (options.label !== false) {\n inputWrapper.add(this.__createLabel(options));\n }\n\n inputWrapper.add(this._createContainer(options)); // TODO: there may be a bug here.\n // options.input will always be an array, so options.input.type will always be undefined\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /// @ts-ignore\n\n inputWrapper.type = options.type || options.input.type || 'custom';\n const args = [inputWrapper].concat(oktaUnderscore.rest(arguments));\n return this.add.apply(this, args);\n },\n\n /**\n * @private\n */\n __createInput: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.INPUT_OPTIONS);\n return InputFactory.create(options);\n },\n\n /**\n * @private\n */\n __createWrapper: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.WRAPPER_OPTIONS);\n return new InputWrapper(options);\n },\n\n /**\n * @private\n */\n __createLabel: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.LABEL_OPTIONS);\n return new InputLabel(options);\n },\n\n /**\n * @private\n */\n _createContainer: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.CONTAINER_OPTIONS);\n return new InputContainer(options);\n },\n\n /**\n * Stores the current attributes of the model to a private property\n * @param {Okta.BaseModel} model The model\n * @private\n */\n __saveModelState: function (model) {\n this.__originalModel = oktaJQueryStatic.extend(true, {}, model.attributes);\n },\n\n /**\n * @override\n * @ignore\n */\n add: function (...args) {\n // sets a default element selector\n typeof args[1] === 'undefined' && (args[1] = '> div.o-form-content > .o-form-fieldset-container');\n return BaseView.prototype.add.apply(this, args);\n },\n\n /**\n * Set the focus on the first input in the form\n */\n focus: function () {\n const first = this.getInputs().first();\n\n if (first && first.focus) {\n first.focus();\n }\n\n return this;\n },\n\n /**\n * Disable all inputs in the form\n * @deprecated not currently in use\n */\n disable: function () {\n this.invoke('disable');\n return this;\n },\n\n /**\n * Enable all inputs in the form\n * @deprecated not currently in use\n */\n enable: function () {\n this.invoke('enable');\n },\n\n /**\n * Set the max-height for o-form-content class container within the form if a height is provided,\n * otherwise, get its computed inner height\n * @param {Number} the height in pixel to set for class o-form-content\n * @return {Number}\n */\n contentHeight: function (height) {\n const content = this.$('.o-form-content');\n\n if (oktaUnderscore.isNumber(height)) {\n content.css('max-height', height);\n } else {\n return content.height();\n }\n },\n\n /**\n * Get only the input children\n * @return {InputWrapper[]} An underscore wrapped array of {@link InputWrapper} instances\n */\n getInputs: function () {\n return oktaUnderscore(this.filter(function (view) {\n return view instanceof InputWrapper;\n }));\n }\n});\n\nexport { BaseForm as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport ButtonFactory from '../../util/ButtonFactory.js';\nimport StringUtil from '../../util/StringUtil.js';\nimport BaseView from '../BaseView.js';\nimport Callout from '../components/Callout.js';\nimport Keys from '../../util/Keys.js';\n\nconst props = {\n tagName: 'span',\n attributes: function () {\n return {\n 'data-se': 'o-form-input-' + this.getNameString()\n };\n },\n\n /**\n * default placeholder text when options.placeholder is not defined\n */\n defaultPlaceholder: '',\n constructor: function (options) {\n /* eslint complexity: [2, 9] */\n options = oktaUnderscore.defaults(options || {}, {\n inputId: options.id || oktaUnderscore.uniqueId('input'),\n placeholder: this.defaultPlaceholder,\n inlineValidation: true,\n validateOnlyIfDirty: false\n });\n delete options.id; // decorate the `enable` and `disable` and toggle the `o-form-disabled` class.\n // so we wont need to worry about this when overriding the methods\n\n const self = this;\n\n oktaUnderscore.each({\n enable: 'removeClass',\n disable: 'addClass'\n }, function (method, action) {\n self[action] = oktaUnderscore.wrap(self[action], function (fn) {\n fn.apply(self, arguments);\n self.$el[method]('o-form-disabled');\n });\n });\n\n BaseView.call(this, options);\n\n if (oktaUnderscore.result(options, 'readOnly') !== true && oktaUnderscore.result(options, 'read') === true) {\n this.listenTo(this.model, 'change:__edit__', this.render);\n }\n\n if (oktaUnderscore.isFunction(this.focus)) {\n this.focus = oktaUnderscore.debounce(oktaUnderscore.bind(this.focus, this), 50);\n } // Enable inline validation if this is not the first field in the form.\n\n\n if (!oktaUnderscore.result(options, 'validateOnlyIfDirty')) {\n this.addInlineValidation();\n }\n\n this.addModelListeners();\n this.$el.addClass('o-form-input-name-' + this.getNameString());\n },\n addAriaLabel: function () {\n const ariaLabel = this.options.ariaLabel;\n\n if (ariaLabel) {\n this.$(':input').attr('aria-label', ariaLabel);\n }\n },\n addInlineValidation: function () {\n if (oktaUnderscore.result(this.options, 'inlineValidation')) {\n this.$el.on('focusout', ':input', oktaUnderscore.bind(this.validate, this));\n }\n },\n toModelValue: function () {\n let value = this.val();\n\n if (oktaUnderscore.isFunction(this.to)) {\n value = this.to.call(this, value);\n }\n\n if (oktaUnderscore.isFunction(this.options.to)) {\n value = this.options.to.call(this, value);\n }\n\n return value;\n },\n __getDependencyCalloutBtn: function (btnConfig) {\n const self = this;\n\n const btnOptions = oktaUnderscore.clone(btnConfig);\n\n const originalClick = btnOptions.click || function () {}; // add onfocus listener to re-evaluate depedency when callout button is clicked\n\n\n btnOptions.click = function () {\n oktaJQueryStatic(window).one('focus.dependency', function () {\n self.__showInputDependencies();\n });\n originalClick.call(self);\n };\n\n const BaseInputCalloutBtn = BaseView.extend({\n children: [ButtonFactory.create(btnOptions)]\n });\n return new BaseInputCalloutBtn();\n },\n getCalloutParent: function () {\n return this.$('input[value=\"' + this.getModelValue() + '\"]').parent();\n },\n __getCalloutMsgContainer: function (calloutMsg) {\n return BaseView.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"msg\") || (depth0 != null ? lookupProperty(depth0, \"msg\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"msg\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 29\n },\n \"end\": {\n \"line\": 1,\n \"column\": 36\n }\n }\n }) : helper)) + \"\";\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n return {\n msg: calloutMsg\n };\n }\n });\n },\n showCallout: function (calloutConfig, dependencyResolved) {\n const callout = oktaUnderscore.clone(calloutConfig);\n\n callout.className = 'dependency-callout';\n\n if (callout.btn) {\n callout.content = this.__getDependencyCalloutBtn(callout.btn);\n delete callout.btn;\n }\n\n const dependencyCallout = Callout.create(callout);\n\n if (!dependencyResolved) {\n dependencyCallout.add(this.__getCalloutMsgContainer(StringUtil.localize('dependency.callout.msg', 'courage')));\n }\n\n const calloutParent = this.getCalloutParent();\n calloutParent.append(dependencyCallout.render().el);\n\n if (callout.type === 'success') {\n oktaUnderscore.delay(function () {\n // fade out success callout\n dependencyCallout.$el.fadeOut(800);\n }, 1000);\n }\n },\n removeCallout: function () {\n this.$el.find('.dependency-callout').remove();\n },\n __evaluateCalloutObject: function (dependencyResolved, calloutTitle) {\n let defaultCallout;\n\n if (dependencyResolved) {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.completed', 'courage'),\n size: 'large',\n type: 'success'\n };\n } else {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.required', 'courage', [calloutTitle]),\n size: 'large',\n type: 'warning'\n };\n }\n\n return defaultCallout;\n },\n __handleDependency: function (result, callout) {\n const self = this;\n const calloutConfig = oktaUnderscore.isFunction(callout) ? callout(result) : oktaUnderscore.extend({}, callout, self.__evaluateCalloutObject(result.resolved, callout.title)); // remove existing callouts if any\n\n self.removeCallout();\n self.showCallout(calloutConfig, result.resolved);\n },\n __showInputDependencies: function () {\n const self = this;\n const fieldDependency = self.options.deps[self.getModelValue()];\n\n if (fieldDependency && oktaUnderscore.isFunction(fieldDependency.func)) {\n fieldDependency.func().done(function (data) {\n self.__handleDependency({\n resolved: true,\n data: data\n }, fieldDependency.callout);\n }).fail(function (data) {\n self.__handleDependency({\n resolved: false,\n data: data\n }, fieldDependency.callout);\n });\n } else {\n self.removeCallout();\n }\n },\n _isEdited: false,\n hasIMESupport: false,\n\n /**\n * updates the model with the input's value\n */\n update: function (e) {\n if (!this._isEdited && oktaUnderscore.result(this.options, 'validateOnlyIfDirty')) {\n this._isEdited = true;\n this.addInlineValidation();\n }\n\n this.model.set(this.options.name, this.toModelValue());\n\n if (this.options.deps) {\n // check for dependencies\n this.__showInputDependencies();\n }\n /*\n To add IME support for more components\n - Add hasIMESupport boolean flag and compositionend and compositionstart event listeners to the component\n - Supported components: TextBox.js, TextSelect.js\n - Additionally window.okta.enableIMESupport is an org level FF to toggle IME support\n */\n\n\n if (this.hasIMESupport && window?.okta?.enableIMESupport) {\n if (this.isComposing) {\n return;\n }\n\n if (e && Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * Is the input in edit mode\n * @return {Boolean}\n */\n isEditMode: function () {\n const ret = !oktaUnderscore.result(this.options, 'readOnly') && (oktaUnderscore.result(this.options, 'read') !== true || this.model.get('__edit__') === true);\n return ret;\n },\n\n /**\n * Renders the input\n * @readonly\n */\n render: function () {\n this.preRender();\n const params = this.options.params;\n this.options.params = oktaUnderscore.resultCtx(this.options, 'params', this);\n\n if (this.isEditMode()) {\n this.editMode();\n\n if (oktaUnderscore.resultCtx(this.options, 'disabled', this)) {\n this.disable();\n } else {\n this.enable();\n }\n } else {\n this.readMode();\n }\n\n this.options.params = params;\n this.addAriaLabel();\n this.postRender();\n return this;\n },\n\n /**\n * checks if the current value in the model is valid for this field\n */\n validate: function () {\n if (!this.model.get('__pending__') && this.isEditMode() && oktaUnderscore.isFunction(this.model.validateField)) {\n const validationError = this.model.validateField(this.options.name);\n\n if (validationError) {\n oktaUnderscore.delay(function () {\n this.model.trigger('form:clear-error:' + this.options.name);\n this.model.trigger('invalid', this.model, validationError, false);\n }.bind(this), 100);\n }\n }\n },\n\n /**\n * Add model event listeners\n */\n addModelListeners: function () {\n this.listenTo(this.model, 'form:field-error', function (name) {\n if (this.options.name === name) {\n this.__markError();\n }\n });\n this.listenTo(this.model, 'form:clear-errors change:' + this.options.name, this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + this.options.name, this.__clearError);\n },\n\n /**\n * The value of the input\n * @return {Mixed}\n */\n val: function () {\n throw new Error('val() is an abstract method');\n },\n\n /**\n * Set focus on the input\n */\n focus: function () {\n throw new Error('focus() is an abstract method');\n },\n\n /**\n * Default value in read mode\n * When model has no value for the field\n */\n defaultValue: function () {\n return '';\n },\n\n /**\n * Renders the input in edit mode\n */\n editMode: function () {\n const options = oktaUnderscore.extend({}, this.options, {\n value: this.getModelValue()\n });\n\n this.$el.html(this.template(options));\n this.options.multi && this.$el.removeClass('margin-r');\n return this;\n },\n\n /**\n * Renders the readable value of the input in read mode\n */\n readMode: function () {\n this.$el.text(this.getReadModeString());\n this.$el.removeClass('error-field');\n this.options.multi && this.$el.addClass('margin-r');\n return this;\n },\n getReadModeString: function () {\n const readModeStr = oktaUnderscore.resultCtx(this.options, 'readModeString', this);\n\n if (readModeStr) {\n return readModeStr;\n }\n\n return this.toStringValue();\n },\n\n /**\n * The model value off the field associated with the input\n * @return {Mixed}\n */\n getModelValue: function () {\n let value = this.model.get(this.options.name);\n\n if (oktaUnderscore.isFunction(this.from)) {\n value = this.from.call(this, value);\n }\n\n if (oktaUnderscore.isFunction(this.options.from)) {\n value = this.options.from.call(this, value);\n }\n\n return value;\n },\n\n /*\n * convenience method to get the textual value from the model\n * will return the textual label rather than value in case of select/radio\n * @return {String}\n */\n toStringValue: function () {\n let value = this.getModelValue();\n\n if (this.options.options) {\n // dropdown or radio\n value = this.options.options[value];\n }\n\n if (Number.isInteger(value) || typeof value === 'boolean') {\n value = String(value);\n }\n\n return value || this.defaultValue();\n },\n\n /**\n * Triggers a form:resize event in order to tell dialogs content size has changed\n */\n resize: function () {\n this.model.trigger('form:resize');\n },\n\n /**\n * Disable the input\n */\n disable: function () {\n this.$(':input').prop('disabled', true);\n },\n\n /**\n * Enable the input\n */\n enable: function () {\n this.$(':input').prop('disabled', false);\n },\n\n /**\n * Change the type of the input field. (e.g., text <--> password)\n * @param type\n */\n changeType: function (type) {\n this.$(':input').prop('type', type); // Update the options so that it keeps the uptodate state\n\n this.options.type = type;\n },\n getNameString: function () {\n if (oktaUnderscore.isArray(this.options.name)) {\n return this.options.name.join('-');\n }\n\n return this.options.name;\n },\n\n /**\n * Get parameters, computing _.result\n * @param {[type]} options alternative options\n * @return {Object} the params\n */\n getParams: function (options) {\n const opts = options || this.options || {};\n return oktaUnderscore.clone(oktaUnderscore.resultCtx(opts, 'params', this) || {});\n },\n\n /**\n * get a parameter from options.params, compute _.result when needed.\n * @param {String} key\n * @param {Object} defaultValue\n * @return {Object} the params\n */\n getParam: function (key, defaultValue) {\n const result = oktaUnderscore.resultCtx(this.getParams(), key, this);\n\n return !oktaUnderscore.isUndefined(result) ? result : defaultValue;\n },\n\n /**\n * Get a parameter from options.params or if empty, object attribute.\n *\n * @param {String} key\n * @return {Object} the param or attribute\n */\n getParamOrAttribute: function (key) {\n return this.getParam(key) || oktaUnderscore.result(this, key);\n },\n __markError: function () {\n this.$el.addClass('o-form-has-errors');\n },\n __clearError: function () {\n this.$el.removeClass('o-form-has-errors');\n }\n};\n/**\n * @class BaseInput\n * @private\n * An abstract object that defines an input for {@link Okta.Form}\n *\n * BaseInputs are typically not created directly, but being passed to {@link Okta.Form#addInput}\n * @extends Okta.View\n */\n\nvar BaseInput = BaseView.extend(props);\n\nexport { BaseInput as default };\n","import BaseView from '../../BaseView.js';\nimport FormUtil from '../helpers/FormUtil.js';\n\nvar ReadModeBar = BaseView.extend({\n el: '',\n formTitle: '',\n modelEvents: {\n 'change:__edit__': 'toggle'\n },\n initialize: function () {\n this.addButton();\n },\n addButton: function () {\n if (this.model.get('__edit__')) {\n this.add(FormUtil.createReadFormButton({\n type: 'cancel'\n }));\n } else {\n this.add(FormUtil.createReadFormButton({\n type: 'edit',\n formTitle: this.formTitle,\n className: 'disable-in-read-only'\n }));\n }\n },\n toggle: function () {\n this.removeChildren();\n this.addButton();\n }\n});\n\nexport { ReadModeBar as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport BaseView from '../../BaseView.js';\nimport FormUtil from '../helpers/FormUtil.js';\n\nconst proto = {\n className: function () {\n return 'o-form-button-bar';\n },\n buttonOrder: ['previous', 'save', 'cancel'],\n initialize: function (options) {\n const buttonConfigs = {\n previous: {\n type: 'previous'\n },\n save: {\n type: 'save',\n text: oktaUnderscore.resultCtx(options, 'save', this),\n id: oktaUnderscore.resultCtx(options, 'saveId', this),\n className: oktaUnderscore.resultCtx(options, 'saveClassName', this)\n },\n cancel: {\n type: 'cancel',\n text: oktaUnderscore.resultCtx(options, 'cancel', this)\n }\n };\n\n this.__getButtonOrder(options).forEach(buttonName => {\n this.addButton(buttonConfigs[buttonName]);\n });\n },\n\n /**\n * Adds a buttomn to the toolbar\n * @param {Object} params button parameters\n * @param {Object} options {@link Okta.View#add} options\n */\n addButton: function (params, options) {\n return this.add(FormUtil.createButton(params), options);\n },\n __getButtonOrder: function (options) {\n const buttonOrder = oktaUnderscore.resultCtx(options, 'buttonOrder', this, this.buttonOrder);\n\n const buttonsToSkip = [];\n\n if (options.noSubmitButton) {\n buttonsToSkip.push('save');\n }\n\n if (options.noCancelButton) {\n buttonsToSkip.push('cancel');\n }\n\n if (!options.hasPrevStep) {\n buttonsToSkip.push('previous');\n }\n\n return oktaUnderscore.without(buttonOrder, ...buttonsToSkip);\n }\n};\nvar Toolbar = BaseView.extend(proto);\n\nexport { Toolbar as default };\n","import oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\n/* eslint max-statements: 0 */\nconst NAME = 'name';\nconst ENUM_KEY_PREFIX = '_enum_';\n/**\n * Generate Input Options in order to create an input in an Form for Enum type attribute.\n * @param {Object} config informations for creating input options\n * config.name schema property name\n * config.title schema property title\n * config.readOnly create an read only input?\n * config.explain sub-title to the input\n * config.enumValues list of enum values for creating input options (Dropdown/SimpleCheckBoxSet)\n * config.displayType display type of schema property\n *\n * @return {Object} inputOptions options for create an Input view. (Dropdown/SimpleCheckBoxSet)\n *\n */\n\nfunction getEnumInputOptions(config) {\n const enumOneOf = convertToOneOf(config.enumValues);\n const inputOptions = {\n name: config.name,\n label: config.title,\n readOnly: config.readOnly,\n customExplain: config.explain,\n params: {\n enumOneOf: enumOneOf\n },\n options: getDropdownOptionsFromOneOf(enumOneOf)\n }; // input type\n\n if (SchemaUtils.isArrayDataType(config.displayType)) {\n inputOptions.type = 'checkboxset';\n inputOptions.to = valuesToEnumObjects;\n inputOptions.from = enumObjectsToValues;\n } else {\n inputOptions.type = 'select';\n inputOptions.to = valueToEnumObject;\n inputOptions.from = enumObjectToValue;\n }\n\n inputOptions.input = null;\n return inputOptions;\n}\n\nfunction getDropdownOptions(values) {\n return oktaUnderscore.isArray(values) ? getDropdownOptionsFromOneOf(convertToOneOf(values)) : {};\n}\n\nfunction getDropdownOptionsFromOneOf(values) {\n if (!isOneOfEnumObject(values)) {\n return {};\n }\n\n return oktaUnderscore.reduce(values, function (options, value, index) {\n options[convertIndexToEnumIndex(index)] = value.title;\n return options;\n }, {});\n}\n\nfunction convertToOneOf(values) {\n // assume this is a legacy enum array and convert to oneOf object\n if (!oktaUnderscore.all(values, oktaJQueryStatic.isPlainObject)) {\n return convertEnumToOneOf(values); // we assume object without const and title is an enum object which need special conversion\n } else if (!isOneOfEnumObject(values)) {\n return convertEnumObjectToOneOf(values);\n }\n\n return values;\n}\n\nfunction isOneOfEnumObject(values) {\n return oktaUnderscore.isArray(values) && oktaUnderscore.all(values, function (value) {\n return oktaUnderscore.has(value, 'const') && oktaUnderscore.has(value, 'title');\n });\n}\n\nfunction convertEnumToOneOf(values) {\n return oktaUnderscore.map(values, function (value) {\n return {\n const: value,\n title: valueToTitle(value)\n };\n });\n}\n\nfunction valueToTitle(value) {\n if (oktaUnderscore.isObject(value)) {\n return JSON.stringify(value);\n }\n\n if (oktaUnderscore.isNumber(value)) {\n return value + '';\n }\n\n return value;\n}\n\nfunction convertEnumObjectToOneOf(values) {\n const findKey = oktaUnderscore.partial(oktaUnderscore.has, oktaUnderscore, NAME); // If all object found the key NAME, use the NAME's value as display name\n\n\n if (oktaUnderscore.all(values, findKey)) {\n return oktaUnderscore.chain(values).filter(function (value) {\n return oktaJQueryStatic.isPlainObject(value) && oktaUnderscore.has(value, NAME);\n }).map(function (value) {\n return {\n const: value,\n title: value[NAME]\n };\n }).value();\n } // Assume a legacy object array does not need special handling and just convert to const/title enum\n\n\n return convertEnumToOneOf(values);\n}\n\nfunction convertIndexToEnumIndex(index) {\n return `${ENUM_KEY_PREFIX}${index}`;\n}\n\nfunction enumObjectToValue(obj) {\n const index = oktaUnderscore.findIndex(this.options.params.enumOneOf, function (oneOfObj) {\n return oktaUnderscore.isObject(obj) ? oktaUnderscore.isEqual(oneOfObj.const, obj) : oneOfObj.const === obj;\n }); // Cannot rely on comparator in findIndex when compare objects so need special handling\n\n\n return index > -1 ? convertIndexToEnumIndex(index) : obj;\n}\n\nfunction valueToEnumObject(val) {\n if (!oktaUnderscore.isString(val) || val.indexOf(ENUM_KEY_PREFIX) !== 0) {\n return val;\n }\n\n const index = val.replace(ENUM_KEY_PREFIX, '');\n const enumValue = this.options.params && oktaUnderscore.isArray(this.options.params.enumOneOf) ? this.options.params.enumOneOf[index] : null; // @see `getEnumInputOptions` how enumValues has been set.\n\n return oktaUnderscore.has(enumValue, 'const') ? enumValue.const : enumValue;\n}\n\nfunction valuesToEnumObjects(values) {\n return oktaUnderscore.map(values, valueToEnumObject.bind(this));\n}\n\nfunction enumObjectsToValues(values) {\n return oktaUnderscore.map(values, enumObjectToValue.bind(this));\n}\n\nfunction isStringConstraint(value) {\n return oktaUnderscore.isString(value) && oktaJQueryStatic.trim(value) !== '';\n}\n\nfunction isNumberConstraint(value) {\n return oktaUnderscore.isNumber(value) || oktaUnderscore.isNumber(StringUtil.parseFloat(oktaJQueryStatic.trim(value)));\n}\n\nfunction isIntegerConstraint(value) {\n const integer = oktaUnderscore.isNumber(value) ? value : StringUtil.parseInt(oktaJQueryStatic.trim(value));\n return typeof integer === 'number' && isFinite(integer) && Math.floor(integer) === integer;\n}\n\nfunction isObjectConstraint(value) {\n if (oktaUnderscore.isObject(value) && !oktaUnderscore.isArray(value)) {\n return true;\n }\n\n const object = StringUtil.parseObject(oktaJQueryStatic.trim(value));\n return oktaUnderscore.isObject(object) && !oktaUnderscore.isArray(object);\n}\n\nfunction isConstraintValueMatchType(value, type) {\n switch (type) {\n case SchemaUtils.STRING:\n return isStringConstraint(value);\n\n case SchemaUtils.NUMBER:\n return isNumberConstraint(value);\n\n case SchemaUtils.INTEGER:\n return isIntegerConstraint(value);\n\n case SchemaUtils.OBJECT:\n return isObjectConstraint(value);\n }\n}\n\nvar EnumTypeHelper = {\n getEnumInputOptions: getEnumInputOptions,\n getDropdownOptions: getDropdownOptions,\n convertToOneOf: convertToOneOf,\n isConstraintValueMatchType: isConstraintValueMatchType\n};\n\nexport { EnumTypeHelper as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport BaseView from '../../BaseView.js';\n\nvar ErrorBanner = BaseView.extend({\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"errorSummary\") || (depth0 != null ? lookupProperty(depth0, \"errorSummary\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"errorSummary\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 130\n },\n \"end\": {\n \"line\": 1,\n \"column\": 146\n }\n }\n }) : helper)) + \"

          \";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((lookupProperty(helpers, \"i18n\") || depth0 && lookupProperty(depth0, \"i18n\") || container.hooks.helperMissing).call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"i18n\",\n \"hash\": {\n \"bundle\": \"courage\",\n \"code\": \"oform.errorbanner.title\"\n },\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 161\n },\n \"end\": {\n \"line\": 1,\n \"column\": 217\n }\n }\n })) + \"

          \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"
          \" + ((stack1 = lookupProperty(helpers, \"if\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"errorSummary\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.program(3, data, 0),\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 107\n },\n \"end\": {\n \"line\": 1,\n \"column\": 228\n }\n }\n })) != null ? stack1 : \"\") + \"
          \";\n },\n \"useData\": true\n }),\n modelEvents: {\n 'form:clear-errors': 'remove'\n }\n});\n\nexport { ErrorBanner as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\nconst FIELD_REGEX = /^([\\S]+): (.+)$/;\nvar ErrorParser = {\n /**\n * Helper function that returns the json output of an xhr objext\n * @param {jqXhr} xhr\n * @return {Object}\n */\n getResponseJSON: function (xhr) {\n try {\n return xhr.responseJSON || JSON.parse(xhr.responseText);\n } catch (e) {// ignore error\n }\n },\n\n /**\n * Parses an error summary to extract a field name and an error message\n * @param {String} errorSummary The raw error summary\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorSummary: function (errorSummary) {\n const matches = errorSummary.match(FIELD_REGEX); // error format is: `fieldName: The field cannot be left blank`\n\n if (matches) {\n return [matches[1], matches[2]];\n }\n },\n\n /**\n * Parses an error cause object to extract a field name from property attribute\n * and an error message form errorSummary attribute. It looks to see if there is\n * a custom override/translation for the erorrCause.reason before using the errorSummary\n * @param {Object} errorCause object\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorCauseObject: function (errorCause) {\n if (errorCause.property && errorCause.errorSummary) {\n const localizedMsg = StringUtil.localize(errorCause.reason);\n const apiMsg = errorCause.errorSummary;\n const field = errorCause.property;\n const errorMessage = localizedMsg.indexOf('L10N_ERROR[') === -1 ? localizedMsg : apiMsg;\n return [field, errorMessage];\n }\n },\n parseErrors: function (resp) {\n const responseJSON = this.getResponseJSON(resp);\n return oktaUnderscore.map(responseJSON && responseJSON.errorCauses || [], function (errorCause) {\n return ('' + errorCause.errorSummary).replace(FIELD_REGEX, '$2');\n });\n },\n\n /**\n * Parses the response for errors\n * Returns a map of field names > array or error messages\n * Example:\n * ```javascript\n * {\n * url: ['The field cannot be left blank', 'The field has to be a valid URI'],\n * name: ['The field cannot be left blank']\n * }\n * ```\n * @param {Object} resp\n * @return {Object}\n */\n parseFieldErrors: function (resp) {\n const responseJSON = this.getResponseJSON(resp);\n const errors = {}; // xhr error object\n\n if (responseJSON) {\n /* eslint complexity: [2, 9] */\n oktaUnderscore.each(responseJSON.errorCauses || [], function (cause) {\n let res = [];\n\n if (cause.property && cause.errorSummary) {\n res = this.parseErrorCauseObject(cause);\n } else if (cause.location && cause.errorSummary) {\n // To handle new api error format for field level errors.\n // Ignoring the reason attribute as the translation happens in the API layer and not in the client any more.\n res = [cause.location, cause.errorSummary];\n } else {\n res = this.parseErrorSummary(cause && cause.errorSummary || '');\n }\n\n if (res) {\n const fieldName = res[0];\n const message = res[1];\n errors[fieldName] || (errors[fieldName] = []);\n errors[fieldName].push(message);\n }\n }, this);\n } // validation key/value object\n else if (oktaUnderscore.isObject(resp) && oktaUnderscore.size(resp)) {\n oktaUnderscore.each(resp, function (msg, field) {\n errors[field] = [msg];\n });\n }\n\n return oktaUnderscore.size(errors) ? errors : undefined;\n }\n};\n\nexport { ErrorParser as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport Logger from '../../../util/Logger.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport ViewUtil from '../../../util/ViewUtil.js';\nimport BaseView from '../../BaseView.js';\n\n/* eslint max-params: [2, 6] */\nconst LABEL_OPTIONS = ['model', 'id', 'inputId', 'type', 'label', 'sublabel', 'tooltip', 'name', 'group'];\nconst CONTAINER_OPTIONS = ['wide', 'multi', 'input', 'label-top', 'explain', 'explain-top', 'customExplain', 'model', 'name', 'type', 'autoRender', 'multirowError'];\nconst WRAPPER_OPTIONS = ['model', 'name', 'label-top', 'readOnly', 'events', 'initialize', 'showWhen', 'bindings', 'render', 'className', 'data-se', 'toggleWhen', 'group'];\nconst INPUT_OPTIONS = ['model', 'name', 'inputId', 'type', // base options\n'input', // custom input\n'placeholder', 'label', // labels\n'readOnly', 'read', 'disabled', 'readModeString', // modes\n'options', // select/radio\n'deps', // used to specify inputs that have dependencies and show a callout to user on select\n'from', 'to', // model transformers,\n'autoRender', // model attributes change event to trigger rerendering of the input\n'inlineValidation', // control inline validating against the model on focus lost\n'validateOnlyIfDirty', // check if field has been interacted with and then validate\n'ariaLabel', // 508 compliance for inputs that do not have label associated with them\n'params', 'autoComplete', // autocomplete attribute\n'sortByKey'];\nconst OTHER_OPTIONS = ['errorField' // widgets params - for input specific widgets\n];\n\nconst ALL_OPTIONS = oktaUnderscore.uniq(oktaUnderscore.union(LABEL_OPTIONS, CONTAINER_OPTIONS, WRAPPER_OPTIONS, INPUT_OPTIONS, OTHER_OPTIONS));\n\nconst SAVE_BUTTON_PHASES = ['• ', '• • ', '• • • ', '• • • •', ' • • •', ' • •', ' •', ' ', ' ', ' '];\n\nfunction decorateDoWhen(doWhen) {\n if (doWhen && !doWhen['__edit__']) {\n return oktaUnderscore.extend({\n __edit__: oktaUnderscore.constant(true)\n }, doWhen);\n }\n}\n\nfunction createButton(options) {\n options = oktaUnderscore.pick(options || {}, 'action', 'id', 'className', 'text', 'type');\n let timeoutId;\n let intervalId;\n let phaseCount;\n return BaseView.extend({\n tagName: 'input',\n className: 'button',\n events: {\n click: function () {\n if (options.action && !this.disabled()) {\n options.action.call(this);\n }\n },\n keyup: function (e) {\n if (Keys.isEnter(e) && options.action && !this.disabled()) {\n options.action.call(this);\n }\n }\n },\n disabled: function () {\n return this.$el.prop('disabled') === true;\n },\n disable: function () {\n this.$el.prop('disabled', true);\n this.$el.addClass('btn-disabled');\n },\n enable: function () {\n this.$el.prop('disabled', false);\n this.$el.removeClass('btn-disabled');\n },\n initialize: function () {\n const self = this;\n this.$el.attr('type', options.type === 'save' ? 'submit' : 'button');\n this.$el.val(options.text);\n\n if (options.id) {\n this.$el.attr('id', options.id);\n }\n\n if (options.className) {\n this.$el.addClass(options.className);\n }\n\n if (options.type) {\n this.$el.attr('data-type', options.type);\n }\n\n this.$el.mousedown(function () {\n self.model.set('__pending__', true);\n });\n this.$el.mouseup(function () {\n self.model.set('__pending__', false);\n });\n this.listenTo(this.model, 'form:set-saving-state', function () {\n this.disable();\n\n if (options.type === 'save') {\n timeoutId = setTimeout(oktaUnderscore.bind(this.__changeSaveText, this), 1000);\n }\n });\n this.listenTo(this.model, 'form:clear-saving-state', function () {\n this.enable();\n\n if (options.type === 'save') {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n this.$el.val(options.text);\n }\n });\n },\n __changeSaveText: function () {\n phaseCount = 0;\n intervalId = setInterval(oktaUnderscore.bind(this.__showLoadingText, this), 200);\n },\n __showLoadingText: function () {\n this.$el.val(SAVE_BUTTON_PHASES[phaseCount++ % SAVE_BUTTON_PHASES.length]);\n }\n });\n}\n\nfunction validateInput(options, model) {\n /* eslint max-statements: 0, complexity: 0 */\n options || (options = {});\n\n if (options.type === 'label') {\n if (!options.label) {\n Logger.warn('A label input must have a \"label\" parameter', options);\n }\n\n return;\n }\n\n if (options.type === 'button') {\n if (!options.title && !options.icon) {\n Logger.warn('A button input must have a \"title\" and/or an \"icon\" parameter', options);\n }\n\n if (!options.click && !options.href) {\n Logger.warn('A button input must have a \"click\" and/or an \"href\" parameter', options);\n }\n\n return;\n }\n\n if (!options.name && !options.input) {\n Logger.warn('Missing \"name\" or \"input\" parameters', options);\n }\n\n if (oktaUnderscore.isArray(options.name) && oktaUnderscore.isArray(options.input)) {\n throw new Error('Not allowed to have both \"name\" and \"input\" defined as array.');\n }\n\n if (options.type !== 'list' && options.name && model && model.allows) {\n let names = [];\n\n if (oktaUnderscore.isArray(options.name)) {\n names = options.name;\n } else {\n names.push(options.name);\n }\n\n oktaUnderscore.each(names, function (name) {\n if (!model.allows(name)) {\n throw new Error('field not allowed: ' + options.name);\n }\n });\n }\n\n if (oktaUnderscore.isArray(options.input) && options.type !== 'list') {\n oktaUnderscore.each(options.input, function (input) {\n validateInput(input, model);\n });\n }\n\n const keys = oktaUnderscore.keys(options);\n\n const intersection = oktaUnderscore.intersection(keys, ALL_OPTIONS);\n\n if (oktaUnderscore.size(intersection) !== oktaUnderscore.size(options)) {\n const fields = oktaUnderscore.clone(ALL_OPTIONS);\n\n Logger.warn('Invalid input parameters', oktaUnderscore.without(keys, ...fields), options);\n }\n}\n\nfunction generateInputOptions(options, form, createFn) {\n options = oktaUnderscore.clone(options);\n\n if (oktaUnderscore.contains(['list', 'group'], options.type)) {\n options.params = oktaUnderscore.defaults({\n create: createFn,\n inputs: oktaUnderscore.map(oktaUnderscore.isArray(options.input) ? options.input : [options.input], function (input) {\n return oktaUnderscore.first(generateInputOptions(input, form, createFn));\n })\n }, options.params || {});\n delete options.input;\n }\n\n const inputs = oktaUnderscore.isArray(options.input) ? oktaUnderscore.clone(options.input) : [options];\n return oktaUnderscore.map(inputs, function (input) {\n const target = oktaUnderscore.defaults({\n model: form.model\n }, input, oktaUnderscore.omit(options, 'input', 'inputs'), form.options, {\n id: oktaUnderscore.uniqueId('input'),\n readOnly: form.isReadOnly(),\n read: form.hasReadMode()\n });\n\n if (form.isReadOnly()) {\n target.read = target.readOnly = true;\n }\n\n return target;\n });\n}\n\nvar FormUtil = {\n LABEL_OPTIONS: LABEL_OPTIONS,\n CONTAINER_OPTIONS: CONTAINER_OPTIONS,\n WRAPPER_OPTIONS: WRAPPER_OPTIONS,\n INPUT_OPTIONS: INPUT_OPTIONS,\n generateInputOptions: generateInputOptions,\n changeEventString: function (fieldNames) {\n return 'change:' + fieldNames.join(' change:');\n },\n createReadFormButton: function (options) {\n let action;\n let text;\n let ariaLabel;\n\n if (options.type === 'cancel') {\n text = ariaLabel = StringUtil.localize('oform.cancel', 'courage');\n\n action = function () {\n this.model.trigger('form:cancel');\n };\n } else {\n text = StringUtil.localize('oform.edit', 'courage');\n ariaLabel = text + ' ' + options.formTitle;\n\n action = function () {\n this.model.set('__edit__', true);\n };\n }\n\n return BaseView.extend({\n tagName: 'a',\n className: options.className,\n attributes: {\n href: '#',\n 'aria-label': ariaLabel\n },\n // TODO: refactor to enforce precompiled templates OKTA-309852\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function () {\n return oktaUnderscore.escape(text);\n },\n events: {\n click: function (e) {\n e.preventDefault();\n action.call(this);\n }\n }\n });\n },\n createButton: function (options) {\n options = oktaUnderscore.clone(options);\n\n switch (options.type) {\n case 'save':\n oktaUnderscore.defaults(options, {\n className: 'button-primary'\n });\n\n break;\n\n case 'cancel':\n oktaUnderscore.defaults(options, {\n className: 'button-clear',\n text: StringUtil.localize('oform.cancel', 'courage'),\n action: function () {\n this.model.trigger('form:cancel');\n }\n });\n\n break;\n\n case 'previous':\n oktaUnderscore.defaults(options, {\n text: StringUtil.localize('oform.previous', 'courage'),\n action: function () {\n this.model.trigger('form:previous');\n }\n });\n\n break;\n }\n\n return createButton(options);\n },\n validateInput: validateInput,\n\n /**\n * Applies a show-when logic on a view instance.\n * The show-when is a map of a model field name -> a boolean or a function that returns a boolean.\n * The view will toggle based on the field value.\n *\n * @param {Okta.View} view a view instance that has a this.model attached to it\n * @param {Object} showWhen\n */\n applyShowWhen: function (view, showWhen) {\n const toggleAndResize = function (bool) {\n return function () {\n // The `toggle` is here since an event may be triggered before the el is in the DOM\n // and in that case slide events may not function as expected.\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n };\n };\n\n ViewUtil.applyDoWhen(view, decorateDoWhen(showWhen), function (bool, options) {\n if (!options.animate) {\n view.$el.toggle(bool);\n } else {\n view.$el['slide' + (bool ? 'Down' : 'Up')](200, toggleAndResize(bool));\n }\n });\n },\n applyToggleWhen: function (view, toggleWhen) {\n ViewUtil.applyDoWhen(view, decorateDoWhen(toggleWhen), function (bool, options) {\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n\n if (options.animate) {\n view.render();\n }\n });\n }\n};\n\nexport { FormUtil as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Logger from '../../../util/Logger.js';\nimport Util from '../../../util/Util.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport BaseView from '../../BaseView.js';\n\nconst isABaseView = Util.isABaseView;\n/**\n * @class InputContainer\n * @private\n *\n * TODO: OKTA-80796\n * Attention: Please change with caution since this is used in other places\n */\n\nvar InputContainer = BaseView.extend({\n attributes: function () {\n return {\n 'data-se': 'o-form-input-container'\n };\n },\n className: function () {\n let className = 'o-form-input';\n\n if (this.options.wide) {\n className += ' o-form-wide';\n }\n\n if (oktaUnderscore.contains([1, 2, 3, 4], this.options.multi)) {\n className += ' o-form-multi-input-' + this.options.multi;\n\n if (oktaUnderscore.isArray(this.options.input)) {\n const inputGroup = oktaUnderscore.find(this.options.input, function (input) {\n return oktaUnderscore.contains(['text+select', 'select+text'], input.options.type);\n });\n\n inputGroup && (className += ' o-form-multi-input-group-' + this.options.multi);\n }\n }\n\n return className;\n },\n _getNames: function () {\n const names = oktaUnderscore.isArray(this.options.name) ? this.options.name : [this.options.name];\n /*eslint complexity: 0 */\n\n if (this.options.type === 'group') {\n names.push.apply(names, oktaUnderscore.pluck(this.options.input[0].options.params.inputs, 'name'));\n } else if (oktaUnderscore.isArray(this.options.name)) {\n if (this.options.input && this.options.input.options && this.options.input.options.name) {\n names.push(this.options.input.options.name);\n }\n } else if (this.options.input) {\n if (oktaUnderscore.isArray(this.options.input)) {\n oktaUnderscore.each(this.options.input, function (inputItem) {\n names.push(inputItem.options.name);\n });\n } else {\n names.push(this.options.input.options.name);\n }\n }\n\n return oktaUnderscore.uniq(oktaUnderscore.compact(names));\n },\n _getInputElement: function () {\n // NOTE: this.options.input is sometimes not an array under test\n const lastInput = Array.isArray(this.options.input) ? oktaUnderscore.last(this.options.input) : this.options.input; // FIXME: replace with _.get\n\n const id = lastInput && lastInput.options && lastInput.options.inputId;\n const el = id ? this.$('#' + id) : null;\n return el && el.length ? el : null;\n },\n constructor: function () {\n /* eslint max-statements: [2, 18] */\n BaseView.apply(this, arguments);\n const explainTop = this.options['explain-top'] && this.options['label-top'];\n\n if (this.options.input) {\n if (oktaUnderscore.isArray(this.options.input)) {\n oktaUnderscore.each(this.options.input, function (inputItem) {\n this.add(inputItem, {\n prepend: !explainTop\n });\n }, this);\n } else {\n this.add(this.options.input, {\n prepend: !explainTop\n });\n }\n }\n\n this.__setExplain(this.options);\n\n const names = this._getNames();\n\n this.listenTo(this.model, 'form:field-error', function (name, errors) {\n if (oktaUnderscore.contains(names, name)) {\n this.__setError(errors, explainTop);\n }\n });\n this.listenTo(this.model, 'form:clear-errors change:' + names.join(' change:'), this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + names.join(' form:clear-error:'), this.__clearError);\n\n if (oktaUnderscore.resultCtx(this.options, 'autoRender', this)) {\n this.listenTo(this.model, 'change:' + this.options.name, this.render);\n }\n\n this.__errorState = false;\n },\n\n /**\n * Populates the explain on the input container (if it exists). There are\n * two ways to use this:\n * 1. Raw text - wraps in the correct html template\n * 2. Custom html\n * - pass in a View class (preferred)\n * - pass in an instance of a View\n * Some additional notes:\n * - You can pass a function that returns any of the above\n * - This maintains support for the deprecated \"customExplain\" property\n * that was used before. This pattern is superseded by explain, so use\n * that instead.\n * @private\n */\n __setExplain: function (options) {\n let explain; // Deprecated - if you need custom html, use explain instead\n\n if (options.customExplain) {\n Logger.warn('Deprecated - use explain instead of customExplain');\n this.add(this.options.customExplain);\n return;\n }\n\n explain = options.explain;\n\n if (oktaUnderscore.isFunction(explain) && !isABaseView(explain)) {\n explain = oktaUnderscore.resultCtx(this.options, 'explain', this);\n }\n\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"

          \";\n },\n \"useData\": true\n });\n this.add(explain, ' > .o-form-explain');\n } else {\n this.template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"explain\") || (depth0 != null ? lookupProperty(depth0, \"explain\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"explain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 26\n },\n \"end\": {\n \"line\": 1,\n \"column\": 37\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n });\n }\n },\n\n /**\n * Highlight the input as invalid (validation failed)\n * Adds an explaination message of the error\n * @private\n */\n __setError: function (errors, explainTop) {\n this.__errorState = true;\n this.$el.addClass('o-form-has-errors');\n\n const errorId = oktaUnderscore.uniqueId('input-container-error');\n\n const html = this.__getHTMLForError(oktaUnderscore.flatten(errors), errorId);\n\n const $elExplain = this.$('.o-form-explain').not('.o-form-input-error').first();\n\n if ($elExplain.length && !explainTop) {\n $elExplain.before(html);\n } else {\n this.$el.append(html);\n }\n\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', errorId);\n target.attr('aria-invalid', true);\n },\n __getHTMLForError: function (errors, errorId) {\n const tmpl = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + alias4((helper = (helper = lookupProperty(helpers, \"text\") || (depth0 != null ? lookupProperty(depth0, \"text\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"text\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 184\n },\n \"end\": {\n \"line\": 1,\n \"column\": 192\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n });\n\n const iconLabel = StringUtil.localize('oform.error.icon.ariaLabel', 'courage'); // 'Error'\n\n if (this.options.multirowError) {\n let html = '';\n errors.forEach(error => {\n html = html + tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: error\n });\n });\n return html;\n }\n\n return tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: errors.join(', ')\n });\n },\n\n /**\n * Un-highlight the input and remove explaination text\n * @private\n */\n __clearError: function () {\n if (this.__errorState) {\n this.$('.o-form-input-error').remove();\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', null);\n target.attr('aria-invalid', null);\n this.$el.removeClass('o-form-has-errors');\n this.__errorState = false;\n\n oktaUnderscore.defer(() => {\n this.model.trigger('form:resize');\n });\n }\n },\n focus: function () {\n this.each(function (view) {\n if (view.focus) {\n return view.focus();\n }\n });\n return this;\n }\n});\n\nexport { InputContainer as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport InputRegistry from './InputRegistry.js';\n\n/* eslint complexity: 0, max-statements: 0 */\n\nfunction createInput(Input, options) {\n if (InputRegistry.isBaseInput(Input)) {\n return Input.prototype ? new Input(oktaUnderscore.omit(options, 'input')) : Input;\n } else {\n return Input;\n }\n}\n\nfunction create(options) {\n options = oktaUnderscore.clone(options);\n\n if (options.input) {\n return createInput(options.input, options);\n }\n\n const Input = InputRegistry.get(options);\n\n if (!Input) {\n throw new Error('unknown input: ' + options.type);\n }\n\n return createInput(Input, options);\n}\n\nfunction supports(options) {\n return !!options.input || !!InputRegistry.get(options);\n}\n\nvar InputFactory = {\n create: create,\n supports: supports\n};\n\nexport { InputFactory as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport 'qtip';\nimport BaseView from '../../BaseView.js';\n\n/**\n * @class InputLabel\n * @extends {Okta.View}\n * @private\n * The input's label.\n */\nvar InputLabel = BaseView.extend({\n className: 'okta-form-label o-form-label',\n attributes: {\n 'data-se': 'o-form-label'\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {String} [options.type] Input type\n * @param {String|Function} [options.label] Label text\n * @param {String|Function} [options.sublabel] Sub label text\n * @param {String|Function} [options.tooltip] Tooltip text\n * @param {String|Function} [options.inputId] Id of the inputs\n * @param {String|Function} [options.id] Id of the inputs\n */\n constructor: function (options) {\n /* eslint max-statements: [2, 16] complexity: [2, 7]*/\n oktaUnderscore.defaults(options, {\n inputId: options.id\n });\n\n delete options.id;\n BaseView.apply(this, arguments);\n },\n // standardLabel: space added in the end of the label to avoid selecting label text with double click in read mode\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"label\") || (depth0 != null ? lookupProperty(depth0, \"label\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 116\n },\n \"end\": {\n \"line\": 1,\n \"column\": 125\n }\n }\n }) : helper));\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"9\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"sublabel\") || (depth0 != null ? lookupProperty(depth0, \"sublabel\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"sublabel\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 256\n },\n \"end\": {\n \"line\": 1,\n \"column\": 268\n }\n }\n }) : helper)) + \"\";\n },\n \"11\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"13\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"group\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 28\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_isLabelView\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 28\n },\n \"end\": {\n \"line\": 1,\n \"column\": 89\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_isRadioOrCheckbox\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 89\n },\n \"end\": {\n \"line\": 1,\n \"column\": 132\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_standardLabel\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(7, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 132\n },\n \"end\": {\n \"line\": 1,\n \"column\": 210\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"sublabel\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(9, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 210\n },\n \"end\": {\n \"line\": 1,\n \"column\": 282\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"tooltip\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(11, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 282\n },\n \"end\": {\n \"line\": 1,\n \"column\": 397\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"group\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(13, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 397\n },\n \"end\": {\n \"line\": 1,\n \"column\": 426\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n const options = {\n label: ''\n };\n\n oktaUnderscore.each(['inputId', 'label', 'sublabel', 'tooltip', 'group'], function (option) {\n options[option] = oktaUnderscore.resultCtx(this.options, option, this);\n }, this);\n\n if (this._isLabelView(options.label)) {\n options._isLabelView = true;\n } else if (oktaUnderscore.contains(['radio', 'checkbox'], this.options.type) || !options.label) {\n options._isRadioOrCheckbox = true;\n } else {\n options._standardLabel = true;\n }\n\n if (options.tooltip) {\n if (oktaUnderscore.isString(options.tooltip)) {\n options.tooltip = {\n text: options.tooltip\n };\n }\n }\n\n return options;\n },\n _isLabelView: function (label) {\n return !oktaUnderscore.isUndefined(label) && label instanceof BaseView;\n },\n postRender: function () {\n const options = this.getTemplateData();\n\n if (this._isLabelView(options.label)) {\n this.removeChildren();\n this.add(options.label, 'label');\n }\n\n if (options.tooltip) {\n this.$('.o-form-tooltip').qtip(oktaUnderscore.extend({\n style: {\n classes: 'qtip-custom qtip-shadow'\n },\n position: {\n my: window.okta && window.okta.theme === 'dstheme' ? 'bottom center' : 'bottom left',\n at: 'top center'\n },\n hide: {\n fixed: true\n },\n show: {\n delay: 0\n }\n }, options.tooltip.options));\n }\n }\n});\n\nexport { InputLabel as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\n\nconst registry = {};\n\nfunction isBaseInput(input) {\n if (oktaUnderscore.isFunction(input)) {\n return oktaUnderscore.isFunction(input.prototype.editMode) && oktaUnderscore.isFunction(input.prototype.readMode);\n } else {\n return oktaUnderscore.isObject(input) && oktaUnderscore.isFunction(input.editMode) && oktaUnderscore.isFunction(input.readMode);\n }\n}\n/**\n * @class module:Okta.internal.views.forms.helpers.InputRegistry\n */\n\n\nvar InputRegistry = /** @lends module:Okta.internal.views.forms.helpers.InputRegistry */\n{\n isBaseInput: isBaseInput,\n\n /**\n * Register a form input\n * @param {String} type string identifier for the input\n * @param {BaseInput} input the input to register\n * @return {void}\n */\n register: function (type, input) {\n registry[type] = input;\n },\n\n /**\n * Get a form input by type\n * @param {Object} options input definition\n * @param {String} options.type string identifier for the input\n * @return {BaseInput} a matching input\n */\n get: function (options) {\n const input = registry[options.type];\n return input && (isBaseInput(input) ? input : input(options));\n },\n\n /**\n * Unregister an input type\n * @param {String} type\n */\n unregister: function (type) {\n delete registry[type];\n }\n};\n\nexport { InputRegistry as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport BaseView from '../../BaseView.js';\nimport FormUtil from './FormUtil.js';\n\nfunction runCallback(callback, field) {\n callback.apply(this, oktaUnderscore.map(field.split(/\\s+/), function (field) {\n return this.model.get(field);\n }, this));\n}\n\nfunction runIf(fn, ctx) {\n if (oktaUnderscore.isFunction(fn)) {\n fn.call(ctx);\n }\n}\n/**\n * @class InputWrapper\n * @extends Okta.View\n * @private\n * The outer wrapper that warps the label and the input container\n */\n\n\nvar InputWrapper = BaseView.extend({\n tagName: function () {\n if (this.options.group) {\n return 'fieldset';\n }\n\n return 'div';\n },\n className: function () {\n let className = 'o-form-fieldset';\n\n if (this.options['label-top']) {\n className += ' o-form-label-top';\n }\n\n if (this.options.readOnly) {\n className += ' o-form-read-mode';\n }\n\n return className;\n },\n attributes: function () {\n return {\n 'data-se': this.options['data-se'] || 'o-form-fieldset'\n };\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {Object} [options.events]\n * @param {Object} [options.bindings]\n * @param {Object} [options.showWhen]\n * @param {Function} [options.initialize] post initialize callback\n * @param {Function} [options.render] post render callback\n */\n constructor: function (options) {\n if (options.className) {\n this.inputWrapperClassName = this.className;\n this.optionsClassName = options.className;\n\n options.className = function () {\n return oktaUnderscore.result(this, 'inputWrapperClassName', '') + ' ' + oktaUnderscore.result(this, 'optionsClassName');\n };\n }\n\n BaseView.apply(this, arguments);\n\n oktaUnderscore.each(options.events || {}, function (callback, event) {\n this.listenTo(this.model, event, callback);\n }, this);\n\n oktaUnderscore.each(options.bindings || {}, function (callback, field) {\n this.listenTo(this.model, FormUtil.changeEventString(field.split(/\\s+/)), oktaUnderscore.bind(runCallback, this, callback, field));\n }, this);\n\n FormUtil.applyShowWhen(this, options.showWhen);\n FormUtil.applyToggleWhen(this, options.toggleWhen);\n runIf(options.initialize, this);\n },\n postRender: function () {\n oktaUnderscore.each(this.options.bindings || {}, runCallback, this);\n\n runIf(this.options.render, this);\n },\n\n /**\n * @return {InputLabel}\n */\n getLabel: function () {\n return this.size() > 1 ? this.at(0) : null;\n },\n\n /**\n * @deprecated ambiguous naming, use {@link #getInputContainer}\n */\n getInput: function () {\n return this.getInputContainer();\n },\n\n /**\n * @return {InputContainer}\n */\n getInputContainer: function () {\n return this.at(this.size() > 1 ? 1 : 0);\n },\n\n /**\n * @return {BaseInput[]}\n */\n getInputs: function () {\n return this.getInputContainer().toArray();\n },\n focus: function () {\n return this.getInput().focus();\n }\n});\n\nexport { InputWrapper as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport BooleanSelect from '../inputs/BooleanSelect.js';\nimport TextBoxSet from '../inputs/TextBoxSet.js';\nimport EnumTypeHelper from './EnumTypeHelper.js';\n\n/* eslint max-statements: 0, max-params: 0 */\n\nfunction convertStringToNumber(string) {\n const number = StringUtil.parseFloat(string);\n return string === '' ? null : number;\n} // converts possibleValues to choices\n// [a, b, c] => {a: a, b: b, c: c}\n\n\nfunction getChoices(values) {\n return oktaUnderscore.object(values, values);\n}\n\nfunction isArray(type) {\n return type && type.indexOf('array') >= 0;\n} // A schema property may have an objectName either\n// at the root level or nested in the items object\n\n\nfunction getObjectName(schemaProp) {\n const items = schemaProp.get('items');\n\n if (items) {\n return items.objectName;\n }\n\n return schemaProp.get('objectName');\n}\n/**\n * Checks the validity of a schema property.\n *\n * @param {SchemaProperty} [schemaProp] A schema property backbone model\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Boolean} true/false\n * @private\n */\n\n\nfunction isValidSchemaProp(schemaProp, values) {\n const objectName = getObjectName(schemaProp);\n const results = values[objectName]; // a schema property that references an empty list of values\n // Im looking at you, google apps.\n\n if (objectName && oktaUnderscore(results).isEmpty()) {\n return false;\n }\n\n return true;\n} // Maps each __displayType__ to a basic set of inputOptions.\n\n\nfunction defaultOptions(property) {\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const name = property.get('name');\n const title = property.get('title');\n /* eslint complexity: [2, 24] */\n\n const inputOptions = {\n type: 'text',\n name: name,\n label: title || name\n }; // @see customOptions for enum complex \"object\" type,\n // a.k.a \"object\" or \"arrayofobject\" type has enum values defined.\n // Other cases (e.g., nested object type) are not support yet.\n\n switch (type) {\n case 'arrayofstring':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'string'\n };\n break;\n\n case 'arrayofnumber':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'number'\n };\n break;\n\n case 'arrayofinteger':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'integer'\n };\n break;\n\n case 'arrayofobject':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: property.get('items').type\n };\n break;\n\n case 'arrayofref-id':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: property.get('items').format\n };\n break;\n\n case 'boolean':\n inputOptions.input = BooleanSelect;\n break;\n\n case 'integer':\n case 'number':\n inputOptions.to = convertStringToNumber;\n break;\n\n case 'reference':\n inputOptions.type = 'select';\n inputOptions.options = getChoices(values);\n break;\n\n case 'image':\n inputOptions.readOnly = true;\n\n inputOptions.from = function (value) {\n return oktaUnderscore.isEmpty(value) ? '' : StringUtil.localize('user.profile.image.image_set', 'courage'); // TODO\n };\n\n break;\n\n case 'password':\n inputOptions.type = 'password';\n break;\n\n case 'date':\n inputOptions.type = 'date';\n break;\n\n case 'uri':\n case 'country-code':\n case 'country_code':\n case 'language-code':\n case 'language_code':\n case 'email':\n case 'locale':\n case 'timezone':\n case 'string':\n case 'object':\n // default input options\n break;\n\n default:\n throw new Error(`unknown type: ${type}`);\n }\n\n return inputOptions;\n} // Sets nonbasic inputOptions, such as an array with possible values\n\n\nfunction customOptions(property) {\n let inputOptions = {};\n const name = property.get('name');\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const prefix = property.get('__fieldNamePrefix__');\n\n if (prefix) {\n inputOptions.name = prefix + name;\n inputOptions.errorField = name;\n }\n\n if (property.isEnumType()) {\n const configs = {\n displayType: type,\n title: property.get('title'),\n enumValues: property.getEnumValues()\n };\n inputOptions = oktaUnderscore.extend({}, EnumTypeHelper.getEnumInputOptions(configs), inputOptions);\n } else if (isArray(type) && values) {\n inputOptions.type = 'checkboxset';\n inputOptions.input = null;\n inputOptions.options = getChoices(values);\n }\n\n return inputOptions;\n}\n\nfunction augmentSchemaProp(schemaProp, possibleValues, profile) {\n const name = schemaProp.get('name');\n const prefix = profile.__nestedProperty__;\n let defaultValues = possibleValues[name];\n const userValues = profile.get(name);\n let values; // If API responds with a field name that differs from the form-field name\n // example: Model's 'profile.username' vs. server's 'username'\n\n if (prefix) {\n schemaProp.set('__fieldNamePrefix__', prefix);\n } // case 1: objectName - fixed list of values are set for the input\n\n\n const fixedValues = possibleValues[getObjectName(schemaProp)]; // case 2: name only - default list of values are provided, user can add more\n // TODO: this case does not yet exist, so it is not tested\n\n if (defaultValues && userValues) {\n defaultValues = oktaUnderscore.union(defaultValues, userValues);\n } // If both fixed and default values exist,\n // take the fixed values unless they are empty\n\n\n if (fixedValues && fixedValues.length) {\n values = fixedValues;\n } else if (defaultValues && defaultValues.length) {\n values = defaultValues;\n }\n\n schemaProp.set('__possibleValues__', values);\n}\n\nfunction augmentSchemaProps(schemaProps, possibleValues, profile) {\n schemaProps.each(function (schemaProp) {\n augmentSchemaProp(schemaProp, possibleValues, profile);\n });\n return schemaProps;\n}\n/**\n * Remove invalid schema properties from a collection\n *\n * @param {SchemaProperties Collection} [properties] A collection of schema properties\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Array} An array of valid schema models, this can be used to reset\n * a schema properties collection for example.\n * @private\n */\n\n\nfunction cleanSchema(properties, values) {\n return properties.filter(function (schema) {\n return isValidSchemaProp(schema, values);\n });\n}\n\nvar SchemaFormFactory = {\n /**\n * Creates the options hash for BaseForm.addInput from a prepared schema\n * property.\n *\n * @param {Okta.Model} [preparedSchemaProp] A schema property backbone model\n * that has been standardized by the prepareSchema method.\n * @return {Object} An object containing all of the options needed by\n * BaseForm's addInput()\n */\n createInputOptions: function (preparedSchemaProp) {\n const custom = customOptions(preparedSchemaProp);\n const standard = defaultOptions(preparedSchemaProp); // underscore did not support nested extend\n // https://github.com/jashkenas/underscore/issues/162\n\n if (custom.params && standard.params) {\n custom.params = oktaUnderscore.defaults(custom.params, standard.params);\n }\n\n return oktaUnderscore.defaults(custom, standard);\n },\n hasValidSchemaProps: function (schemaProps, possibleValues) {\n if (oktaUnderscore.isEmpty(schemaProps)) {\n return false;\n }\n\n const validSchema = cleanSchema(schemaProps, possibleValues);\n return !!validSchema.length;\n },\n\n /**\n * This method is responsible for preparing a collection for the form\n * factory to use by putting all of the information to create an input\n * into the schema property and removing invalid properties.\n * The typical UD form takes 3 models:\n * The data model has the input values.\n * The schema model describes which input to use, such as a textbox or a checkbox.\n * The possible values model provide a list of default options to display, for example in a drop down menu.\n *\n * @param {SchemaProperty Collection} [schemaProps] A schema property backbone model.\n * @param {Object} [possibleValues] An object of the form { key: [value1, value2]}\n * @param {Okta.Model} [profile] A backbone model containing the property described by the schema property.\n * @return {SchemaProperty Collection} A schema property collection with standardized models.\n * The standard schema model adds a couple of additional private properties to\n * allow the form factory to reference lookup values or name prefixes without going to a second model.\n */\n prepareSchema: function (schemaProps, possibleValues, profile) {\n schemaProps.reset(cleanSchema(schemaProps, possibleValues));\n return augmentSchemaProps(schemaProps, possibleValues, profile);\n },\n\n /**\n * `prepareSchema` will reset the property list which may not be necessary at some case.\n * like when setting default value for schema properties.\n * (more detail about such case @see wiki UX, App+Entitlements+for+Provisioning)\n *\n * @param { }\n * @return {String}\n */\n augmentSchemaProps: augmentSchemaProps,\n augmentSchemaProp: augmentSchemaProp\n};\n\nexport { SchemaFormFactory as default };\n","import Select from './Select.js';\n\nconst options = {\n undefined: 'undefined',\n true: 'true',\n false: 'false'\n};\n\nconst from = function (val) {\n if (val) {\n return 'true';\n }\n\n if (val === false) {\n return 'false';\n }\n\n return 'undefined';\n};\n\nconst to = function (val) {\n switch (val) {\n case 'undefined':\n return null;\n\n case 'true':\n return true;\n\n case 'false':\n return false;\n\n default:\n return null;\n }\n};\n\nvar BooleanSelect = Select.extend({\n initialize: function () {\n this.options.options = options;\n this.options.from = from;\n this.options.to = to;\n }\n});\n\nexport { BooleanSelect as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/jquery.custominput.js';\nimport BaseInput from '../BaseInput.js';\n\nvar CheckBox = BaseInput.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n }),\n\n /**\n * @Override\n */\n events: {\n 'change :checkbox': 'update',\n keyup: function (e) {\n e.preventDefault();\n\n if (Keys.isSpaceBar(e)) {\n this.$(':checkbox').click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n let placeholder = oktaUnderscore.resultCtx(this.options, 'placeholder', this);\n\n if (placeholder === '') {\n placeholder = oktaUnderscore.resultCtx(this.options, 'label', this);\n } else if (placeholder === false) {\n placeholder = '';\n }\n\n this.$el.html(this.template(oktaUnderscore.extend(oktaUnderscore.omit(this.options, 'placeholder'), {\n placeholder: placeholder\n })));\n const $input = this.$(':checkbox');\n $input.prop('checked', this.getModelValue() || false);\n this.$('input').customInput();\n this.model.trigger('form:resize');\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':checkbox').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':checkbox').prop('checked');\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$(':checkbox').focus();\n }\n});\n\nexport { CheckBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport Time from '../../../util/Time.js';\nimport BaseView from '../../BaseView.js';\n\nconst isVowel = function (string) {\n return /^[aeiou]/.test(string);\n};\n\nconst getArticle = function (string) {\n return isVowel(string) ? 'an' : 'a';\n};\n\nconst template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + alias4((helper = (helper = lookupProperty(helpers, \"errorExplain\") || (depth0 != null ? lookupProperty(depth0, \"errorExplain\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"errorExplain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 408\n },\n \"end\": {\n \"line\": 1,\n \"column\": 424\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n});\n\nconst errorClass = 'o-form-has-errors';\nconst updateArrayEvent = 'updateArray';\nvar DeletableBox = BaseView.extend({\n tagName: 'div',\n className: 'o-form-input-group',\n events: {\n 'click a': function (e) {\n e.preventDefault();\n this.remove();\n },\n 'keyup input': function () {\n this.update();\n }\n },\n isEditMode: function () {\n return !this.options.readOnly && (this.options.read !== true || this.model.get('__edit__') === true);\n },\n initialize: function () {\n this.template = template(oktaUnderscore.extend(this.options, {\n placeholder: this.getPlaceholderText(),\n errorExplain: this.getErrorExplainText()\n }));\n this.update = oktaUnderscore.debounce(this.update, this.options.debounceDelay || Time.DEBOUNCE_DELAY);\n },\n render: function () {\n if (this.isEditMode()) {\n this.$el.html(this.template);\n } else {\n this.$el.text(this.options.value);\n this.$('a').hide();\n }\n\n return this;\n },\n remove: function () {\n this.trigger(updateArrayEvent, null);\n this.$el.slideUp(() => {\n BaseView.prototype.remove.call(this, arguments);\n });\n },\n update: function () {\n let updatedValue = this.$('input').val();\n\n const parseFunc = oktaUnderscore.object([SchemaUtils.DATATYPE.number, SchemaUtils.DATATYPE.integer], [StringUtil.parseFloat, this.parseInt]);\n\n if (oktaUnderscore.has(parseFunc, this.options.itemType)) {\n updatedValue = parseFunc[this.options.itemType](updatedValue);\n !oktaUnderscore.isNumber(updatedValue) ? this.markInvalid() : this.clearInvalid();\n }\n\n this.trigger(updateArrayEvent, updatedValue);\n },\n markInvalid: function () {\n this.$el.addClass(errorClass);\n },\n clearInvalid: function () {\n this.$el.removeClass(errorClass);\n },\n getPlaceholderText: function () {\n const text = ['Enter'];\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n getErrorExplainText: function () {\n const text = ['Value must be'];\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n parseInt: function (string) {\n // native javascript parseInt is aggressive\n // there're cases we don't want a string to be parsed even though it is convertable\n // so that we don't convert a string silently before warning a user the potential error\n // this is to make sure the string is in an integer format before we parse it\n if (/^-?\\d+$/.test(string)) {\n const num = parseInt(string, 10);\n return !oktaUnderscore.isNaN(num) ? num : string;\n }\n\n return string;\n }\n});\n\nexport { DeletableBox as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport ButtonFactory from '../../../util/ButtonFactory.js';\nimport BaseView from '../../BaseView.js';\nimport BaseInput from '../BaseInput.js';\n\nfunction countInputs(inputs) {\n return oktaUnderscore.filter(inputs || [], function (input) {\n return !oktaUnderscore.contains(['label', 'button', 'select'], input.type);\n }).length;\n}\n\nconst InputGroupLabelInput = BaseInput.extend({\n tagName: 'span',\n initialize: function () {\n this.$el.text(this.getModelValue());\n },\n editMode: function () {\n this.toggle(true);\n },\n readMode: function () {\n this.toggle(false);\n },\n getModelValue: function () {\n return this.options.label;\n },\n toggle: function (isEditMode) {\n this.$el.toggleClass('o-form-label-inline', isEditMode);\n this.$el.toggleClass('o-form-control', !isEditMode);\n },\n focus: oktaUnderscore.noop\n});\n\nfunction createButtonInput(options) {\n return ButtonFactory.create(oktaUnderscore.defaults({\n getReadModeString: oktaUnderscore.constant(' '),\n focus: oktaUnderscore.noop\n }, oktaUnderscore.pick(options, 'click', 'title', 'href', 'icon')));\n}\n\nconst InputGroupInputGroupView = BaseView.extend({\n getParams: BaseInput.prototype.getParams,\n getParam: BaseInput.prototype.getParam,\n className: function () {\n let className; // Allows views to group multiple inputs under one label without any of the other\n // styling/rendering changes that come with using a group input\n\n if (this.getParam('noBaseClasses')) {\n return '';\n }\n\n if (this.getParam('display') === 'text') {\n className = 'o-form-input-group-subtle';\n } else {\n className = 'o-form-input-group';\n }\n\n if (countInputs(this.getParam('inputs')) > 1) {\n className += ' o-form-input-group-2';\n }\n\n return className;\n },\n initialize: function () {\n oktaUnderscore.each(this.getParam('inputs'), function (input) {\n switch (input.type) {\n case 'label':\n this.add(InputGroupLabelInput, {\n options: input\n });\n break;\n\n case 'button':\n this.add(createButtonInput(input));\n break;\n\n default:\n input = oktaUnderscore.defaults({\n model: this.model,\n params: oktaUnderscore.extend({\n autoWidth: true\n }, input.params || {})\n }, input);\n this.add(this.getParams().create(input));\n }\n }, this);\n },\n focus: function () {\n this.first().focus();\n }\n});\nvar InputGroup = BaseInput.extend({\n constructor: function (options) {\n this.inputGroupView = new InputGroupInputGroupView(options);\n BaseInput.apply(this, arguments);\n },\n editMode: function () {\n this.inputGroupView.remove();\n this.inputGroupView = new InputGroupInputGroupView(this.options);\n this.$el.html(this.inputGroupView.render().el);\n },\n readMode: function () {\n // Allows the user to use to the default \"read mode\" of the child inputs instead of\n // rendering a single read mode string for all the child inputs\n if (this.getParam('useChildInputsReadMode')) {\n this.editMode();\n } else {\n BaseInput.prototype.readMode.apply(this, arguments);\n }\n },\n toStringValue: function () {\n const strings = this.inputGroupView.map(function (input) {\n return input.getReadModeString();\n });\n return strings.length && oktaUnderscore.every(strings) ? strings.join(' ') : ' ';\n },\n focus: function () {\n this.inputGroupView.focus();\n }\n}, {\n // test hooks\n LabelInput: InputGroupLabelInput,\n InputGroupView: InputGroupInputGroupView\n});\n\nexport { InputGroup as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport TextBox from './TextBox.js';\n\nconst toggleTemplate = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"useData\": true\n});\n\nconst toggleTimeout = 30000;\nvar PasswordBox = TextBox.extend({\n initialize: function () {\n if (this.__showPasswordToggle()) {\n this.events['click .password-toggle .button-show'] = '__showPassword';\n this.events['click .password-toggle .button-hide'] = '__hidePassword';\n }\n\n this.delegateEvents();\n },\n postRender: function () {\n if (this.isEditMode() && this.__showPasswordToggle()) {\n this.$el.append(toggleTemplate);\n this.$el.find('input[type=\"password\"]').addClass('password-with-toggle');\n }\n\n TextBox.prototype.postRender.apply(this, arguments);\n },\n __showPasswordToggle: function () {\n return this.options.params && this.options.params.showPasswordToggle;\n },\n __showPassword: function () {\n // Turn off the spellcheck if the user decides to switch to regular input\n // in order to prevent sending passwords to third party spellcheckers\n this.$('input').attr('spellcheck', false);\n TextBox.prototype.changeType.apply(this, ['text']);\n this.$('.password-toggle .button-show').hide();\n this.$('.password-toggle .button-hide').show();\n this.passwordToggleTimer = oktaUnderscore.delay(() => {\n this.__hidePassword();\n }, toggleTimeout);\n },\n __hidePassword: function () {\n TextBox.prototype.changeType.apply(this, ['password']);\n this.$('.password-toggle .button-show').show();\n this.$('.password-toggle .button-hide').hide(); // clear timeout\n\n if (this.passwordToggleTimer) {\n clearTimeout(this.passwordToggleTimer);\n }\n }\n});\n\nexport { PasswordBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport Util from '../../../util/Util.js';\nimport BaseView from '../../BaseView.js';\nimport '../../../vendor/plugins/jquery.custominput.js';\nimport BaseInput from '../BaseInput.js';\n\nconst isABaseView = Util.isABaseView;\nconst RadioRadioOption = BaseView.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n }),\n initialize: function (options) {\n let explain;\n explain = options.explain;\n\n if (oktaUnderscore.isFunction(explain) && !isABaseView(explain)) {\n explain = oktaUnderscore.resultCtx(this.options, 'explain', this);\n }\n\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.add('

          ', '.radio-label');\n this.add(explain, '.o-form-explain');\n } else {\n this.add(BaseView.extend({\n className: 'o-form-explain',\n tagName: 'p',\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"explain\") || (depth0 != null ? lookupProperty(depth0, \"explain\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"explain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 11\n }\n }\n }) : helper));\n },\n \"useData\": true\n })\n }), '.radio-label');\n }\n }\n});\nvar Radio = BaseInput.extend({\n /**\n * @Override\n */\n events: {\n 'change :radio': 'update',\n keyup: function (e) {\n if (Keys.isSpaceBar(e)) {\n oktaJQueryStatic(e.target).click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n const templates = [];\n this.$el.empty();\n\n oktaUnderscore.each(this.options.options, function (value, key) {\n const options = {\n optionId: oktaUnderscore.uniqueId('option'),\n name: this.options.inputId,\n realName: this.options.name,\n value: key\n };\n\n if (!oktaUnderscore.isObject(value)) {\n value = {\n label: value\n };\n }\n\n oktaUnderscore.extend(options, value);\n\n templates.push(new RadioRadioOption(options).render().el);\n }, this);\n\n this.$el.append(templates);\n let value = this.getModelValue();\n\n if (value) {\n this.$(':radio[value=' + value + ']').prop('checked', true);\n }\n\n this.$('input').customInput();\n this.model.trigger('form:resize');\n\n if (this.getParam('inline') === true) {\n this.$('div.custom-radio').addClass('inline');\n }\n\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':radio').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':radio:checked').val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('label:eq(0)').focus();\n }\n});\n\nexport { Radio as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/chosen.jquery.js';\nimport BaseInput from '../BaseInput.js';\nimport Util from '../../../util/Util.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\nconst template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n});\n\nconst option = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n});\n\nconst CHOSEN_WINDOW_MARGIN = 20;\nconst isSafari = Util.isSafari; // Chosen has known problems when it's at the bottom of a container that has\n// overflow:hidden set. Because it attaches to the parent container, its\n// dropdown will be cut off in the UI. Any modal with a chosen select element\n// at the bottom will manifest this behavior.\n//\n// The fix (aside from replacing Chosen) is to change Chosen's behavior -\n// use the existing styles, but attach it to 'body' and position it correctly\n// so that it is not affected by a parent overflow.\n//\n// More details can be found in OKTA-46489, OKTA-83570\n\nconst CHOSEN_MAX_HEIGHT = 240;\nconst CHOSEN_Z_INDEX = 50000;\n\nfunction defer(fn) {\n if (this.params.autoWidth) {\n return fn.call(this);\n } else {\n return oktaUnderscore.defer(oktaUnderscore.bind(fn, this));\n }\n}\n\nfunction findSelectWidth(self) {\n self.$select.hide();\n const select = oktaJQueryStatic(self.$select[0]).hide();\n oktaJQueryStatic('body').append(select);\n const width = self.params.width = select.width() * 1.2 + 'px';\n self.$el.append(select.show());\n return width;\n}\n\nfunction recalculateChosen($chosen, $results, $clone) {\n const offset = $clone.offset();\n $chosen.css({\n left: offset.left,\n top: offset.top\n }); // Update the max-height to fit within the constraints of the window. This\n // is especially important for modals because page scrolling is disabled.\n\n const $win = oktaJQueryStatic(window);\n const rHeight = $results.outerHeight();\n const rBottom = rHeight + $results.offset().top - $win.scrollTop();\n const wHeight = $win.height() - CHOSEN_WINDOW_MARGIN;\n const maxHeight = Math.min(rHeight + wHeight - rBottom, CHOSEN_MAX_HEIGHT);\n $results.css('max-height', maxHeight);\n}\n\nfunction handleKeyUpEvent($select, $chosen, $results) {\n const $highlightedOption = $results.find('.active-result.highlighted');\n $chosen.find('#' + $select.attr('id') + '_txt').attr('aria-activedescendant', $highlightedOption.attr('id')); // change the old selected item aria-selected to false\n // and add add it to new item.\n\n $results.find('[aria-selected=true]').attr('aria-selected', 'false');\n $highlightedOption.attr('aria-selected', 'true'); // In case of Safari, add message to aria-live node to be read by screenreader.\n // We need to do this special handling for Safari due to falkiness with aria-activedescendant\n // handling. https://bit.ly/3z45IZF\n\n if (isSafari()) {\n // message read by screenReader i.e optionValue selected(United States selected)\n const message = StringUtil.localize('oform.selectInput.country', 'courage', [$highlightedOption.text()]);\n const elementId = $select.attr('id');\n\n if (message !== '') {\n oktaJQueryStatic(`#${elementId}_aria_div_id`).text(message);\n }\n }\n\n const noResult = $results.find('li.no-results');\n\n if (noResult.length) {\n noResult.attr('role', 'alert');\n }\n}\n\nfunction fixChosenModal($select, textPlaceholder) {\n const $chosen = $select.next('.chzn-container');\n const $clone = $chosen.clone();\n const $results = $chosen.find('.chzn-results');\n const $searchInput = $chosen.find('.chzn-search input[type=text]');\n $searchInput.on('keyup', () => {\n handleKeyUpEvent($select, $chosen, $results);\n });\n $chosen.addClass('closed'); // Will be used in SIW to fix screen reader focus.\n // Use a hidden clone to maintain layout and calculate offset. This is\n // necessary for more complex layouts (like adding a group rule) where\n // the chosen element is floated.\n\n $clone.css('visibility', 'hidden');\n $clone.removeAttr('id');\n $clone.find('li').removeAttr('id'); // Save the original styles - we'll revert to them when the select closes\n\n const baseStyles = {\n left: $chosen.css('left'),\n top: $chosen.css('top'),\n position: $chosen.css('position'),\n float: $chosen.css('float'),\n 'z-index': $chosen.css('z-index')\n };\n $results.hide(); // Handler for any resize events that happen when the results list is open\n\n const resizeHandler = oktaUnderscore.debounce(function () {\n recalculateChosen($chosen, $results, $clone);\n }, 10); // When the dropdown opens, attach it to body, with the correct absolute\n // position coordinates\n\n\n $select.off('.fixChosen'); // Remove events we could have added before\n\n $select.on('liszt:showing_dropdown.fixChosen', function () {\n $chosen.width($chosen.width());\n $select.after($clone); // .chzn-container can trigger the vertical scrollbar if it causes scrollHeight > window height after append to\n // the body. Force top -999999 to avoid the scrollbar so $chosen can find the right offset for relocation.\n\n $chosen.css({\n position: 'absolute',\n float: 'none',\n 'z-index': CHOSEN_Z_INDEX,\n top: -999999\n });\n oktaJQueryStatic('body').append($chosen);\n oktaJQueryStatic('.chzn-search > :text').prop('placeholder', textPlaceholder);\n $results.show();\n recalculateChosen($chosen, $results, $clone); // Capture scroll events:\n // - for forms that use fixed positioning (like editing attributes in\n // Profile Editor) - window scroll\n // - for forms that are too long for the modal - o-form-content scroll\n\n $select.parents().scroll(resizeHandler);\n oktaJQueryStatic(window).on('resize scroll', resizeHandler);\n });\n $select.on('liszt:showing_dropdown', function () {\n $chosen.removeClass('closed');\n }); // When the dropdown closes or the element is removed, revert to the\n // original styles and reattach it to its original placement in the dom.\n\n $select.on('liszt:hiding_dropdown.fixChosen remove.fixChosen', function () {\n $select.parents().off('scroll', resizeHandler);\n oktaJQueryStatic(window).off('resize scroll', resizeHandler);\n $chosen.css(baseStyles);\n $results.hide();\n $chosen.addClass('closed');\n $results.css('max-height', CHOSEN_MAX_HEIGHT);\n $clone.remove();\n $select.after($chosen);\n }); // Do not change the order of event listeners. This event must execute after \n // \"liszt:hiding_dropdown.fixChosen remove.fixChosen\"\n\n $select.on('liszt:hiding_dropdown.fixChosen', function () {\n $searchInput.focus(); // set focus back to input only when the dropdown is closed\n });\n}\n\nvar Select = BaseInput.extend({\n className: 'o-form-select',\n\n /**\n * @Override\n */\n events: {\n 'change select': 'update',\n 'keyup .chzn-search > :text': function (e) {\n if (Keys.isEsc(e)) {\n this.$('.chzn-search > :text').val('');\n e.stopPropagation();\n }\n }\n },\n constructor: function () {\n this.template = template;\n this.option = this.option || option;\n BaseInput.apply(this, arguments);\n this.params = this.options.params || {};\n },\n\n /**\n * @Override\n */\n editMode: function () {\n /* eslint max-statements: [2, 17] */\n this.$el.html(template(this.options));\n this.$select = this.$('select');\n this.appendOptions(); // Fix a regression in jQuery 1.x on Firefox\n // jQuery.val(value) prepends an empty option to the dropdown\n // if value doesnt exist in the dropdown.\n // http://bugs.jquery.com/ticket/13514\n\n const value = this.getModelValue();\n\n if (value) {\n this.$select.val(value);\n } else {\n this.$('option:first-child').prop('selected', true);\n }\n\n this.$el.addClass('o-form-control');\n\n if (this.params.chosen !== false) {\n this.__applyChosen();\n }\n\n return this;\n },\n appendOptions: function () {\n if (!this.getOptions()) {\n return;\n }\n\n const options = this.getOptions();\n const keys = Object.keys(options);\n this.applySortByKey(keys);\n keys.forEach(key => {\n this.$select.append(this.option({\n key: key,\n value: options[key]\n }));\n });\n },\n applySortByKey: function (keys) {\n const sortByKey = this.options.sortByKey;\n\n if (!sortByKey) {\n return;\n }\n\n if (sortByKey instanceof Function) {\n keys.sort(sortByKey);\n }\n\n if (sortByKey === 'asc') {\n keys.sort();\n }\n\n if (sortByKey === 'desc') {\n keys.sort();\n keys.reverse();\n }\n },\n __applyChosen: function (update) {\n let width = this.options.wide ? '100%' : this.params.width || '62%';\n\n if (this.params.autoWidth) {\n width = findSelectWidth(this);\n }\n\n defer.call(this, function () {\n const searchThreshold = this.getParam('searchThreshold', 10);\n\n if (!oktaUnderscore.result(this.options, 'autoRender') && update !== false) {\n this.update();\n }\n\n this.$select.chosen({\n width: width,\n disable_search_threshold: searchThreshold,\n //eslint-disable-line camelcase\n placeholder_text: this.options['placeholder'],\n //eslint-disable-line camelcase\n search_contains: true //eslint-disable-line camelcase\n\n }); //if options are more than search threshold, consider it as a combobox\n\n const isComboBox = this.options && this.options.options && Object.keys(this.options.options).length > searchThreshold;\n this.accessibilityUpdate(isComboBox, this.params);\n fixChosenModal(this.$select, this.searchPlaceholder);\n\n if (this.params.autoWidth) {\n // fix a chosen css bug\n this.$el.width(0);\n }\n\n this.model.trigger('form:resize');\n });\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$select && this.$select.val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n if (this.$select) {\n return this.$select.focus();\n }\n },\n\n /**\n * @Override\n */\n toStringValue: function () {\n const selectedOption = this.getModelValue();\n let displayString = selectedOption;\n const options = this.getOptions();\n\n if (!oktaUnderscore.isEmpty(options)) {\n displayString = options[selectedOption];\n }\n\n if (oktaUnderscore.isUndefined(displayString)) {\n displayString = this.defaultValue();\n }\n\n return displayString || '';\n },\n\n /**\n * Convert options to an object\n * support input options that is a\n * 1. a static object such as {key1: val1, key2: val2...}\n * 2. a function to be called to return a static object\n * will return an object with key-value pairs or with empty content\n * @return {Object} The value\n */\n getOptions: function () {\n let options = this.options.options;\n\n if (oktaUnderscore.isFunction(options)) {\n options = options.call(this);\n }\n\n return oktaUnderscore.isObject(options) ? options : {};\n },\n remove: function () {\n if (this.$select) {\n this.$select.trigger('remove');\n }\n\n return BaseInput.prototype.remove.apply(this, arguments);\n },\n\n /**\n * @param ariaDivId id for div element\n * Create a div element and add it to chosen container.\n */\n createAriaLiveNode: function (ariaDivId) {\n const $chosen = this.$select.next('.chzn-container'); // set this to off-screen such that no user will see this and only screenReaders will pick this up.\n // we should announce to user only on additions and not on removals.\n\n const $node = oktaJQueryStatic('
          ').attr('role', 'log').attr('aria-live', 'polite').attr('id', ariaDivId).attr('aria-relevant', 'additions').attr('aria-atomic', 'false').attr('class', 'off-screen');\n $node.insertAfter($chosen);\n },\n\n /**\n * Code to make the select/combobox component accessible with screen readers.\n *\n * @param {boolean} isComboBox - Is the select a combobox?\n * @param {object} params - params like aria label\n */\n // eslint-disable-next-line max-statements\n accessibilityUpdate: function (isComboBox, params) {\n const txtBoxId = this.$select.attr('id') + '_txt';\n const ariaDivId = this.$select.attr('id') + '_aria_div_id';\n const ulTagId = this.$select.attr('id') + '_ul'; // this is to fix(OKTA-506711) the accessibility issue due to partial support of aria-activedescendant\n // by Safari. Make use of aria-live to make screenReader announce the option selected by user as a workaround.\n\n if (isSafari()) {\n this.createAriaLiveNode(ariaDivId);\n }\n\n this.$('ul[class=chzn-results]').attr('role', 'listbox').attr('id', ulTagId);\n\n if (isComboBox) {\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-autocomplete', 'list').attr('aria-activedescendant', '').attr('role', 'combobox').attr('aria-expanded', 'true').attr('aria-controls', ulTagId);\n } else {\n this.$('input[type=text]').attr('id', txtBoxId).attr('role', 'listbox');\n }\n\n if (params && params.aria && params.aria.label) {\n const ariaLabel = params.aria.label.trim();\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', ariaLabel);\n this.$('ul[class=chzn-results]').attr('aria-label', ariaLabel);\n } else {\n const ariaLabel = this.$el.parent().prev('.o-form-label').find('label').text().trim();\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', ariaLabel);\n this.$('ul[class=chzn-results]').attr('aria-label', ariaLabel);\n }\n\n this.$('.chzn-results .active-result').attr('role', 'option').attr('aria-selected', 'false');\n }\n});\n\nexport { Select as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport 'qtip';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/jquery.placeholder.js';\nimport BaseInput from '../BaseInput.js';\n\nconst className = 'okta-form-input-field input-fix';\n\nfunction hasTitleAndText(options) {\n const title = options.title;\n const text = options.text;\n return title && text && title !== text;\n} // options may be a string or an object.\n\n\nfunction createQtipContent(options) {\n if (hasTitleAndText(options)) {\n return options;\n }\n\n return {\n text: options.text || options\n };\n}\n\nvar TextBox = BaseInput.extend({\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"autoComplete\") || (depth0 != null ? lookupProperty(depth0, \"autoComplete\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"autoComplete\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 333\n },\n \"end\": {\n \"line\": 1,\n \"column\": 349\n }\n }\n }) : helper));\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n return \"off\";\n },\n \"9\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"innerTooltip\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 87\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"icon\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 87\n },\n \"end\": {\n \"line\": 1,\n \"column\": 166\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"iconDivider\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(9, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 371\n },\n \"end\": {\n \"line\": 1,\n \"column\": 444\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n\n /**\n * @Override\n */\n events: {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'compositionend input': function () {\n this.isComposing = false;\n },\n 'compositionstart input': function () {\n this.isComposing = true;\n },\n 'keyup input': function (e) {\n if (Keys.isEnter(e) && !(window.okta && window.okta.enableIMESupport)) {\n this.model.trigger('form:save');\n } else if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n },\n hasIMESupport: true,\n constructor: function () {\n BaseInput.apply(this, arguments);\n this.$el.addClass('o-form-control');\n },\n\n /**\n * @Override\n */\n editMode: function () {\n this.$el.addClass(className);\n BaseInput.prototype.editMode.apply(this, arguments);\n this.$('input').placeholder();\n },\n\n /**\n * @Override\n */\n readMode: function () {\n BaseInput.prototype.readMode.apply(this, arguments);\n\n if (this.options.type === 'password') {\n this.$el.text('********');\n }\n\n this.$el.removeClass(className);\n },\n\n /**\n * @Override\n */\n val: function () {\n let inputValue = this.$('input[type=\"' + this.options.type + '\"]').val(); //IE will only read clear text pw if type=\"password\" is explicitly in selector\n\n if (this.options.type !== 'password') {\n inputValue = oktaJQueryStatic.trim(inputValue);\n }\n\n return inputValue;\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('input').focus();\n },\n postRender: function () {\n const {\n params: params\n } = this.options;\n\n if (params && params.innerTooltip) {\n const content = createQtipContent(params.innerTooltip);\n this.$('.input-tooltip').qtip({\n content: content,\n style: {\n classes: 'okta-tooltip qtip-custom qtip-shadow'\n },\n position: {\n my: 'bottom left',\n // Note: qTip2 has a known issue calculating the tooltip offset when:\n // 1. A container element has both:\n // a) position: relative/absolute\n // b) overlay: value other than 'visible'\n // 2. The page is scrolled\n //\n // We set position:relative and overlay:auto on the body element,\n // where both are required for:\n // - Positioning the footer correctly\n // - Displaying long pages in embedded browsers\n //\n // The original design called for a fixed position relative to the\n // tooltip icon - this has been switched to \"relative to mouse, and\n // update position when mouse moves\" because of this constraint.\n target: 'mouse',\n adjust: {\n method: 'flip',\n mouse: true,\n y: -5,\n x: 5\n },\n viewport: oktaJQueryStatic('body')\n }\n });\n }\n }\n});\n\nexport { TextBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport BaseInput from '../BaseInput.js';\nimport DeletableBox from './DeletableBox.js';\n\nvar TextBoxSet = BaseInput.extend({\n className: 'array-input',\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((lookupProperty(helpers, \"i18n\") || depth0 && lookupProperty(depth0, \"i18n\") || container.hooks.helperMissing).call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"i18n\",\n \"hash\": {\n \"bundle\": \"courage\",\n \"code\": \"oform.add.another\"\n },\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 52\n },\n \"end\": {\n \"line\": 1,\n \"column\": 102\n }\n }\n })) + \"\";\n },\n \"useData\": true\n }),\n params: {\n itemType: 'string'\n },\n events: {\n 'click .array-inputs-button': function (e) {\n e.preventDefault();\n\n if (this.isEditMode()) {\n this.addNewElement();\n }\n }\n },\n initialize: function (options) {\n options || (options = {});\n this.params = oktaUnderscore.defaults(options.params || {}, this.params);\n this.uniqueIdPrefix = 'array';\n },\n // api returns null for an array that does not have value\n // convert it to an empty array\n from: function (val) {\n if (!oktaUnderscore.isArray(val)) {\n return [];\n }\n\n return val;\n },\n // @Override\n editMode: function () {\n this._setArrayObject();\n\n this.$el.html(this.template);\n\n oktaUnderscore.each(this.arrayObject, oktaUnderscore.bind(this._addDeletableBox, this));\n\n return this;\n },\n // @Override\n readMode: function () {\n this.editMode();\n this.$('.array-inputs-button').addClass('link-button-disabled');\n },\n // @Override\n // converts arrayObject to a plain array\n // for string type array, returns all values\n // for number/integer type array, returns values in number type\n val: function () {\n let values = oktaUnderscore.values(this.arrayObject);\n\n if (oktaUnderscore.contains([SchemaUtils.DATATYPE.number, SchemaUtils.DATATYPE.integer], this.params.itemType)) {\n values = oktaUnderscore.filter(values, oktaUnderscore.isNumber);\n }\n\n return values;\n },\n focus: function () {},\n addNewElement: function () {\n const value = '';\n\n const key = oktaUnderscore.uniqueId(this.uniqueIdPrefix);\n\n this.arrayObject[key] = value;\n\n this._addDeletableBox(value, key); // update is called to make sure an empty string value is added for string type array\n\n\n this.update();\n },\n _addDeletableBox: function (value, key) {\n const deletableBox = new DeletableBox(oktaUnderscore.extend(oktaUnderscore.pick(this.options, 'read', 'readOnly', 'model'), {\n key: key,\n value: value,\n itemType: this.params.itemType\n }));\n this.listenTo(deletableBox, 'updateArray', function (updatedValue) {\n if (oktaUnderscore.isNull(updatedValue)) {\n delete this.arrayObject[key];\n this.stopListening(deletableBox);\n } else {\n this.arrayObject[key] = updatedValue;\n }\n\n this.update();\n });\n deletableBox.render().$el.hide();\n this.$('.array-inputs-button').before(deletableBox.el);\n deletableBox.$el.slideDown();\n return deletableBox;\n },\n _setArrayObject: function () {\n const array = this.model.get(this.options.name);\n this.arrayObject = {};\n\n if (oktaUnderscore.isArray(array) && !oktaUnderscore.isEmpty(array)) {\n const keys = [];\n const self = this;\n\n oktaUnderscore(array.length).times(function () {\n keys.push(oktaUnderscore.uniqueId(self.uniqueIdPrefix));\n });\n\n this.arrayObject = oktaUnderscore.object(keys, array);\n }\n }\n});\n\nexport { TextBoxSet as default };\n","// TODO: maybe replaced by\n// https://github.com/Calvein/empty-module\n// https://github.com/crimx/empty-module-loader\nvar ConfirmationDialog = {\n extend: () => {}\n};\n\nexport { ConfirmationDialog as default };\n","export { Collection, Controller, Form, Router, View, createButton, createCallout, internal, loc, registerInput } from './CourageForSigninWidget.js';\nexport { default as Handlebars } from '../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport './courage/util/handlebars/handle-url.js';\nimport './courage/util/handlebars/helper-base64.js';\nimport './courage/util/handlebars/helper-i18n.js';\nimport './courage/util/handlebars/helper-img.js';\nimport './courage/util/handlebars/helper-markdown.js';\nimport './courage/util/handlebars/helper-xsrfTokenInput.js';\nexport { isModelPropertySchema } from './courage/framework/Model.js';\nexport { default as Backbone } from './courage/vendor/lib/backbone.js';\nexport { default as $ } from './courage/util/jquery-wrapper.js';\nexport { default as _ } from './courage/util/underscore-wrapper.js';\nexport { default as Model } from './courage/models/Model.js';\nexport { default as BaseModel } from './courage/models/BaseModel.js';\nexport { default as FrameworkView } from './courage/framework/View.js';\nexport { default as ListView } from './courage/views/Backbone.ListView.js';\n","import oktaJQueryStatic from '../courage/util/jquery-wrapper.js';\n\n/*!\n * jQuery UI Scroll Parent @VERSION\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Modifications Copyright 2021 Okta, Inc.\n */\n// This is required because SIW doesn't want to include jqueryui even though it's an external dependency of courage\n\noktaJQueryStatic.fn.scrollParent = function (includeHidden) {\n const position = this.css(\"position\"),\n excludeStaticParent = position === \"absolute\",\n overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n scrollParent = this.parents().filter(function () {\n const parent = oktaJQueryStatic(this);\n\n if (excludeStaticParent && parent.css(\"position\") === \"static\") {\n return false;\n }\n\n return overflowRegex.test(parent.css(\"overflow\") + parent.css(\"overflow-y\") + parent.css(\"overflow-x\"));\n }).eq(0);\n return position === \"fixed\" || !scrollParent.length ? oktaJQueryStatic(this[0].ownerDocument || document) : scrollParent;\n};\n","/*\n * Checking in as there is no npm module to consume. \n * Current version is 2.15.\n * Repo - https://github.com/TypingDNA/TypingDnaRecorder-JavaScript\n */\n\n/**\n * TypingDNA - Typing Biometrics JavaScript API\n * https://api.typingdna.com/scripts/typingdna.js\n * https://typingdna.com/scripts/typingdna.js (alternative)\n *\n * @version 2.15\n * @author Raul Popa\n * @copyright SC TypingDNA SRL, http://typingdna.com\n * @license http://www.apache.org/licenses/LICENSE-2.0\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 * 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 * Typical usage:\n * var tdna = new TypingDNA(); // creates a new TypingDNA object and starts recording\n * var typingPattern = tdna.getTypingPattern({type=1, text=\"Hello5g21?*\"});\n * returns a type 1 typing pattern (and continues recording afterwards)\n *\n * Optional:\n * tdna.stop(); // ends recording and clears history stack (returns recording flag: false)\n * tdna.start(); // restarts the recording after a stop (returns recording flag: true)\n * tdna.reset(); // restarts the recording anytime, clears history stack and starts from scratch (returns nothing)\n * var typingPatternQuality = TypingDNA.getQuality(typingPattern); //returns the quality/strength of any typing pattern\n * (there is no need to initialize the class to do pattern quality checking)\n */\n\n/**\n * Creates a single instance (or a reference) of the TypingDNA class\n * @return {Object} Returns the single instance of the TypingDNA class.\n * @example var tdna = new TypingDNA();\n */\nmodule.exports = function TypingDNA() {\n if (TypingDNA.initialized != true) {\n TypingDNA.prototype.start = function() {\n return TypingDNA.start.apply(this, arguments);\n }\n TypingDNA.prototype.stop = function() {\n return TypingDNA.stop.apply(this, arguments);\n }\n TypingDNA.prototype.reset = function() {\n return TypingDNA.reset.apply(this, arguments);\n }\n TypingDNA.prototype.addTarget = function() {\n return TypingDNA.addTarget.apply(this, arguments);\n }\n TypingDNA.prototype.removeTarget = function() {\n return TypingDNA.removeTarget.apply(this, arguments);\n }\n TypingDNA.prototype.getTypingPattern = function() {\n return TypingDNA.getTypingPattern.apply(this, arguments);\n }\n TypingDNA.prototype.get = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.get.apply(this, arguments);\n }\n TypingDNA.prototype.startDiagram = function() {\n // deprecated in favor of start()\n //return TypingDNA.startDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.stopDiagram = function() {\n // deprecated in favor of stop()\n //return TypingDNA.stopDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getDiagram = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.getDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getExtendedDiagram = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.getExtendedDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getMouseDiagram = function() {\n return TypingDNA.getMouseDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.startMouse = function() {\n return TypingDNA.startMouse.apply(this, arguments);\n }\n TypingDNA.prototype.stopMouse = function() {\n return TypingDNA.stopMouse.apply(this, arguments);\n }\n TypingDNA.prototype.getQuality = function() {\n return TypingDNA.getQuality.apply(this, arguments);\n }\n TypingDNA.prototype.getLength = function() {\n return TypingDNA.getLength.apply(this, arguments);\n }\n TypingDNA.prototype.isMobile = function() {\n return TypingDNA.isMobile.apply(this, arguments);\n }\n TypingDNA.prototype.getTextId = function() {\n return TypingDNA.getTextId.apply(this, arguments)\n }\n TypingDNA.initialized = true;\n TypingDNA.prototype.maxHistoryLength = TypingDNA.maxHistoryLength;\n TypingDNA.prototype.defaultHistoryLength = TypingDNA.defaultHistoryLength;\n TypingDNA.prototype.maxSeekTime = TypingDNA.maxSeekTime;\n TypingDNA.prototype.maxPressTime = TypingDNA.maxPressTime;\n TypingDNA.version = 2.15;\n TypingDNA.flags = 0;\n TypingDNA.instance = this;\n TypingDNA.document = document;\n TypingDNA.maxHistoryLength = 2000;\n TypingDNA.maxSeekTime = 1500;\n TypingDNA.maxPressTime = 300;\n TypingDNA.defaultHistoryLength = 160;\n TypingDNA.spKeyCodes = [8, 13, 32];\n TypingDNA.spKeyCodesObj = {\n 8: 1,\n 13: 1,\n 32: 1\n };\n TypingDNA.keyCodes = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 32, 222, 188, 190, 186, 187, 189, 191, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57];\n TypingDNA.keyCodesObj = {}\n for (var i in TypingDNA.keyCodes) {\n TypingDNA.keyCodesObj[TypingDNA.keyCodes[i]] = 1;\n }\n TypingDNA.pt1 = TypingDNA.ut1 = (new Date).getTime();\n TypingDNA.wfk = [];\n TypingDNA.sti = [];\n TypingDNA.skt = [];\n TypingDNA.recording = true;\n TypingDNA.mouseRecording = true;\n TypingDNA.mouseMoveRecording = false;\n TypingDNA.spKeyRecording = true;\n TypingDNA.diagramRecording = true;\n TypingDNA.dwfk = [];\n TypingDNA.dsti = [];\n TypingDNA.dskt = [];\n TypingDNA.drkc = [];\n TypingDNA.dlastDownKey;\n TypingDNA.prevKeyCode = 0;\n TypingDNA.maxMoveDeltaTime = 600;\n TypingDNA.maxScrollDeltaTime = 800;\n TypingDNA.maxStopTime = 1500;\n TypingDNA.maxClickTime = 600;\n TypingDNA.maxMouseHistoryLength = 500;\n TypingDNA.lastMouseMoveTime = TypingDNA.lastMouseDownTime = (new Date).getTime();\n TypingDNA.stopTimes = [];\n TypingDNA.clickTimes = [];\n TypingDNA.lastMouseStop = true;\n TypingDNA.zl = 0.0000001;\n TypingDNA.isAndroidChrome = false;\n TypingDNA.ACLastTime = (new Date).getTime();\n TypingDNA.ACSeekTime = 0;\n TypingDNA.ACPressTime = 0;\n TypingDNA.ACLastCharCode = 0;\n TypingDNA.ACLastKeyCode = 0;\n TypingDNA.ACInputLengths = {\n inputs: [],\n lastLength: [],\n };\n TypingDNA.ACPreviousKeyCode = 0;\n TypingDNA.targetIds = [];\n TypingDNA.lastTarget = \"\";\n TypingDNA.lastTargetFound = false;\n TypingDNA.replaceMissingKeys = true;\n TypingDNA.replaceMissingKeysPerc = 7;\n\n TypingDNA.keyDown = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var keyCode = e.keyCode;\n if (TypingDNA.wfk[keyCode] == 1 || TypingDNA.dwfk[keyCode] == 1) {\n //return;\n }\n if (keyCode == 229 && TypingDNA.isMobile() && !TypingDNA.isAndroidChrome) {\n TypingDNA.isAndroidChrome = true;\n\n TypingDNA.ACSeekTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n\n TypingDNA.document.removeEventListener(\"keydown\", TypingDNA.keyDown);\n TypingDNA.document.removeEventListener(\"keyup\", TypingDNA.keyUp);\n TypingDNA.document.removeEventListener(\"keypress\", TypingDNA.keyPress);\n\n // if android\n TypingDNA.document.addEventListener(\"keydown\", TypingDNA.ACKeyDown);\n TypingDNA.document.addEventListener(\"keyup\", TypingDNA.ACKeyUp);\n } else {\n var t0 = TypingDNA.pt1;\n TypingDNA.pt1 = (new Date).getTime();\n var seekTotal = TypingDNA.pt1 - t0;\n var startTime = TypingDNA.pt1;\n if (TypingDNA.recording == true || (TypingDNA.spKeyCodesObj[keyCode] && TypingDNA.spKeyRecording == true)) {\n if (!e.shiftKey || TypingDNA.isMobile()) {\n TypingDNA.wfk[keyCode] = 1;\n TypingDNA.skt[keyCode] = seekTotal;\n TypingDNA.sti[keyCode] = startTime;\n }\n }\n if (TypingDNA.diagramRecording == true) {\n TypingDNA.dwfk[keyCode] = 1;\n TypingDNA.dskt[keyCode] = seekTotal;\n TypingDNA.dsti[keyCode] = startTime;\n TypingDNA.dlastDownKey = keyCode;\n }\n }\n }\n\n TypingDNA.keyPress = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n if (TypingDNA.diagramRecording == true) {\n var keyCode = TypingDNA.dlastDownKey;\n TypingDNA.drkc[keyCode] = e.charCode;\n }\n }\n\n TypingDNA.keyUp = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var ut = (new Date).getTime();\n var keyCode = e.keyCode;\n if (TypingDNA.recording == true || (TypingDNA.spKeyCodesObj[keyCode] && TypingDNA.spKeyRecording == true)) {\n if (!e.shiftKey || TypingDNA.isMobile()) {\n if (TypingDNA.wfk[keyCode] == 1) {\n var pressTime = ut - TypingDNA.sti[keyCode];\n var seekTime = TypingDNA.skt[keyCode];\n var arr = [keyCode, seekTime, pressTime, TypingDNA.prevKeyCode, ut, e.target.id];\n TypingDNA.history.add(arr);\n TypingDNA.prevKeyCode = keyCode;\n }\n }\n TypingDNA.wfk[keyCode] = 0;\n }\n if (TypingDNA.diagramRecording == true) {\n if (TypingDNA.drkc[keyCode] != undefined && TypingDNA.drkc[keyCode] != 0) {\n if (TypingDNA.dwfk[keyCode] == 1) {\n var pressTime = ut - TypingDNA.dsti[keyCode];\n var seekTime = TypingDNA.dskt[keyCode];\n var realKeyCode = TypingDNA.drkc[keyCode];\n var arrD = [keyCode, seekTime, pressTime, realKeyCode, ut, e.target.id];\n TypingDNA.history.addDiagram(arrD);\n }\n }\n TypingDNA.dwfk[keyCode] = 0;\n }\n }\n\n TypingDNA.mouseScroll = function(e) {\n if (TypingDNA.mouseRecording == true) {\n if (TypingDNA.mouseMoveRecording == true) {\n if (TypingDNA.mouse.scrollStarted == true) {\n var currentTime = (new Date).getTime();\n TypingDNA.mouse.scrollTimes.push(currentTime);\n TypingDNA.mouse.scrollTopArr.push(TypingDNA.document.body.scrollTop);\n clearInterval(TypingDNA.scrollInterval);\n TypingDNA.scrollInterval = setInterval(TypingDNA.mouse.checkScroll, TypingDNA.maxScrollDeltaTime);\n } else {\n TypingDNA.mouse.scrollStarted = true\n }\n }\n }\n }\n\n TypingDNA.mouseMove = function(e) {\n if (TypingDNA.mouseRecording == true) {\n var currentTime = (new Date).getTime();\n if (TypingDNA.mouseMoveRecording == true) {\n if (TypingDNA.mouse.started == true) {\n TypingDNA.mouse.times.push(currentTime);\n TypingDNA.mouse.xPositions.push(e.screenX);\n TypingDNA.mouse.yPositions.push(e.screenY);\n clearInterval(TypingDNA.moveInterval);\n TypingDNA.moveInterval = setInterval(TypingDNA.mouse.checkMove, TypingDNA.maxMoveDeltaTime);\n } else {\n TypingDNA.mouse.started = true;\n }\n }\n TypingDNA.lastMouseMoveTime = currentTime;\n }\n }\n\n TypingDNA.mouseDown = function(e) {\n if (TypingDNA.mouseRecording == true) {\n TypingDNA.mouse.checkMove();\n TypingDNA.mouse.checkScroll();\n if (e.which == 1) {\n TypingDNA.lastMouseDownTime = (new Date).getTime();\n var stopTime = TypingDNA.lastMouseDownTime - TypingDNA.lastMouseMoveTime;\n if (stopTime < TypingDNA.maxStopTime && TypingDNA.lastMouseStop == false) {\n TypingDNA.stopTimes.push(stopTime);\n if (TypingDNA.mouseMoveRecording == true) {\n var eventType = 3;\n var arr = [eventType, stopTime];\n TypingDNA.mouse.history.add(arr);\n TypingDNA.lastMouseStop = true;\n }\n }\n }\n }\n }\n\n TypingDNA.mouseUp = function(e) {\n if (TypingDNA.mouseRecording == true) {\n if (e.which == 1) {\n var clickTime = (new Date).getTime() - TypingDNA.lastMouseDownTime;\n if (clickTime < TypingDNA.maxClickTime && TypingDNA.lastMouseDownTime > TypingDNA.lastMouseMoveTime) {\n TypingDNA.clickTimes.push(clickTime);\n if (TypingDNA.mouseMoveRecording == true) {\n var eventType = 4;\n var arr = [eventType, clickTime];\n TypingDNA.mouse.history.add(arr);\n }\n }\n }\n }\n }\n\n TypingDNA.ACKeyDown = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n TypingDNA.ACSeekTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n if(TypingDNA.ACInputLengths.inputs.indexOf(e.target) === -1) {\n TypingDNA.ACInputLengths.inputs.push(e.target);\n TypingDNA.ACInputLengths.lastLength.push(0);\n }\n }\n\n TypingDNA.ACKeyUp = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n TypingDNA.ACPressTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var keyCode = e.keyCode;\n var targetIndex = TypingDNA.ACInputLengths.inputs.indexOf(e.target);\n if(targetIndex === -1) {\n TypingDNA.ACInputLengths.inputs.push(e.target);\n TypingDNA.ACInputLengths.lastLength.push(0);\n targetIndex = TypingDNA.ACInputLengths.inputs.indexOf(e.target);\n }\n if (keyCode == 229 && e.target.value.length >= TypingDNA.ACInputLengths.lastLength[targetIndex]) {\n var char = e.target.value.substr((e.target.selectionStart - 1) || 0 , 1);\n keyCode = char.toUpperCase().charCodeAt(0);\n TypingDNA.ACLastCharCode = char.charCodeAt(0);\n TypingDNA.ACLastKeyCode = char.toUpperCase().charCodeAt(0);\n }\n TypingDNA.ACInputLengths.lastLength[targetIndex] = e.target.value.length;\n var arr = [keyCode, TypingDNA.ACSeekTime, TypingDNA.ACPressTime, TypingDNA.ACPreviousKeyCode, TypingDNA.ACLastTime];\n TypingDNA.history.add(arr);\n TypingDNA.ACPreviousKeyCode = keyCode;\n if (TypingDNA.diagramRecording == true ) {\n var arrD = [keyCode, TypingDNA.ACSeekTime, TypingDNA.ACPressTime, TypingDNA.ACLastCharCode];\n TypingDNA.history.addDiagram(arrD);\n }\n }\n\n TypingDNA.isTarget = function(target) {\n if (TypingDNA.lastTarget == target && TypingDNA.lastTargetFound) {\n return true;\n } else {\n var targetLength = TypingDNA.targetIds.length;\n var targetFound = false;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n targetFound = true;\n break;\n }\n }\n TypingDNA.lastTarget = target;\n TypingDNA.lastTargetFound = targetFound;\n return targetFound;\n } else {\n TypingDNA.lastTarget = target;\n TypingDNA.lastTargetFound = true;\n return true;\n }\n }\n }\n\n if (TypingDNA.document.addEventListener) {\n TypingDNA.document.addEventListener(\"keydown\", TypingDNA.keyDown);\n TypingDNA.document.addEventListener(\"keyup\", TypingDNA.keyUp);\n TypingDNA.document.addEventListener(\"keypress\", TypingDNA.keyPress);\n TypingDNA.document.addEventListener(\"mousemove\", TypingDNA.mouseMove);\n TypingDNA.document.addEventListener(\"mousedown\", TypingDNA.mouseDown);\n TypingDNA.document.addEventListener(\"mouseup\", TypingDNA.mouseUp);\n TypingDNA.document.addEventListener(\"scroll\", TypingDNA.mouseScroll);\n } else if (TypingDNA.document.attachEvent) {\n TypingDNA.document.attachEvent(\"onkeydown\", TypingDNA.keyDown);\n TypingDNA.document.attachEvent(\"onkeyup\", TypingDNA.keyUp);\n TypingDNA.document.attachEvent(\"onkeypress\", TypingDNA.keyPress);\n TypingDNA.document.attachEvent(\"onmousemove\", TypingDNA.mouseMove);\n TypingDNA.document.attachEvent(\"onmousedown\", TypingDNA.mouseDown);\n TypingDNA.document.attachEvent(\"onmouseup\", TypingDNA.mouseUp);\n TypingDNA.document.attachEvent(\"onscroll\", TypingDNA.mouseScroll);\n } else {\n console.log(\"browser not supported\");\n }\n\n TypingDNA.mouse = {};\n TypingDNA.mouse.times = [];\n TypingDNA.mouse.xPositions = [];\n TypingDNA.mouse.yPositions = [];\n TypingDNA.mouse.scrollTimes = [];\n TypingDNA.mouse.scrollTopArr = [];\n TypingDNA.mouse.history = {};\n TypingDNA.mouse.history.stack = [];\n\n TypingDNA.mouse.getDistance = function(a, b) {\n return Math.sqrt((a * a) + (b * b));\n }\n\n TypingDNA.mouse.getTotalDistance = function(xPositions, yPositions) {\n var totalDistance = 0;\n var length = xPositions.length;\n for (i = 1; i < length - 1; i++) {\n var a = xPositions[i] - xPositions[i - 1];\n var b = yPositions[i] - yPositions[i - 1];\n totalDistance += TypingDNA.mouse.getDistance(a, b);\n }\n return totalDistance;\n }\n\n TypingDNA.mouse.getAngle = function(xPosDelta, yPosDelta) {\n var angle = 0;\n var leftRight = (xPosDelta >= 0); // 1 if left, 0 if right\n var downUp = (yPosDelta < 0); // 1 if down, 0 if up\n if (leftRight) {\n if (downUp) {\n angle = 180 + (Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251)) // 0.01745329251 = pi/180\n } else {\n angle = 270 + (90 - Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251))\n }\n } else {\n if (downUp) {\n angle = 90 + (90 - Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251))\n } else {\n angle = Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251)\n }\n }\n return angle;\n }\n\n TypingDNA.mouse.recordMoveAction = function() {\n var length = TypingDNA.mouse.times.length;\n if (length < 3) {\n return;\n }\n var deltaTime = TypingDNA.mouse.times[length - 1] - TypingDNA.mouse.times[0];\n var xPosDelta = TypingDNA.mouse.xPositions[length - 1] - TypingDNA.mouse.xPositions[0];\n var yPosDelta = TypingDNA.mouse.yPositions[length - 1] - TypingDNA.mouse.yPositions[0];\n var directDistance = Math.round(TypingDNA.mouse.getDistance(xPosDelta, yPosDelta));\n var totalDistance = Math.round(TypingDNA.mouse.getTotalDistance(TypingDNA.mouse.xPositions, TypingDNA.mouse.yPositions));\n var ratioDistance = Math.round(totalDistance * 100 / directDistance);\n var speed = Math.round(directDistance * 100 / deltaTime);\n var angle = TypingDNA.mouse.getAngle(xPosDelta, yPosDelta);\n var eventType = 1;\n var arr = [eventType, deltaTime, directDistance, speed, angle, ratioDistance];\n for (i in arr) {\n if (isNaN(arr[i])) {\n return;\n }\n }\n TypingDNA.mouse.history.add(arr);\n TypingDNA.lastMouseStop = false;\n }\n\n TypingDNA.mouse.recordScrollAction = function() {\n var length = TypingDNA.mouse.scrollTimes.length;\n if (length < 2) {\n return;\n }\n var deltaTime = TypingDNA.mouse.scrollTimes[length - 1] - TypingDNA.mouse.scrollTimes[0];\n var directDistance = TypingDNA.mouse.scrollTopArr[length - 1] - TypingDNA.mouse.scrollTopArr[0];\n var speed = Math.round(directDistance * 100 / deltaTime);\n var eventType = 2;\n var arr = [eventType, deltaTime, directDistance, speed];\n for (i in arr) {\n if (isNaN(arr[i]) && !isFinite(arr[i])) {\n return;\n }\n }\n TypingDNA.mouse.history.add(arr);\n }\n\n TypingDNA.mouse.history.add = function(arr) {\n this.stack.push(arr);\n if (this.stack.length > TypingDNA.maxMouseHistoryLength) {\n this.stack.shift();\n }\n }\n\n TypingDNA.mouse.history.getDiagram = function() {\n var mouseDiagram = this.stack.join(\"|\");\n return [String(TypingDNA.isMobile()) + \",\" + String(TypingDNA.version), mouseDiagram].join(\"|\");\n }\n\n TypingDNA.mouse.clearLastMove = function() {\n TypingDNA.mouse.times = [];\n TypingDNA.mouse.xPositions = [];\n TypingDNA.mouse.yPositions = [];\n }\n\n TypingDNA.mouse.checkMove = function() {\n clearInterval(TypingDNA.moveInterval);\n if (TypingDNA.mouse.started == true) {\n TypingDNA.mouse.started = false;\n TypingDNA.mouse.recordMoveAction();\n TypingDNA.mouse.clearLastMove();\n }\n }\n\n TypingDNA.mouse.clearLastScroll = function() {\n TypingDNA.mouse.scrollTimes = [];\n TypingDNA.mouse.scrollTopArr = [];\n }\n\n TypingDNA.mouse.checkScroll = function() {\n clearInterval(TypingDNA.scrollInterval);\n if (TypingDNA.mouse.scrollStarted == true) {\n TypingDNA.mouse.scrollStarted = false;\n TypingDNA.mouse.recordScrollAction();\n TypingDNA.mouse.clearLastScroll();\n }\n }\n\n /**\n * Adds a target to the targetIds array.\n */\n TypingDNA.addTarget = function(target) {\n var targetLength = TypingDNA.targetIds.length;\n var targetFound = false;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n targetFound = true;\n break;\n }\n }\n if (!targetFound) {\n TypingDNA.targetIds.push(target);\n }\n } else {\n TypingDNA.targetIds.push(target);\n }\n }\n\n /**\n * Adds a target to the targetIds array.\n */\n TypingDNA.removeTarget = function(target) {\n var targetLength = TypingDNA.targetIds.length;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n TypingDNA.targetIds.splice(i, 1);\n break;\n }\n }\n }\n }\n\n /**\n * Resets the history stack\n */\n TypingDNA.reset = function(all) {\n TypingDNA.history.stack = [];\n TypingDNA.history.stackDiagram = [];\n TypingDNA.clickTimes = [];\n TypingDNA.stopTimes = [];\n TypingDNA.ACInputLengths = {\n inputs: [],\n lastLength: [],\n };\n if (all == true) {\n TypingDNA.mouse.history.stack = [];\n }\n }\n\n /**\n * Automatically called at initilization. It starts the recording of keystrokes.\n */\n TypingDNA.start = function() {\n TypingDNA.diagramRecording = true;\n return TypingDNA.recording = true;\n }\n\n /**\n * Ends the recording of further keystrokes. To restart recording afterwards you can\n * either call TypingDNA.start() or create a new TypingDNA object again, not recommended.\n */\n TypingDNA.stop = function() {\n TypingDNA.diagramRecording = false;\n return TypingDNA.recording = false;\n }\n\n /**\n * Starts the recording of mouse activity.\n */\n TypingDNA.startMouse = function() {\n return TypingDNA.mouseRecording = TypingDNA.mouseMoveRecording = true;\n }\n\n /**\n * Stops the recording of mouse activity.\n */\n TypingDNA.stopMouse = function() {\n return TypingDNA.mouseRecording = TypingDNA.mouseMoveRecording = false;\n }\n\n /**\n * This is the main function that outputs the typing pattern as a String\n * {type:Number, text:String, textId:Number, length: Number, targetId:String, caseSensitive:Boolean}\n * @param {Object} obj an object with the following properties\n * * * @param {String} type 0 for anytext pattern, 1 for sametext pattern (also called diagram pattern)\n * * * and 2 for extended pattern (most versatile, can replace both anytext and sametext patterns)\n * * * @param {Number} length (Optional) the length of the text in the history for which you want\n * * * the typing pattern. length is ignored when text or targetId is set (or both).\n * * * @param {String} text (Only for type 1 and type 2) a typed string that you want the typing pattern for\n * * * @param {Number} textId (Optional, only for type 1 and type 2) a personalized id for the typed text\n * * * @param {String} targetId (Optional) specifies if pattern is obtain only from text typed in a certain target\n * * * @param {Boolean} caseSensitive (Optional, default: false) Used if you pass a text for type 1 or type 2\n * * * DEPRECATED * * * in favor of type = 2 * * *\n * * * @param {Boolean} extended (Only for type 1) specifies if full information about what was typed is produced,\n * * * including the actual key pressed, if false, only the order of pressed keys is kept (no actual content)\n * @return {String} A typing pattern in string form\n * @example var typingPattern = tdna.getTypingPattern({type=0, length=180});\n * @example var typingPattern = tdna.getTypingPattern({type=1, text=\"Hello5g21?*\"});\n * @example var typingPattern = tdna.getTypingPattern({type=2, text=\"example@mail.com\"});\n */\n TypingDNA.getTypingPattern = function(obj) {\n if (typeof obj === 'object') {\n switch (obj.type) {\n case 0:\n return TypingDNA.get(obj.length, obj.targetId);\n break;\n case 1:\n var str = (obj.text != undefined) ? obj.text : obj.length;\n return TypingDNA.history.getDiagram(obj.extended, str, obj.textId, obj.targetId, obj.caseSensitive);\n break;\n case 2:\n var str = (obj.text != undefined) ? obj.text : obj.length;\n return TypingDNA.history.getDiagram(true, str, obj.textId, obj.targetId, obj.caseSensitive);\n break;\n default:\n return TypingDNA.get(obj.length);\n break;\n }\n } else {\n return TypingDNA.get();\n }\n }\n\n TypingDNA.getDiagram = function(str, textId) {\n return TypingDNA.history.getDiagram(false, str, textId, undefined, false);\n }\n\n TypingDNA.getExtendedDiagram = function(str, textId) {\n return TypingDNA.history.getDiagram(true, str, textId, undefined, false);\n }\n\n TypingDNA.getMouseDiagram = function() {\n return TypingDNA.mouse.history.getDiagram();\n }\n\n TypingDNA.get = function(length, targetId) {\n var historyTotalLength = TypingDNA.history.stack.length;\n if (length == undefined || length == 0) {\n length = TypingDNA.defaultHistoryLength;\n }\n if (length > historyTotalLength) {\n length = historyTotalLength;\n }\n var obj = {};\n [obj.arr, targetLength] = TypingDNA.history.get(length, \"\", targetId);\n if (targetId != undefined && targetId != \"\") {\n length = targetLength;\n }\n var zl = TypingDNA.zl;\n var histRev = length;\n var histSktF = TypingDNA.math.fo(TypingDNA.history.get(length, \"seek\", targetId));\n var histPrtF = TypingDNA.math.fo(TypingDNA.history.get(length, \"press\", targetId));\n var pressHistMean = Math.round(TypingDNA.math.avg(histPrtF));\n var seekHistMean = Math.round(TypingDNA.math.avg(histSktF));\n var pressHistSD = Math.round(TypingDNA.math.sd(histPrtF));\n var seekHistSD = Math.round(TypingDNA.math.sd(histSktF));\n var charMeanTime = seekHistMean + pressHistMean;\n var pressRatio = TypingDNA.math.rd((pressHistMean + zl) / (charMeanTime + zl), 4);\n var seekToPressRatio = TypingDNA.math.rd((1 - pressRatio) / pressRatio, 4);\n var pressSDToPressRatio = TypingDNA.math.rd((pressHistSD + zl) / (pressHistMean + zl), 4);\n var seekSDToPressRatio = TypingDNA.math.rd((seekHistSD + zl) / (pressHistMean + zl), 4);\n var cpm = Math.round(6E4 / (charMeanTime + zl));\n if (histRev == 0) {\n cpm = 0;\n }\n for (var i in obj.arr) {\n var rev = obj.arr[i][1].length;\n var seekMean = 0;\n var pressMean = 0;\n var postMean = 0;\n var seekSD = 0;\n var pressSD = 0;\n var postSD = 0;\n switch (obj.arr[i][0].length) {\n case 0:\n break;\n case 1:\n var seekMean = TypingDNA.math.rd((obj.arr[i][0][0] + zl) / (seekHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][0]);\n seekMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (seekHistMean + zl), 4);\n seekSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (seekHistSD + zl), 4);\n }\n switch (obj.arr[i][1].length) {\n case 0:\n break;\n case 1:\n var pressMean = TypingDNA.math.rd((obj.arr[i][1][0] + zl) / (pressHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][1]);\n pressMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (pressHistMean + zl), 4);\n pressSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (pressHistSD + zl), 4);\n }\n switch (obj.arr[i][2].length) {\n case 0:\n break;\n case 1:\n var postMean = TypingDNA.math.rd((obj.arr[i][2][0] + zl) / (seekHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][2]);\n postMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (seekHistMean + zl), 4);\n postSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (seekHistSD + zl), 4);\n }\n delete obj.arr[i][2];\n delete obj.arr[i][1];\n delete obj.arr[i][0];\n obj.arr[i][0] = rev;\n obj.arr[i][1] = seekMean;\n obj.arr[i][2] = pressMean;\n obj.arr[i][3] = postMean;\n obj.arr[i][4] = seekSD;\n obj.arr[i][5] = pressSD;\n obj.arr[i][6] = postSD;\n }\n var arr = [];\n TypingDNA.apu(arr, histRev);\n TypingDNA.apu(arr, cpm);\n TypingDNA.apu(arr, charMeanTime);\n TypingDNA.apu(arr, pressRatio);\n TypingDNA.apu(arr, seekToPressRatio);\n TypingDNA.apu(arr, pressSDToPressRatio);\n TypingDNA.apu(arr, seekSDToPressRatio);\n TypingDNA.apu(arr, pressHistMean);\n TypingDNA.apu(arr, seekHistMean);\n TypingDNA.apu(arr, pressHistSD);\n TypingDNA.apu(arr, seekHistSD);\n for (var c = 0; c <= 6; c++) {\n for (var i = 0; i < 44; i++) {\n var keyCode = TypingDNA.keyCodes[i];\n var val = obj.arr[keyCode][c];\n if (val == 0 && c > 0) {\n val = 1;\n }\n TypingDNA.apu(arr, val);\n }\n }\n TypingDNA.apu(arr, TypingDNA.isMobile());\n TypingDNA.apu(arr, TypingDNA.version);\n TypingDNA.apu(arr, TypingDNA.flags);\n arr.push(TypingDNA.history.getSpecialKeys());\n return arr.join(\",\");\n }\n\n TypingDNA.apu = function(arr, val) {\n \"NaN\" == String(val) && (val = 0);\n arr.push(val);\n }\n\n TypingDNA.math = {};\n\n TypingDNA.math.rd = function(val, dec) {\n return Number(val.toFixed(dec));\n }\n\n TypingDNA.math.avg = function(arr) {\n var len = arr.length;\n if (len > 0) {\n var sum = 0;\n for (var i = 0; i < len; i++) {\n sum += arr[i];\n }\n return this.rd(sum / len, 4);\n } else {\n return 0;\n }\n }\n\n TypingDNA.math.sd = function(arr) {\n var len = arr.length;\n if (len < 2) {\n return 0;\n } else {\n var sumVS = 0;\n var mean = this.avg(arr);\n for (var i = 0; i < len; i++) {\n sumVS += (arr[i] - mean) * (arr[i] - mean);\n }\n var sd = Math.sqrt(sumVS / len);\n return sd;\n }\n }\n\n TypingDNA.math.fo = function(arr) {\n if (arr.length > 1) {\n var values = arr.concat();\n var len = arr.length;\n values.sort(function(a, b) {\n return a - b;\n });\n var asd = this.sd(values);\n var aMean = values[Math.ceil(arr.length / 2)];\n var multiplier = 2;\n var maxVal = aMean + multiplier * asd;\n var minVal = aMean - multiplier * asd;\n if (len < 20) {\n minVal = 0;\n }\n var fVal = [];\n for (var i = 0; i < len; i++) {\n var tempval = values[i];\n if (tempval < maxVal && tempval > minVal) {\n fVal.push(tempval);\n }\n }\n return fVal;\n } else {\n return arr;\n }\n }\n\n // Calculate a 32 bit FNV-1a hash\n TypingDNA.math.fnv1aHash = function(str) {\n if (str == undefined && typeof str !== 'string') {\n return 0;\n }\n str = str.toLowerCase();\n var i, l;\n var hval = 0x721b5ad4;\n for (i = 0, l = str.length; i < l; i++) {\n hval ^= str.charCodeAt(i);\n hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n }\n return hval >>> 0;\n }\n\n TypingDNA.history = {};\n TypingDNA.history.stack = [];\n TypingDNA.history.stackDiagram = [];\n\n TypingDNA.history.add = function(arr) {\n this.stack.push(arr);\n if (this.stack.length > TypingDNA.maxHistoryLength) {\n this.stack.shift();\n }\n }\n\n TypingDNA.history.addDiagram = function(arr) {\n this.stackDiagram.push(arr);\n }\n\n TypingDNA.history.getDiagram = function(extended, str, textId, targetId, caseSensitive) {\n var caseSensitive = (caseSensitive != undefined) ? caseSensitive : (str == undefined || str == \"\");\n var returnArr = [];\n var diagramType = (extended == true) ? 1 : 0;\n var stackDiagram = this.stackDiagram;\n if (targetId != undefined && targetId != \"\" && stackDiagram.length > 0) {\n stackDiagram = TypingDNA.sliceStackByTargetId(stackDiagram, targetId);\n if (str == undefined || str == \"\") {\n var element = TypingDNA.document.getElementById(targetId);\n if (element != null) {\n str = element.value;\n }\n }\n } else {\n var targetLength = TypingDNA.targetIds.length;\n if (str == undefined || str == \"\") {\n if (targetLength > 0) {\n str = \"\";\n for (var i = 0; i < targetLength; i++) {\n var element = TypingDNA.document.getElementById(TypingDNA.targetIds[i]);\n if (element != null) {\n str += element.value;\n }\n }\n } else {\n if (!extended) {\n console.log(\"Please use extended pattern OR provide a fixed string param OR use the addTarget method.\");\n }\n }\n }\n }\n var missingCount = 0;\n var diagramHistoryLength = stackDiagram.length;\n var strLength = diagramHistoryLength;\n if (typeof str === 'string') {\n strLength = str.length;\n } else if (typeof str === 'number' && str < diagramHistoryLength) {\n strLength = str;\n }\n var returnTextId = 0;\n if (textId != undefined) {\n if (isNaN(parseInt(textId))) {\n returnTextId = TypingDNA.math.fnv1aHash(textId);\n } else {\n returnTextId = parseInt(textId);\n }\n } else {\n if (typeof str === 'string') {\n returnTextId = TypingDNA.math.fnv1aHash(str);\n }\n }\n returnArr.push([TypingDNA.isMobile(), TypingDNA.version, TypingDNA.flags, diagramType, strLength, returnTextId, TypingDNA.history.getSpecialKeys()]);\n if (str != undefined && str.length > 0 && typeof str === 'string') {\n var strLower = str.toLowerCase();\n var strUpper = str.toUpperCase();\n var lastFoundPos = [];\n var lastPos = 0;\n var strUpperCharCode;\n var currentSensitiveCharCode;\n for (var i = 0; i < str.length; i++) {\n var currentCharCode = str.charCodeAt(i);\n if (!caseSensitive) {\n strUpperCharCode = strUpper.charCodeAt(i);\n currentSensitiveCharCode = (strUpperCharCode != currentCharCode) ? strUpperCharCode : strLower.charCodeAt(i);\n }\n var startPos = lastPos;\n var finishPos = diagramHistoryLength;\n var found = false;\n while (found == false) {\n for (var j = startPos; j < finishPos; j++) {\n var arr = stackDiagram[j];\n var charCode = arr[3];\n if (charCode == currentCharCode || (!caseSensitive && charCode == currentSensitiveCharCode)) {\n found = true;\n if (j == lastPos) {\n lastPos++;\n lastFoundPos = [];\n } else {\n lastFoundPos.push(j);\n var len = lastFoundPos.length;\n if (len > 1 && lastFoundPos[len - 1] == lastFoundPos[len - 2] + 1) {\n lastPos = j + 1;\n lastFoundPos = [];\n }\n }\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n if (extended) {\n returnArr.push([charCode, seekTime, pressTime, keyCode]);\n } else {\n returnArr.push([seekTime, pressTime]);\n }\n break;\n }\n }\n if (found == false) {\n if (startPos != 0) {\n startPos = 0;\n finishPos = lastPos;\n } else {\n found = true;\n if (TypingDNA.replaceMissingKeys) {\n missingCount++;\n if (typeof TypingDNA.savedMissingAvgValues !== 'object' || TypingDNA.savedMissingAvgValues.historyLength != diagramHistoryLength) {\n var histSktF = TypingDNA.math.fo(TypingDNA.history.get(0, \"seek\"));\n var histPrtF = TypingDNA.math.fo(TypingDNA.history.get(0, \"press\"));\n var seekTime = Math.round(TypingDNA.math.avg(histSktF));\n var pressTime = Math.round(TypingDNA.math.avg(histPrtF));\n TypingDNA.savedMissingAvgValues = {\n seekTime: seekTime,\n pressTime: pressTime,\n historyLength: diagramHistoryLength\n };\n } else {\n var seekTime = TypingDNA.savedMissingAvgValues.seekTime;\n var pressTime = TypingDNA.savedMissingAvgValues.pressTime;\n }\n var missing = 1;\n if (extended) {\n returnArr.push([currentCharCode, seekTime, pressTime, currentCharCode, missing]);\n } else {\n returnArr.push([seekTime, pressTime, missing]);\n }\n break;\n }\n }\n }\n }\n if (TypingDNA.replaceMissingKeysPerc < missingCount * 100 / strLength) {\n return null;\n }\n }\n } else {\n var startCount = 0;\n if (typeof str === 'number') {\n startCount = diagramHistoryLength - str;\n }\n if (startCount < 0) {\n startCount = 0;\n }\n for (var i = startCount; i < diagramHistoryLength; i++) {\n var arr = stackDiagram[i];\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n if (extended) {\n var charCode = arr[3];\n returnArr.push([charCode, seekTime, pressTime, keyCode]);\n } else {\n returnArr.push([seekTime, pressTime]);\n }\n }\n }\n return returnArr.join(\"|\");\n }\n\n TypingDNA.sliceStackByTargetId = function(stack, targetId) {\n var length = stack.length;\n var newStack = [];\n for (i = 0; i < length; i++) {\n var arr = stack[i];\n if (arr[5] == targetId) {\n newStack.push(arr);\n }\n }\n return newStack;\n }\n\n TypingDNA.history.get = function(length, type, targetId) {\n var stack = this.stack;\n if (targetId != undefined && targetId != \"\" && stack.length > 0) {\n stack = TypingDNA.sliceStackByTargetId(stack, targetId);\n }\n var historyTotalLength = stack.length;\n if (length == 0 || length == undefined) {\n length = TypingDNA.defaultHistoryLength;\n }\n if (length > historyTotalLength) {\n length = historyTotalLength;\n }\n switch (type) {\n case \"seek\":\n var seekArr = [];\n for (i = 1; i <= length; i++) {\n var seekTime = stack[historyTotalLength - i][1];\n if (seekTime <= TypingDNA.maxSeekTime) {\n seekArr.push(seekTime);\n }\n };\n return seekArr;\n break;\n case \"press\":\n var pressArr = [];\n for (i = 1; i <= length; i++) {\n var pressTime = stack[historyTotalLength - i][2];\n if (pressTime <= TypingDNA.maxPressTime) {\n pressArr.push(pressTime);\n }\n };\n return pressArr;\n break;\n default:\n var historyStackObj = {};\n for (var i in TypingDNA.keyCodes) {\n historyStackObj[TypingDNA.keyCodes[i]] = [\n [],\n [],\n []\n ];\n }\n for (i = 1; i <= length; i++) {\n var arr = stack[historyTotalLength - i];\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n var prevKeyCode = arr[3];\n if (TypingDNA.keyCodesObj[keyCode]) {\n if (seekTime <= TypingDNA.maxSeekTime) {\n historyStackObj[keyCode][0].push(seekTime);\n if (prevKeyCode != 0 && TypingDNA.keyCodesObj[prevKeyCode]) {\n historyStackObj[prevKeyCode][2].push(seekTime);\n }\n }\n if (pressTime <= TypingDNA.maxPressTime) {\n historyStackObj[keyCode][1].push(pressTime);\n }\n }\n };\n return [historyStackObj, length];\n }\n }\n\n TypingDNA.history.getSpecialKeys = function() {\n var returnArr = [];\n var length = this.stack.length;\n var historyStackObj = {};\n for (var i in TypingDNA.spKeyCodes) {\n historyStackObj[TypingDNA.spKeyCodes[i]] = [\n [],\n ];\n }\n for (i = 1; i <= length; i++) {\n var arr = this.stack[length - i];\n if (TypingDNA.spKeyCodesObj[arr[0]]) {\n var keyCode = arr[0];\n var pressTime = arr[2];\n if (pressTime <= TypingDNA.maxPressTime) {\n historyStackObj[keyCode][0].push(pressTime);\n }\n }\n }\n for (var i in TypingDNA.spKeyCodes) {\n var arr = TypingDNA.math.fo(historyStackObj[TypingDNA.spKeyCodes[i]][0]);\n var arrLen = arr.length;\n returnArr.push(arrLen);\n if (arrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(arr)));\n returnArr.push(Math.round(TypingDNA.math.sd(arr)));\n } else if (arrLen == 1) {\n returnArr.push([arr[0], -1]);\n } else {\n returnArr.push([-1, -1]);\n }\n }\n var clicksArrLen = TypingDNA.clickTimes.length;\n returnArr.push(clicksArrLen);\n if (clicksArrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(TypingDNA.clickTimes)));\n returnArr.push(Math.round(TypingDNA.math.sd(TypingDNA.clickTimes)));\n } else if (clicksArrLen == 1) {\n returnArr.push(TypingDNA.clickTimes[0], -1);\n } else {\n returnArr.push([-1, -1]);\n }\n var stopArrLen = TypingDNA.stopTimes.length;\n returnArr.push(stopArrLen);\n if (stopArrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(TypingDNA.stopTimes)));\n returnArr.push(Math.round(TypingDNA.math.sd(TypingDNA.stopTimes)));\n } else if (stopArrLen == 1) {\n returnArr.push(TypingDNA.stopTimes[0], -1);\n } else {\n returnArr.push([-1, -1]);\n }\n return returnArr;\n }\n\n /**\n * Checks the quality of a typing pattern, how well it is revelated, how useful the\n * information will be for matching applications. It returns a value between 0 and 1.\n * Values over 0.3 are acceptable, however a value over 0.7 shows good pattern strength.\n * @param {String} typingPattern The typing pattern string returned by the get() function.\n * @return {Number} A real number between 0 and 1. A close to 1 value means a stronger pattern.\n * @example var quality = tdna.getQuality(typingPattern);\n */\n TypingDNA.getQuality = function(typingPattern) {\n var obj = typingPattern.split(\",\");\n for (i = 0; i < obj.length; i++) {\n obj[i] = Number(obj[i]);\n }\n var totalEvents = obj[0];\n var acc = rec = avgAcc = 0;\n var avg = TypingDNA.math.avg(obj);\n var revs = obj.slice(11, 55);\n for (var i in revs) {\n rec += Number(revs[i] > 0);\n acc += Number(revs[i] > 4);\n avgAcc += Number(revs[i] > avg);\n }\n var tReturn = Math.sqrt(rec * acc * avgAcc) / 80;\n return tReturn > 1 ? 1 : tReturn;\n }\n\n /**\n * Checks the validity of a typing pattern if recorded on mobile.\n * @param {String} typingPattern The typing pattern string returned by the get() function.\n * @return {Number} A real number between 0 and 1. A number larger than 0.7 usually means a valid pattern.\n * @example var quality = tdna.checkMobileValidity(typingPattern);\n */\n TypingDNA.checkMobileValidity = function(typingPattern) {\n var obj = typingPattern.split(\",\");\n var totalEvents = obj[0];\n if (totalEvents == 0) {\n return 0;\n }\n var rec = 0;\n var revs = obj.slice(11, 55);\n for (var i in revs) {\n rec += Number(revs[i]);\n }\n return rec / totalEvents;\n }\n\n TypingDNA.getLength = function(typingPattern) {\n return Number(typingPattern.split(\",\")[1]);\n }\n\n TypingDNA.isMobile = function() {\n if (TypingDNA.mobile != undefined) {\n return TypingDNA.mobile;\n } else {\n var check = 0;\n (function(a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i\n .test(a) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i\n .test(a.substr(0, 4))) {\n check = 1\n }\n })(navigator.userAgent || navigator.vendor || window.opera);\n TypingDNA.mobile = check;\n return check;\n }\n }\n\n TypingDNA.getTextId = function(str) {\n return TypingDNA.math.fnv1aHash(str);\n }\n } else {\n // TypingDNA is a static class, currently doesn't support actual multiple instances (Singleton implementation)\n return TypingDNA.instance;\n }\n}\n","/**\n * \n * This file has been modified to override doPostBack\n * Check out the doPostBack function below for more details.\n * Override the doPostBack function when upgrading.\n * Unable to make a wrapper because it is invoked using an internal name within \n * this library.\n * \n * Current Verison = https://github.com/duosecurity/duo_web_sdk/blob/7aec8dd895ea4bd4549069e76076850eccfe07f2/index.js\n * PS: they dont seem to version correctly hence using commit.\n */\n\n/**\n * Duo Web SDK v2\n * Copyright 2019, Duo Security\n */\n\n// Modified to remove AMD and support ESM transform - OKTA-369648\n(function (root, factory) {\n module.exports = factory();\n}(this, function() {\n var DUO_MESSAGE_FORMAT = /^(?:AUTH|ENROLL)+\\|[A-Za-z0-9\\+\\/=]+\\|[A-Za-z0-9\\+\\/=]+$/;\n var DUO_ERROR_FORMAT = /^ERR\\|[\\w\\s\\.\\(\\)]+$/;\n var DUO_OPEN_WINDOW_FORMAT = /^DUO_OPEN_WINDOW\\|/;\n var VALID_OPEN_WINDOW_DOMAINS = [\n 'duo.com',\n 'duosecurity.com',\n 'duomobile.s3-us-west-1.amazonaws.com'\n ];\n\n var postAction,\n postArgument,\n host,\n sigRequest,\n duoSig,\n appSig,\n iframe,\n submitCallback;\n\n // We use this function instead of setting initial values in the var\n // declarations to make sure the initial values and subsequent\n // re-initializations are always the same.\n initializeStatefulVariables();\n\n /**\n * Set local variables to whatever they should be before you call init().\n */\n function initializeStatefulVariables() {\n postAction = '';\n postArgument = 'sig_response';\n host = undefined;\n sigRequest = undefined;\n duoSig = undefined;\n appSig = undefined;\n iframe = undefined;\n submitCallback = undefined;\n }\n\n function throwError(message, givenUrl) {\n var url = (\n givenUrl ||\n 'https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe'\n );\n throw new Error(\n 'Duo Web SDK error: ' + message +\n (url ? ('\\n' + 'See ' + url + ' for more information') : '')\n );\n }\n\n function hyphenize(str) {\n return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n // cross-browser data attributes\n function getDataAttribute(element, name) {\n if ('dataset' in element) {\n return element.dataset[name];\n } else {\n return element.getAttribute('data-' + hyphenize(name));\n }\n }\n\n // cross-browser event binding/unbinding\n function on(context, event, fallbackEvent, callback) {\n if ('addEventListener' in window) {\n context.addEventListener(event, callback, false);\n } else {\n context.attachEvent(fallbackEvent, callback);\n }\n }\n\n function off(context, event, fallbackEvent, callback) {\n if ('removeEventListener' in window) {\n context.removeEventListener(event, callback, false);\n } else {\n context.detachEvent(fallbackEvent, callback);\n }\n }\n\n function onReady(callback) {\n on(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function offReady(callback) {\n off(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function onMessage(callback) {\n on(window, 'message', 'onmessage', callback);\n }\n\n function offMessage(callback) {\n off(window, 'message', 'onmessage', callback);\n }\n\n /**\n * Parse the sig_request parameter, throwing errors if the token contains\n * a server error or if the token is invalid.\n *\n * @param {String} sig Request token\n */\n function parseSigRequest(sig) {\n if (!sig) {\n // nothing to do\n return;\n }\n\n // see if the token contains an error, throwing it if it does\n if (sig.indexOf('ERR|') === 0) {\n throwError(sig.split('|')[1]);\n }\n\n // validate the token\n if (sig.indexOf(':') === -1 || sig.split(':').length !== 2) {\n throwError(\n 'Duo was given a bad token. This might indicate a configuration ' +\n 'problem with one of Duo\\'s client libraries.'\n );\n }\n\n var sigParts = sig.split(':');\n\n // hang on to the token, and the parsed duo and app sigs\n sigRequest = sig;\n duoSig = sigParts[0];\n appSig = sigParts[1];\n\n return {\n sigRequest: sig,\n duoSig: sigParts[0],\n appSig: sigParts[1]\n };\n }\n\n /**\n * Validate that a MessageEvent came from the Duo service, and that it\n * is a properly formatted payload.\n *\n * The Google Chrome sign-in page injects some JS into pages that also\n * make use of postMessage, so we need to do additional validation above\n * and beyond the origin.\n *\n * @param {MessageEvent} event Message received via postMessage\n */\n function isDuoMessage(event) {\n return Boolean(\n event.origin === ('https://' + host) &&\n typeof event.data === 'string' &&\n (\n event.data.match(DUO_MESSAGE_FORMAT) ||\n event.data.match(DUO_ERROR_FORMAT) ||\n event.data.match(DUO_OPEN_WINDOW_FORMAT)\n )\n );\n }\n\n /**\n * Validate the request token and prepare for the iframe to become ready.\n *\n * All options below can be passed into an options hash to `Duo.init`, or\n * specified on the iframe using `data-` attributes.\n *\n * Options specified using the options hash will take precedence over\n * `data-` attributes.\n *\n * Example using options hash:\n * ```javascript\n * Duo.init({\n * iframe: \"some_other_id\",\n * host: \"api-main.duo.test\",\n * sig_request: \"...\",\n * post_action: \"/auth\",\n * post_argument: \"resp\"\n * });\n * ```\n *\n * Example using `data-` attributes:\n * ```html\n * \n * ```\n *\n * Some browsers (especially embedded browsers) don't like it when the Duo\n * Web SDK changes the `src` attribute on the iframe. To prevent this, there\n * is an alternative way to use the Duo Web SDK:\n *\n * Add a div (or any other container element) instead of an iframe to the\n * DOM with an id of \"duo_iframe\", or pass that element to the\n * `iframeContainer` parameter of `Duo.init`. An iframe will be created and\n * inserted into that container element, preventing `src` change related\n * bugs. WARNING: All other elements in the container will be deleted.\n *\n * The `iframeAttributes` parameter of `Duo.init` is available to set any\n * attributes on the inserted iframe if the Duo Web SDK is inserting the\n * iframe. For details, see the parameter documentation below.\n *\n * @param {Object} options\n * @param {String} options.host - Hostname for the Duo Prompt.\n * @param {String} options.sig_request - Request token.\n * @param {String|HTMLElement} [options.iframe] - The iframe, or id of an\n * iframe that will be used for the Duo Prompt. If you don't provide\n * this or the `iframeContainer` parameter the Duo Web SDK will default\n * to using whatever element has an id of \"duo_iframe\".\n * @param {String|HTMLElement} [options.iframeContainer] - The element you\n * want the Duo Prompt inserted into, or the id of that element.\n * Anything inside this element will be deleted and replaced with an\n * iframe hosting the Duo prompt. If you don't provide this or the\n * `iframe` parameter the Duo Web SDK will default to using whatever\n * element has an id of \"duo_iframe\".\n * @param {Object} [options.iframeAttributes] - Object with names and\n * values coresponding to attributes you want added to the Duo Prompt\n * iframe, like `title`, `width` and `allow`. WARNING: this parameter\n * only works if you use the `iframeContainer` parameter or add an id\n * of \"duo_iframe\" to an element that isn't an iframe. If you have\n * added an iframe to the DOM yourself, you should set those attributes\n * directly on the iframe.\n * @param {String} [options.post_action=''] - URL to POST back to after a\n * successful auth.\n * @param {String} [options.post_argument='sig_response'] - Parameter name\n * to use for response token.\n * @param {Function} [options.submit_callback] - If provided, the Duo Web\n * SDK will not submit the form. Instead it will execute this callback\n * function passing in a reference to the \"duo_form\" form object.\n * `submit_callback`` can be used to prevent the webpage from reloading.\n */\n function init(options) {\n // If init() is called more than once we have to reset all the local\n // variables to ensure init() will work the same way every time. This\n // helps people making single page applications. SPAs may periodically\n // remove the iframe and add a new one that has to be initialized.\n initializeStatefulVariables();\n\n if (options) {\n if (options.host) {\n host = options.host;\n }\n\n if (options.sig_request) {\n parseSigRequest(options.sig_request);\n }\n\n if (options.post_action) {\n postAction = options.post_action;\n }\n\n if (options.post_argument) {\n postArgument = options.post_argument;\n }\n\n if (typeof options.submit_callback === 'function') {\n submitCallback = options.submit_callback;\n }\n }\n\n var promptElement = getPromptElement(options);\n if (promptElement) {\n // If we can get the element that will host the prompt, set it.\n ready(promptElement, options.iframeAttributes || {});\n } else {\n // If the element that will host the prompt isn't available yet, set\n // it up after the DOM finishes loading.\n asyncReady(options);\n }\n\n // always clean up after yourself!\n offReady(init);\n }\n\n /**\n * Given the options from init(), get the iframe or iframe container that\n * should be used for the Duo Prompt. Returns `null` if nothing was found.\n */\n function getPromptElement(options) {\n var result;\n\n if (options.iframe && options.iframeContainer) {\n throwError(\n 'Passing both `iframe` and `iframeContainer` arguments at the' +\n ' same time is not allowed.'\n );\n } else if (options.iframe) {\n // If we are getting an iframe, try to get it and raise if the\n // element we find is NOT an iframe.\n result = getUserDefinedElement(options.iframe);\n validateIframe(result);\n } else if (options.iframeContainer) {\n result = getUserDefinedElement(options.iframeContainer);\n validateIframeContainer(result);\n } else {\n result = document.getElementById('duo_iframe');\n }\n\n return result;\n }\n\n /**\n * When given an HTMLElement, return it. When given a string, get an element\n * with that id, else return null.\n */\n function getUserDefinedElement(object) {\n if (object.tagName) {\n return object;\n } else if (typeof object == 'string') {\n return document.getElementById(object);\n }\n return null;\n }\n\n /**\n * Check if the given thing is an iframe.\n */\n function isIframe(element) {\n return (\n element &&\n element.tagName &&\n element.tagName.toLowerCase() === 'iframe'\n );\n }\n\n /**\n * Throw an error if we are given an element that is NOT an iframe.\n */\n function validateIframe(element) {\n if (element && !isIframe(element)) {\n throwError(\n '`iframe` only accepts an iframe element or the id of an' +\n ' iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument.'\n );\n }\n }\n\n /**\n * Throw an error if we are given an element that IS an iframe instead of an\n * element that we can insert an iframe into.\n */\n function validateIframeContainer(element) {\n if (element && isIframe(element)) {\n throwError(\n '`iframeContainer` only accepts a non-iframe element or the' +\n ' id of a non-iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument on Duo.init().'\n );\n }\n }\n\n /**\n * Generate the URL that goes to the Duo Prompt.\n */\n function generateIframeSrc() {\n return [\n 'https://', host, '/frame/web/v1/auth?tx=', duoSig,\n '&parent=', encodeURIComponent(document.location.href),\n '&v=2.8'\n ].join('');\n }\n\n /**\n * This function is called when a message was received from another domain\n * using the `postMessage` API. Check that the event came from the Duo\n * service domain, and that the message is a properly formatted payload,\n * then perform the post back to the primary service.\n *\n * @param event Event object (contains origin and data)\n */\n function onReceivedMessage(event) {\n if (isDuoMessage(event)) {\n if (event.data.match(DUO_OPEN_WINDOW_FORMAT)) {\n var url = event.data.substring(\"DUO_OPEN_WINDOW|\".length);\n if (isValidUrlToOpen(url)) {\n // Open the URL that comes after the DUO_WINDOW_OPEN token.\n window.open(url, \"_self\");\n }\n }\n else {\n // the event came from duo, do the post back\n doPostBack(event.data);\n\n // always clean up after yourself!\n offMessage(onReceivedMessage);\n }\n }\n }\n\n /**\n * Validate that this passed in URL is one that we will actually allow to\n * be opened.\n * @param url String URL that the message poster wants to open\n * @returns {boolean} true if we allow this url to be opened in the window\n */\n function isValidUrlToOpen(url) {\n if (!url) {\n return false;\n }\n\n var parser = document.createElement('a');\n parser.href = url;\n\n if (parser.protocol === \"duotrustedendpoints:\") {\n return true;\n } else if (parser.protocol !== \"https:\") {\n return false;\n }\n\n for (var i = 0; i < VALID_OPEN_WINDOW_DOMAINS.length; i++) {\n if (parser.hostname.endsWith(\".\" + VALID_OPEN_WINDOW_DOMAINS[i]) ||\n parser.hostname === VALID_OPEN_WINDOW_DOMAINS[i]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Register a callback to call ready() after the DOM has loaded.\n */\n function asyncReady(options) {\n var callback = function() {\n var promptElement = getPromptElement(options);\n if (!promptElement) {\n throwError(\n 'This page does not contain an iframe for Duo to use.' +\n ' Add an element like' +\n ' to this page.'\n );\n }\n\n ready(promptElement, options.iframeAttributes || {});\n\n // Always clean up after yourself.\n offReady(callback)\n };\n\n onReady(callback);\n }\n\n /**\n * Point the iframe at Duo, then wait for it to postMessage back to us.\n */\n function ready(promptElement, iframeAttributes) {\n if (!host) {\n host = getDataAttribute(promptElement, 'host');\n\n if (!host) {\n throwError(\n 'No API hostname is given for Duo to use. Be sure to pass ' +\n 'a `host` parameter to Duo.init, or through the `data-host` ' +\n 'attribute on the iframe element.'\n );\n }\n }\n\n if (!duoSig || !appSig) {\n parseSigRequest(getDataAttribute(promptElement, 'sigRequest'));\n\n if (!duoSig || !appSig) {\n throwError(\n 'No valid signed request is given. Be sure to give the ' +\n '`sig_request` parameter to Duo.init, or use the ' +\n '`data-sig-request` attribute on the iframe element.'\n );\n }\n }\n\n // if postAction/Argument are defaults, see if they are specified\n // as data attributes on the iframe\n if (postAction === '') {\n postAction = getDataAttribute(promptElement, 'postAction') || postAction;\n }\n\n if (postArgument === 'sig_response') {\n postArgument = getDataAttribute(promptElement, 'postArgument') || postArgument;\n }\n\n if (isIframe(promptElement)) {\n iframe = promptElement;\n iframe.src = generateIframeSrc();\n } else {\n // If given a container to put an iframe in, clean out any children\n // child elements in case `init()` was called more than once.\n while (promptElement.firstChild) {\n // We call `removeChild()` instead of doing `innerHTML = \"\"`\n // to make sure we unbind any events.\n promptElement.removeChild(promptElement.firstChild)\n }\n\n iframe = document.createElement('iframe');\n\n // Set the src and all other attributes on the new iframe.\n iframeAttributes['src'] = generateIframeSrc();\n for (var name in iframeAttributes) {\n iframe.setAttribute(name, iframeAttributes[name]);\n }\n\n promptElement.appendChild(iframe);\n }\n\n // listen for the 'message' event\n onMessage(onReceivedMessage);\n }\n\n /**\n * We received a postMessage from Duo. POST back to the primary service\n * with the response token, and any additional user-supplied parameters\n * given in form#duo_form.\n */\n // function doPostBack(response) {\n // // create a hidden input to contain the response token\n // var input = document.createElement('input');\n // input.type = 'hidden';\n // input.name = postArgument;\n // input.value = response + ':' + appSig;\n\n // // user may supply their own form with additional inputs\n // var form = document.getElementById('duo_form');\n\n // // if the form doesn't exist, create one\n // if (!form) {\n // form = document.createElement('form');\n\n // // insert the new form after the iframe\n // iframe.parentElement.insertBefore(form, iframe.nextSibling);\n // }\n\n // // make sure we are actually posting to the right place\n // form.method = 'POST';\n // form.action = postAction;\n\n // // add the response token input to the form\n // form.appendChild(input);\n\n // // away we go!\n // if (typeof submitCallback === \"function\") {\n // submitCallback.call(null, form);\n // } else {\n // form.submit();\n // }\n // }\n\n // OKTA: Overriding their doPostBack logic because we want to submit this\n // through ajax, not a postBack\n function doPostBack(response) {\n postAction(response + ':' + appSig);\n }\n \n\n return {\n init: init,\n _onReady: onReady,\n _parseSigRequest: parseSigRequest,\n _isDuoMessage: isDuoMessage,\n _doPostBack: doPostBack\n };\n}));","/* eslint-disable @typescript-eslint/ban-ts-comment */\n\n// core features\nrequire('core-js/features/object/set-prototype-of');\nrequire('core-js/features/object/assign');\nrequire('core-js/features/object/keys');\nrequire('core-js/features/object/values');\nrequire('core-js/features/object/from-entries');\nrequire('core-js/features/object/entries');\nrequire('core-js/features/object/iterate-entries');\nrequire('core-js/features/object/iterate-keys');\nrequire('core-js/features/object/iterate-values');\nrequire('core-js/features/symbol/iterator');\nrequire('core-js/es/promise');\nrequire('core-js/es/typed-array/uint8-array');\nrequire('core-js/features/array/from');\nrequire('core-js/features/array/includes');\nrequire('core-js/features/array/find');\nrequire('core-js/features/array/find-index');\nrequire('core-js/features/string/includes');\nrequire('core-js/features/string/starts-with');\nrequire('core-js/features/string/ends-with');\nrequire('core-js/web/url');\n\n// crypto is eeded for PKCE\nrequire('fast-text-encoding'); // TextEncoder\nrequire('webcrypto-shim'); // crypto.subtle\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-statements: [2, 15] */\n\nimport Q from 'q';\nimport Enums from './Enums';\nconst SWAP_PAGE_TIME = 200;\nconst fn = {};\n\nfunction zoom($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 200,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'scale(' + now + ', ' + now + ')');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\nfunction rotate($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 150,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'rotate(' + now + 'deg)');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\n// Note: It is necessary to pass in a success callback because we must\n// remove the old dom node (and controller) in the same tick of the event\n// loop. Waiting for \"then\" results in a glitchy animation.\nfn.swapPages = function(options) {\n const deferred = Q.defer();\n const $parent = options.$parent;\n const $oldRoot = options.$oldRoot;\n const $newRoot = options.$newRoot;\n const success = options.success;\n const ctx = options.ctx;\n let directionClassName = 'transition-from-right';\n\n if (options.dir && options.dir === Enums.DIRECTION_BACK) {\n directionClassName = 'transition-from-left';\n }\n\n $newRoot.addClass(directionClassName);\n $parent.append($newRoot);\n\n $parent.addClass('animation-container-overflow');\n $newRoot.animate({ left: '0px', top: '0px', opacity: 1 }, SWAP_PAGE_TIME, function() {\n $parent.removeClass('animation-container-overflow');\n $newRoot.removeClass(directionClassName);\n $newRoot.removeAttr('style');\n success.call(ctx);\n deferred.resolve();\n });\n\n $oldRoot.animate({ height: $newRoot.height(), opacity: 0 }, SWAP_PAGE_TIME * 0.8);\n\n return deferred.promise;\n};\n\nfn.swapBeacons = function(options) {\n const $el = options.$el;\n const swap = options.swap;\n const ctx = options.ctx;\n\n return this.implode($el)\n .then(function() {\n swap.call(ctx);\n return $el;\n })\n .then(this.explode);\n};\n\nfn.explode = function($el) {\n return zoom($el, 0, 1); //zoom in\n};\n\nfn.implode = function($el) {\n return zoom($el, 1, 0); //zoom out\n};\n\nfn.radialProgressBar = function(options) {\n const radialProgressBar = options.$el;\n const swap = options.swap;\n const circles = radialProgressBar.children();\n\n return rotate(circles, 0, 180)\n .then(function() {\n radialProgressBar.css({ clip: 'auto' });\n })\n .then(function() {\n const leftHalf = circles.eq(0);\n\n swap();\n return rotate(leftHalf, 180, 360);\n })\n .then(function() {\n //reset values to initial state\n radialProgressBar.css({ clip: 'rect(0px, 96px, 96px, 48px)' });\n circles.css({\n transform: 'rotate(0deg)',\n 'text-indent': '1px',\n });\n });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2018-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Enums from 'util/Enums';\nconst fn = {};\n\nconst template = function(colors) {\n return `\n#okta-sign-in.auth-container .button-primary,\n#okta-sign-in.auth-container .button-primary:active,\n#okta-sign-in.auth-container .button-primary:focus { background: ${colors.brand}; }\n#okta-sign-in.auth-container .button-primary:hover { background: ${fn.lighten(colors.brand, 0.05)}; }\n#okta-sign-in.auth-container .button.button-primary.link-button-disabled {\n background: ${colors.brand};\n opacity: 0.5;\n}\n `;\n};\n\n// visible for testing\nfn.lighten = function(hex, lum) {\n lum = lum || 0;\n hex = hex.substr(1);\n let newHex = '#';\n\n for (var i = 0; i < 3; i++) {\n let c = parseInt(hex.substr(i * 2, 2), 16);\n\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);\n newHex += ('00' + c).substr(c.length);\n }\n return newHex;\n};\n\nfn.addStyle = function(colors) {\n const css = template(colors);\n const main = document.getElementById(Enums.WIDGET_CONTAINER_ID);\n const style = document.createElement('style');\n\n style.id = Enums.WIDGET_CONFIG_COLORS_ID;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n\n main.appendChild(style);\n};\n\nfn.isLoaded = function() {\n return !!document.getElementById(Enums.WIDGET_CONFIG_COLORS_ID);\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { internal } from 'okta';\nconst Cookie = internal.util.Cookie;\nconst LAST_USERNAME_COOKIE_NAME = 'ln';\nconst DAYS_SAVE_REMEMBER = 365;\nconst fn = {};\n\nfn.getCookieUsername = function() {\n return Cookie.getCookie(LAST_USERNAME_COOKIE_NAME);\n};\n\nfn.setUsernameCookie = function(username) {\n Cookie.setCookie(LAST_USERNAME_COOKIE_NAME, username, {\n expires: DAYS_SAVE_REMEMBER,\n path: '/',\n });\n};\n\nfn.removeUsernameCookie = function() {\n Cookie.removeCookie(LAST_USERNAME_COOKIE_NAME, { path: '/' });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport bundles from './Bundles';\nimport countryCallingCodes from './countryCallingCodes';\nconst fn = {};\n\n// () => [{ countryCode: countryName }], sorted by countryName\nfn.getCountries = function() {\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n // Sort it; figure out if there is a better way to do this (best would\n // be to sort it in the properties file!!)\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = country.name;\n });\n\n return sorted;\n};\n\nfn.getCountryCode = function(){\n\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = loc('country.option.label', 'login', [country.name, country.code]);\n });\n\n return sorted;\n};\n\nfn.getCallingCodeForCountry = function(countryCode) {\n return countryCallingCodes[countryCode];\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global Uint8Array */\n\nconst fn = {};\n\n/**\n * Light weight hashing algorithm that hashes string into an integer between 0 and 4294967295\n * Not recommended for data set of size greater than 10000\n * https://www.npmjs.com/package/string-hash\n *\n * @param str the string to be hashed\n * @returns string hash of integer type\n */\nfn.getStringHash = function(str) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0;\n};\n\n/**\n * Converts any url safe characters in a base64 string to regular base64 characters\n * @param str base64 string that might contain url safe characters\n * @returns base64 formatted string\n */\nfn.base64UrlSafeToBase64 = function(str) {\n return str.replace(new RegExp('_', 'g'), '/').replace(new RegExp('-', 'g'), '+');\n};\n\n/**\n * Converts an ArrayBuffer object that contains binary data to base64 encoded string\n * @param bin ArrayBuffer object\n * @returns base64 encoded string\n */\nfn.binToStr = function(bin) {\n return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n};\n\n/**\n * Converts base64 string to binary data view\n * @param str in base64 or base64UrlSafe format\n * @returns converted Uint8Array view of binary data\n */\nfn.strToBin = function(str) {\n return Uint8Array.from(atob(this.base64UrlSafeToBase64(str)), c => c.charCodeAt(0));\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default {\n API_RATE_LIMIT: 30000, //milliseconds\n\n WIDGET_LOGIN_CONTAINER_ID: 'okta-login-container',\n WIDGET_CONTAINER_ID: 'okta-sign-in',\n WIDGET_CONFIG_COLORS_ID: 'okta-sign-in-config-colors',\n\n DIRECTION_BACK: 'DIRECTION_BACK',\n\n RECOVERY_TYPE_PASSWORD: 'PASSWORD',\n RECOVERY_TYPE_UNLOCK: 'UNLOCK',\n RECOVERY_FACTOR_TYPE_SMS: 'SMS',\n RECOVERY_FACTOR_TYPE_EMAIL: 'EMAIL',\n RECOVERY_FACTOR_TYPE_CALL: 'CALL',\n\n IOS: 'ios',\n ANDROID: 'android',\n\n ODA: 'oda',\n MDM: 'mdm',\n\n // Global success messages\n SUCCESS: 'SUCCESS',\n FORGOT_PASSWORD_EMAIL_SENT: 'FORGOT_PASSWORD_EMAIL_SENT',\n UNLOCK_ACCOUNT_EMAIL_SENT: 'UNLOCK_ACCOUNT_EMAIL_SENT',\n\n // Global error messages\n CONFIG_ERROR: 'CONFIG_ERROR',\n UNSUPPORTED_BROWSER_ERROR: 'UNSUPPORTED_BROWSER_ERROR',\n OAUTH_ERROR: 'OAUTH_ERROR',\n AUTH_STOP_POLL_INITIATION_ERROR: 'AUTH_STOP_POLL_INITIATION_ERROR',\n U2F_ERROR: 'U2F_ERROR',\n WEB_AUTHN_ERROR: 'WEB_AUTHN_ERROR',\n WEBAUTHN_ABORT_ERROR: 'WEBAUTHN_ABORT_ERROR',\n CONFIGURED_FLOW_ERROR: 'CONFIGURED_FLOW_ERROR',\n\n // Enroll choice page types\n ALL_OPTIONAL_NONE_ENROLLED: 'ALL_OPTIONAL_NONE_ENROLLED',\n ALL_OPTIONAL_SOME_ENROLLED: 'ALL_OPTIONAL_SOME_ENROLLED',\n HAS_REQUIRED_NONE_ENROLLED: 'HAS_REQUIRED_NONE_ENROLLED',\n HAS_REQUIRED_SOME_REQUIRED_ENROLLED: 'HAS_REQUIRED_SOME_REQUIRED_ENROLLED',\n HAS_REQUIRED_ALL_REQUIRED_ENROLLED: 'HAS_REQUIRED_ALL_REQUIRED_ENROLLED',\n\n // Operations\n PRIMARY_AUTH: 'PRIMARY_AUTH',\n FORGOT_PASSWORD: 'FORGOT_PASSWORD',\n UNLOCK_ACCOUNT: 'UNLOCK_ACCOUNT',\n\n // Auth Types\n SESSION_SSO: 'SESSION_SSO',\n SESSION_STEP_UP: 'SESSION_STEP_UP',\n\n //Registration\n ACTIVATION_EMAIL_SENT: 'ACTIVATION_EMAIL_SENT',\n REGISTRATION_COMPLETE: 'REGISTRATION_COMPLETE',\n REGISTRATION_FAILED: 'REGISTRATION_FAILED',\n\n //IDP Discovery\n IDP_DISCOVERY: 'IDP_DISCOVERY',\n\n //App Store Links\n OKTA_VERIFY_APPLE_APP_STORE_URL: 'https://apps.apple.com/us/app/okta-verify/id490179405',\n OKTA_VERIFY_GOOGLE_PLAY_STORE_URL: 'https://play.google.com/store/apps/details?id=com.okta.android.auth',\n\n // Device Challenge Method\n LOOPBACK_CHALLENGE: 'LOOPBACK',\n CUSTOM_URI_CHALLENGE: 'CUSTOM_URI',\n UNIVERSAL_LINK_CHALLENGE: 'UNIVERSAL_LINK',\n APP_LINK_CHALLENGE: 'APP_LINK',\n\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default {\n INVALID_TOKEN_EXCEPTION: 'E0000011',\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 38], max-statements: [2, 38] */\nimport { _, loc } from 'okta';\nimport TimeUtil from 'util/TimeUtil';\nconst fn = {};\nconst factorData = {\n OKTA_VERIFY: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpSoft.oktaVerify',\n description: 'factor.totpSoft.description',\n iconClassName: 'mfa-okta-verify',\n sortOrder: 1,\n },\n OKTA_VERIFY_PUSH: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.oktaVerifyPush',\n description: 'factor.push.description',\n iconClassName: 'mfa-okta-verify',\n sortOrder: 1,\n },\n U2F: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.u2f',\n description: brandName => {\n return brandName ? 'factor.u2f.description.specific' : 'factor.u2f.description.generic';\n },\n iconClassName: 'mfa-u2f',\n sortOrder: 2,\n },\n WEBAUTHN: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.webauthn.biometric',\n description: 'factor.webauthn.biometric.description',\n iconClassName: 'mfa-webauthn',\n sortOrder: 2,\n },\n WINDOWS_HELLO: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.windowsHello',\n description: brandName => {\n return brandName\n ? 'factor.windowsHello.signin.description.specific'\n : 'factor.windowsHello.signin.description.generic';\n },\n iconClassName: 'mfa-windows-hello',\n sortOrder: 3,\n },\n YUBIKEY: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.yubikey',\n description: 'factor.totpHard.yubikey.description',\n iconClassName: 'mfa-yubikey',\n sortOrder: 4,\n },\n GOOGLE_AUTH: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpSoft.googleAuthenticator',\n description: 'factor.totpSoft.description',\n iconClassName: 'mfa-google-auth',\n sortOrder: 5,\n },\n CUSTOM_HOTP: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.hotp.description',\n iconClassName: 'mfa-hotp',\n sortOrder: 6,\n },\n SMS: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.sms',\n description: 'factor.sms.description',\n iconClassName: 'mfa-okta-sms',\n sortOrder: 7,\n },\n CALL: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.call',\n description: 'factor.call.description',\n iconClassName: 'mfa-okta-call',\n sortOrder: 8,\n },\n EMAIL: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.email',\n description: 'factor.email.description',\n iconClassName: 'mfa-okta-email',\n sortOrder: 9,\n },\n QUESTION: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.securityQuestion',\n description: 'factor.securityQuestion.description',\n iconClassName: 'mfa-okta-security-question',\n sortOrder: 10,\n },\n DUO: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.duo',\n description: 'factor.duo.description',\n iconClassName: 'mfa-duo',\n sortOrder: 11,\n },\n SYMANTEC_VIP: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.symantecVip',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-symantec',\n sortOrder: 12,\n },\n RSA_SECURID: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.rsaSecurId',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-rsa',\n sortOrder: 13,\n },\n ON_PREM: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-onprem',\n sortOrder: 14,\n },\n PASSWORD: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.password',\n description: '',\n iconClassName: 'mfa-okta-password',\n sortOrder: 15,\n },\n CUSTOM_CLAIMS: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.customFactor.description',\n iconClassName: 'mfa-custom-factor',\n sortOrder: 16,\n },\n GENERIC_SAML: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: brandName => {\n return brandName ? 'factor.customFactor.description.specific' : 'factor.customFactor.description.generic';\n },\n iconClassName: 'mfa-custom-factor',\n sortOrder: 17,\n },\n GENERIC_OIDC: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: brandName => {\n return brandName ? 'factor.customFactor.description.specific' : 'factor.customFactor.description.generic';\n },\n iconClassName: 'mfa-custom-factor',\n sortOrder: 18,\n },\n};\n\nconst getPasswordComplexityRequirementsAsArray = function(policy, i18nKeys) {\n const setExcludeAttributes = function(policyComplexity) {\n const excludeAttributes = policyComplexity.excludeAttributes;\n\n policyComplexity.excludeFirstName = _.contains(excludeAttributes, 'firstName');\n policyComplexity.excludeLastName = _.contains(excludeAttributes, 'lastName');\n return _.omit(policyComplexity, 'excludeAttributes');\n };\n\n if (policy.complexity) {\n const complexityFields = i18nKeys.complexity;\n const policyComplexity = setExcludeAttributes(policy.complexity);\n\n const requirements = _.map(policyComplexity, function(complexityValue, complexityType) {\n if (complexityValue <= 0) {\n // to skip 0 and -1\n return;\n }\n\n const params = complexityFields[complexityType];\n\n return params.args ? loc(params.i18n, 'login', [complexityValue]) : loc(params.i18n, 'login');\n });\n\n return _.compact(requirements);\n }\n return [];\n};\n\nconst getPasswordHistoryRequirementDescription = function(policy, i18nKeys) {\n if (policy.age && policy.age.historyCount > 0) {\n return loc(i18nKeys.history.i18n, 'login', [policy.age.historyCount]);\n }\n return null;\n};\n\nconst getPasswordAgeRequirementDescription = function(policy, i18nKeys) {\n const getPasswordAgeRequirement = function(displayableTime) {\n let propertiesString;\n\n switch (displayableTime.unit) {\n case 'DAY':\n propertiesString = i18nKeys.age.days.i18n;\n break;\n case 'HOUR':\n propertiesString = i18nKeys.age.hours.i18n;\n break;\n case 'MINUTE':\n propertiesString = i18nKeys.age.minutes.i18n;\n }\n return loc(propertiesString, 'login', [displayableTime.time]);\n };\n\n if (policy.age && policy.age.minAgeMinutes > 0) {\n const displayableTime = TimeUtil.getTimeInHighestRelevantUnit(policy.age.minAgeMinutes, 'MINUTE');\n\n return getPasswordAgeRequirement(displayableTime);\n }\n return null;\n};\n\nconst getPasswordRequirements = function(policy, i18nKeys) {\n const passwordRequirements = {\n complexity: [],\n history: [],\n age: [],\n };\n\n passwordRequirements.complexity = getPasswordComplexityRequirementsAsArray(policy, i18nKeys);\n\n const historyRequirement = getPasswordHistoryRequirementDescription(policy, i18nKeys);\n\n if (historyRequirement) {\n passwordRequirements.history.push(historyRequirement);\n }\n\n const ageRequirement = getPasswordAgeRequirementDescription(policy, i18nKeys);\n\n if (ageRequirement) {\n passwordRequirements.age.push(ageRequirement);\n }\n\n return passwordRequirements;\n};\n\nfn.getFactorName = function(provider, factorType) {\n if (provider === 'OKTA' && factorType === 'token:software:totp') {\n return 'OKTA_VERIFY';\n }\n if (provider === 'OKTA' && factorType === 'push') {\n return 'OKTA_VERIFY_PUSH';\n }\n if (provider === 'GOOGLE') {\n return 'GOOGLE_AUTH';\n }\n if (provider === 'SYMANTEC' && factorType === 'token') {\n return 'SYMANTEC_VIP';\n }\n if (provider === 'RSA' && factorType === 'token') {\n return 'RSA_SECURID';\n }\n if (provider === 'DEL_OATH' && factorType === 'token') {\n return 'ON_PREM';\n }\n if (provider === 'DUO' && factorType === 'web') {\n return 'DUO';\n }\n if (provider === 'YUBICO' && factorType === 'token:hardware') {\n return 'YUBIKEY';\n }\n if (provider === 'OKTA' && factorType === 'sms') {\n return 'SMS';\n }\n if (provider === 'OKTA' && factorType === 'call') {\n return 'CALL';\n }\n if (provider === 'OKTA' && factorType === 'question') {\n return 'QUESTION';\n }\n if (provider === 'OKTA' && factorType === 'email') {\n return 'EMAIL';\n }\n if (provider === 'OKTA' && factorType === 'password') {\n return 'PASSWORD';\n }\n if (provider === 'GENERIC_SAML' && factorType === 'assertion:saml2') {\n return 'GENERIC_SAML';\n }\n if (provider === 'GENERIC_OIDC' && factorType === 'assertion:oidc') {\n return 'GENERIC_OIDC';\n }\n return fn.getFactorNameForFactorType.call(this, factorType);\n};\n\nfn.getFactorNameForFactorType = function(factorType) {\n if (factorType === 'u2f') {\n return 'U2F';\n }\n if (factorType === 'token:software:totp') {\n return 'OKTA_VERIFY';\n }\n if (factorType === 'webauthn') {\n if (this.settings.get('features.webauthn')) {\n return 'WEBAUTHN';\n } else {\n return 'WINDOWS_HELLO';\n }\n }\n if (factorType === 'token:hotp') {\n return 'CUSTOM_HOTP';\n }\n if (factorType === 'claims_provider') {\n return 'CUSTOM_CLAIMS';\n }\n};\n\nfn.isOktaVerify = function(provider, factorType) {\n return provider === 'OKTA' && (factorType === 'token:software:totp' || factorType === 'push');\n};\n\nfn.getFactorLabel = function(provider, factorType) {\n const key = factorData[fn.getFactorName.apply(this, [provider, factorType])].label;\n\n return loc(key, 'login');\n};\n\nfn.getFactorDescription = function(provider, factorType) {\n const descriptionKey = factorData[fn.getFactorName.apply(this, [provider, factorType])].description;\n\n if (_.isFunction(descriptionKey)) {\n const brandName = this.settings.get('brandName');\n const key = descriptionKey(brandName);\n\n return brandName ? loc(key, 'login', [brandName]) : loc(key, 'login');\n } else {\n return loc(descriptionKey, 'login');\n }\n};\n\nfn.getFactorIconClassName = function(provider, factorType) {\n return factorData[fn.getFactorName.apply(this, [provider, factorType])].iconClassName;\n};\n\nfn.getFactorSortOrder = function(provider, factorType) {\n return factorData[fn.getFactorName.apply(this, [provider, factorType])].sortOrder;\n};\n\nfn.getRememberDeviceValue = function(appState) {\n return appState && appState.get('rememberDeviceByDefault');\n};\n\nfn.getSecurityQuestionLabel = function(questionObj) {\n const localizedQuestion = loc('security.' + questionObj.question);\n\n return localizedQuestion.indexOf('L10N_ERROR') < 0 ? localizedQuestion : questionObj.questionText;\n};\n\nfn.removeRequirementsFromError = function(responseJSON, policy) {\n const passwordRequirementsAsString = this.getPasswordComplexityDescription(policy);\n\n if (\n responseJSON.errorCauses &&\n responseJSON.errorCauses.length > 0 &&\n _.isString(responseJSON.errorCauses[0].errorSummary)\n ) {\n responseJSON.errorCauses[0].errorSummary = responseJSON.errorCauses[0].errorSummary\n .replace(passwordRequirementsAsString, '')\n .trim();\n }\n return responseJSON;\n};\n\nfn.getPasswordComplexityDescriptionForHtmlList = function(policy) {\n const passwordRequirementHtmlI18nKeys = {\n complexity: {\n minLength: { i18n: 'password.complexity.length.description', args: true },\n minLowerCase: { i18n: 'password.complexity.lowercase.description' },\n minUpperCase: { i18n: 'password.complexity.uppercase.description' },\n minNumber: { i18n: 'password.complexity.number.description' },\n minSymbol: { i18n: 'password.complexity.symbol.description' },\n excludeUsername: { i18n: 'password.complexity.no_username.description' },\n excludeFirstName: { i18n: 'password.complexity.no_first_name.description' },\n excludeLastName: { i18n: 'password.complexity.no_last_name.description' },\n },\n history: { i18n: 'password.complexity.history.description' },\n age: {\n minutes: { i18n: 'password.complexity.minAgeMinutes.description' },\n hours: { i18n: 'password.complexity.minAgeHours.description' },\n days: { i18n: 'password.complexity.minAgeDays.description' },\n },\n };\n const passwordRequirements = getPasswordRequirements(policy, passwordRequirementHtmlI18nKeys);\n\n return _.union(passwordRequirements.complexity, passwordRequirements.history, passwordRequirements.age);\n};\n\nfn.getPasswordComplexityDescription = function(policy) {\n const passwordRequirementI18nKeys = {\n complexity: {\n minLength: { i18n: 'password.complexity.length', args: true },\n minLowerCase: { i18n: 'password.complexity.lowercase' },\n minUpperCase: { i18n: 'password.complexity.uppercase' },\n minNumber: { i18n: 'password.complexity.number' },\n minSymbol: { i18n: 'password.complexity.symbol' },\n excludeUsername: { i18n: 'password.complexity.no_username' },\n excludeFirstName: { i18n: 'password.complexity.no_first_name' },\n excludeLastName: { i18n: 'password.complexity.no_last_name' },\n },\n history: { i18n: 'password.complexity.history' },\n age: {\n minutes: { i18n: 'password.complexity.minAgeMinutes' },\n hours: { i18n: 'password.complexity.minAgeHours' },\n days: { i18n: 'password.complexity.minAgeDays' },\n },\n };\n const result = [];\n const passwordRequirements = getPasswordRequirements(policy, passwordRequirementI18nKeys);\n let requirements = passwordRequirements.complexity;\n\n // Generate and add complexity string to result\n if (requirements.length > 0) {\n requirements = _.reduce(requirements, function(result, requirement) {\n return result ? result + loc('password.complexity.list.element', 'login', [requirement]) : requirement;\n });\n\n result.push(loc('password.complexity.requirements', 'login', [requirements]));\n }\n\n // Only 1 value expected in history and age for now\n result.push(passwordRequirements.history[0]);\n result.push(passwordRequirements.age[0]);\n\n return _.compact(result).join(' ');\n};\n\nfn.getCardinalityText = function(enrolled, required, cardinality) {\n if (cardinality) {\n if (enrolled) {\n return cardinality.enrolled === 1 ? '' : loc('enroll.choices.cardinality.setup', 'login', [cardinality.enrolled]);\n } else if (required && cardinality.maximum > 1) {\n return loc('enroll.choices.cardinality.setup.remaining', 'login', [cardinality.enrolled, cardinality.minimum]);\n }\n }\n return '';\n};\n\nfn.findFactorInFactorsArray = function(factors, provider, factorType) {\n let factor = factors.findWhere({ provider: provider, factorType: factorType });\n\n if (factor === undefined) {\n //for factors that support cardinality and only have factorType\n factor = factors.findWhere({ factorType: factorType });\n }\n return factor;\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 9] */\n\nimport { loc } from 'okta';\nconst fn = {};\n\nfn.getU2fEnrollErrorMessageKeyByCode = function(errorCode) {\n switch (errorCode) {\n default:\n case 1:\n return 'u2f.error.other';\n case 2:\n case 3:\n return 'u2f.error.badRequest';\n case 4:\n return 'u2f.error.unsupported';\n case 5:\n return 'u2f.error.timeout';\n }\n};\n\nfn.getU2fVerifyErrorMessageKeyByCode = function(errorCode, isOneFactor) {\n switch (errorCode) {\n case 1:\n // OTHER_ERROR\n return isOneFactor ? 'u2f.error.other.oneFactor' : 'u2f.error.other';\n case 2: // BAD_REQUEST\n case 3:\n // CONFIGURATION_UNSUPPORTED\n return isOneFactor ? 'u2f.error.badRequest.oneFactor' : 'u2f.error.badRequest';\n case 4:\n // DEVICE_INELIGIBLE\n return isOneFactor ? 'u2f.error.unsupported.oneFactor' : 'u2f.error.unsupported';\n case 5:\n // TIMEOUT\n return 'u2f.error.timeout';\n }\n};\n\nfn.getU2fEnrollErrorMessageByCode = function(errorCode) {\n return loc(fn.getU2fEnrollErrorMessageKeyByCode(errorCode), 'login');\n};\n\nfn.getU2fVerifyErrorMessageByCode = function(errorCode, isOneFactor) {\n return loc(fn.getU2fVerifyErrorMessageKeyByCode(errorCode, isOneFactor), 'login');\n};\n\nfn.getU2fVersion = function() {\n return 'U2F_V2';\n};\n\nfn.isU2fAvailable = function() {\n return Object.prototype.hasOwnProperty.call(window, 'u2f');\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport async function executeHookFunctions(functions) {\n for (let i = 0; i < functions.length; i++) {\n await functions[i]();\n }\n}\n\nexport async function executeHooksBefore(hook) {\n if (!hook || !hook.before || !hook.before.length) {\n return;\n }\n await executeHookFunctions(hook.before);\n}\n\nexport async function executeHooksAfter(hook) {\n if (!hook || !hook.after || !hook.after.length) {\n return;\n }\n await executeHookFunctions(hook.after);\n}\n\nexport function mergeHook(hooks, formName, hookToMerge) {\n const existingHook = hooks[formName] = hooks[formName] || { before: [], after: [] };\n if (hookToMerge.before) {\n existingHook.before = existingHook.before.concat(hookToMerge.before);\n }\n if (hookToMerge.after) {\n existingHook.after = existingHook.after.concat(hookToMerge.after);\n }\n}\n","const SUPPORTED_SOCIAL_IDPS = [\n 'facebook',\n 'google',\n 'linkedin',\n 'microsoft',\n 'apple',\n 'github',\n 'gitlab',\n 'yahoo',\n 'line',\n 'paypal',\n 'paypal_sandbox',\n 'salesforce',\n 'amazon',\n 'yahoojp',\n 'discord',\n 'adobe',\n 'orcid',\n 'spotify',\n 'xero',\n 'quickbooks',\n];\nexport default {\n SUPPORTED_SOCIAL_IDPS,\n};\n","import Bundles from 'util/Bundles';\nimport config from 'config/config.json';\n\nfunction loadLanguage(appState, settings) {\n const languageCode = appState.get('languageCode') || settings.get('languageCode') || config.defaultLanguage;\n const i18n = settings.get('i18n');\n const assetBaseUrl = settings.get('assets.baseUrl');\n const assetRewrite = settings.get('assets.rewrite');\n const supportedLanguages = settings.get('supportedLanguages');\n\n const timeout = setTimeout(function() {\n // Trigger a spinner if we're waiting on a request for a new language.\n appState.trigger('loading', true);\n }, 200);\n\n return Bundles.loadLanguage(languageCode, i18n, {\n baseUrl: assetBaseUrl,\n rewrite: assetRewrite,\n }, supportedLanguages).then(function() {\n clearTimeout(timeout);\n appState.trigger('loading', false);\n });\n // TODO: what if load language error?\n}\n\nexport default {\n loadLanguage,\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction log(level, args) {\n // Only log statements in development mode or if\n // throwing an error through console.error\n if (DEBUG || level === 'error') {\n window.console[level].apply(window.console, args);\n }\n}\n\n/**\n * Utility library of logging functions.\n */\nexport default {\n trace: function() {\n return log('trace', arguments);\n },\n\n dir: function() {\n return log('dir', arguments);\n },\n\n time: function() {\n return log('time', arguments);\n },\n\n timeEnd: function() {\n return log('timeEnd', arguments);\n },\n\n group: function() {\n return log('group', arguments);\n },\n\n groupEnd: function() {\n return log('groupEnd', arguments);\n },\n\n assert: function() {\n return log('assert', arguments);\n },\n\n log: function() {\n return log('log', arguments);\n },\n\n info: function() {\n return log('info', arguments);\n },\n\n warn: function() {\n return log('warn', arguments);\n },\n\n error: function() {\n return log('error', arguments);\n },\n\n deprecate: function(msg) {\n return log('warn', ['[okta-signin-widget] DEPRECATED:', msg]);\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport Enums from './Enums';\nimport { getTypedOAuthError, NonRecoverableError } from './OAuthErrors';\nimport Util from './Util';\nconst util = {};\n\n// https://github.com/okta/okta-auth-js#authorize-options\nconst AUTH_PARAMS = [\n 'responseType',\n 'scopes',\n 'state',\n 'nonce',\n 'idp',\n 'idpScope',\n 'display',\n 'prompt',\n 'maxAge',\n 'loginHint'\n];\nutil.AUTH_PARAMS = AUTH_PARAMS;\n\n/**\n * Get the tokens in the OIDC/OAUTH flows\n *\n * @param settings - settings model object\n * @param params - {idp: 'xxx'} for social auth\n * {sessionToken: 'xxx'} for okta idp\n */\nutil.getTokens = function(settings, params, controller) {\n function success(result) {\n settings.callGlobalSuccess(Enums.SUCCESS, result);\n }\n\n function error(error) {\n const typedError = getTypedOAuthError(error);\n if (typedError.is('terminal')) {\n controller.model.appState.set('flashError', typedError);\n controller.model.appState.trigger('navigate', 'signin/error');\n } else if (typedError.is('inline')) {\n controller.model.trigger('error', controller.model, {\n responseJSON: {\n errorSummary: typedError.errorDetails.errorSummary\n }\n });\n controller.model.appState.trigger('removeLoading');\n }\n\n if (!typedError.is('terminal')) {\n Util.triggerAfterError(controller, typedError, settings);\n }\n\n if (typedError instanceof NonRecoverableError) {\n settings.callGlobalError(typedError);\n }\n }\n\n const authClient = settings.getAuthClient();\n const isAuthorizationCodeFlow = authClient.isAuthorizationCodeFlow() && !authClient.isPKCE();\n const options = settings.toJSON({ verbose: true });\n const getTokenOptions = {};\n\n _.extend(\n getTokenOptions,\n _.pick(options, 'clientId', 'redirectUri'),\n _.pick(options.authParams, AUTH_PARAMS),\n params\n );\n\n // Extra Options for Social Idp popup window title and id_token response timeout\n getTokenOptions.popupTitle = loc('socialauth.popup.title', 'login');\n getTokenOptions.timeout = options.oAuthTimeout;\n\n // Redirect flow - this can be used when logging into an external IDP, or\n // converting the Okta sessionToken to an access_token, id_token, and/or\n // authorization code. Note: The authorization code flow will always redirect.\n if (options.redirect === 'always' || isAuthorizationCodeFlow) {\n authClient.token.getWithRedirect(getTokenOptions).catch(error);\n } else if (getTokenOptions.sessionToken) {\n // Default flow if logging in with Okta as the IDP - convert sessionToken to\n // tokens in a hidden iframe. Used in Single Page Apps where the app does\n // not want to redirect away from the page to convert the token.\n authClient.token.getWithoutPrompt(getTokenOptions).then(success).catch(error);\n } else {\n // Default flow if logging in with an external IDP - opens a popup and\n // gets the token from a postMessage response.\n authClient.token.getWithPopup(getTokenOptions).then(success).catch(error);\n }\n};\n\nexport default util;\n","import toMilliseconds from '@sindresorhus/to-milliseconds';\nimport parseMs from 'parse-ms';\n\nconst MOMENT_UNIT = {\n MILLISECOND: 'milliseconds',\n SECOND: 'seconds',\n MINUTE: 'minutes',\n HOUR: 'hours',\n DAY: 'days',\n};\n\nconst MOMENT_UNIT_KEYS = Object.keys(MOMENT_UNIT);\n\n/**\n * @method convertMomentUnits\n * Conversion between moment's units and our units internally\n *\n * @param {String} momentUnit The units that val is in\n * @return {String} The key in the MOMENT_UNIT hash\n */\nconst convertMomentUnits = function(momentUnit) {\n const entry = MOMENT_UNIT_KEYS.filter(k => MOMENT_UNIT[k] === momentUnit);\n\n return entry.length === 1 ? entry[0] : momentUnit;\n};\n\nexport default {\n /**\n * @method getTimeInHighestRelevantUnit\n * Will return a number in the units of the highest relevant time unit.\n * Only checks milliseconds, seconds, minutes, hours, and days.\n * E.g.\n * 15 MINUTE -> 15 MINUTE\n * 15 minutes -> 15 MINUTE\n * 60 minutes -> 1 HOUR\n * 90 minutes -> 90 MINUTE\n * 24 HOUR -> 1 DAY\n * 24 hours -> 1 DAY\n * 30 DAY -> 30 DAY\n *\n * @typedef { \"MILLISECOND\" | \"SECOND\" | \"MINUTE\" | \"HOUR\" | \"DAY\" } TimeUnit\n *\n * @typedef { \"MILLISECOND\" | \"SECOND\" | \"MINUTE\" | \"HOUR\" | \"DAY\" |\n * \"milliseconds\" | \"seconds\" | \"minutes\" | \"hours\" | \"days\"\n * } FlexibleTimeUnit\n *\n * @typedef TimeAndUnit\n * @property {number} time the consolidated time\n * @property {TimeUnit} unit the unit of the time\n *\n * @param {FlexibleTimeUnit} unit The time unit\n * @return {TimeAndUnit} An object containing the amount of time and the unit\n */\n getTimeInHighestRelevantUnit: function(val, unit) {\n const defaultTimeObj = {\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0,\n };\n const normalizedUnit = MOMENT_UNIT[unit] || unit;\n let timeObj;\n\n try {\n const ms = toMilliseconds(Object.assign(defaultTimeObj, { [normalizedUnit]: val }));\n timeObj = parseMs(ms);\n } catch (error) {\n timeObj = {};\n }\n\n const duration = Object.keys(timeObj).reduce((init, k) => {\n if (timeObj[k] !== 0) {\n init[k] = timeObj[k];\n }\n return init;\n }, {});\n\n let highestUnit;\n let time;\n if (Object.keys(duration).length === 1) {\n Object.keys(duration).forEach(k => {\n time = duration[k];\n highestUnit = k;\n });\n } else {\n time = val;\n highestUnit = normalizedUnit;\n }\n\n return {\n time: time,\n unit: convertMomentUnits(highestUnit),\n };\n },\n};\n","/* eslint-disable max-statements */\n/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 13], max-depth: [2, 3] */\nimport { _, loc } from 'okta';\nimport Enums from './Enums';\nimport Logger from './Logger';\nimport BrowserFeatures from './BrowserFeatures';\n\nconst Util = {};\n\nconst buildInputForParameter = function(name, value) {\n const input = document.createElement('input');\n\n input.name = name;\n input.value = decodeURIComponent(value);\n input.type = 'hidden';\n return input;\n};\n\nconst buildSubmitInput = function() {\n const input = document.createElement('input');\n input.type = 'submit';\n return input;\n};\n\nconst buildDynamicForm = function(url = '', method) {\n const splitOnFragment = url.split('#');\n const fragment = splitOnFragment[1];\n const splitOnQuery = (splitOnFragment[0] || '').split('?');\n const query = splitOnQuery[1];\n let targetUrl = splitOnQuery[0];\n\n if (fragment) {\n targetUrl += '#' + fragment;\n }\n\n const form = document.createElement('form');\n\n form.method = method;\n form.style.display = 'none';\n form.action = targetUrl;\n if (query && query.length) {\n const queryParts = query.split('&');\n\n queryParts.forEach(queryPart => {\n const parameterParts = queryPart.split('=');\n const input = buildInputForParameter(parameterParts[0], parameterParts[1]);\n\n form.appendChild(input);\n });\n }\n form.appendChild(buildSubmitInput());\n\n return form;\n};\n\n// eslint-disable-next-line complexity\nUtil.transformErrorXHR = function(xhr) {\n // Handle network connection error\n if (xhr.status === 0 && _.isEmpty(xhr.responseJSON)) {\n xhr.responseJSON = { errorSummary: loc('error.network.connection', 'login') };\n return xhr;\n }\n if (!xhr.responseJSON) {\n if (!xhr.responseText) {\n // Empty server response\n xhr.responseJSON = { errorSummary: loc('error.unsupported.response', 'login') };\n return xhr;\n }\n if (typeof xhr.responseText === 'string') {\n try {\n xhr.responseJSON = JSON.parse(xhr.responseText);\n } catch (e) {\n // Malformed server response\n xhr.responseJSON = { errorSummary: loc('error.unsupported.response', 'login') };\n return xhr;\n }\n } else if (typeof xhr.responseText === 'object') {\n xhr.responseJSON = xhr.responseText;\n } \n }\n // Temporary solution to display field errors\n // Assuming there is only one field error in a response\n if (xhr.responseJSON && xhr.responseJSON.errorCauses && xhr.responseJSON.errorCauses.length) {\n xhr.responseJSON.errorSummary = xhr.responseJSON.errorCauses[0].errorSummary;\n }\n // Replace error messages\n if (!_.isEmpty(xhr.responseJSON)) {\n const errorMsg = loc('errors.' + xhr.responseJSON.errorCode, 'login');\n\n if (errorMsg.indexOf('L10N_ERROR[') === -1) {\n xhr.responseJSON.errorSummary = errorMsg;\n if (xhr.responseJSON && xhr.responseJSON.errorCauses && xhr.responseJSON.errorCauses.length) {\n // BaseForm will consume errorCauses before errorSummary if it is an array,\n // so, we have to make sure to remove it when we have a valid error code\n delete xhr.responseJSON.errorCauses;\n }\n }\n }\n return xhr;\n};\n\n// Simple helper function to lowercase all strings in the given array\nUtil.toLower = function(strings) {\n return _.map(strings, function(str) {\n return str.toLowerCase();\n });\n};\n\n// A languageCode can be composed of multiple parts, i.e:\n// {{language}}-{{region}}-{{dialect}}\n//\n// In these cases, it's necessary to generate a list of other possible\n// combinations that we might support (in preferred order).\n//\n// For example:\n// en-US -> [en-US, en]\n// de-DE-bavarian -> [de-DE-bavarian, de-DE, de]\nfunction expandLanguage(language) {\n const expanded = [language];\n const parts = language.split('-');\n\n while (parts.pop() && parts.length > 0) {\n expanded.push(parts.join('-'));\n }\n return expanded;\n}\n\n// Following the rules of expanding one language, this will generate\n// all potential languages in the given order (where higher priority is\n// given to expanded languages over other downstream languages).\nUtil.expandLanguages = function(languages) {\n return _.chain(languages).map(expandLanguage).flatten().uniq().value();\n};\n\n//helper to call setTimeout\nUtil.callAfterTimeout = function(callback, time) {\n return setTimeout(callback, time);\n};\n\n// Helper function to provide consistent formatting of template literals\n// that are logged when in development mode.\nUtil.debugMessage = function(message) {\n Logger.warn(`\\n${message.replace(/^(\\s)+/gm, '')}`);\n};\n\nUtil.logConsoleError = function(message) {\n Logger.error(message);\n};\n\n// Trigger an afterError event\nUtil.triggerAfterError = function(controller, err = {}) {\n if (!err.statusCode && err.xhr && err.xhr.status) {\n // Bring the statusCode to the top-level of the Error\n err.statusCode = err.xhr.status;\n }\n // Some controllers return the className as a function - process it here:\n const className = _.isFunction(controller.className) ? controller.className() : controller.className;\n\n const error = _.pick(err, 'name', 'message', 'statusCode', 'xhr');\n\n controller.trigger('afterError', { controller: className }, error);\n // Logs to console only in dev mode\n Logger.warn('controller: ' + className + ', error: ' + error);\n};\n\nUtil.redirect = function(url, win = window, isAppLink = false) {\n if (!url) {\n Logger.error(`Cannot redirect to empty URL: (${url})`);\n return;\n }\n if (BrowserFeatures.isAndroid() && !isAppLink) {\n Util.redirectWithFormGet(url);\n } else {\n win.location.href = url;\n }\n};\n\n/**\n * Why redirect via Form get rather using `window.location.href`?\n * At the time of writing, Chrome (<72) in Android would block window location change\n * at following case\n * 1. An AJAX is trigger because of user action.\n * 2. 5+ seconds passed without any further user interaction.\n * 3. User takes an action results in window location change.\n *\n * Luckily we discovered that uses Form submit would work around this problem\n * even though it changed window location.\n *\n * Check the commit history for more details.\n */\nUtil.redirectWithFormGet = function(url) {\n Util.redirectWithForm(url, 'get');\n};\n\nUtil.redirectWithForm = function(url, method = 'post') {\n if (!url) {\n Logger.error(`Cannot redirect to empty URL: (${url})`);\n return;\n }\n\n const mainContainer = document.getElementById(Enums.WIDGET_CONTAINER_ID);\n\n if (!mainContainer) {\n Logger.error('Cannot find okta-sign-in container append to which a form');\n return;\n }\n\n const form = buildDynamicForm(url, method);\n\n mainContainer.appendChild(form);\n form.querySelector('input[type=\"submit\"]').click();\n};\n\n/**\n * When we want to show an explain text, we need to check if this is different from\n * the label text, to not have an explain that look like a duplicated label.\n * okta-signin-widget gives the possibility to customize every i18n, so we cannot\n * know ahead if these two are equal or different, we need to call this function everytime.\n */\nUtil.createInputExplain = function(explainKey, labelKey, bundleName, explainParams, labelParams) {\n const explain = explainParams ? loc(explainKey, bundleName, explainParams) : loc(explainKey, bundleName);\n const label = labelParams ? loc(labelKey, bundleName, labelParams) : loc(labelKey, bundleName);\n\n if (explain === label) {\n return false;\n }\n return explain;\n};\n\nUtil.isV1StateToken = function(token) {\n return !!(token && _.isString(token) && token.startsWith('00'));\n};\n\nexport default Util;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint max-len:0 */\n\nexport default {\n US: '1',\n AG: '1',\n AI: '1',\n AS: '1',\n BB: '1',\n BM: '1',\n BS: '1',\n CA: '1',\n DM: '1',\n DO: '1',\n GD: '1',\n GU: '1',\n JM: '1',\n KN: '1',\n KY: '1',\n LC: '1',\n MP: '1',\n MS: '1',\n PR: '1',\n SX: '1',\n TC: '1',\n TT: '1',\n VC: '1',\n VG: '1',\n VI: '1',\n RU: '7',\n KZ: '7',\n EG: '20',\n ZA: '27',\n GR: '30',\n NL: '31',\n BE: '32',\n FR: '33',\n ES: '34',\n HU: '36',\n IT: '39',\n VA: '39',\n RO: '40',\n CH: '41',\n AT: '43',\n GB: '44',\n GG: '44',\n IM: '44',\n JE: '44',\n DK: '45',\n SE: '46',\n NO: '47',\n SJ: '47',\n PL: '48',\n DE: '49',\n PE: '51',\n MX: '52',\n CU: '53',\n AR: '54',\n BR: '55',\n CL: '56',\n CO: '57',\n VE: '58',\n MY: '60',\n AU: '61',\n CC: '61',\n CX: '61',\n ID: '62',\n PH: '63',\n NZ: '64',\n SG: '65',\n TH: '66',\n JP: '81',\n KR: '82',\n VN: '84',\n CN: '86',\n TR: '90',\n IN: '91',\n PK: '92',\n AF: '93',\n LK: '94',\n MM: '95',\n IR: '98',\n SS: '211',\n MA: '212',\n EH: '212',\n DZ: '213',\n TN: '216',\n LY: '218',\n GM: '220',\n SN: '221',\n MR: '222',\n ML: '223',\n GN: '224',\n CI: '225',\n BF: '226',\n NE: '227',\n TG: '228',\n BJ: '229',\n MU: '230',\n LR: '231',\n SL: '232',\n GH: '233',\n NG: '234',\n TD: '235',\n CF: '236',\n CM: '237',\n CV: '238',\n ST: '239',\n GQ: '240',\n GA: '241',\n CG: '242',\n CD: '243',\n AO: '244',\n GW: '245',\n IO: '246',\n AC: '247',\n SC: '248',\n SD: '249',\n RW: '250',\n ET: '251',\n SO: '252',\n DJ: '253',\n KE: '254',\n TZ: '255',\n UG: '256',\n BI: '257',\n MZ: '258',\n ZM: '260',\n MG: '261',\n RE: '262',\n YT: '262',\n ZW: '263',\n NA: '264',\n MW: '265',\n LS: '266',\n BW: '267',\n SZ: '268',\n KM: '269',\n SH: '290',\n TA: '290',\n ER: '291',\n AW: '297',\n FO: '298',\n GL: '299',\n GI: '350',\n PT: '351',\n LU: '352',\n IE: '353',\n IS: '354',\n AL: '355',\n MT: '356',\n CY: '357',\n FI: '358',\n AX: '358',\n BG: '359',\n LT: '370',\n LV: '371',\n EE: '372',\n MD: '373',\n AM: '374',\n BY: '375',\n AD: '376',\n MC: '377',\n SM: '378',\n UA: '380',\n RS: '381',\n ME: '382',\n XK: '383',\n HR: '385',\n SI: '386',\n BA: '387',\n MK: '389',\n CZ: '420',\n SK: '421',\n LI: '423',\n FK: '500',\n BZ: '501',\n GT: '502',\n SV: '503',\n HN: '504',\n NI: '505',\n CR: '506',\n PA: '507',\n PM: '508',\n HT: '509',\n GP: '590',\n BL: '590',\n MF: '590',\n BO: '591',\n GY: '592',\n EC: '593',\n GF: '594',\n PY: '595',\n MQ: '596',\n SR: '597',\n UY: '598',\n CW: '599',\n BQ: '599',\n TL: '670',\n NF: '672',\n BN: '673',\n NR: '674',\n PG: '675',\n TO: '676',\n SB: '677',\n VU: '678',\n FJ: '679',\n PW: '680',\n WF: '681',\n CK: '682',\n NU: '683',\n WS: '685',\n KI: '686',\n NC: '687',\n TV: '688',\n PF: '689',\n TK: '690',\n FM: '691',\n MH: '692',\n '001': '979',\n KP: '850',\n HK: '852',\n MO: '853',\n KH: '855',\n LA: '856',\n BD: '880',\n TW: '886',\n MV: '960',\n LB: '961',\n JO: '962',\n SY: '963',\n IQ: '964',\n KW: '965',\n SA: '966',\n YE: '967',\n OM: '968',\n PS: '970',\n AE: '971',\n IL: '972',\n BH: '973',\n QA: '974',\n BT: '975',\n MN: '976',\n NP: '977',\n TJ: '992',\n TM: '993',\n AZ: '994',\n GE: '995',\n KG: '996',\n UZ: '998',\n GS: '500',\n PN: '64',\n AQ: '672',\n UM: '1',\n AN: '599',\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Q from 'q';\nimport FidoUtil from 'util/FidoUtil';\n\nfunction adaptToOkta(promise) {\n return new Q(promise);\n}\n\nfunction makeCredential(accountInfo, cryptoParams, challenge) {\n cryptoParams = cryptoParams.map(function(param) {\n return { type: 'FIDO_2_0', algorithm: param.algorithm };\n });\n\n const promise = window.msCredentials.makeCredential(accountInfo, cryptoParams, challenge).then(function(cred) {\n return Object.freeze({\n credential: { id: cred.id },\n publicKey: JSON.parse(cred.publicKey),\n attestation: cred.attestation,\n });\n });\n\n return adaptToOkta(promise);\n}\n\nfunction getAssertion(challenge, allowList) {\n const accept = allowList.map(function(item) {\n return { type: 'FIDO_2_0', id: item.id };\n });\n const filters = { accept: accept };\n const promise = window.msCredentials.getAssertion(challenge, filters).then(function(attestation) {\n const signature = attestation.signature;\n\n return Object.freeze({\n credential: { id: attestation.id },\n clientData: signature.clientData,\n authenticatorData: signature.authnrData,\n signature: signature.signature,\n });\n });\n\n return adaptToOkta(promise);\n}\n\nexport default {\n makeCredential: makeCredential,\n getAssertion: getAssertion,\n isAvailable: function() {\n return Object.prototype.hasOwnProperty.call(window, 'msCredentials');\n },\n isNewApiAvailable: function() {\n // navigator.credentials is not supported in IE11\n // eslint-disable-next-line compat/compat\n return navigator && navigator.credentials && navigator.credentials.create;\n },\n isWebauthnOrU2fAvailable: function() {\n return this.isNewApiAvailable() || FidoUtil.isU2fAvailable();\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-params: [2, 16], max-statements: [2, 20] */\n// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc } from 'okta';\nimport AppState from 'v1/models/AppState';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport Logger from 'util/Logger';\nimport AuthContainer from 'v1/views/shared/AuthContainer';\nimport Header from 'v1/views/shared/Header';\nimport SecurityBeacon from 'v1/views/shared/SecurityBeacon';\nimport Animations from 'util/Animations';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport ColorsUtil from 'util/ColorsUtil';\nimport Enums from 'util/Enums';\nimport { ConfigError } from 'util/Errors';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport Util from 'util/Util';\nimport LanguageUtil from 'util/LanguageUtil';\n\nfunction isStateLessRouteHandler(router, fn) {\n return _.find(router.stateLessRouteHandlers, function(routeName) {\n return fn === router[routeName];\n });\n}\n\nfunction beaconIsAvailable(Beacon, settings) {\n if (!Beacon) {\n return false;\n }\n if (Beacon === SecurityBeacon) {\n return settings.get('features.securityImage');\n }\n return true;\n}\n\nexport default Router.extend({\n Events: Backbone.Events,\n\n initialize: function(options) {\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() {};\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el'), { parse: true });\n\n if (!options.el) {\n this.settings.callGlobalError(new ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.appState = new AppState(\n {\n baseUrl: this.settings.get('baseUrl'),\n settings: this.settings,\n },\n { parse: true }\n );\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:transactionError', function(appState, err) {\n RouterUtil.routeAfterAuthStatusChangeError(this, err);\n });\n\n this.listenTo(this.appState, 'change:transaction', function(appState, trans) {\n RouterUtil.routeAfterAuthStatusChange(this, trans.data);\n });\n\n this.listenTo(this.appState, 'navigate', function(url) {\n this.navigate(url, { trigger: true });\n });\n },\n\n execute: function(cb, args) {\n const recoveryToken = this.settings.get('recoveryToken');\n // Recovery flow with a token passed through widget settings\n\n if (recoveryToken) {\n this.settings.unset('recoveryToken');\n this.navigate(RouterUtil.createRecoveryUrl(recoveryToken), { trigger: true });\n return;\n }\n\n // Refresh flow with a stateToken passed through widget settings\n const stateToken = this.settings.get('stateToken');\n\n if (stateToken) {\n this.settings.unset('stateToken');\n this.navigate(RouterUtil.createRefreshUrl(stateToken), { trigger: true });\n return;\n }\n\n // Normal flow - we've either navigated to a stateless page, or are\n // in the middle of an auth flow\n const trans = this.appState.get('transaction');\n\n if ((trans && trans.data) || isStateLessRouteHandler(this, cb)) {\n cb.apply(this, args);\n return;\n }\n\n // StateToken cookie exists on page load, and we are on a stateful url\n if (this.settings.getAuthClient().tx.exists()) {\n this.navigate(RouterUtil.createRefreshUrl(), { trigger: true });\n return;\n }\n\n // We've hit a page that requires state, but have no stateToken - redirect\n // back to primary auth\n this.navigate('', { trigger: true });\n },\n\n // Overriding the default navigate method to allow the widget consumer\n // to \"turn off\" routing - if features.router is false, the browser\n // location bar will not update when the router navigates\n navigate: function(fragment, options) {\n if (this.settings.get('features.router')) {\n return Router.prototype.navigate.apply(this, arguments);\n }\n if (options && options.trigger) {\n return Backbone.history.loadUrl(fragment);\n }\n },\n\n render: function(Controller, options) {\n options || (options = {});\n\n let Beacon = options.Beacon;\n\n const controllerOptions = _.extend({ settings: this.settings, appState: this.appState }, _.omit(options, 'Beacon'));\n\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.appState.get('languageCode'))) {\n return LanguageUtil.loadLanguage(this.appState, this.settings)\n .then(_.bind(this.render, this, Controller, options));\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n\n ColorsUtil.addStyle(colors);\n }\n\n const oldController = this.controller;\n\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n // First run fetchInitialData, in case the next controller needs data\n // before it's initial render. This will leave the current page in a\n // loading state.\n return this.controller\n .fetchInitialData()\n .then(() => {\n // Beacon transition occurs in parallel to page swap\n if (!beaconIsAvailable(Beacon, this.settings)) {\n Beacon = null;\n }\n this.header.setBeacon(Beacon, controllerOptions);\n\n // Show before initial render\n this.show();\n\n this.controller.render();\n\n if (!oldController) {\n this.el.append(this.controller.el);\n this.controller.postRenderAnimation();\n return;\n }\n\n return Animations.swapPages({\n $parent: this.el,\n $oldRoot: oldController.$el,\n $newRoot: this.controller.$el,\n dir: oldController.state.get('navigateDir'),\n ctx: this,\n success: function() {\n const flashError = this.appState.get('flashError');\n const model = this.controller.model;\n\n oldController.remove();\n oldController.$el.remove();\n this.controller.postRenderAnimation();\n if (flashError) {\n let errorSummary;\n const isTerminalError = flashError.is && flashError.is('terminal');\n if (isTerminalError) {\n errorSummary = flashError.errorDetails.errorSummary;\n } else {\n errorSummary = loc((this.settings.get('features.mfaOnlyFlow')) ?\n 'error.mfa.only.expired.session' : 'error.expired.session');\n }\n model.trigger('error', model, {\n responseJSON: {\n errorSummary\n },\n });\n this.appState.unset('flashError');\n Util.triggerAfterError(this.controller, flashError);\n }\n },\n });\n })\n .catch(function() {\n // OKTA-69665 - if an error occurs in fetchInitialData, we're left in\n // a state with two active controllers. Therefore, we clean up the\n // old one. Note: This explicitly handles the invalid token case -\n // if we get some other type of error which doesn't force a redirect,\n // we will probably be left in a bad state. I.e. old controller is\n // dropped and new controller is not rendered.\n if (oldController) {\n oldController.remove();\n oldController.$el.remove();\n }\n });\n },\n\n start: function() {\n let pushState = false;\n\n // Support for browser's back button.\n if (window.addEventListener && this.settings.get('features.router')) {\n window.addEventListener('popstate', e => {\n if (this.controller.back) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.controller.back();\n }\n });\n pushState = BrowserFeatures.supportsPushState();\n }\n Router.prototype.start.call(this, { pushState: pushState });\n },\n\n hide: function() {\n this.header.$el.hide();\n },\n\n show: function() {\n this.header.$el.show();\n },\n\n remove: function() {\n if (this.controller) {\n this.controller.remove();\n }\n this.header.$el.remove();\n Bundles.remove();\n Backbone.history.stop();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n className: 'account-unlocked',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'account.unlock.unlocked.title', 'login'),\n subtitle: _.partial(loc, 'account.unlock.unlocked.desc', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'account-unlocked' },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n }),\n ];\n },\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nimport EnterPasscodeForm from 'v1/views/enroll-factors/EnterPasscodeForm';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'activate-totp',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ScopeList from 'v1/views/admin-consent/ScopeList';\nimport consentLogoHeaderTemplate from 'v1/views/shared/templates/consentLogoHeaderTemplate';\n\nconst ConsentModel = {\n props: {\n scopes: ['array', true]\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.consent({\n consent: {\n scopes: _.pluck(this.get('scopes'), 'name')\n }\n });\n });\n },\n cancel: function() {\n var self = this;\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n var consentCancelFn = self.settings.get('consent.cancel');\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n }\n};\n\nconst ConsentHeader = View.extend({\n className: 'consent-title detail-row',\n template: consentLogoHeaderTemplate,\n getTemplateData: function() {\n var appState = this.options.appState;\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n issuer: appState.get('issuer'),\n };\n }\n});\n\nconst ConsentForm = {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: [\n FormType.View({\n View: ConsentHeader\n }),\n FormType.View({\n View: ScopeList,\n }),\n ],\n};\n\nconst AdminConsentRequiredController = FormController.extend({\n Model: ConsentModel,\n\n Form: ConsentForm,\n\n className: 'admin-consent-required',\n\n initialize: function() {\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', () => {\n this.model.cancel();\n });\n },\n});\n\nexport default AdminConsentRequiredController;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport BarcodeView from 'v1/views/enroll-factors/BarcodeView';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nexport default FormController.extend({\n className: 'barcode-push',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n initialize: function() {\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearErrors();\n });\n },\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.pollForEnrollment().catch(()=>{\n // Ignoring the errors for now. \n // clean up will be done based on OKTA-324849\n });\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport BarcodeView from 'v1/views/enroll-factors/BarcodeView';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'barcode-totp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n save: _.partial(loc, 'oform.next', 'login'),\n noCancelButton: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'activate'\n );\n\n this.options.appState.trigger('navigate', url);\n });\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport { _, $, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ScopeList from 'v1/views/consent/ScopeList';\nimport ScopeCheckBox from 'v1/views/consent/ScopeCheckBox';\nimport SkipLink from 'v1/views/shared/SkipLink';\nimport consentLogoHeaderTemplate from 'v1/views/shared/templates/consentLogoHeaderTemplate';\n\nconst granularConsentHeaderTemplate = hbs`\n {{#if clientURI}}\n \n {{/if}}\n {{#if customLogo}}\n \n {{else}}\n \n {{/if}}\n {{#if clientURI}}\n \n {{/if}}\n

          \n \n {{i18n \n code=\"granular.consent.scopes.title\" bundle=\"login\" \n arguments=\"appName\"\n $1=\"$1\"\n $2=\"

          $2

          \"\n }}\n
          \n {{#if issuer}}\n
          {{issuer}}
          \n {{/if}}\n

          `;\n\nconst getConsentHeader = (template) => FormType.View({\n View: View.extend({\n className: 'consent-title detail-row',\n template,\n getTemplateData: function() {\n const appState = this.options.appState;\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n };\n },\n }),\n});\n\nconst consentRequiredDescription = FormType.View({\n View: View.extend({\n className: 'consent-description detail-row',\n template: hbs`

          {{i18n code=\"consent.required.description\" bundle=\"login\"}}

          `,\n }),\n});\n\nconst granularConsentDescription = FormType.View({\n View: View.extend({\n className: 'consent-description',\n template: hbs`

          {{i18n code=\"granular.consent.scopes.description\" bundle=\"login\"}}

          `,\n }),\n});\n\nconst getScopeCheckBoxes = (scopes) => {\n const sortedScopes = scopes.slice().sort((scope1, scope2) => scope2.optional - scope1.optional);\n return _.map(sortedScopes, ({name, displayName, description, optional, isCustomized}) => FormType.Input({\n name: name,\n input: ScopeCheckBox,\n placeholder: displayName,\n label: false,\n modelType: 'boolean',\n required: true,\n options:\n {\n description,\n optional,\n isCustomized\n }\n }));\n};\n\nconst isGranularConsent = (appState) => {\n return 'optional' in appState.get('scopes')[0];\n};\n\nexport default FormController.extend({\n className: 'consent-required',\n initialize: function() {\n this.model.set('expiresAt', this.options.appState.get('expiresAt'));\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', _.bind(this.model.cancel, this.model));\n\n // add Skip to main content link\n const skipLink = new SkipLink();\n $(`#${Enums.WIDGET_LOGIN_CONTAINER_ID}`).prepend(skipLink.render().$el);\n\n if (isGranularConsent(this.options.appState)) {\n this.$el.addClass('granular-consent').removeClass('consent-required');\n this.form.cancel = _.partial(loc, 'oform.cancel', 'login');\n _.forEach(this.options.appState.get('scopes'), scope => {\n this.model.set(scope.name, true);\n });\n }\n },\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // Update the \"don't allow\" and \"allow access\" buttons to be neutral by changing \"allow button\" to be gray.\n this.$('.o-form-button-bar .button-primary').removeClass('button-primary');\n },\n Model: {\n props: {\n expiresAt: ['string', true],\n scopes: ['array', true],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n let scopeNames = _.pluck(this.get('scopes'), 'name');\n let consent = { expiresAt: this.get('expiresAt') };\n if (isGranularConsent(this)) {\n consent['optedScopes'] = _.reduce(scopeNames, (optedScopes, scope) => { optedScopes[scope] = this.get(scope); return optedScopes; }, {});\n } else {\n consent['scopes'] = scopeNames;\n }\n return transaction.consent({ consent });\n });\n },\n cancel: function() {\n const self = this;\n\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n const consentCancelFn = self.settings.get('consent.cancel');\n\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n },\n },\n Form: {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: function() {\n if (isGranularConsent(this.options.appState)) {\n return [\n getConsentHeader(granularConsentHeaderTemplate),\n granularConsentDescription,\n ].concat(getScopeCheckBoxes(this.options.appState.get('scopes')));\n } else {\n return [\n getConsentHeader(consentLogoHeaderTemplate),\n FormType.View({\n View: new ScopeList({ model: this.model }),\n }),\n consentRequiredDescription\n ];\n }\n },\n },\n Footer: View.extend({\n className: 'consent-footer',\n template: hbs(\n '\\\n {{#if termsOfService}}\\\n {{i18n code=\"consent.required.termsOfService\" bundle=\"login\"}}\\\n {{#if privacyPolicy}}\\\n •\\\n {{/if}}\\\n {{/if}}\\\n {{#if privacyPolicy}}\\\n {{i18n code=\"consent.required.privacyPolicy\" bundle=\"login\"}}\\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n const appState = this.options.appState;\n\n return {\n termsOfService: appState.get('targetTermsOfService') && appState.get('targetTermsOfService').href,\n privacyPolicy: appState.get('targetPrivacyPolicy') && appState.get('targetPrivacyPolicy').href,\n };\n },\n }),\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/expired-password/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'custom-password-expired',\n Model: {},\n Form: {\n noButtonBar: true,\n title: function() {\n const expiringSoon = this.options.appState.get('isPwdExpiringSoon');\n const numDays = this.options.appState.get('passwordExpireDays');\n\n if (expiringSoon && numDays > 0) {\n return loc('password.expiring.title', 'login', [numDays]);\n } else if (expiringSoon && numDays === 0) {\n return loc('password.expiring.today', 'login');\n } else if (expiringSoon) {\n return loc('password.expiring.soon', 'login');\n } else {\n return this.settings.get('brandName')\n ? loc('password.expired.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expired.title.generic', 'login');\n }\n },\n subtitle: function() {\n if (this.options.appState.get('isPwdExpiringSoon')) {\n const subtitle = this.settings.get('brandName')\n ? loc('password.expiring.subtitle.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expiring.subtitle.generic', 'login');\n\n return subtitle + ' ' + loc('password.expired.custom.subtitle', 'login');\n }\n\n return loc('password.expired.custom.subtitle', 'login');\n },\n formChildren: function() {\n return [\n FormType.Button({\n title: _.partial(loc, 'password.expired.custom.submit', 'login', [\n this.options.appState.get('passwordExpiredWebsiteName'),\n ]),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'custom-button' },\n click: function() {\n Util.redirect(this.options.appState.get('passwordExpiredLinkUrl'));\n },\n }),\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport hbs from 'handlebars-inline-precompile';\nimport {loc, View} from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport TextBox from 'v1/views/shared/TextBox';\n\nconst InvalidUserCodeErrorView = View.extend({\n template: hbs`\n
          \n \n

          {{i18n code=\"api.authn.error.PASSCODE_INVALID\" bundle=\"login\"}}

          \n
          \n `\n});\n\nexport default FormController.extend({\n className: 'device-code-activate',\n Model: function() {\n return {\n props: {\n userCode: ['string', true, this.options?.appState?.get('userCode')],\n stateToken: 'string',\n },\n save: function() {\n const self = this;\n return this.doTransaction(function(transaction) {\n return transaction.deviceActivate({\n userCode: self.get('userCode')\n });\n });\n }\n };\n },\n Form: {\n noCancelButton: true,\n autoSave: true,\n save: function() {\n return loc('oform.next', 'login');\n },\n title: function() {\n return loc('device.code.activate.title', 'login');\n },\n subtitle() {\n return loc('device.code.activate.subtitle', 'login');\n },\n formChildren: function() {\n if (this.options.appState.get('deviceActivationStatus') === 'INVALID_USER_CODE') {\n this.add(InvalidUserCodeErrorView, '.o-form-error-container');\n }\n\n return [\n FormType.Input({\n label: loc('device.code.activate.label', 'login'),\n 'label-top': true,\n name: 'userCode',\n input: TextBox,\n inputId: 'user-code',\n type: 'text',\n inlineValidation: false,\n })\n ];\n },\n events: {\n 'keyup input[name=\"userCode\"]': function(e) {\n e.preventDefault();\n this.addHyphen(e);\n }\n },\n addHyphen(evt) {\n const currentVal = evt.target.value;\n // add hyphen after 4th character\n if (currentVal && currentVal.length === 4 && !['Backspace', 'Delete', '-'].includes(evt.key)) {\n evt.target.value = currentVal.concat('-');\n }\n }\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport {_, loc, View} from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\n\nconst DEVICE_ACTIVATED = 'DEVICE_ACTIVATED';\nconst DEVICE_NOT_ACTIVATED_CONSENT_DENIED = 'DEVICE_NOT_ACTIVATED_CONSENT_DENIED';\nconst DEVICE_NOT_ACTIVATED = 'DEVICE_NOT_ACTIVATED';\nconst DEVICE_CODE_ERROR_KEYS = [\n DEVICE_NOT_ACTIVATED_CONSENT_DENIED,\n DEVICE_NOT_ACTIVATED\n];\n\nexport default FormController.extend({\n className: 'device-code-terminal',\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // show device code terminal icons\n const iconClass = this.options.appState.get('deviceActivationStatus') === DEVICE_ACTIVATED\n ? 'success-24-green' : 'error-24-red';\n this.$('.o-form-head').before('
          ' +\n '' +\n '
          ');\n },\n Model: {},\n Form: {\n noCancelButton: true,\n noButtonBar: true,\n title: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('device.code.activated.success.title', 'login');\n }\n if (_.contains(DEVICE_CODE_ERROR_KEYS, deviceActivationStatus)) {\n return loc('device.code.activated.error.title', 'login');\n }\n },\n subtitle: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('idx.device.activated', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED_CONSENT_DENIED) {\n return loc('idx.device.not.activated.consent.denied', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED) {\n return loc('idx.device.not.activated.internal.error', 'login');\n }\n },\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n template: hbs(\n '{{#if isDeviceCodeError}}\\\n \\\n {{i18n code=\"oie.try.again\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n return {\n isDeviceCodeError: _.contains(DEVICE_CODE_ERROR_KEYS, this.options.appState.get('deviceActivationStatus'))\n };\n },\n }),\n }),\n ];\n }\n }\n});\n","/*!\n * Copyright (c) 2019-2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc, internal } from 'okta';\nimport EnrollCustomFactorController from './EnrollCustomFactorController';\nimport Factor from 'v1/models/Factor';\nimport FormType from 'v1/util/FormType';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nconst { Util } = internal.util;\nexport default EnrollCustomFactorController.extend({\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction(() => {\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n });\n },\n },\n\n Form: function() {\n const factor = new Factor.Model(this.options.appState.get('factor'), this.toJSON());\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n formChildren: function() {\n const result = [];\n\n if (this.options.appState.get('isFactorResultFailed')) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: this.options.appState.get('factorResultErrorMessage') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n return result;\n },\n };\n },\n});\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ResendEmailView from 'v1/views/ResendEmailView';\nimport Footer from 'v1/views/enroll-factors/Footer';\n\nconst Model = {\n props: {\n passCode: 'string',\n },\n\n resend: function() {\n this.trigger('form:clear-errors');\n return this.doTransaction(function(transaction) {\n // authn support multiple `resend` hence has to specify name.\n return transaction.resend('email');\n });\n },\n\n save: function() {\n this.trigger('save');\n const formData = this.toJSON();\n return this.doTransaction(function(transaction) {\n return transaction.activate(formData);\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'oform.verify', 'login'), // TODO: deprecated by mfa.challenge.verify\n formChildren: [\n // message\n FormType.View({\n View: View.extend({\n className: 'enroll-activate-email-content',\n attributes: {\n 'data-se': 'enroll-activate-email-content',\n },\n\n // Why use `{{{` for the description?\n // - factorEmail is actually an HTML fragment which\n // is created via another handlebar template and used for bold the email address.\n template: hbs('{{{i18n code=\"email.mfa.email.sent.description\" bundle=\"login\" arguments=\"factorEmail\"}}}'),\n\n getTemplateData: function() {\n const factor = this.options.appState.get('factor');\n const factorEmailVal = factor && factor.profile ? factor.profile.email : '';\n const factorEmail = hbs('{{email}}')({ email: factorEmailVal });\n return {\n factorEmail,\n };\n },\n }),\n }),\n // send again callout message and link button\n FormType.View({\n View: ResendEmailView,\n }),\n // passcode input\n FormType.Input({\n label: loc('email.code.label', 'login'),\n 'label-top': true,\n name: 'passCode',\n type: 'text',\n wide: true,\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-activate-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 8] */\nimport { _, loc, internal, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport PhoneTextBox from 'v1/views/enroll-factors/PhoneTextBox';\nimport TextBox from 'v1/views/shared/TextBox';\nlet { Keys } = internal.util;\nconst EnrollCallAndSmsControllerwarningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning login-timeout-warning',\n attributes: {\n 'aria-live': 'polite',\n },\n template: hbs`\n \n

          {{{warning}}}

          \n `,\n});\nconst factorIdIsDefined = {\n factorId: function(val) {\n return !_.isUndefined(val);\n },\n};\n\nfunction isCallFactor(factorType) {\n return factorType === 'call';\n}\n\nfunction getClassName(factorType) {\n return isCallFactor(factorType) ? 'enroll-call' : 'enroll-sms';\n}\n\nfunction sendCode(e) {\n if (Keys.isEnter(e)) {\n e.stopPropagation();\n e.preventDefault();\n if (e.type === 'keyup' && e.data && e.data.model) {\n e.data.model.sendCode();\n }\n }\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.factorType);\n },\n Model: function() {\n return {\n props: {\n phoneNumber: ['string', true],\n phoneExtension: ['string', false],\n lastEnrolledPhoneNumber: 'string',\n passCode: ['string', true],\n factorId: 'string',\n },\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n hasExistingPhones: 'boolean',\n trapEnrollment: 'boolean',\n ableToResend: 'boolean',\n factorType: 'string',\n skipPhoneValidation: 'boolean',\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return phoneNumber ? countryCallingCode + phoneNumber : '';\n },\n },\n enrolled: {\n deps: ['lastEnrolledPhoneNumber', 'fullPhoneNumber'],\n fn: function(lastEnrolled, current) {\n return lastEnrolled === current;\n },\n },\n },\n limitResending: function() {\n this.set({ ableToResend: false });\n _.delay(_.bind(this.set, this), Enums.API_RATE_LIMIT, { ableToResend: true });\n },\n sendCode: function() {\n const self = this;\n const phoneNumber = this.get('fullPhoneNumber');\n const phoneExtension = this.get('phoneExtension');\n \n self.trigger('errors:clear');\n \n if (!phoneNumber.length) {\n self.trigger('invalid', self, { phoneNumber: 'model.validation.field.blank' });\n return;\n }\n \n return this.doTransaction(function(transaction) {\n const isMfaEnroll = transaction.status === 'MFA_ENROLL' || transaction.status === 'FACTOR_ENROLL';\n const profileData = {\n phoneNumber: phoneNumber,\n updatePhone: isMfaEnroll ? self.get('hasExistingPhones') : true,\n };\n \n if (isCallFactor(self.get('factorType'))) {\n profileData['phoneExtension'] = phoneExtension;\n }\n \n if (self.get('skipPhoneValidation')) {\n profileData['validatePhone'] = false;\n }\n \n const doEnroll = function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: self.get('factorType'),\n provider: 'OKTA',\n });\n \n return factor\n .enroll({\n profile: profileData,\n })\n .catch(function(error) {\n if (error.errorCode === 'E0000098') {\n // E0000098: \"This phone number is invalid.\"\n self.set('skipPhoneValidation', true);\n error.xhr.responseJSON.errorSummary = loc('enroll.sms.try_again', 'login');\n }\n throw error;\n });\n };\n \n if (isMfaEnroll) {\n return doEnroll(transaction);\n } else {\n // We must transition to MfaEnroll before updating the phone number\n self.set('trapEnrollment', true);\n return transaction.prev().then(doEnroll).then(function(trans) {\n self.set('trapEnrollment', false);\n return trans;\n });\n }\n // Rethrow errors so we can change state\n // AFTER setting the new transaction\n }, true)\n .then(function() {\n self.set('lastEnrolledPhoneNumber', phoneNumber);\n self.limitResending();\n })\n .catch(function() {\n self.set('trapEnrollment', false);\n });\n },\n resendCode: function() {\n this.trigger('errors:clear');\n this.limitResending();\n return this.doTransaction(function(transaction) {\n return transaction.resend(this.get('factorType'));\n });\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n Form: function() {\n const factorType = this.options.factorType;\n const isCall = isCallFactor(factorType);\n const formTitle = loc(isCall ? 'enroll.call.setup' : 'enroll.sms.setup', 'login');\n const formSubmit = loc(isCall ? 'mfa.call' : 'mfa.sendCode', 'login');\n const formRetry = loc(isCall ? 'mfa.redial' : 'mfa.resendCode', 'login');\n const formSubmitted = loc(isCall ? 'mfa.calling' : 'mfa.sent', 'login');\n const numberFieldClassName = isCall ? 'enroll-call-phone' : 'enroll-sms-phone';\n const buttonClassName = isCall ? 'call-request-button' : 'sms-request-button';\n const formChildren = [\n FormType.Input({\n name: 'countryCode',\n type: 'select',\n wide: true,\n options: CountryUtil.getCountries(),\n }),\n FormType.Input({\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n 'label-top': true,\n className: numberFieldClassName,\n name: 'phoneNumber',\n input: PhoneTextBox,\n type: 'text',\n render: function() {\n this.$('input[name=\"phoneNumber\"]')\n .off('keydown keyup', sendCode)\n .keydown(sendCode)\n .keyup({ model: this.model }, sendCode);\n },\n }),\n ];\n\n if (isCall) {\n formChildren.push(\n FormType.Input({\n label: loc('mfa.phoneNumber.ext.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-call-extension',\n name: 'phoneExtension',\n input: TextBox,\n type: 'text',\n })\n );\n }\n formChildren.push(\n FormType.Button({\n title: formSubmit,\n attributes: { 'data-se': buttonClassName },\n className: 'button button-primary js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.sendCode();\n },\n }),\n FormType.Button({\n title: formRetry,\n attributes: { 'data-se': buttonClassName },\n className: 'button js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.resendCode();\n },\n initialize: function() {\n this.$el.css({ display: 'none' });\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.options.title = formRetry;\n this.enable();\n } else {\n this.options.title = formSubmitted;\n this.disable();\n }\n this.render();\n });\n },\n }),\n FormType.Divider({\n showWhen: factorIdIsDefined,\n }),\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'mfa.challenge.enterCode.tooltip',\n 'mfa.challenge.enterCode.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'tel',\n showWhen: factorIdIsDefined,\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n showWhen: factorIdIsDefined,\n })\n );\n\n return {\n title: formTitle,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(factorType),\n\n showWarning: function(msg) {\n this.clearWarnings();\n this.add(EnrollCallAndSmsControllerwarningTemplate, '.o-form-error-container', { options: { warning: msg } });\n },\n\n clearWarnings: function() {\n this.$('.okta-form-infobox-warning').remove();\n },\n\n initialize: function() {\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.showWarning(loc(isCall ? 'factor.call.time.warning' : 'factor.sms.time.warning', 'login'));\n } else {\n this.clearWarnings();\n }\n });\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearWarnings();\n this.clearErrors();\n });\n this.listenTo(this.model, 'change:enrolled', function() {\n this.$('.js-enroll-phone').toggle();\n });\n },\n formChildren: formChildren,\n };\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.set('factorId', this.options.appState.get('activatedFactorId'));\n return true;\n }\n if (this.options.appState.get('isMfaEnroll') && this.model.get('trapEnrollment')) {\n return true;\n }\n },\n\n initialize: function() {\n if (isCallFactor(this.options.factorType)) {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhonesForCall'));\n } else {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhones'));\n }\n this.model.set('factorType', this.options.factorType);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 13] */\n\nimport { _, loc, Collection } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorList from 'v1/views/enroll-choices/FactorList';\nimport Footer from 'v1/views/enroll-choices/Footer';\nimport RequiredFactorList from 'v1/views/enroll-choices/RequiredFactorList';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst subtitleTpl = hbs('{{{subtitle}}}');\nexport default FormController.extend({\n className: 'enroll-choices',\n state: {\n pageType: null,\n },\n\n Model: {},\n\n Form: {\n noCancelButton: true,\n\n title: _.partial(loc, 'enroll.choices.title', 'login'),\n\n noButtonBar: function() {\n return this.state.get('pageType') === Enums.ALL_OPTIONAL_NONE_ENROLLED;\n },\n\n subtitle: ' ',\n\n getSubtitle: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.optional', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED: {\n const remainingDays = this.options.appState.get('gracePeriodRemainingDays');\n return Number.isInteger(remainingDays) && remainingDays >= 0\n ? this.getGracePeriodSubtitle(remainingDays)\n : this.getDefaultSubtitle();\n }\n default:\n return this.getDefaultSubtitle();\n }\n },\n\n getDefaultSubtitle: function() {\n return this.settings.get('brandName')\n ? loc('enroll.choices.description.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.choices.description.generic', 'login');\n },\n\n getGracePeriodSubtitle: function(remainingDays) {\n return remainingDays >= 1\n ? loc('enroll.choices.description.gracePeriod.bold', 'login', [remainingDays])\n : loc('enroll.choices.description.gracePeriod.oneDay.bold', 'login');\n },\n\n save: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.finish', 'login');\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n return loc('enroll.choices.submit.configure', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.next', 'login');\n default:\n return '';\n }\n },\n\n initialize: function(options) {\n this.listenTo(this, 'save', function() {\n let current;\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n current = options.appState.get('factors').getFirstUnenrolledRequiredFactor();\n options.appState.trigger(\n 'navigate',\n RouterUtil.createEnrollFactorUrl(current.get('provider'), current.get('factorType'))\n );\n break;\n default:\n return this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n });\n },\n\n preRender: function() {\n // form subtitle does not support unescaped strings, and we need some html elements\n // in the subtitle for this form. So instead of a regular subtitle, we add a \n // with the text we need\n this.add(subtitleTpl({ subtitle: this.getSubtitle() }), 'p.okta-form-subtitle');\n\n const factors = this.options.appState.get('factors');\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n this.add(\n new RequiredFactorList({\n minimize: true,\n collection: new Collection(factors.where({ required: true })),\n appState: this.options.appState,\n })\n );\n break;\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.ALL_OPTIONAL_NONE_ENROLLED: {\n const enrolled = factors.where({ enrolled: true });\n const notEnrolled = factors.filter(function(factor) {\n // pick factors that are not enrolled or have additional enrollments\n return !factor.get('enrolled') || factor.get('additionalEnrollment');\n });\n let notEnrolledListTitle;\n\n if (enrolled.length > 0) {\n notEnrolledListTitle = loc('enroll.choices.list.optional', 'login');\n this.add(\n new FactorList({\n listTitle: loc('enroll.choices.list.enrolled', 'login'),\n minimize: true,\n collection: new Collection(enrolled),\n appState: this.options.appState,\n })\n );\n }\n this.add(\n new FactorList({\n listTitle: notEnrolledListTitle,\n collection: new Collection(notEnrolled),\n appState: this.options.appState,\n showInlineSetupButton: true,\n })\n );\n break;\n }\n }\n },\n },\n\n initialize: function(options) {\n let numRequiredEnrolled = 0;\n let numRequiredNotEnrolled = 0;\n let numOptionalEnrolled = 0;\n let numOptionalNotEnrolled = 0;\n let hasRequired;\n let pageType;\n\n options.appState.get('factors').each(function(factor) {\n const required = factor.get('required');\n const enrolled = factor.get('enrolled');\n const additionalEnrollment = factor.get('additionalEnrollment');\n\n if (required && enrolled) {\n numRequiredEnrolled++;\n } else if (required && !enrolled) {\n numRequiredNotEnrolled++;\n } else if (!required && enrolled) {\n numOptionalEnrolled++;\n } else if (!required && !enrolled) {\n numOptionalNotEnrolled++;\n }\n // If a factor has multiple instances and\n // additional optional enrollments\n if (enrolled && additionalEnrollment) {\n numOptionalNotEnrolled++;\n }\n });\n\n hasRequired = numRequiredEnrolled > 0 || numRequiredNotEnrolled > 0;\n\n // There are 5 possible states this screen can be in:\n\n // 1. Has required, but none have been enrolled. Wizard start page.\n if (hasRequired && numRequiredEnrolled === 0) {\n pageType = Enums.HAS_REQUIRED_NONE_ENROLLED;\n } else if (hasRequired && numRequiredNotEnrolled > 0) {\n // 2. Has required, and have enrolled at least one. The page layout\n // to configure the remaining required factors.\n pageType = Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED;\n } else if (hasRequired && numOptionalNotEnrolled > 0) {\n // 3. Has required, and finished enrolling all required factors. The\n // page layout you see to configure any optional factors or skip.\n pageType = Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED;\n } else if (numOptionalEnrolled === 0 && numOptionalNotEnrolled > 0) {\n // 4. Factors are all optional, no factors enrolled.\n pageType = Enums.ALL_OPTIONAL_NONE_ENROLLED;\n } else if (numOptionalNotEnrolled > 0) {\n // 5. Factors are all optional, some factors have already been\n // enrolled (can either enroll more or skip).\n pageType = Enums.ALL_OPTIONAL_SOME_ENROLLED;\n } else {\n // 6. Factors are all optional, all factors have already been\n // enrolled, among them there is OktaVerify with Push enrolled as totp\n // (API return OktaVerify push factor as unenrolled in this case and as we always merge\n // push and totp in UI so we redirect to skip link here).\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n\n this.state.set('pageType', pageType);\n\n if (this.options.appState.get('skipLink') && pageType === Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED) {\n this.add(new Footer(this.toJSON()));\n }\n },\n});\n","/*!\n * Copyright (c) 2018-2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'enroll-custom-factor',\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction((transaction, setTransaction) => {\n const factor = _.findWhere(transaction.factors, {\n provider: this.get('provider'),\n factorType: this.get('factorType'),\n });\n\n return factor\n .enroll()\n .then(trans => {\n setTransaction(trans);\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n })\n .catch(function(err) {\n throw err;\n });\n });\n },\n },\n\n Form: function() {\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere({\n provider: this.options.provider,\n factorType: this.options.factorType,\n });\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n };\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n\n initialize: function() {\n this.model.set('provider', this.options.provider);\n this.model.set('factorType', this.options.factorType);\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint camelcase: 0*/\nimport { $, _, loc } from 'okta';\nimport Duo from 'duo';\nimport Q from 'q';\nimport FormController from 'v1/util/FormController';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'enroll-duo duo-form',\n\n Model: {\n props: {\n host: 'string',\n signature: 'string',\n postAction: 'string',\n factorId: 'string',\n stateToken: 'string',\n },\n\n getInitOptions: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'web',\n provider: 'DUO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function(signedResponse) {\n const url = this.get('postAction');\n const factorId = this.get('factorId');\n const self = this;\n const data = {\n id: factorId,\n stateToken: this.get('stateToken'),\n sig_response: signedResponse,\n };\n // Note: We should be doing this in OktaAuth! Fix when it's updated.\n\n // We don't actually use authClient.post() here (unlike all the other cases in the\n // sign-in widget) since the endpoint is wired to accept serialized form post instead\n // of a JSON post ($.post() is different from authClient.post() in that in $.post(),\n // jquery decides the Content-Type instead of it being a JSON type). Enroll/Verify DUO\n // are the only two places where we actually do this.\n // NOTE - If we ever decide to change this, we should test this very carefully.\n return Q($.post(url, data))\n .then(function() {\n return self.doTransaction(function(transaction) {\n return transaction.poll();\n });\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n });\n },\n },\n\n Form: {\n autoSave: true,\n noButtonBar: true,\n title: _.partial(loc, 'enroll.duo.title', 'login'),\n\n postRender: function() {\n this.add('');\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.activate, this.model),\n });\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions(this.options.appState).then(function(trans) {\n const res = trans.data;\n\n if (\n !res ||\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.activation\n ) {\n throw new Error('Response does not have duo activation options');\n }\n\n const factor = res._embedded.factor;\n const activation = factor._embedded.activation;\n\n self.model.set({\n host: activation.host,\n signature: activation.signature,\n postAction: activation._links.complete.href,\n factorId: factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\n\nconst Model = {\n local: {\n factorType: 'string',\n provider: 'string',\n },\n save: function() {\n this.trigger('save');\n const factorOpt = this.pick('factorType', 'provider');\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, factorOpt);\n\n return factor.enroll();\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'email.button.send', 'login'),\n formChildren: [\n FormType.View({\n View: View.extend({\n attributes: {\n 'data-se': 'enroll-email-content',\n },\n template: hbs('{{i18n code=\"email.enroll.description\" bundle=\"login\"}}'),\n }),\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n\n initialize: function() {\n this.model.set(_.pick(this.options, 'factorType', 'provider'));\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-hotp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n Form: {\n title: function() {\n const factors = this.options.appState.get('factors');\n const hotpFactor = factors.findWhere({\n provider: this.model.get('__provider__'),\n factorType: this.model.get('__factorType__'),\n });\n return loc('enroll.totp.title', 'login', [hotpFactor.get('factorLabel')]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'restrict-enroll' },\n\n formChildren: function() {\n const children = [\n FormType.View({\n View: new HtmlErrorMessageView({ message: loc('enroll.hotp.restricted', 'login') }),\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\n\nfunction isRSA(provider) {\n return provider === 'RSA';\n}\n\nfunction getClassName(provider) {\n return isRSA(provider) ? 'enroll-rsa' : 'enroll-onprem';\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.provider);\n },\n Model: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const profile = factor.get('profile');\n const credentialId = profile && profile.credentialId ? profile.credentialId : '';\n\n return {\n props: {\n credentialId: ['string', true, credentialId],\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: provider,\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n };\n },\n\n Form: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const vendorName = factor.get('vendorName');\n const title = isRSA(provider) ? loc('factor.totpHard.rsaSecurId', 'login') : vendorName;\n\n return {\n title: title,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(provider),\n initialize: function() {\n this.listenTo(this.model, 'error', (source, error) => {\n if (error && error.status === 409) {\n // 409 means we are in change pin, so we should clear out answer input\n this.$('.o-form-input-name-passCode input').val('');\n this.$('.o-form-input-name-passCode input').trigger('change');\n this.$('.o-form-input-name-passCode input').focus();\n }\n });\n },\n formChildren: [\n FormType.Input({\n label: loc('enroll.onprem.username.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.username.tooltip',\n 'enroll.onprem.username.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.onprem.passcode.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.passcode.tooltip',\n 'enroll.onprem.passcode.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ],\n };\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-password',\n Model: {\n props: {\n password: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateFieldsMatch(\n this,\n 'password',\n 'confirmPassword',\n loc('password.enroll.error.match', 'login')\n );\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'password',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n password: this.get('password'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.password.setup', 'login'),\n inputs: function() {\n return [\n {\n label: loc('mfa.challenge.password.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'password',\n input: TextBox,\n type: 'password',\n },\n {\n label: loc('password.confirmPassword.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n },\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-question',\n Model: {\n props: {\n question: 'string',\n answer: ['string', true],\n },\n local: {\n securityQuestions: 'object',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n question: this.get('question'),\n answer: this.get('answer'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.securityQuestion.setup', 'login'),\n inputs: function() {\n return [\n {\n label: false,\n 'label-top': true,\n name: 'question',\n type: 'select',\n wide: true,\n options: function() {\n return this.model.get('securityQuestions');\n },\n params: {\n searchThreshold: 25,\n },\n },\n {\n label: loc('mfa.challenge.answer.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain('mfa.challenge.answer.tooltip', 'mfa.challenge.answer.placeholder', 'login'),\n 'explain-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n type: 'text',\n },\n ];\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model\n .manageTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.questions();\n })\n .then(function(questionsRes) {\n const questions = {};\n\n _.each(questionsRes, function(question) {\n questions[question.question] = FactorUtil.getSecurityQuestionLabel(question);\n });\n self.model.set('securityQuestions', questions);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-symantec',\n Model: {\n props: {\n credentialId: ['string', true],\n passCode: ['string', true],\n nextPassCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: 'SYMANTEC',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n nextPassCode: this.get('nextPassCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'factor.totpHard.symantecVip', 'login'),\n subtitle: _.partial(loc, 'enroll.symantecVip.subtitle', 'login'),\n noButtonBar: true,\n autoSave: true,\n className: 'enroll-symantec',\n formChildren: function() {\n return [\n FormType.Input({\n label: loc('enroll.symantecVip.credentialId.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.credentialId.tooltip',\n 'enroll.symantecVip.credentialId.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode1.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode1.tooltip',\n 'enroll.symantecVip.passcode1.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode2.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode2.tooltip',\n 'enroll.symantecVip.passcode2.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'nextPassCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ];\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport StoreLinks from 'v1/util/StoreLinks';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst showWhenDeviceTypeSelected = {\n __deviceType__: function(val) {\n return val !== undefined;\n },\n};\nconst EnrollTotpControllerAppDownloadInstructionsView = View.extend({\n attributes: { 'data-se': 'app-download-instructions' },\n className: 'app-download-instructions',\n template: hbs(\n '\\\n \\\n

          {{{appStoreLinkText}}}

          \\\n '\n ),\n initialize: function() {\n this.listenTo(this.model, 'change:__deviceType__', this.render);\n },\n postRender: function() {\n const link = this.$el.find('.instructions a');\n if (link.length) {\n link[0].setAttribute('target', '_blank');\n link[0].setAttribute('rel', 'noreferer noopener');\n }\n },\n getTemplateData: function() {\n let appStoreLink;\n let appIcon;\n let appStoreName;\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n appStoreName = StoreLinks.STORE[this.model.get('__deviceType__')];\n if (this.model.get('__provider__') === 'GOOGLE') {\n appStoreLink = StoreLinks.GOOGLE[this.model.get('__deviceType__')];\n appIcon = 'google-auth-38';\n } else {\n appStoreLink = StoreLinks.OKTA[this.model.get('__deviceType__')];\n appIcon = 'okta-verify-download-icon';\n }\n return {\n appStoreLinkText: loc('enroll.totp.downloadApp', 'login', [appStoreLink, factorName, appStoreName]),\n appIcon: appIcon,\n };\n },\n});\nconst EnrollTotpControllerEnrollTotpController = FormController.extend({\n className: 'enroll-totp',\n Model: function() {\n return {\n local: {\n __deviceType__: 'string',\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: this.get('__factorType__'),\n provider: this.get('__provider__'),\n });\n\n return factor.enroll();\n });\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-device-type' },\n\n formChildren: function() {\n const inputOptions = {\n APPLE: loc('iphone', 'login'),\n ANDROID: loc('android', 'login'),\n };\n const children = [\n FormType.Input({\n name: '__deviceType__',\n type: 'radio',\n options: inputOptions,\n group: true,\n label: _.partial(loc, 'enroll.totp.selectDevice', 'login'),\n }),\n FormType.Divider({ showWhen: showWhenDeviceTypeSelected }),\n FormType.View({\n View: EnrollTotpControllerAppDownloadInstructionsView,\n showWhen: showWhenDeviceTypeSelected,\n }),\n FormType.Button({\n title: loc('oform.next', 'login'),\n attributes: {\n 'data-type': 'save'\n },\n className: 'button button-primary default-custom-button',\n click: function() {\n this.model.save();\n },\n showWhen: showWhenDeviceTypeSelected,\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\nexport default EnrollTotpControllerEnrollTotpController;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global u2f */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport { U2FError } from 'util/Errors';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-u2f',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const appId = activation.appId;\n const registerRequests = [\n {\n version: FidoUtil.getU2fVersion(),\n challenge: activation.nonce,\n },\n ];\n const self = this;\n const deferred = Q.defer();\n\n u2f.register(appId, registerRequests, [], function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n deferred.reject(\n new U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fEnrollErrorMessageByCode(data.errorCode),\n },\n },\n })\n );\n } else {\n deferred.resolve(\n transaction.activate({\n registrationData: data.registrationData,\n version: data.version,\n challenge: data.challenge,\n clientData: data.clientData,\n })\n );\n }\n });\n return deferred.promise;\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.u2f.title', 'login'),\n save: _.partial(loc, 'enroll.u2f.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-u2f-form',\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n //There is html in enroll.u2f.general2 in our properties file, reason why is unescaped\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
            \\\n
          1. {{{i18n code=\"enroll.u2f.general2\" bundle=\"login\"}}}
          2. \\\n
          3. {{i18n code=\"enroll.u2f.general3\" bundle=\"login\"}}
          4. \\\n
          '\n ),\n }),\n })\n );\n\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
          \\\n

          {{i18n code=\"enroll.u2f.instructions\" bundle=\"login\"}}

          \\\n

          {{i18n code=\"enroll.u2f.instructionsBluetooth\" bundle=\"login\"}}

          \\\n
          \\\n
          \\\n
          \\\n
          \\\n
          \\\n
          '\n ),\n }),\n })\n );\n }\n\n return result;\n },\n\n _startEnrollment: function() {\n this.$('.u2f-instructions').addClass('hide');\n this.$('.u2f-enroll-text').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.u2f-instructions').removeClass('hide');\n this.$('.u2f-enroll-text').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport EnrollUser from 'v1/models/EnrollUser';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport EnrollUserForm from 'v1/views/enrollUser/EnrollUserForm';\nimport FooterWithBackLink from 'v1/views/shared/FooterWithBackLink';\nexport default BaseLoginController.extend({\n className: 'enroll-user',\n initialize: function(options) {\n this.options = options || {};\n // create model\n this.model = new EnrollUser(this.options);\n },\n fetchInitialData: function() {\n // If user is unauthenticated and starts enroll flow make a post call to transition state to PROFILE_REQUIRED\n if (this.options.appState.get('isUnauthenticated')) {\n return this.model.getEnrollFormData();\n } else {\n return BaseLoginController.prototype.fetchInitialData.call();\n }\n },\n trapAuthResponse: function() {\n if (this.options.appState.get('isProfileRequired')) {\n return true;\n }\n },\n postRender: function() {\n const form = new EnrollUserForm(this.toJSON());\n\n this.add(form);\n this.add(new FooterWithBackLink(this.toJSON()));\n this.addListeners();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport CryptoUtil from 'util/CryptoUtil';\nimport { WebauthnAbortError, WebAuthnError } from 'util/Errors';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\n\nfunction getExcludeCredentials(credentials) {\n const excludeCredentials = [];\n\n _.each(credentials, function(credential) {\n excludeCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(credential.id),\n });\n });\n return excludeCredentials;\n}\n\nexport default FormController.extend({\n className: 'enroll-webauthn',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n this.appState.on('backToFactors', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n // enroll via browser webauthn js\n\n const self = this;\n\n if (webauthn.isNewApiAvailable()) {\n const options = _.extend({}, activation, {\n challenge: CryptoUtil.strToBin(activation.challenge),\n user: {\n id: CryptoUtil.strToBin(activation.user.id),\n name: activation.user.name,\n displayName: activation.user.displayName,\n },\n excludeCredentials: getExcludeCredentials(activation.excludeCredentials),\n });\n\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n self.webauthnAbortController = new AbortController();\n }\n return new Q(\n navigator.credentials.create({\n publicKey: options,\n signal: self.webauthnAbortController && self.webauthnAbortController.signal,\n })\n )\n .then(function(newCredential) {\n return transaction.activate({\n attestation: CryptoUtil.binToStr(newCredential.response.attestationObject),\n clientData: CryptoUtil.binToStr(newCredential.response.clientDataJSON),\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new WebauthnAbortError();\n } else {\n throw new WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n }\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.webauthn.biometric.title', 'login'),\n save: _.partial(loc, 'enroll.webauthn.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-webauthn-form',\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n //enroll.webauthn.biometric.instructions.edge is unescaped because it contains html\n children.push(\n FormType.View({\n View: View.extend({\n className: 'webauthn-enroll-text',\n template: hbs(\n '\\\n
          \\\n

          {{i18n code=\"enroll.webauthn.biometric.instructions\" bundle=\"login\"}}

          \\\n
          \\\n {{#if isEdge}}\\\n
          \\\n

          {{{i18n code=\"enroll.webauthn.biometric.instructions.edge\" bundle=\"login\"}}}

          \\\n
          \\\n {{/if}}\\\n {{#if onlySupportsSecurityKey}}\\\n
          \\\n

          {{{i18n code=\"enroll.webauthn.instructions.noSupportForBiometric\" bundle=\"login\"}}}

          \\\n
          \\\n {{/if}}\\\n
          \\\n '\n ),\n getTemplateData: function() {\n return {\n isEdge: BrowserFeatures.isEdge(),\n onlySupportsSecurityKey: (BrowserFeatures.isFirefox() || BrowserFeatures.isSafari()) &&\n BrowserFeatures.isMac(),\n };\n },\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport Spinner from 'v1/views/shared/Spinner';\nexport default FormController.extend({\n className: 'enroll-windows-hello',\n Model: {\n local: {\n __isEnrolled__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n\n if (this.get('__isEnrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n return this._enroll(transaction);\n });\n },\n\n _enroll: function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n },\n\n activate: function() {\n this.set('__isEnrolled__', true);\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const user = transaction.user;\n const model = this;\n const accountInfo = {\n rpDisplayName: activation.rpDisplayName,\n userDisplayName: user.profile.displayName,\n accountName: user.profile.login,\n userId: user.id,\n };\n const cryptoParams = [\n {\n algorithm: activation.algorithm,\n },\n ];\n const challenge = activation.nonce;\n\n return webauthn\n .makeCredential(accountInfo, cryptoParams, challenge)\n .then(function(creds) {\n return transaction.activate({\n credentialId: creds.credential.id,\n publicKey: creds.publicKey,\n attestation: null,\n });\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'enroll.windowsHello.title', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('enroll.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'enroll.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('enroll.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('enroll.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n this.$('.o-form-button-bar').removeClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-yubikey',\n Model: {\n props: {\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token:hardware',\n provider: 'YUBICO',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.yubikey.title', 'login'),\n subtitle: _.partial(loc, 'enroll.yubikey.subtitle', 'login'),\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n autoSave: true,\n className: 'enroll-yubikey',\n formChildren: [\n FormType.View({\n View: '
          ',\n }),\n FormType.Input({\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n ],\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nconst EnrollmentLinkSentControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n this.options.appState.get('activatedFactorType'),\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nconst emailSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaEmail.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-email-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

          {{i18n code=\"enroll.totp.enrollViaEmail.msg\" bundle=\"login\"}}

          \\\n

          {{email}}

          \\\n '\n ),\n getTemplateData: function() {\n return { email: this.options.appState.get('userEmail') };\n },\n }),\n }),\n ],\n};\nconst smsSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaSms.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-sms-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

          {{i18n code=\"enroll.totp.enrollViaSms.msg\" bundle=\"login\"}}

          \\\n

          {{phoneNumber}}

          \\\n '\n ),\n getTemplateData: function() {\n return { phoneNumber: this.model.get('fullPhoneNumber') };\n },\n }),\n }),\n ],\n};\nexport default FormController.extend({\n className: 'enroll-activation-link-sent',\n Model: function() {\n return {\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n phoneNumber: ['string', false, this.options.appState.get('userPhoneNumber')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return countryCallingCode + phoneNumber;\n },\n },\n },\n };\n },\n\n Form: function() {\n const activationType = this.options.appState.get('factorActivationType');\n\n switch (activationType) {\n case 'SMS':\n return smsSentForm;\n case 'EMAIL':\n return emailSentForm;\n default:\n throw new Error('Unknown activation option: ' + activationType);\n }\n },\n\n Footer: EnrollmentLinkSentControllerFooter,\n\n initialize: function() {\n this.pollForEnrollment();\n },\n\n remove: function() {\n return FormController.prototype.remove.apply(this, arguments);\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isWaitingForActivation')) {\n this.pollForEnrollment();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport EnterPasscodeForm from 'v1/views/enroll-factors/EnterPasscodeForm';\nconst EnterPasscodePushFlowControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n 'push',\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nexport default FormController.extend({\n className: 'activate-push',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: EnterPasscodePushFlowControllerFooter,\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nimport FooterWithBackLinkOnError from 'v1/views/shared/FooterWithBackLinkOnError';\nexport default FormController.extend({\n className: 'error-state',\n Model: {},\n Form: {\n noButtonBar: true,\n },\n Footer: FooterWithBackLinkOnError,\n});\n","/*!\n * Copyright (c) 2015-2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Spinner from 'v1/views/shared/Spinner';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport Util from 'util/Util';\n\nexport default BaseLoginController.extend({\n className: 'force-idp-discovery',\n\n View: Spinner,\n\n Model: {},\n\n initialize: function() {\n const OKTA_IDP_TYPE = 'OKTA';\n const RESOURCE = 'okta:acct:';\n\n const options = this.options;\n const lastAuthResponse = options.appState.get('lastAuthResponse');\n const stateToken = lastAuthResponse && lastAuthResponse?.stateToken;\n\n const webfingerArgs = {\n resource: RESOURCE,\n requestContext: stateToken,\n };\n\n options.appState.settings.getAuthClient()\n .webfinger(webfingerArgs)\n .then(res => {\n if (res?.links && res.links[0]) {\n if (res.links[0].properties['okta:idp:type'] !== OKTA_IDP_TYPE && res.links[0].href) {\n const redirectFn = res.links[0].href.includes('OKTA_INVALID_SESSION_REPOST%3Dtrue')\n ? Util.redirectWithFormGet.bind(Util)\n : this.settings.get('redirectUtilFn');\n //override redirectFn to only use Util.redirectWithFormGet if OKTA_INVALID_SESSION_REPOST is included\n //it will be encoded since it will be included in the encoded fromURI\n\n redirectFn(res.links[0].href);\n return;\n }\n }\n options.appState.trigger('navigate', '');\n })\n .catch(() => {\n // TODO: OKTA-436775 Show error instead of navigating to default route\n options.appState.trigger('navigate', '');\n });\n },\n\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport ContactSupport from 'v1/views/shared/ContactSupport';\nimport TextBox from 'v1/views/shared/TextBox';\nconst ForgotPasswordControllernoFactorsError = View.extend({\n template: hbs`\n
          \n \n

          {{i18n code=\"password.forgot.noFactorsEnabled\" bundle=\"login\"}}

          \n
          \n `,\n});\nconst ForgotPasswordControllerFooter = View.extend({\n template: hbs(\n '\\\n {{#unless hideBackToSignInForReset}}\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{/unless}}\\\n {{#if helpSupportNumber}}\\\n \\\n {{i18n code=\"mfa.noAccessToEmail\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-contact-support': function(e) {\n e.preventDefault();\n this.state.trigger('contactSupport');\n this.$('.js-contact-support').hide();\n },\n },\n getTemplateData: function() {\n return {\n hideBackToSignInForReset: this.settings.get('features.hideBackToSignInForReset'),\n helpSupportNumber: this.settings.get('helpSupportNumber'),\n };\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default FormController.extend({\n className: 'forgot-password',\n Model: {\n props: {\n username: ['string', true],\n factorType: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateUsername(this);\n },\n save: function() {\n const self = this;\n const relayState = this.settings.get('relayState');\n\n this.startTransaction(function(authClient) {\n return authClient.forgotPassword({\n username: self.settings.transformUsername(self.get('username'), Enums.FORGOT_PASSWORD),\n factorType: self.get('factorType'),\n relayState: relayState,\n });\n }).catch(function() {\n //need empty fail handler on model to display errors on form\n });\n },\n },\n Form: {\n noButtonBar: true,\n title: _.partial(loc, 'password.reset', 'login'),\n formChildren: function() {\n const smsEnabled = this.settings.get('features.smsRecovery');\n /*eslint complexity: [2, 9] max-statements: [2, 23] */\n\n const callEnabled = this.settings.get('features.callRecovery');\n const emailEnabled = this.settings.get('features.emailRecovery');\n const noFactorsEnabled = !(smsEnabled || callEnabled || emailEnabled);\n const formChildren = [];\n\n if (noFactorsEnabled) {\n this.add(ForgotPasswordControllernoFactorsError, '.o-form-error-container');\n } else {\n formChildren.push(\n FormType.Input({\n label: loc('password.forgot.email.or.username.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'password.forgot.email.or.username.tooltip',\n 'password.forgot.email.or.username.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'account-recovery-username',\n autoComplete: 'username',\n type: 'text',\n inlineValidation: false,\n })\n );\n if (smsEnabled || callEnabled) {\n formChildren.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

          \\\n {{i18n code=\"recovery.mobile.hint\" bundle=\"login\" arguments=\"mobileFactors\"}}\\\n

          '\n ),\n getTemplateData: function() {\n let mobileFactors;\n\n if (smsEnabled && callEnabled) {\n mobileFactors = loc('recovery.smsOrCall');\n } else if (callEnabled) {\n mobileFactors = loc('recovery.call');\n } else {\n mobileFactors = loc('recovery.sms');\n }\n return { mobileFactors: mobileFactors };\n },\n }),\n })\n );\n }\n if (smsEnabled) {\n this.$el.addClass('forgot-password-sms-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'sms-button',\n 'password.forgot.sendText',\n Enums.RECOVERY_FACTOR_TYPE_SMS,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_SMS);\n }\n if (callEnabled) {\n this.$el.addClass('forgot-password-call-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'call-button',\n 'password.forgot.call',\n Enums.RECOVERY_FACTOR_TYPE_CALL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_CALL);\n }\n if (emailEnabled) {\n this.$el.addClass('forgot-password-email-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'email-button',\n 'password.forgot.sendEmail',\n Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_EMAIL);\n }\n }\n\n return formChildren;\n },\n initialize: function() {\n this.listenTo(this.state, 'contactSupport', function() {\n this.add(ContactSupport, '.o-form-error-container');\n });\n\n this.listenTo(this, 'save', function() {\n this.options.appState.set('username', this.model.get('username'));\n this.model.save();\n });\n },\n setDefaultFactorType: function(factorType) {\n if (_.isEmpty(this.model.get('factorType'))) {\n this.model.set('factorType', factorType);\n }\n },\n createRecoveryFactorButton: function(className, labelCode, factorType, form) {\n return FormType.Button({\n attributes: { 'data-se': className },\n className: 'button button-primary button-wide ' + className,\n title: loc(labelCode, 'login'),\n click: function() {\n form.clearErrors();\n if (this.model.isValid()) {\n this.model.set('factorType', factorType);\n form.trigger('save', this.model);\n }\n },\n });\n },\n },\n Footer: ForgotPasswordControllerFooter,\n\n initialize: function() {\n this.options.appState.unset('username');\n },\n});\n","/*!\n * Copyright (c) 2015-2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport PrimaryAuthController from 'v1/controllers/PrimaryAuthController';\nimport IDPDiscoveryModel from 'v1/models/IDPDiscovery';\nimport PrimaryAuthModel from 'v1/models/PrimaryAuth';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport IDPDiscoveryForm from 'v1/views/idp-discovery/IDPDiscoveryForm';\nimport CustomButtons from 'v1/views/primary-auth/CustomButtons';\nimport DeviceFingerprint from 'v1/util/DeviceFingerprint';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport Util from 'util/Util';\n\nexport default PrimaryAuthController.extend({\n className: 'idp-discovery',\n\n View: IDPDiscoveryForm,\n\n constructor: function(options) {\n options.appState.unset('username');\n let requestContext = options.settings.get('idpDiscovery.requestContext');\n const lastAuthResponse = options.appState.get('lastAuthResponse');\n const stateToken = lastAuthResponse && lastAuthResponse?.stateToken;\n\n //Update requestContext with last stateToken, if the context was stateToken and not a fromUri\n if(Util.isV1StateToken(requestContext)) {\n requestContext = stateToken;\n }\n\n this.model = new IDPDiscoveryModel(\n {\n requestContext: requestContext,\n settings: options.settings,\n appState: options.appState,\n },\n { parse: true }\n );\n\n BaseLoginController.apply(this, arguments);\n\n this.addListeners();\n\n // If social auth is configured, 'socialAuthPositionTop' will determine\n // the order in which the social auth and primary auth are shown on the screen.\n if (options.settings.get('hasConfiguredButtons')) {\n this.add(CustomButtons, {\n prepend: options.settings.get('socialAuthPositionTop'),\n options: {\n // To trigger an afterError event, we require the current controller\n currentController: this,\n },\n });\n }\n\n this.addFooter(options);\n\n this.setUsername();\n },\n\n initialize: function() {\n PrimaryAuthController.prototype.initialize.apply(this);\n\n this.listenTo(this.model, 'goToPrimaryAuth', function() {\n this.settings.set('username', this.model.get('username'));\n const self = this;\n if (this.settings.get('features.deviceFingerprinting')) {\n DeviceFingerprint.generateDeviceFingerprint(this.settings.get('baseUrl'), this.$el)\n .then(function(fingerprint) {\n self.options.appState.set('deviceFingerprint', fingerprint);\n self.options.appState.set('username', self.model.get('username'));\n })\n .catch(function() {\n // Keep going even if device fingerprint fails\n self.options.appState.set('username', self.model.get('username'));\n })\n .finally(function() {\n self.doPrimaryAuth();\n });\n } else {\n self.doPrimaryAuth();\n }\n });\n },\n\n doPrimaryAuth : function() {\n if (this.settings.get('features.passwordlessAuth')) {\n const primaryAuthModel = new PrimaryAuthModel(\n {\n username: this.model.get('username'),\n multiOptionalFactorEnroll: this.options.settings.get('features.multiOptionalFactorEnroll'),\n settings: this.options.settings,\n appState: this.options.appState,\n },\n { parse: true }\n );\n\n // Events to set the transaction attributes on the app state.\n this.listenTo(primaryAuthModel, 'error', function(src, errObj) {\n this.toggleButtonState(false);\n this.model.trigger('error', this.model, errObj);\n });\n this.addModelListeners(primaryAuthModel);\n // Make the primary auth request\n primaryAuthModel.save();\n } else {\n this.options.appState.set('disableUsername', true);\n const url = RouterUtil.createSigninUrl(\n this.settings.get('features.prefillUsernameFromIdpDiscovery') && this.model.get('username')\n );\n this.options.appState.trigger('navigate', url);\n }\n },\n\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport Footer from 'v1/views/enroll-factors/ManualSetupPushFooter';\nimport PhoneTextBox from 'v1/views/enroll-factors/PhoneTextBox';\n\nfunction goToFactorActivation(view, step) {\n const url = RouterUtil.createActivateFactorUrl(\n view.options.appState.get('activatedFactorProvider'),\n view.options.appState.get('activatedFactorType'),\n step\n );\n\n view.options.appState.trigger('navigate', url);\n}\n\nfunction setStateValues(view) {\n let userPhoneNumber;\n let userCountryCode;\n\n if (view.model.get('activationType') === 'SMS') {\n userCountryCode = view.model.get('countryCode');\n userPhoneNumber = view.model.get('phoneNumber');\n }\n view.options.appState.set({\n factorActivationType: view.model.get('activationType'),\n userCountryCode: userCountryCode,\n userPhoneNumber: userPhoneNumber,\n });\n}\n\nfunction enrollFactor(view, factorType) {\n return view.model.doTransaction(function(transaction) {\n return transaction\n .prev()\n .then(function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: factorType,\n provider: 'OKTA',\n });\n\n return factor.enroll();\n })\n .then(function(trans) {\n let textActivationLinkUrl;\n let emailActivationLinkUrl;\n let sharedSecret;\n const res = trans.data;\n\n if (\n res &&\n res._embedded &&\n res._embedded.factor &&\n res._embedded.factor._embedded &&\n res._embedded.factor._embedded.activation\n ) {\n const factor = res._embedded.factor;\n\n // Shared secret\n sharedSecret = factor._embedded.activation.sharedSecret;\n\n if (factor._embedded.activation._links && factor._embedded.activation._links.send) {\n const activationSendLinks = factor._embedded.activation._links.send;\n\n const smsItem = _.findWhere(activationSendLinks, { name: 'sms' });\n\n // SMS activation url\n\n textActivationLinkUrl = smsItem ? smsItem.href : null;\n\n // Email activation url\n\n const emailItem = _.findWhere(activationSendLinks, { name: 'email' });\n\n emailActivationLinkUrl = emailItem ? emailItem.href : null;\n }\n }\n\n view.model.set({\n SMS: textActivationLinkUrl,\n EMAIL: emailActivationLinkUrl,\n sharedSecret: sharedSecret,\n });\n\n return trans;\n });\n });\n}\n\nexport default FormController.extend({\n className: 'enroll-manual-push',\n Model: function() {\n return {\n local: {\n activationType: ['string', true, this.options.appState.get('factorActivationType') || 'SMS'],\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n phoneNumber: 'string',\n SMS: ['string', false, this.options.appState.get('textActivationLinkUrl')],\n EMAIL: ['string', false, this.options.appState.get('emailActivationLinkUrl')],\n sharedSecret: ['string', false, this.options.appState.get('sharedSecret')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return countryCallingCode + phoneNumber;\n },\n },\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.cannotScanBarcode', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'step-manual-setup' },\n\n formChildren: function() {\n const instructions = this.settings.get('brandName')\n ? loc('enroll.totp.sharedSecretInstructions.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.totp.sharedSecretInstructions.generic', 'login');\n const children = [\n FormType.Input({\n name: 'activationType',\n label:loc('mfa.setupOptions', 'login'),\n type: 'select',\n wide: true,\n options: {\n SMS: loc('enroll.totp.sendSms', 'login'),\n EMAIL: loc('enroll.totp.sendEmail', 'login'),\n MANUAL: loc('enroll.totp.setupManually', 'login'),\n },\n }),\n FormType.Input({\n label:loc('mfa.country', 'login'),\n name: 'countryCode',\n type: 'select',\n wide: true,\n options: CountryUtil.getCountries(),\n showWhen: { activationType: 'SMS' },\n }),\n FormType.Input({\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-sms-phone',\n name: 'phoneNumber',\n input: PhoneTextBox,\n type: 'text',\n showWhen: { activationType: 'SMS' },\n }),\n FormType.View({\n View: View.extend({\n className: 'secret-key-instructions',\n attributes: { 'data-se': 'secret-key-instructions'},\n template: hbs`\n
          \n

          \n {{instructions}}\n

          \n

          {{sharedSecretKey}}

          \n
          \n `,\n initialize: function(){\n this.listenTo(this.model, 'change:sharedSecret', this.render);\n },\n getTemplateData: function() {\n return {\n instructions: instructions,\n sharedSecretKey: this.model.get('sharedSecret')\n };\n },\n }),\n showWhen: { activationType: 'MANUAL' },\n }),\n FormType.View({\n View: View.extend({\n template: hbs('
          '),\n }),\n showWhen: { activationType: 'MANUAL' },\n }),\n FormType.Button(\n {\n title: loc('oform.next', 'login'),\n className: 'button button-primary button-wide button-next',\n attributes: { 'data-se': 'next-button' },\n click: () => {\n setStateValues(this);\n goToFactorActivation(this, 'passcode');\n },\n },\n '[data-type=\"next-button-wrap\"]'\n ),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.send', 'login'),\n showWhen: {\n activationType: function(val) {\n return val === 'SMS' || val === 'EMAIL';\n },\n },\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.setInitialModel();\n // Move this logic to a model when AuthClient supports sending email and sms\n this.listenTo(this.form, 'save', function() {\n const self = this;\n\n this.model.doTransaction(function(transaction) {\n const activationType = this.get('activationType').toLowerCase();\n const opts = {};\n\n if (activationType === 'sms') {\n opts.profile = { phoneNumber: this.get('fullPhoneNumber') };\n }\n\n return transaction.factor.activation.send(activationType, opts).then(function(trans) {\n setStateValues(self);\n // Note: Need to defer because OktaAuth calls our router success\n // handler on the next tick - if we immediately called, appState would\n // still be populated with the last response\n _.defer(function() {\n goToFactorActivation(self, 'sent');\n });\n return trans;\n });\n });\n });\n\n this.listenTo(this.model, 'change:activationType', function(model, value) {\n this.form.clearErrors();\n if (value === 'MANUAL' && this.options.appState.get('activatedFactorType') !== 'token:software:totp') {\n enrollFactor(this, 'token:software:totp');\n } else if (this.options.appState.get('activatedFactorType') !== 'push') {\n enrollFactor(this, 'push');\n }\n });\n },\n\n setInitialModel: function() {\n if (this.options.appState.get('factorActivationType') === 'SMS') {\n this.model.set({\n countryCode: this.options.appState.get('userCountryCode') || 'US',\n phoneNumber: this.options.appState.get('userPhoneNumber'),\n });\n }\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate') || this.options.appState.get('isMfaEnroll')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport ManualSetupFooter from 'v1/views/enroll-factors/ManualSetupFooter';\nexport default FormController.extend({\n className: 'enroll-manual-totp',\n Model: function() {\n return {\n local: {\n sharedSecret: ['string', false, this.options.appState.get('sharedSecret')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.cannotScanBarcode', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'step-manual-setup' },\n\n formChildren: function() {\n const instructions = this.settings.get('brandName')\n ? loc('enroll.totp.manualSetupInstructions.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.totp.manualSetupInstructions.generic', 'login');\n\n return [\n FormType.View({\n View: View.extend({\n className: 'secret-key-instructions',\n attributes: { 'data-se': 'secret-key-instructions'},\n template: hbs`\n
          \n

          \n {{instructions}}\n

          \n

          {{sharedSecretKey}}

          \n
          \n `,\n initialize: function(){\n this.listenTo(this.model, 'change:sharedSecret', this.render);\n },\n getTemplateData: function() {\n return {\n instructions: instructions,\n sharedSecretKey: this.model.get('sharedSecret')\n };\n },\n })\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.next', 'login'),\n }),\n ];\n },\n },\n\n Footer: ManualSetupFooter,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'activate'\n );\n\n this.options.appState.trigger('navigate', url);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 21] max-statements: [2, 25] max-params: 0 */\nimport { loc, internal } from 'okta';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport EmailMagicLinkForm from 'v1/views/factor-verify/EmailMagicLinkForm';\nimport InlineTOTPForm from 'v1/views/mfa-verify/InlineTOTPForm';\nimport PassCodeForm from 'v1/views/mfa-verify/PassCodeForm';\nimport PasswordForm from 'v1/views/mfa-verify/PasswordForm';\nimport PushForm from 'v1/views/mfa-verify/PushForm';\nimport SecurityQuestionForm from 'v1/views/mfa-verify/SecurityQuestionForm';\nimport SendEmailAndVerifyCodeForm from 'v1/views/mfa-verify/SendEmailAndVerifyCodeForm';\nimport TOTPForm from 'v1/views/mfa-verify/TOTPForm';\nimport YubikeyForm from 'v1/views/mfa-verify/YubikeyForm';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\nlet { CheckBox } = internal.views.forms.inputs;\nexport default BaseLoginController.extend({\n className: 'mfa-verify',\n\n initialize: function(options) {\n const factorType = options.factorType;\n let View;\n\n switch (factorType) {\n case 'question':\n View = SecurityQuestionForm;\n break;\n case 'email':\n if (this.options.appState.get('isIdxStateToken')) {\n View = EmailMagicLinkForm;\n } else {\n View = SendEmailAndVerifyCodeForm;\n }\n break;\n case 'sms':\n case 'call':\n View = PassCodeForm;\n break;\n case 'token':\n case 'token:software:totp':\n case 'token:hotp':\n View = TOTPForm;\n break;\n case 'token:hardware':\n View = YubikeyForm;\n break;\n case 'push':\n View = PushForm;\n break;\n case 'password':\n View = PasswordForm;\n break;\n default:\n throw new Error('Unrecognized factor type');\n }\n\n this.model = this.findModel(factorType, options);\n if (!this.model) {\n // TODO: recover from this more gracefully - probably to redirect\n // to default factor\n throw new Error('Unrecognized factor/provider');\n }\n\n this.addListeners();\n this.add(new View(this.toJSON()));\n\n // If Okta Verify Push and Okta Verify totp are both enabled,\n // then we show Push first, and totp is the \"backup\" factor,\n // which is rendered in an additional InlineTOTPForm\n if (factorType === 'push' && this.model.get('isOktaFactor')) {\n if (this.model.get('backupFactor')) {\n this.inlineTotpForm = this.add(InlineTOTPForm, {\n options: { model: this.model.get('backupFactor') },\n }).last();\n }\n\n if (this.settings.get('features.autoPush')) {\n this.autoPushCheckBox = this.add(CheckBox, {\n options: {\n model: this.model,\n name: 'autoPush',\n placeholder: loc('autoPush', 'login'),\n label: false,\n 'label-top': false,\n className: 'margin-btm-0',\n },\n }).last();\n }\n\n // Remember Device checkbox resides outside of the Push and TOTP forms.\n if (this.options.appState.get('allowRememberDevice')) {\n this.rememberDeviceCheckbox = this.add(CheckBox, {\n options: {\n model: this.model,\n name: 'rememberDevice',\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n label: false,\n 'label-top': true,\n className: 'margin-btm-0',\n },\n }).last();\n }\n // Set rememberDevice on the backup factor (totp) if available\n if (this.model.get('backupFactor')) {\n this.listenTo(this.model, 'change:rememberDevice', function(model, rememberDevice) {\n model.get('backupFactor').set('rememberDevice', rememberDevice);\n });\n }\n }\n\n this.listenTo(this.options.appState, 'change:isWaitingForNumberChallenge', function(\n state,\n isWaitingForNumberChallenge\n ) {\n if (isWaitingForNumberChallenge || this.options.appState.get('lastAuthResponse').status === 'SUCCESS') {\n this.autoPushCheckBox && this.autoPushCheckBox.$el.hide();\n this.rememberDeviceCheckbox && this.rememberDeviceCheckbox.$el.hide();\n this.inlineTotpForm && this.inlineTotpForm.$el.hide();\n } else {\n this.autoPushCheckBox && this.autoPushCheckBox.$el.show();\n this.rememberDeviceCheckbox && this.rememberDeviceCheckbox.$el.show();\n this.inlineTotpForm && this.inlineTotpForm.$el.show();\n }\n });\n\n this.add(new FooterMFA(this.toJSON()));\n },\n\n findModel: function(factorType, options) {\n const factors = options.appState.get('factors');\n const provider = options.provider;\n const factorIndex = options.factorIndex;\n\n if (!provider) {\n return factors.findWhere({ factorType: factorType, isFactorTypeVerification: true });\n } else if (factors.hasMultipleFactorsOfSameType(factorType) && factorIndex) {\n return factors.getFactorByTypeAndIndex(factorType, factorIndex);\n } else {\n return factors.findWhere({ provider: provider, factorType: factorType });\n }\n },\n\n trapAuthResponse: function() {\n if (\n (this.options.appState.get('isMfaRequired') && this.options.appState.get('trapMfaRequiredResponse')) ||\n this.options.appState.get('isMfaChallenge')\n ) {\n this.options.appState.set('trapMfaRequiredResponse', false);\n return true;\n }\n return false;\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport Footer from 'v1/views/expired-password/Footer';\nimport PasswordRequirements from 'v1/views/shared/PasswordRequirements';\nimport TextBox from 'v1/views/shared/TextBox';\n\nexport default FormController.extend({\n className: 'password-expired',\n Model: {\n props: {\n oldPassword: ['string', true],\n newPassword: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validatePasswordMatch(this);\n },\n save: function() {\n this.trigger('save');\n return this.doTransaction(function(transaction) {\n return transaction.changePassword({\n oldPassword: this.get('oldPassword'),\n newPassword: this.get('newPassword'),\n });\n });\n },\n },\n Form: {\n save: _.partial(loc, 'password.expired.submit', 'login'),\n title: function() {\n const expiringSoon = this.options.appState.get('isPwdExpiringSoon');\n const numDays = this.options.appState.get('passwordExpireDays');\n\n if (expiringSoon && numDays > 0) {\n return loc('password.expiring.title', 'login', [numDays]);\n } else if (expiringSoon && numDays === 0) {\n return loc('password.expiring.today', 'login');\n } else if (expiringSoon) {\n return loc('password.expiring.soon', 'login');\n } else {\n return this.settings.get('brandName')\n ? loc('password.expired.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expired.title.generic', 'login');\n }\n },\n subtitle: function() {\n if (this.options.appState.get('isPwdExpiringSoon')) {\n return this.settings.get('brandName')\n ? loc('password.expiring.subtitle.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expiring.subtitle.generic', 'login');\n }\n\n const policy = this.options.appState.get('policy');\n\n if (!policy || this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n return;\n }\n\n return FactorUtil.getPasswordComplexityDescription(policy);\n },\n parseErrorMessage: function(responseJSON) {\n const policy = this.options.appState.get('policy');\n\n if (!!policy && this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n /*\n - This is a specific case where don't want to repeat the requirements again in the error message, since this\n is already shown in the description. The description as bullet-points itself should give an indication\n of the requirements.\n - We cannot check for error code this in this case, as the error code is shared between\n requirements not met message, common password message, etc. So error summary is the only differentiating\n factor. Replace the password requirements string with empty string in this case.\n */\n responseJSON = FactorUtil.removeRequirementsFromError(responseJSON, policy);\n }\n return responseJSON;\n },\n formChildren: function() {\n let children = [];\n\n if (this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n children.push(\n FormType.View({\n View: new PasswordRequirements({ policy: this.options.appState.get('policy') }),\n })\n );\n }\n\n children = children.concat([\n FormType.Input({\n 'label-top': true,\n label: loc('password.oldPassword.placeholder', 'login'),\n explain: Util.createInputExplain('password.oldPassword.tooltip', 'password.oldPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'oldPassword',\n input: TextBox,\n type: 'password',\n }),\n FormType.Divider(),\n FormType.Input({\n className: 'margin-btm-5',\n 'label-top': true,\n label: loc('password.newPassword.placeholder', 'login'),\n explain: Util.createInputExplain('password.newPassword.tooltip', 'password.newPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'newPassword',\n input: TextBox,\n type: 'password',\n }),\n FormType.Input({\n 'label-top': true,\n label: loc('password.confirmPassword.placeholder', 'login'),\n explain: Util.createInputExplain(\n 'password.confirmPassword.tooltip',\n 'password.confirmPassword.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n }),\n ]);\n\n return children;\n },\n },\n Footer: Footer,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const creds = {\n username: this.options.appState.get('userEmail'),\n password: this.model.get('newPassword'),\n };\n\n this.settings.processCreds(creds).then(_.bind(this.model.save, this.model));\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport FooterSignout from 'v1/views/shared/FooterSignout';\nimport PasswordRequirements from 'v1/views/shared/PasswordRequirements';\nimport TextBox from 'v1/views/shared/TextBox';\nlet { CheckBox } = internal.views.forms.inputs;\n\nexport default FormController.extend({\n className: 'password-reset',\n Model: {\n props: {\n newPassword: ['string', true],\n confirmPassword: ['string', true],\n revokeSessions: ['boolean', false]\n },\n validate: function() {\n return ValidationUtil.validatePasswordMatch(this);\n },\n save: function() {\n this.trigger('save');\n const self = this;\n\n return this.doTransaction(function(transaction) {\n const payload = { newPassword: self.get('newPassword') };\n if (self.settings.get('features.showSessionRevocation')) {\n payload.revokeSessions = self.get('revokeSessions');\n }\n\n return transaction.resetPassword(payload);\n });\n },\n },\n Form: {\n save: _.partial(loc, 'password.reset', 'login'),\n title: function() {\n return this.settings.get('brandName')\n ? loc('password.reset.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.reset.title.generic', 'login');\n },\n subtitle: function() {\n const policy = this.options.appState.get('policy');\n\n if (!policy || this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n return;\n }\n\n return FactorUtil.getPasswordComplexityDescription(policy);\n },\n parseErrorMessage: function(responseJSON) {\n const policy = this.options.appState.get('policy');\n\n if (!!policy && this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n /*\n - This is a specific case where don't want to repeat the requirements again in the error message, since this\n is already shown in the description. The description as bullet-points itself should give an indication\n of the requirements.\n - We cannot check for error code this in this case, as the error code is shared between\n requirements not met message, common password message, etc. So error summary is the only differentiating\n factor. Replace the password requirements string with empty string in this case.\n */\n responseJSON = FactorUtil.removeRequirementsFromError(responseJSON, policy);\n }\n return responseJSON;\n },\n formChildren: function() {\n let children = [];\n\n if (this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n children.push(\n FormType.View({\n View: new PasswordRequirements({ policy: this.options.appState.get('policy') }),\n })\n );\n }\n\n children = children.concat([\n FormType.Input({\n className: 'margin-btm-5',\n label: loc('password.newPassword.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain('password.newPassword.tooltip', 'password.newPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'newPassword',\n input: TextBox,\n type: 'password',\n autoComplete: 'new-password',\n }),\n FormType.Input({\n label: loc('password.confirmPassword.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'password.confirmPassword.tooltip',\n 'password.confirmPassword.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n autoComplete: 'new-password',\n }),\n ]);\n\n if (this.settings.get('features.showSessionRevocation')) {\n children = children.concat([\n FormType.Input({\n placeholder: loc('password.reset.revokeSessions', 'login'),\n name: 'revokeSessions',\n input: CheckBox,\n type: 'checkbox',\n })\n ]);\n }\n\n return children;\n },\n },\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const creds = {\n username: this.options.appState.get('userEmail'),\n password: this.model.get('newPassword'),\n };\n\n this.settings.processCreds(creds).then(_.bind(this.model.save, this.model));\n });\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n className: 'poll',\n Model: {\n save: function() {\n this.trigger('cancelRequest');\n return this.appState\n .get('transaction')\n .cancel()\n .then(() => {\n this.options.appState.trigger('navigate', '');\n })\n .catch(() => {\n this._stopCountDown();\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: function() {\n return this.title;\n },\n className: 'poll-controller',\n noCancelButton: true,\n save: loc('oform.cancel', 'login'),\n modelEvents: {\n cancelRequest: '_stopCountDown',\n },\n formChildren: [\n FormType.View({\n View: '
          \\\n
          \\\n
          ',\n }),\n ],\n _checkStatus: function() {\n // start polling request\n this.transactionObject\n .poll()\n .then(resp => {\n if (resp.data && resp.status !== 'POLL') {\n this.options.appState.set('transaction', resp);\n return;\n }\n this.$('.okta-waiting-spinner').hide();\n let factorPollingIntervalSeconds = Math.ceil(resp.transaction.profile.refresh / 1000);\n this._startCountDown(factorPollingIntervalSeconds);\n })\n .catch(() => {\n this._stopCountDown();\n });\n },\n\n _startCountDown: function(factorPollingIntervalSeconds) {\n // start one second countdown for next poll request\n this.countDown = setInterval(() => {\n // update title after every second and check if countdown == 1 to poll again\n this._updateTitle(factorPollingIntervalSeconds);\n if (factorPollingIntervalSeconds === 0) {\n /* when countdown hits 0\n - stop current poll\n - show spinner\n - check status\n */\n this._stopCountDown();\n this.$('.okta-waiting-spinner').show();\n // start after a small delay so that the spinner does not get hidden too soon\n this.checkStatusTimeout = setTimeout(() => {\n this._checkStatus();\n }, 200);\n } else {\n // reduce countdown after every second\n factorPollingIntervalSeconds = factorPollingIntervalSeconds - 1;\n }\n }, 1000);\n },\n\n _updateTitle: function(factorPollingIntervalSeconds) {\n this.title = loc('polling.title', 'login', [factorPollingIntervalSeconds]);\n this.$el.find('.okta-form-title').text(this.title);\n },\n\n _stopCountDown: function() {\n // clear countdown setInterval\n if (this.countDown) {\n clearInterval(this.countDown);\n }\n // clear checkstatus setTimeout\n if (this.checkStatusTimeout) {\n clearInterval(this.checkStatusTimeout);\n }\n },\n\n initialize: function(options) {\n this.transactionObject = options.appState.get('transaction');\n this.factorPollingIntervalSeconds = Math.ceil(this.transactionObject.transaction.profile.refresh / 1000);\n this._updateTitle(this.factorPollingIntervalSeconds);\n this._startCountDown(this.factorPollingIntervalSeconds);\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n remove: function() {\n this.form._stopCountDown();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { $ } from 'okta';\nimport PrimaryAuthModel from 'v1/models/PrimaryAuth';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport DeviceFingerprint from 'v1/util/DeviceFingerprint';\nimport CustomButtons from 'v1/views/primary-auth/CustomButtons';\nimport PrimaryAuthForm from 'v1/views/primary-auth/PrimaryAuthForm';\nimport Footer from 'v1/views/shared/Footer';\nimport FooterRegistration from 'v1/views/shared/FooterRegistration';\nimport FooterWithBackLink from 'v1/views/shared/FooterWithBackLink';\nexport default BaseLoginController.extend({\n className: 'primary-auth',\n\n state: { enabled: true },\n\n View: PrimaryAuthForm,\n\n constructor: function(options) {\n options.appState.unset('username');\n\n this.model = new PrimaryAuthModel(\n {\n multiOptionalFactorEnroll: options.settings.get('features.multiOptionalFactorEnroll'),\n settings: options.settings,\n appState: options.appState,\n },\n { parse: true }\n );\n\n BaseLoginController.apply(this, arguments);\n\n this.addListeners();\n\n // If social auth is configured, 'socialAuthPositionTop' will determine\n // the order in which the social auth and primary auth are shown on the screen.\n if (options.settings.get('hasConfiguredButtons')) {\n this.add(CustomButtons, {\n prepend: options.settings.get('socialAuthPositionTop'),\n options: {\n // To trigger an afterError event, we require the current controller\n currentController: this,\n },\n });\n }\n\n this.addFooter(options);\n if (this.options.appState.get('disableUsername')) {\n this.addFooterWithBackLink(this.options);\n }\n\n this.setUsername();\n },\n\n addFooter: function(options) {\n this.add(new Footer(this.toJSON({ appState: options.appState })));\n\n if (options.settings.get('features.registration') || options.appState.get('isIdxStateToken')) {\n this.add(\n new FooterRegistration({\n settings: this.settings,\n appState: options.appState,\n })\n );\n }\n },\n\n addFooterWithBackLink: function(options) {\n if (!this.$el.find('.footer-back-link').length) {\n this.add(new FooterWithBackLink(this.toJSON({ \n appState: options.appState,\n className: 'auth-footer footer-back-link',\n })));\n }\n },\n\n setUsername: function() {\n const username = this.model.get('username');\n\n if (username) {\n this.options.appState.set('username', username);\n }\n },\n\n setUsernameFromIdpDiscovery: function() {\n const username = this.options.username;\n if (username) {\n this.model.set('username', username);\n this.options.appState.set('disableUsername', true);\n }\n },\n\n events: {\n 'focusout input[name=username]': function() {\n if (this.shouldComputeDeviceFingerprint() && this.model.get('username')) {\n const self = this;\n\n this.options.appState.trigger('loading', true);\n DeviceFingerprint.generateDeviceFingerprint(this.settings.get('baseUrl'), this.$el)\n .then(function(fingerprint) {\n self.options.appState.set('deviceFingerprint', fingerprint);\n self.options.appState.set('username', self.model.get('username'));\n })\n .catch(function() {\n // Keep going even if device fingerprint fails\n self.options.appState.set('username', self.model.get('username'));\n })\n .finally(function() {\n self.options.appState.trigger('loading', false);\n });\n } else {\n this.options.appState.set('username', this.model.get('username'));\n }\n },\n 'focusin input': function(e) {\n $(e.target.parentElement).addClass('focused-input');\n },\n 'focusout input': function(e) {\n $(e.target.parentElement).removeClass('focused-input');\n },\n },\n\n // This model and the AppState both have a username property.\n // The controller updates the AppState's username when the user is\n // done editing (on blur) or deletes the username (see below).\n initialize: function() {\n this.options.appState.unset('deviceFingerprint');\n if (this.settings.get('features.prefillUsernameFromIdpDiscovery')) {\n this.setUsernameFromIdpDiscovery();\n }\n this.listenTo(this.model, 'change:username', function(model, value) {\n if (!value) {\n // reset AppState to an undefined user.\n this.options.appState.set('username', '');\n }\n });\n this.listenTo(this.model, 'save', function() {\n this.state.set('enabled', false);\n });\n this.listenTo(this.model, 'error', function() {\n this.state.set('enabled', true);\n if (this.options.appState.get('disableUsername')) {\n this.state.set('disableUsername', true);\n this.addFooterWithBackLink(this.options);\n }\n });\n this.listenTo(this.state, 'togglePrimaryAuthButton', function(buttonState) {\n this.toggleButtonState(buttonState);\n });\n },\n\n shouldComputeDeviceFingerprint: function() {\n return (\n this.settings.get('features.securityImage') &&\n this.settings.get('features.deviceFingerprinting') &&\n this.settings.get('features.useDeviceFingerprintForSecurityImage')\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n className: 'password-reset-email-sent',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'password.forgot.emailSent.title', 'login'),\n subtitle: function() {\n const username = this.options.appState.get('username');\n\n return loc('password.forgot.emailSent.desc', 'login', [username]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'pwd-reset-email-sent' },\n formChildren: function() {\n let children = [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n {{alert}}\\\n '\n ),\n getTemplateData: function() {\n return { alert: loc('password.forgot.emailSent.title', 'login') };\n },\n }),\n }),\n ];\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n children.push(\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n const self = this;\n\n return this.model\n .doTransaction(function(transaction) {\n return transaction.cancel();\n })\n .then(function() {\n self.state.set('navigateDir', Enums.DIRECTION_BACK);\n self.options.appState.trigger('navigate', '');\n });\n },\n })\n );\n }\n\n return children;\n },\n },\n\n initialize: function(options) {\n this.settings.callGlobalSuccess(Enums.FORGOT_PASSWORD_EMAIL_SENT, {\n username: options.appState.get('username'),\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport FooterSignout from 'v1/views/shared/FooterSignout';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'recovery-challenge',\n Model: {\n props: {\n passCode: ['string', true],\n },\n local: {\n ableToResend: 'boolean',\n },\n resendCode: function() {\n // Note: This does not require a trapAuthResponse because Backbone's\n // router will not navigate if the url path is the same\n this.limitResending();\n return this.doTransaction(function(transaction) {\n return transaction.resend();\n });\n },\n limitResending: function() {\n this.set({ ableToResend: false });\n _.delay(_.bind(this.set, this), Enums.API_RATE_LIMIT, { ableToResend: true });\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.verify({\n passCode: this.get('passCode'),\n });\n });\n },\n },\n Form: {\n autoSave: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n title: function() {\n if (this.options.appState.get('factorType') === Enums.RECOVERY_FACTOR_TYPE_CALL) {\n return loc('recoveryChallenge.call.title', 'login');\n } else {\n return loc('recoveryChallenge.sms.title', 'login');\n }\n },\n className: 'recovery-challenge',\n initialize: function() {\n this.listenTo(this.model, 'error', function() {\n this.clearErrors();\n });\n },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('mfa.resendCode', 'login'),\n attributes: { 'data-se': 'resend-button' },\n className: 'button sms-request-button margin-top-30',\n click: function() {\n this.model.resendCode();\n },\n initialize: function() {\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.options.title = loc('mfa.resendCode', 'login');\n this.enable();\n this.render();\n } else {\n this.options.title = loc('mfa.sent', 'login');\n this.disable();\n this.render();\n }\n });\n },\n }),\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-sms-phone',\n name: 'passCode',\n input: TextBox,\n type: 'text',\n }),\n ];\n },\n },\n\n events: {\n 'click .send-email-link': function(e) {\n e.preventDefault();\n const settings = this.model.settings;\n const username = this.options.appState.get('username');\n const recoveryType = this.options.appState.get('recoveryType');\n\n this.model.startTransaction(function(authClient) {\n // The user could have landed here via the Forgot Password/Unlock Account flow\n switch (recoveryType) {\n case Enums.RECOVERY_TYPE_PASSWORD:\n return authClient.forgotPassword({\n username: settings.transformUsername(username, Enums.FORGOT_PASSWORD),\n factorType: Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n });\n case Enums.RECOVERY_TYPE_UNLOCK:\n return authClient.unlockAccount({\n username: settings.transformUsername(username, Enums.UNLOCK_ACCOUNT),\n factorType: Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n });\n default:\n return;\n }\n })\n .catch(() => {});\n },\n },\n\n initialize: function() {\n const recoveryType = this.options.appState.get('recoveryType');\n let sendEmailLink;\n\n switch (recoveryType) {\n case Enums.RECOVERY_TYPE_PASSWORD:\n sendEmailLink = hbs`{{i18n code=\"password.forgot.code.notReceived\" bundle=\"login\"}}`;\n break;\n case Enums.RECOVERY_TYPE_UNLOCK:\n sendEmailLink = hbs`{{i18n code=\"account.unlock.code.notReceived\" bundle=\"login\"}}`;\n break;\n default:\n break;\n }\n\n if (sendEmailLink && this.settings.get('features.emailRecovery')) {\n this.add(\n View.extend({\n className: 'link send-email-link',\n tagName: 'a',\n attributes: {\n href: '#',\n 'data-se': 'send-email-link',\n },\n template: sendEmailLink,\n })\n );\n }\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n\n postRender: function() {\n this.model.limitResending();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nexport default FormController.extend({\n className: 'recovery-loading',\n\n Model: {},\n Form: {\n noButtonBar: true,\n },\n\n initialize: function(options) {\n const self = this;\n\n return this.model\n .startTransaction(function(authClient) {\n return authClient.verifyRecoveryToken({\n recoveryToken: options.token,\n });\n })\n .catch(function() {\n self.options.appState.trigger('loading', false);\n self.options.appState.trigger('removeLoading');\n });\n },\n\n preRender: function() {\n this.options.appState.trigger('loading', true);\n },\n\n trapAuthResponse: function() {\n this.options.appState.trigger('loading', false);\n return false;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport FooterSignout from 'v1/views/shared/FooterSignout';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'recovery-question',\n Model: {\n props: {\n answer: ['string', true],\n showAnswer: 'boolean',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.answer({ answer: this.get('answer') });\n });\n },\n },\n Form: {\n autoSave: true,\n save: function() {\n switch (this.options.appState.get('recoveryType')) {\n case 'PASSWORD':\n return loc('password.forgot.question.submit', 'login');\n case 'UNLOCK':\n return loc('account.unlock.question.submit', 'login');\n default:\n return loc('mfa.challenge.verify', 'login');\n }\n },\n title: function() {\n switch (this.options.appState.get('recoveryType')) {\n case 'PASSWORD':\n return loc('password.forgot.question.title', 'login');\n case 'UNLOCK':\n return loc('account.unlock.question.title', 'login');\n default:\n return '';\n }\n },\n formChildren: function() {\n return [\n FormType.Input({\n label: this.options.appState.get('recoveryQuestion'),\n placeholder: loc('mfa.challenge.answer.placeholder', 'login'),\n name: 'answer',\n input: TextBox,\n type: 'password',\n initialize: function() {\n this.listenTo(this.model, 'change:showAnswer', function() {\n const type = this.model.get('showAnswer') ? 'text' : 'password';\n\n this.getInputs()[0].changeType(type);\n });\n },\n }),\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: loc('mfa.challenge.answer.showAnswer', 'login'),\n className: 'recovery-question-show margin-btm-0',\n name: 'showAnswer',\n type: 'checkbox',\n }),\n ];\n },\n },\n initialize: function() {\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n});\n","/* eslint-disable max-depth */\n/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nexport default FormController.extend({\n className: 'refresh-auth-state',\n\n Model: {},\n\n Form: {\n noButtonBar: true,\n },\n\n preRender: function() {\n const appState = this.options.appState;\n const token = this.options.token;\n\n this.model.startTransaction(function(authClient) {\n appState.trigger('loading', true);\n if (token) {\n return authClient.tx.introspect({\n stateToken: token,\n });\n }\n\n // get stateToken from cookie\n // currently only applies to old pipeline\n if (authClient.tx.exists()) {\n return authClient.tx.resume();\n }\n\n appState.trigger('navigate', '');\n });\n },\n\n remove: function() {\n this.options.appState.trigger('loading', false);\n return FormController.prototype.remove.apply(this, arguments);\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n events: {\n 'click .back-btn': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n className: 'registration-complete',\n Model: function() {},\n initialize: function() {\n this.settings.callGlobalSuccess(Enums.ACTIVATION_EMAIL_SENT, {\n username: this.options.appState.get('username'),\n });\n },\n Form: {\n noButtonBar: true,\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
          \\\n \\\n

          {{title}}

          \\\n
          {{desc}}
          \\\n
          \\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n getTemplateData: function() {\n return {\n desc: loc('registration.complete.confirm.text', 'login'),\n title: loc('registration.complete.title', 'login'),\n };\n },\n }),\n }),\n ];\n },\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { _, Backbone, Model, loc, Form, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport LoginModel from 'v1/models/LoginModel';\nimport RegistrationSchema from 'v1/models/RegistrationSchema';\nimport Q from 'q';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport Enums from 'util/Enums';\nimport { RegistrationError } from 'util/Errors';\nimport RegistrationFormFactory from 'v1/util/RegistrationFormFactory';\nimport Util from 'util/Util';\nimport SubSchema from 'v1/views/registration/SubSchema';\nconst RegistrationControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .help': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default BaseLoginController.extend({\n className: 'registration',\n initialize: function() {\n const RegistrationControllerSchema = RegistrationSchema.extend({\n settings: this.options.settings,\n url: this.options.settings.get('baseUrl') + '/api/v1/registration/form',\n });\n // setup schema\n\n const schema = new RegistrationControllerSchema();\n\n this.state.set('schema', schema);\n },\n getRegistrationApiUrl: function() {\n const defaultPolicyId = this.settings.get('defaultPolicyId');\n // default policyId\n\n const orgPolicyId = this.options.settings.get('policyId');\n // org policyId\n\n const apiUrl = defaultPolicyId\n ? this.getRegistrationPolicyApi(defaultPolicyId)\n : this.getRegistrationPolicyApi(orgPolicyId);\n\n return apiUrl;\n },\n getRegistrationPolicyApi: function(policyId) {\n return this.options.settings.get('baseUrl') + '/api/v1/registration/' + policyId;\n },\n doPostSubmit: function() {\n if (this.model.get('activationToken')) {\n const self = this;\n // register via activation token\n\n self.settings.callGlobalSuccess(Enums.REGISTRATION_COMPLETE, {\n activationToken: this.model.get('activationToken'),\n });\n\n const loginModel = new LoginModel({\n settings: self.model.appState.settings,\n });\n\n loginModel.loginWithActivationToken(this.model.get('activationToken')).then(function(transaction) {\n self.model.trigger('setTransaction', transaction);\n });\n } else {\n // register via activation email\n this.model.appState.set('username', this.model.get('email'));\n this.model.appState.trigger('navigate', 'signin/register-complete');\n }\n },\n registerUser: function(postData) {\n const self = this;\n\n Object.keys(postData).forEach((k) =>\n (_.isNull(postData[k]) || _.isUndefined(postData[k]) || postData[k] === '') && delete postData[k]);\n this.model.attributes = postData;\n // Model.save returns a jqXHR\n Backbone.Model.prototype.save\n .call(this.model)\n .then(function() {\n self.model.trigger('startSaving');\n const activationToken = self.model.get('activationToken');\n const postSubmitData = activationToken ? activationToken : self.model.get('email');\n\n self.settings.postRegistrationSubmit(\n postSubmitData,\n function() {\n self.doPostSubmit();\n },\n function(errors) {\n self.showErrors(errors);\n }\n );\n })\n .fail((err) => {\n const responseJSON = err.responseJSON;\n\n if (responseJSON && responseJSON.errorCauses.length) {\n const { errorCode, errorCauses } = responseJSON;\n const { errorSummary, reason, location } = errorCauses[0];\n\n const isNotUniqueValue =\n errorCode === 'E0000001' &&\n reason === 'UNIQUE_CONSTRAINT';\n\n if (isNotUniqueValue) {\n this.renderIsNotUniqueError(responseJSON);\n }\n\n this.renderLegacyLocationErrorIfNeeded(location, errorSummary);\n\n Util.triggerAfterError(\n this,\n new RegistrationError(errorSummary)\n );\n }\n });\n },\n\n renderIsNotUniqueError: function(error) {\n const { location } = error.errorCauses[0];\n const errorSummary = loc(\n 'registration.error.userName.notUniqueWithinOrg',\n 'login',\n [location]\n );\n // replace generic error message with more specific one\n // without using backbone events because there was a race condition\n // between clearing and triggering errors\n this.$el.find('.okta-form-infobox-error p').text(errorSummary);\n },\n\n renderLegacyLocationErrorIfNeeded: function(location, errorSummary) {\n // replace generic error message with errorSummary for v1 SIW\n // this makes sure that with legacy location that starts with `data.userProfile`\n // we still see the errorSummary in the error banner instead of only a generic error\n // See example in https://developer.okta.com/docs/reference/registration-hook/#sample-json-payload-of-request\n if (location && /^data\\.userProfile.*/.test(location)) {\n this.$el.find('.okta-form-infobox-error p').text(errorSummary);\n }\n },\n\n createRegistrationModel: function(modelProperties) {\n const self = this;\n const RegistrationControllerModel = Model.extend({\n url: self.getRegistrationApiUrl() + '/register',\n settings: this.settings,\n appState: this.options.appState,\n props: modelProperties,\n local: {\n activationToken: 'string',\n },\n toJSON: function() {\n const data = Model.prototype.toJSON.apply(this, arguments);\n\n return {\n userProfile: data,\n relayState: this.settings.get('relayState'),\n };\n },\n parse: function(resp) {\n this.set('activationToken', resp.activationToken);\n delete resp.activationToken;\n return resp;\n },\n save: function() {\n this.settings.preRegistrationSubmit(\n this.attributes,\n function(postData) {\n self.registerUser(postData);\n },\n function(errors) {\n self.showErrors(errors);\n }\n );\n },\n });\n\n return new RegistrationControllerModel();\n },\n showErrors: function(error, hideRegisterButton) {\n //for parseSchema error hide form and show error at form level\n if (error.callback === 'parseRegistrationSchema' && error.errorCauses) {\n error.errorSummary = _.clone(error.errorCauses[0].errorSummary);\n delete error.errorCauses;\n }\n //show error on form\n this.model.trigger('error', this.model, {\n responseJSON: error,\n });\n\n //throw registration error\n const errMsg = error.callback ? error.callback + ':' + error.errorSummary : error.errorSummary;\n\n Util.triggerAfterError(this, new RegistrationError(errMsg));\n\n if (hideRegisterButton) {\n this.$el.find('.button-primary').hide();\n }\n },\n fetchInitialData: function() {\n const self = this;\n\n // register parse complete event listener\n self.state.get('schema').on('parseComplete', function(updatedSchema) {\n const modelProperties = updatedSchema.properties.createModelProperties();\n\n self.settings.set('defaultPolicyId', updatedSchema.properties.defaultPolicyId);\n\n // create model\n self.model = self.createRegistrationModel(modelProperties);\n // create form\n const RegistrationControllerForm = Form.extend({\n layout: 'o-form-theme',\n autoSave: true,\n noCancelButton: true,\n title: loc('registration.form.title', 'login'),\n save: loc('registration.form.submit', 'login'),\n modelEvents : { 'invalid' : 'modifyErrors' },\n hasSavingState: true,\n customSavingState: {\n start: 'startSaving',\n stop: 'stopSaving',\n },\n modifyErrors: function(model, errorResp) {\n // overwrite courage errorResp object to show custom error message\n for (let formFieldName in errorResp) {\n if (errorResp[formFieldName] === 'model.validation.field.string.minLength') {\n errorResp[formFieldName] = loc('registration.model.validation.field.string.too.short', 'login', \n [model.props[formFieldName].minLength]\n );\n } else if (errorResp[formFieldName] === 'model.validation.field.string.maxLength') {\n errorResp[formFieldName] = loc('registration.model.validation.field.string.too.long', 'login', \n [model.props[formFieldName].maxLength + 1]\n );\n }\n }\n },\n });\n const form = new RegistrationControllerForm(self.toJSON());\n\n // add form\n self.add(form);\n // add footer\n self.footer = new self.Footer(self.toJSON());\n self.add(self.footer);\n self.addListeners();\n if (updatedSchema.error) {\n self.showErrors(updatedSchema.error, true);\n } else {\n // add fields\n updatedSchema.properties.each(function(schemaProperty) {\n const inputOptions = RegistrationFormFactory.createInputOptions(schemaProperty);\n const subSchemas = schemaProperty.get('subSchemas');\n const name = schemaProperty.get('name');\n\n form.addInput(inputOptions);\n if (name === 'password' && subSchemas) {\n form.add(SubSchema.extend({ id: 'subschemas-' + name, subSchemas: subSchemas }));\n }\n });\n const requiredFieldsLabel = hbs('{{label}}')({\n label: loc('registration.required.fields.label', 'login'),\n });\n\n form.add(requiredFieldsLabel);\n }\n });\n // fetch schema from API, returns a jqXHR. Wrap it in a Q\n return Q(this.state.get('schema').fetch());\n },\n Footer: RegistrationControllerFooter,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport ContactSupport from 'v1/views/shared/ContactSupport';\nimport TextBox from 'v1/views/shared/TextBox';\nconst UnlockAccountControllernoFactorsError = View.extend({\n template: hbs`\n
          \n \n

          {{i18n code=\"account.unlock.noFactorsEnabled\" bundle=\"login\"}}

          \n
          \n `,\n});\nconst UnlockAccountControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{#if helpSupportNumber}}\\\n \\\n {{i18n code=\"mfa.noAccessToEmail\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-contact-support': function(e) {\n e.preventDefault();\n this.state.trigger('contactSupport');\n this.$('.js-contact-support').hide();\n },\n },\n getTemplateData: function() {\n return this.settings.pick('helpSupportNumber');\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default FormController.extend({\n className: 'account-unlock',\n Model: {\n props: {\n username: ['string', true],\n factorType: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateUsername(this);\n },\n save: function() {\n const self = this;\n\n return this.startTransaction(function(authClient) {\n return authClient.unlockAccount({\n username: self.settings.transformUsername(self.get('username'), Enums.UNLOCK_ACCOUNT),\n factorType: self.get('factorType'),\n });\n }).catch(function() {\n //need empty fail handler on model to display errors on form\n });\n },\n },\n Form: {\n noButtonBar: true,\n title: _.partial(loc, 'account.unlock.title', 'login'),\n formChildren: function() {\n const smsEnabled = this.settings.get('features.smsRecovery');\n /*eslint complexity: [2, 9] max-statements: [2, 24] */\n\n const callEnabled = this.settings.get('features.callRecovery');\n const emailEnabled = this.settings.get('features.emailRecovery');\n const noFactorsEnabled = !(smsEnabled || callEnabled || emailEnabled);\n const formChildren = [];\n const form = this;\n\n if (noFactorsEnabled) {\n this.add(UnlockAccountControllernoFactorsError, '.o-form-error-container');\n } else {\n formChildren.push(\n FormType.Input({\n label: loc('account.unlock.email.or.username.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'account.unlock.email.or.username.tooltip',\n 'account.unlock.email.or.username.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'account-recovery-username',\n type: 'text',\n inlineValidation: false,\n })\n );\n\n if (smsEnabled || callEnabled) {\n formChildren.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

          \\\n {{i18n code=\"recovery.mobile.hint\" bundle=\"login\" arguments=\"mobileFactors\"}}\\\n

          '\n ),\n getTemplateData: function() {\n let mobileFactors;\n\n if (smsEnabled && callEnabled) {\n mobileFactors = loc('recovery.smsOrCall');\n } else if (callEnabled) {\n mobileFactors = loc('recovery.call');\n } else {\n mobileFactors = loc('recovery.sms');\n }\n return { mobileFactors: mobileFactors };\n },\n }),\n })\n );\n }\n\n if (smsEnabled) {\n this.$el.addClass('forgot-password-sms-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'sms-button',\n 'account.unlock.sendText',\n Enums.RECOVERY_FACTOR_TYPE_SMS,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_SMS);\n }\n if (callEnabled) {\n this.$el.addClass('forgot-password-call-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'call-button',\n 'account.unlock.voiceCall',\n Enums.RECOVERY_FACTOR_TYPE_CALL,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_CALL);\n }\n if (emailEnabled) {\n this.$el.addClass('forgot-password-email-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'email-button',\n 'account.unlock.sendEmail',\n Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_EMAIL);\n }\n }\n\n return formChildren;\n },\n initialize: function() {\n this.listenTo(this, 'save', function() {\n this.options.appState.set('username', this.model.get('username'));\n this.model.save();\n });\n\n this.listenTo(this.state, 'contactSupport', function() {\n this.add(ContactSupport, '.o-form-error-container');\n });\n },\n setDefaultFactorType: function(factorType) {\n if (_.isEmpty(this.model.get('factorType'))) {\n this.model.set('factorType', factorType);\n }\n },\n createRecoveryFactorButton: function(className, labelCode, factorType, form) {\n return FormType.Button({\n attributes: { 'data-se': className },\n className: 'button button-primary button-wide ' + className,\n title: loc(labelCode, 'login'),\n click: function() {\n form.clearErrors();\n if (this.model.isValid()) {\n this.model.set('factorType', factorType);\n form.trigger('save', this.model);\n }\n },\n });\n },\n },\n Footer: UnlockAccountControllerFooter,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n className: 'account-unlock-email-sent',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'account.unlock.emailSent.title', 'login'),\n subtitle: function() {\n const username = this.options.appState.get('username');\n\n return loc('account.unlock.emailSent.desc', 'login', [username]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'unlock-email-sent' },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n }),\n ];\n },\n },\n\n initialize: function(options) {\n this.settings.callGlobalSuccess(Enums.UNLOCK_ACCOUNT_EMAIL_SENT, {\n username: options.appState.get('username'),\n });\n },\n});\n","/*!\n * Copyright (c) 2018-2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'verify-custom-factor custom-factor-form',\n\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n if (this.settings.get('features.skipIdpFactorVerificationBtn') &&\n !this.appState.get('lastFailedChallengeFactorData')) {\n this.set('provider', 'CUSTOM');\n this.set('factorType', 'claims_provider');\n this.save();\n }\n },\n\n save: function() {\n const rememberDevice = !!this.get('rememberDevice');\n\n return this.manageTransaction((transaction, setTransaction) => {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n const factor = _.findWhere(transaction.factors, {\n provider: this.get('provider'),\n factorType: this.get('factorType'),\n });\n\n return factor\n .verify(data)\n .then(trans => {\n setTransaction(trans);\n const url = this.appState.get('verifyCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n })\n .catch(function(err) {\n throw err;\n });\n });\n },\n },\n\n Form: function() {\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere({\n provider: this.options.provider,\n factorType: this.options.factorType,\n });\n const vendorName = factor.get('vendorName');\n const saveText = loc('mfa.challenge.verify', 'login');\n const lastFailedChallengeFactorData = this.options.appState.get('lastFailedChallengeFactorData');\n let subtitle = loc('verify.customFactor.subtitle', 'login', [vendorName]);\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn') && !lastFailedChallengeFactorData) {\n subtitle = loc('verify.customFactor.subtitle.redirect', 'login', [vendorName]);\n\n this.listenTo(this.model, 'error', () => {\n subtitle = loc('verify.customFactor.subtitle', 'login', [vendorName]);\n this.$('.o-form-explain').text(subtitle);\n });\n }\n return {\n autoSave: true,\n title: vendorName,\n save: saveText,\n subtitle: subtitle,\n attributes: { 'data-se': 'factor-custom' },\n initialize: function() {\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n\n formChildren: function() {\n const result = [];\n const lastFailedChallengeFactorData = this.options.appState.get('lastFailedChallengeFactorData');\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn') && !lastFailedChallengeFactorData) {\n result.push(\n FormType.View({\n View:\n '
          '\n })\n );\n }\n\n if (lastFailedChallengeFactorData) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: lastFailedChallengeFactorData.errorMessage }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n return result;\n },\n };\n },\n\n postRender() {\n if (this.settings.get('features.skipIdpFactorVerificationBtn') &&\n !this.options.appState.get('lastFailedChallengeFactorData')) {\n this.$('.o-form-button-bar').hide();\n this.$('.okta-waiting-spinner').show();\n }\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaChallenge')) {\n return true;\n }\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n initialize: function() {\n this.model.set('provider', this.options.provider);\n this.model.set('factorType', this.options.factorType);\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn')) {\n this.listenTo(this.model, 'error', () => {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n });\n }\n this.addFooter(FooterMFA);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint camelcase: 0 */\nimport { $, _, loc } from 'okta';\nimport Duo from 'duo';\nimport Q from 'q';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\n\nexport default FormController.extend({\n className: 'mfa-verify-duo duo-form',\n\n Model: {\n props: {\n host: 'string',\n signature: 'string',\n postAction: 'string',\n factorId: 'string',\n stateToken: 'string',\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n },\n\n getInitOptions: function() {\n const rememberDevice = !!this.get('rememberDevice');\n\n return this.doTransaction(function(transaction) {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n const factor = _.findWhere(transaction.factors, {\n provider: 'DUO',\n factorType: 'web',\n });\n\n return factor.verify(data).catch(function(err) {\n // Clean up the cookie on failure.\n throw err;\n });\n }, true /* rethrow errors */);\n },\n\n verify: function(signedResponse) {\n const url = this.get('postAction');\n const factorId = this.get('factorId');\n const self = this;\n let data = {\n id: factorId,\n stateToken: this.get('stateToken'),\n sig_response: signedResponse,\n };\n // Note: We should be doing this in OktaAuth! Fix when it's updated.\n\n const rememberDevice = this.get('rememberDevice');\n // We don't actually use authClient.post() here (unlike all the other cases in the\n // sign-in widget) since the endpoint is wired to accept serialized form post instead\n // of a JSON post ($.post() is different from authClient.post() in that in $.post(),\n // jquery decides the Content-Type instead of it being a JSON type). Enroll/Verify DUO\n // are the only two places where we actually do this.\n // NOTE - If we ever decide to change this, we should test this very carefully.\n\n return Q($.post(url, data))\n .then(function() {\n return self.doTransaction(function(transaction) {\n let data;\n\n if (rememberDevice) {\n data = { rememberDevice: rememberDevice };\n }\n return transaction.poll(data);\n });\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n });\n },\n },\n\n Form: {\n autoSave: true,\n noButtonBar: true,\n title: _.partial(loc, 'factor.duo'),\n attributes: { 'data-se': 'factor-duo' },\n\n postRender: function() {\n this.add('');\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.verify, this.model),\n });\n },\n },\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions().then(function(trans) {\n const res = trans.data;\n\n if (\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.verification\n ) {\n throw new Error('Response does not have duo verification options');\n }\n const verification = res._embedded.factor._embedded.verification;\n\n self.model.set({\n host: verification.host,\n signature: verification.signature,\n postAction: verification._links.complete.href,\n factorId: res._embedded.factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaChallenge')) {\n return true;\n }\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 10], max-params: [2, 11] */\nimport { _, $, loc, View, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport FooterWithBackLink from 'v1/views/shared/FooterWithBackLink';\nlet { Util } = internal.util;\nexport default FormController.extend({\n className: 'piv-cac-card',\n Model: {\n save: async function() {\n this.trigger('request');\n const self = this;\n const pivConfig = this.settings.get('piv');\n const data = {\n fromURI: this.settings.get('relayState'),\n isCustomDomain: pivConfig.isCustomDomain,\n customDomain: pivConfig.customDomain,\n };\n\n try {\n await this.getCert(pivConfig.certAuthUrl);\n const res = await this.postCert(pivConfig.certAuthUrl, data);\n Util.redirect(res.redirectUrl);\n } catch (err) {\n if (_.isEmpty(err.responseJSON) && !err.responseText) {\n err.responseJSON = {\n errorSummary: loc('piv.cac.error', 'login'),\n };\n }\n self.trigger('error', self, err);\n }\n },\n\n getCert: function(certAuthUrl) {\n return $.get({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n\n postCert: function(certAuthUrl, data) {\n return $.post({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n data: JSON.stringify(data),\n contentType: 'text/plain',\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'piv.cac.title', 'login'),\n className: 'piv-cac-card',\n noCancelButton: true,\n save: _.partial(loc, 'retry', 'login'),\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '
          \\\n

          {{i18n code=\"piv.cac.card.insert\" bundle=\"login\"}}

          \\\n
          \\\n
          '\n ),\n }),\n }),\n ],\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n\n postRender: function() {\n _.defer(() => {\n this.model.save();\n });\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterWithBackLink,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global u2f */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport { U2FError } from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\n\nfunction getRegisteredKeysSequence(factors) {\n const keys = [];\n\n _.each(factors, function(factor) {\n keys.push({\n version: factor.profile.version,\n keyHandle: factor.profile.credentialId,\n });\n });\n return keys;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-u2f',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'u2f',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n }\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let registeredKeys;\n let appId;\n let nonce;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n appId = factors[0]['profile']['appId'];\n nonce = transaction.challenge.nonce;\n registeredKeys = getRegisteredKeysSequence(factors);\n } else {\n const factorData = transaction.factor;\n\n appId = factorData.profile.appId;\n nonce = factorData.challenge.nonce;\n registeredKeys = [{ version: FidoUtil.getU2fVersion(), keyHandle: factorData.profile.credentialId }];\n }\n self.trigger('request');\n\n const deferred = Q.defer();\n\n u2f.sign(appId, nonce, registeredKeys, function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n const isOneFactor = self.options.appState.get('factors').length === 1;\n\n deferred.reject(\n new U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fVerifyErrorMessageByCode(data.errorCode, isOneFactor),\n },\n },\n })\n );\n } else {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor\n .verify({\n clientData: data.clientData,\n signatureData: data.signatureData,\n rememberDevice: rememberDevice,\n })\n .then(deferred.resolve);\n }\n });\n return deferred.promise;\n });\n })\n .catch(() => {});\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.u2f', 'login'),\n className: 'verify-u2f-form',\n noCancelButton: true,\n save: _.partial(loc, 'verify.u2f.retry', 'login'),\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
          \\\n

          {{i18n code=\"verify.u2f.instructions\" bundle=\"login\"}}

          \\\n

          {{i18n code=\"verify.u2f.instructionsBluetooth\" bundle=\"login\"}}

          \\\n
          \\\n
          '\n ),\n }),\n })\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n result.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return result;\n },\n\n postRender: function() {\n _.defer(() => {\n if (FidoUtil.isU2fAvailable()) {\n this.model.save();\n } else {\n this.$('[data-se=\"u2f-waiting\"]').addClass('hide');\n }\n });\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 10], max-params: [2, 11] */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport CryptoUtil from 'util/CryptoUtil';\nimport { WebauthnAbortError, WebAuthnError } from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\n\nfunction getAllowCredentials(factors) {\n const allowCredentials = [];\n\n _.each(factors, function(factor) {\n allowCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(factor.profile.credentialId),\n });\n });\n return allowCredentials;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-webauthn',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n this.appState.on('factorSwitched signOut', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'webauthn',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n }\n\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let allowCredentials;\n let challenge;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n challenge = transaction.challenge;\n allowCredentials = getAllowCredentials(factors);\n } else {\n const factorData = transaction.factor;\n\n challenge = factorData.challenge;\n allowCredentials = getAllowCredentials([factorData]);\n }\n self.trigger('request');\n // verify via browser webauthn js\n\n const options = _.extend({}, challenge, {\n allowCredentials: allowCredentials,\n challenge: CryptoUtil.strToBin(challenge.challenge),\n });\n\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n self.webauthnAbortController = new AbortController();\n }\n return new Q(\n // navigator.credentials is not supported in IE11\n // eslint-disable-next-line compat/compat\n navigator.credentials.get({\n publicKey: options,\n signal: self.webauthnAbortController && self.webauthnAbortController.signal,\n })\n )\n .then(function(assertion) {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor.verify({\n clientData: CryptoUtil.binToStr(assertion.response.clientDataJSON),\n authenticatorData: CryptoUtil.binToStr(assertion.response.authenticatorData),\n signatureData: CryptoUtil.binToStr(assertion.response.signature),\n rememberDevice: rememberDevice,\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new WebauthnAbortError();\n } else {\n throw new WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n });\n })\n .catch(() => {});\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.webauthn.biometric', 'login'),\n className: 'verify-webauthn-form',\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n children.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
          \\\n

          {{i18n code=\"verify.webauthn.biometric.instructions\" bundle=\"login\"}}

          \\\n
          \\\n
          '\n ),\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n children.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar [type=\"submit\"]')[0].value = loc('verify.u2f.retry', 'login');\n this.$('.o-form-button-bar').show();\n },\n },\n\n postRender: function() {\n _.defer(() => {\n // Trigger browser prompt automatically for other browsers for better UX.\n if (webauthn.isNewApiAvailable() && !BrowserFeatures.isSafari()) {\n this.model.save();\n }\n });\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\nimport Spinner from 'v1/views/shared/Spinner';\nexport default FormController.extend({\n className: 'mfa-verify verify-windows-hello',\n Model: {\n local: {\n __autoTriggered__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n const model = this;\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.verify().then(function(verifyData) {\n const factorData = verifyData.factor;\n\n return webauthn\n .getAssertion(factorData.challenge.nonce, [{ id: factorData.profile.credentialId }])\n .then(function(assertion) {\n return factor.verify({\n authenticatorData: assertion.authenticatorData,\n clientData: assertion.clientData,\n signatureData: assertion.signature,\n });\n })\n .then(function(data) {\n model.trigger('sync');\n model.trigger('signIn');\n return data;\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.windowsHello', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('verify.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'verify.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n signIn: '_successEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n postRender: function() {\n if (this.options.appState.get('factors').length === 1 && !this.model.get('__autoTriggered__')) {\n this.model.set('__autoTriggered__', true);\n this.model.save();\n }\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('verify.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('verify.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n this.$('.o-form-button-bar').removeClass('hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotFoundError':\n message = this.options.appState.get('factors').length > 1\n ? loc('verify.windowsHello.error.notFound.selectAnother', 'login')\n : loc('verify.windowsHello.error.notFound', 'login');\n break;\n\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n },\n\n _successEnrollment: function() {\n this.subtitle = this.settings.get('brandName')\n ? loc('verify.windowsHello.subtitle.signingIn.specific', 'login', [this.settings.get('brandName')])\n : loc('verify.windowsHello.subtitle.signingIn.generic', 'login');\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, $, loc, Model } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Factor from 'v1/models/Factor';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport { UnsupportedBrowserError } from 'util/Errors';\nconst DEFAULT_APP_LOGO = '/img/logos/default.png';\n\n// Keep track of stateMachine with this special model. Some reasons to not\n// keep it generic:\n// 1. We know exactly what we're using appState for by requiring props\n// 2. Can have some derived functions to help us translate the lastAuthRes\n\nconst USER_NOT_SEEN_ON_DEVICE = '/img/security/unknown.png';\nconst UNDEFINED_USER = '/img/security/default.png';\nconst NEW_USER = '/img/security/unknown-device.png';\nconst NEW_USER_IMAGE_DESCRIPTION = '';\nconst UNDEFINED_USER_IMAGE_DESCRIPTION = '';\nconst UNKNOWN_IMAGE_DESCRIPTION = '';\nconst securityImageUrlTpl = hbs('{{baseUrl}}/login/getimage?username={{username}}');\n\nfunction getSecurityImage(baseUrl, username, deviceFingerprint) {\n // When the username is empty, we want to show the default image.\n if (_.isEmpty(username) || _.isUndefined(username)) {\n return Q({\n securityImage: UNDEFINED_USER,\n securityImageDescription: UNDEFINED_USER_IMAGE_DESCRIPTION,\n });\n }\n\n // Reserved characters in the username must be escaped before the query can be safely executed\n username = encodeURIComponent(username);\n const url = securityImageUrlTpl({ baseUrl: baseUrl, username: username });\n const data = {\n url: url,\n dataType: 'json',\n };\n\n if (deviceFingerprint) {\n data['headers'] = { 'X-Device-Fingerprint': deviceFingerprint };\n }\n return Q($.ajax(data)).then(function(res) {\n if (res.pwdImg === USER_NOT_SEEN_ON_DEVICE) {\n // When we get an unknown.png security image from OKTA,\n // we want to show the unknown-device security image.\n // We are mapping the server's img url to a new one because\n // we still need to support the original login page.\n return {\n securityImage: NEW_USER,\n securityImageDescription: NEW_USER_IMAGE_DESCRIPTION,\n };\n }\n return {\n securityImage: res.pwdImg,\n securityImageDescription: res.imageDescription || UNKNOWN_IMAGE_DESCRIPTION,\n };\n });\n}\n\nfunction getMinutesString(factorLifetimeInMinutes) {\n if (factorLifetimeInMinutes > 60 && factorLifetimeInMinutes <= 1440) {\n const lifetimeInHours = factorLifetimeInMinutes / 60;\n\n return loc('hours', 'login', [lifetimeInHours]);\n } else if (factorLifetimeInMinutes > 1440) {\n const lifetimeInDays = factorLifetimeInMinutes / 1440;\n\n return loc('days', 'login', [lifetimeInDays]);\n }\n //Use minutes as the time unit by default\n if (factorLifetimeInMinutes === 1) {\n return loc('minutes.oneMinute', 'login');\n }\n return loc('minutes', 'login', [factorLifetimeInMinutes]);\n}\n\nfunction getGracePeriodRemainingDays(gracePeriodEndDate) {\n const endDate = new Date(gracePeriodEndDate).getTime();\n const remainingDays = Math.floor((endDate - new Date().getTime()) / (1000 * 3600 * 24));\n\n return remainingDays;\n}\n\nfunction combineFactorsObjects(factorTypes, factors) {\n const addedFactorTypes = [];\n const combinedFactors = [];\n\n _.each(factors, function(factor) {\n const factorType = factor.factorType;\n\n if (!_.contains(addedFactorTypes, factorType)) {\n const factorTypeObj = _.findWhere(factorTypes, { factorType: factorType });\n\n if (factorTypeObj) {\n addedFactorTypes.push(factorType);\n combinedFactors.push(factorTypeObj);\n } else {\n combinedFactors.push(factor);\n }\n }\n });\n return combinedFactors;\n}\n\nexport default Model.extend({\n initialize: function() {\n // Handle this in initialize (as opposed to a derived property) because\n // the operation is asynchronous\n if (this.settings.get('features.securityImage')) {\n const self = this;\n\n this.listenTo(this, 'change:username', function(model, username) {\n getSecurityImage(this.get('baseUrl'), username, this.get('deviceFingerprint'))\n .then(function(image) {\n model.set('securityImage', image.securityImage);\n model.set('securityImageDescription', image.securityImageDescription);\n model.unset('deviceFingerprint'); //Fingerprint can only be used once\n })\n .fail(function(jqXhr) {\n // Only notify the consumer on a CORS error\n if (BrowserFeatures.corsIsNotEnabled(jqXhr)) {\n self.settings.callGlobalError(new UnsupportedBrowserError(loc('error.enabled.cors')));\n } else {\n throw jqXhr;\n }\n })\n .done();\n });\n }\n },\n\n local: {\n baseUrl: 'string',\n lastAuthResponse: ['object', true, {}],\n transaction: 'object',\n transactionError: 'object',\n username: 'string',\n factors: 'object',\n policy: 'object',\n securityImage: ['string', true, UNDEFINED_USER],\n securityImageDescription: ['string', true, UNDEFINED_USER_IMAGE_DESCRIPTION],\n userCountryCode: 'string',\n userPhoneNumber: 'string',\n factorActivationType: 'string',\n flashError: 'object',\n beaconType: 'string',\n deviceFingerprint: 'string', // valid only once\n typingPattern: 'string',\n // Note: languageCode is special in that it is shared between Settings\n // and AppState. Settings is the *configured* language, and is static.\n // AppState is the dynamic language state - it can be changed via a\n // language picker, etc.\n // Note: this is conceptial feasible but not yet being implemented.\n languageCode: ['string', true],\n disableUsername: ['boolean', false, false],\n trapMfaRequiredResponse: ['boolean', false, false],\n lastFailedChallengeFactorData: ['object', false],\n },\n\n setAuthResponse: function(res) {\n // Because of MFA_CHALLENGE (i.e. DUO), we need to remember factors\n // across auth responses. Not doing this, for example, results in being\n // unable to switch away from the duo factor dropdown.\n if (res._embedded && res._embedded.policy) {\n this.set('policy', res._embedded.policy);\n }\n\n if (res._embedded && res._embedded.factors) {\n let factors = res._embedded.factors;\n\n if (res._embedded.factorTypes) {\n factors = combineFactorsObjects(res._embedded.factorTypes, factors);\n }\n\n const factorsObject = _.map(factors, factor => {\n factor.settings = this.settings;\n factor.appState = this;\n return factor;\n });\n\n this.set('factors', new Factor.Collection(factorsObject, { parse: true }));\n }\n\n this.set('lastAuthResponse', res);\n },\n\n clearLastAuthResponse: function() {\n this.set('lastAuthResponse', {});\n },\n\n setLastFailedChallengeFactorData: function() {\n this.set('lastFailedChallengeFactorData', {\n factor: this.get('factor'),\n errorMessage: this.get('factorResultErrorMessage'),\n });\n },\n\n clearLastFailedChallengeFactorData: function() {\n this.unset('lastFailedChallengeFactorData');\n },\n\n getUser: function() {\n return this.get('user');\n },\n\n derived: {\n isSuccessResponse: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'SUCCESS';\n },\n },\n isMfaRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_REQUIRED' || res.status === 'FACTOR_REQUIRED';\n },\n },\n isProfileRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PROFILE_REQUIRED';\n },\n },\n isMfaEnroll: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL';\n },\n },\n isMfaChallenge: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_CHALLENGE' || res.status === 'FACTOR_CHALLENGE';\n },\n },\n isSMSPasswordRecovery: {\n deps: ['lastAuthResponse'],\n fn: function({ status, factorType, recoveryType }) {\n return status === 'RECOVERY_CHALLENGE' &&\n factorType?.toLowerCase() === 'sms' &&\n recoveryType?.toLowerCase() === 'password';\n }\n },\n isUnauthenticated: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'UNAUTHENTICATED';\n },\n },\n isMfaRejected: {\n // MFA failures are usually error responses\n // except in the case of Okta Push, when a\n // user clicks 'deny' on his phone or OV app\n // version is below a required version no.\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'REJECTED';\n },\n },\n isMfaTimeout: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'TIMEOUT';\n },\n },\n isMfaEnrollActivate: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL_ACTIVATE' || res.status === 'FACTOR_ENROLL_ACTIVATE';\n },\n },\n isWaitingForActivation: {\n deps: ['isMfaEnrollActivate', 'lastAuthResponse'],\n fn: function(isMfaEnrollActivate, res) {\n return isMfaEnrollActivate && res.factorResult === 'WAITING';\n },\n },\n isWaitingForNumberChallenge: {\n deps: ['lastAuthResponse', 'isMfaChallenge'],\n fn: function(res, isMfaChallenge) {\n if (\n isMfaChallenge &&\n res &&\n res.factorResult === 'WAITING' &&\n res._embedded &&\n res._embedded.factor &&\n res._embedded.factor._embedded &&\n res._embedded.factor._embedded.challenge\n ) {\n return true;\n }\n return false;\n },\n },\n hasMultipleFactorsAvailable: {\n deps: ['factors', 'isMfaRequired', 'isMfaChallenge', 'isUnauthenticated'],\n fn: function(factors, isMfaRequired, isMfaChallenge, isUnauthenticated) {\n if (!isMfaRequired && !isMfaChallenge && !isUnauthenticated) {\n return false;\n }\n return factors && factors.length > 1;\n },\n },\n promptForFactorInUnauthenticated: {\n deps: ['lastAuthResponse', 'factors'],\n fn: function(res, factors) {\n if (res.status !== 'UNAUTHENTICATED') {\n return false;\n }\n return factors && factors.length > 0;\n },\n },\n userId: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user.id;\n },\n },\n isIdxStateToken: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res && _.isString(res.stateToken) && res.stateToken.startsWith('01');\n },\n },\n isPwdExpiringSoon: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PASSWORD_WARN';\n },\n },\n passwordExpireDays: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.policy || !res._embedded.policy.expiration) {\n return null;\n }\n return res._embedded.policy.expiration.passwordExpireDays;\n },\n },\n isPwdManagedByOkta: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return true;\n }\n return false;\n },\n },\n passwordExpiredWebsiteName: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return null;\n }\n return res._links.next.title;\n },\n },\n passwordExpiredLinkUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n recoveryType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.recoveryType;\n },\n },\n factorType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorType;\n },\n },\n factor: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factor) {\n return null;\n }\n return res._embedded.factor;\n },\n },\n activatedFactorId: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.id : null;\n },\n },\n activatedFactorType: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.factorType : null;\n },\n },\n activatedFactorProvider: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.provider : null;\n },\n },\n qrcode: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation._links.qrcode.href;\n } catch (err) {\n return null;\n }\n },\n },\n activationSendLinks: {\n deps: ['factor'],\n fn: function(factor) {\n let sendLinks;\n\n try {\n sendLinks = factor._embedded.activation._links.send;\n } catch (err) {\n sendLinks = [];\n }\n return sendLinks;\n },\n },\n textActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'sms' });\n\n return item ? item.href : null;\n },\n },\n emailActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'email' });\n\n return item ? item.href : null;\n },\n },\n sharedSecret: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation.sharedSecret;\n } catch (err) {\n return null;\n }\n },\n },\n duoEnrollActivation: {\n deps: ['factor'],\n fn: function(factor) {\n if (!factor || !factor._embedded || !factor._embedded.activation) {\n return null;\n }\n return factor._embedded.activation;\n },\n },\n prevLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.prev) {\n return res._links.prev.href;\n }\n return null;\n },\n },\n skipLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.skip) {\n return res._links.skip.href;\n }\n return null;\n },\n },\n gracePeriodRemainingDays: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.gracePeriod && policy.gracePeriod.endDate) {\n return getGracePeriodRemainingDays(policy.gracePeriod.endDate);\n }\n return null;\n },\n },\n user: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user;\n },\n },\n recoveryQuestion: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.recovery_question) {\n return null;\n }\n return user.recovery_question.question;\n },\n },\n userProfile: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.profile) {\n return null;\n }\n return user.profile;\n },\n },\n userConsentName: {\n deps: ['userProfile', 'username'],\n fn: function(userProfile, username) {\n if (!userProfile || _.isEmpty(userProfile.firstName)) {\n return username;\n }\n if (_.isEmpty(userProfile.lastName)) {\n return userProfile.firstName;\n }\n return userProfile.firstName + ' ' + userProfile.lastName.charAt(0) + '.';\n },\n },\n userEmail: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || !userProfile.login) {\n return null;\n }\n return userProfile.login;\n },\n },\n userFullName: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || (!userProfile.firstName && !userProfile.lastName)) {\n return '';\n }\n return userProfile.firstName + ' ' + userProfile.lastName;\n },\n },\n defaultAppLogo: {\n deps: ['baseUrl'],\n fn: function(baseUrl) {\n return baseUrl + DEFAULT_APP_LOGO;\n },\n },\n expiresAt: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.expiresAt;\n },\n },\n target: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.target;\n },\n },\n targetLabel: {\n deps: ['target'],\n fn: function(target) {\n if (!target) {\n return null;\n }\n return target.label;\n },\n },\n targetLogo: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links.logo;\n },\n },\n targetTermsOfService: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['terms-of-service'];\n },\n },\n targetPrivacyPolicy: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['privacy-policy'];\n },\n },\n targetClientURI: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['client-uri'];\n },\n },\n scopes: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.scopes;\n },\n },\n issuer: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.authentication?.issuer?.uri;\n }\n },\n hasExistingPhones: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'sms', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n hasExistingPhonesForCall: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'call', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n isUndefinedUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === UNDEFINED_USER;\n },\n },\n isNewUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === NEW_USER;\n },\n },\n allowRememberDevice: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.allowRememberDevice;\n },\n },\n rememberDeviceLabel: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.rememberDeviceLifetimeInMinutes > 0) {\n const timeString = getMinutesString(policy.rememberDeviceLifetimeInMinutes);\n\n return loc('rememberDevice.timebased', 'login', [timeString]);\n } else if (policy && policy.rememberDeviceLifetimeInMinutes === 0) {\n return loc('rememberDevice.devicebased', 'login');\n }\n return loc('rememberDevice', 'login');\n },\n },\n rememberDeviceByDefault: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.rememberDeviceByDefault;\n },\n },\n factorsPolicyInfo: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.factorsPolicyInfo ? policy.factorsPolicyInfo : null;\n },\n },\n verifyCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'redirect' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n enrollCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'activate' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n isFactorResultFailed: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'FAILED';\n },\n },\n factorResultErrorMessage: {\n deps: ['lastAuthResponse', 'isFactorResultFailed'],\n fn: function(res, isFactorResultFailed) {\n if (isFactorResultFailed) {\n return res.factorResultMessage || loc('oform.error.unexpected', 'login');\n }\n return null;\n },\n },\n deviceActivationStatus: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.deviceActivationStatus;\n },\n },\n usingDeviceFlow: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return !!(res._embedded && res._embedded.usingDeviceFlow);\n },\n },\n userCode: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.userCode;\n },\n },\n },\n\n parse: function(options) {\n this.settings = options.settings;\n return _.extend(_.omit(options, 'settings'), {\n languageCode: this.settings.get('languageCode'),\n userCountryCode: this.settings.get('countryCode'),\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Model } from 'okta';\nimport Q from 'q';\nimport Enums from 'util/Enums';\nconst KNOWN_ERRORS = ['OAuthError', 'AuthSdkError', 'AuthPollStopError', 'AuthApiError'];\nexport default Model.extend({\n // May return either a \"standard\" promise or a Q promise\n doTransaction: function(fn, rethrow) {\n const self = this;\n\n return fn\n .call(this, this.appState.get('transaction'))\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n // Q may still consider AuthPollStopError to be unhandled\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n if (rethrow || _.indexOf(KNOWN_ERRORS, err.name) === -1) {\n throw err;\n }\n });\n },\n\n manageTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.appState.get('transaction'), _.bind(this.setTransaction, this));\n\n // If it's a promise, listen for failures\n if (Q.isPromiseAlike(res)) {\n return res.catch(function(err) {\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n });\n }\n\n return Q.resolve(res);\n },\n\n startTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.settings.getAuthClient());\n\n // If it's a promise, then chain to it\n if (Q.isPromiseAlike(res)) {\n return res\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n throw err;\n });\n }\n\n return Q.resolve(res);\n },\n\n setTransaction: function(trans) {\n this.appState.set('transaction', trans);\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the 'License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from 'okta';\nimport BaseLoginModel from './BaseLoginModel';\nexport default BaseLoginModel.extend({\n initialize: function(options) {\n this.options = options || {};\n this.appState = this.options.appState;\n },\n constructPostData: function(profileAttributes) {\n const postData = {\n registration: {\n profile: profileAttributes,\n },\n };\n\n // send createNewAccount flag for new user creation\n if (this.appState.get('policy').registration.createNewAccount) {\n postData.registration['createNewAccount'] = true;\n }\n return postData;\n },\n getEnrollFormData: function() {\n return this.manageTransaction(function(transaction, setTransaction) {\n return transaction.enroll().then(function(trans) {\n setTransaction(trans);\n });\n });\n },\n save: function() {\n let data = BaseLoginModel.prototype.toJSON.apply(this, arguments);\n\n data = _.omit(data, ['appState', 'settings', 'createNewAccount']);\n if (_.isEmpty(data)) {\n const error = {\n errorSummary: loc('oform.errorbanner.title', 'login'),\n };\n\n this.trigger('error', this, {\n responseJSON: error,\n });\n } else {\n return this.manageTransaction(function(transaction, setTransaction) {\n transaction.enroll(this.constructPostData(data)).then(function(trans) {\n setTransaction(trans);\n });\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity: [2, 13] */\nimport { _, loc, Collection } from 'okta';\nimport Q from 'q';\nimport { AuthStopPollInitiationError } from 'util/Errors';\nimport factorUtil from 'util/FactorUtil';\nimport Util from 'util/Util';\nimport BaseLoginModel from './BaseLoginModel';\nconst PUSH_INTERVAL = 4000;\n\n// Avoid setting interval to same value as keep-alive time (5 seconds) because it\n// caused an occasional issue with network connection lost errors in Safari and IE\n\nconst FactorFactor = BaseLoginModel.extend({\n extraProperties: true,\n flat: false,\n\n props: {\n id: 'string',\n factorType: {\n type: 'string',\n values: [\n 'sms',\n 'call',\n 'email',\n 'token',\n 'token:software:totp',\n 'token:hotp',\n 'token:hardware',\n 'question',\n 'push',\n 'u2f',\n 'password',\n 'assertion:saml2',\n 'assertion:oidc',\n 'claims_provider',\n 'webauthn',\n ],\n },\n provider: {\n type: 'string',\n values: [\n 'OKTA',\n 'RSA',\n 'DEL_OATH',\n 'SYMANTEC',\n 'GOOGLE',\n 'YUBICO',\n 'FIDO',\n 'CUSTOM',\n 'GENERIC_SAML',\n 'GENERIC_OIDC',\n ],\n },\n enrollment: {\n type: 'string',\n values: ['OPTIONAL', 'REQUIRED'],\n },\n status: {\n type: 'string',\n values: ['NOT_SETUP', 'ACTIVE'],\n },\n profile: ['object'],\n vendorName: 'string',\n policy: ['object'],\n profiles: ['object'],\n },\n\n local: {\n answer: 'string',\n password: 'string',\n backupFactor: 'object',\n showAnswer: 'boolean',\n rememberDevice: 'boolean',\n autoPush: ['boolean', true, false],\n },\n\n derived: {\n isOktaFactor: {\n deps: ['provider'],\n fn: function(provider) {\n return provider === 'OKTA';\n },\n },\n factorName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorName,\n },\n factorLabel: {\n deps: ['provider', 'factorType', 'vendorName'],\n fn: function(provider, factorType, vendorName) {\n if (_.contains(['DEL_OATH', 'GENERIC_SAML', 'GENERIC_OIDC', 'CUSTOM'], provider)) {\n return vendorName;\n }\n return factorUtil.getFactorLabel.apply(this, [provider, factorType]);\n },\n },\n factorDescription: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorDescription,\n },\n sortOrder: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorSortOrder,\n },\n iconClassName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorIconClassName,\n },\n securityQuestion: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'question') {\n return null;\n }\n return profile && factorUtil.getSecurityQuestionLabel(profile);\n },\n },\n phoneNumber: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (_.contains(['sms', 'call'], factorType)) {\n return profile && profile.phoneNumber;\n }\n return null;\n },\n },\n email: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType === 'email') {\n return profile && profile.email;\n }\n return null;\n },\n },\n deviceName: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'push') {\n return null;\n }\n return profile && profile.name;\n },\n },\n enrolled: {\n deps: ['status'],\n fn: function(status) {\n return status === 'ACTIVE';\n },\n },\n cardinality: {\n deps: ['policy', 'profiles'],\n fn: function(policy, profiles) {\n if (profiles && profiles.length > 0) {\n const profile = profiles[0];\n //assume for now we only get one profile (multiple profiles are not supported yet)\n\n const enrolled = profile._embedded.enrolledFactors.length;\n\n const adoption = _.findWhere(profile._embedded.features, { type: 'adoption' });\n\n if (adoption && adoption.cardinality) {\n return {\n enrolled: enrolled,\n minimum: adoption.cardinality.min,\n maximum: adoption.cardinality.max,\n };\n }\n return false;\n } else if (policy && policy.enrollment) {\n return policy.enrollment;\n } else {\n return false;\n }\n },\n },\n additionalEnrollment: {\n deps: ['cardinality'],\n fn: function(cardinality) {\n if (cardinality) {\n return cardinality.enrolled !== 0 && cardinality.enrolled < cardinality.maximum;\n } else {\n return false;\n }\n },\n },\n required: {\n deps: ['enrollment'],\n fn: function(enrollment) {\n return enrollment === 'REQUIRED';\n },\n },\n canUseResend: {\n deps: ['provider', 'factorType'],\n fn: function(provider, factorType) {\n // Only push, sms and call have resend links.\n return provider === 'OKTA' && _.contains(['push', 'sms', 'call', 'email'], factorType);\n },\n },\n isAnswerRequired: {\n deps: ['factorType'],\n fn: function(factorType) {\n return _.contains(['sms', 'call', 'email', 'token', 'token:software:totp', 'question'], factorType);\n },\n },\n isFactorTypeVerification: {\n deps: ['provider', 'id'],\n fn: function(provider, id) {\n return provider === undefined && id === undefined;\n },\n },\n },\n\n parse: function(attributes) {\n this.settings = attributes.settings;\n this.appState = attributes.appState;\n // set the initial value for remember device.\n attributes.rememberDevice = factorUtil.getRememberDeviceValue(this.appState);\n\n // Add vendorname for custom totp enroll\n this.setCustomHotpVendorName(attributes);\n return _.omit(attributes, ['settings', 'appState']);\n },\n\n validate: function() {\n if (this.get('isAnswerRequired') && !this.get('answer')) {\n return { answer: loc('model.validation.field.blank') };\n } else if (this.get('factorType') === 'password' && !this.get('password')) {\n return { password: loc('error.password.required') };\n }\n },\n needsPasscode: function() {\n // we don't need passcode for email with magic link flow\n return !(this.options.appState.get('isIdxStateToken') && this.get('factorType') === 'email');\n },\n resend: function() {\n this.trigger('form:clear-errors');\n return this.manageTransaction(function(transaction) {\n const firstLink = transaction.data._links.resend[0];\n\n return transaction.resend(firstLink.name);\n });\n },\n\n save: function() {\n const rememberDevice = !!this.get('rememberDevice');\n const self = this;\n // Set/Remove the remember device cookie based on the remember device input.\n\n return this.manageTransaction(function(transaction, setTransaction) {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n if (this.get('factorType') === 'question') {\n data.answer = this.get('answer');\n } else if (this.get('factorType') === 'password') {\n data.password = this.get('password');\n } else if (this.needsPasscode()) {\n data.passCode = this.get('answer');\n }\n\n if (this.pushFactorHasAutoPush()) {\n data.autoPush = this.get('autoPush');\n }\n\n let promise;\n\n // MFA_REQUIRED, FACTOR_REQUIRED or UNAUTHENTICATED with factors (passwordlessAuth)\n if (\n transaction.status === 'MFA_REQUIRED' ||\n transaction.status === 'FACTOR_REQUIRED' ||\n this.appState.get('promptForFactorInUnauthenticated')\n ) {\n const factor = this._findFactor(transaction);\n\n promise = factor.verify(data);\n } else if (this.get('canUseResend') && !this.get('answer') && transaction.resend) {\n // MFA_CHALLENGE/ FACTOR_CHALLENGE\n const firstLink = transaction.data._links.resend[0];\n\n promise = transaction.resend(firstLink.name);\n } else {\n promise = transaction.verify(data);\n }\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the factor form\n this.trigger('save');\n\n return promise.then(function(trans) {\n const options = {\n delay: PUSH_INTERVAL,\n transactionCallBack: transaction => {\n self.options.appState.set('lastAuthResponse', transaction);\n },\n };\n\n setTransaction(trans);\n // In Okta verify case we initiate poll.\n if ((trans.status === 'MFA_CHALLENGE' && trans.poll) || (trans.status === 'FACTOR_CHALLENGE' && trans.poll)) {\n const deferred = Q.defer();\n const initiatePollTimout = Util.callAfterTimeout(deferred.resolve, PUSH_INTERVAL);\n self.listenToOnce(self.options.appState, 'factorSwitched', () => {\n clearTimeout(initiatePollTimout);\n deferred.reject(new AuthStopPollInitiationError());\n });\n return deferred.promise.then(function() {\n // Stop listening if factor was not switched before poll.\n self.stopListening(self.options.appState, 'factorSwitched');\n if (self.pushFactorHasAutoPush()) {\n options.autoPush = function() {\n return self.get('autoPush');\n };\n options.rememberDevice = function() {\n return self.get('rememberDevice');\n };\n }\n return trans.poll(options).then(function(trans) {\n self.options.appState.set('lastAuthResponse', trans.data);\n setTransaction(trans);\n });\n });\n }\n });\n });\n },\n\n _findFactor: function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: this.get('factorType'),\n });\n }\n if (!factor) {\n factor = _.findWhere(transaction.factors, {\n id: this.get('id'),\n });\n }\n return factor;\n },\n\n pushFactorHasAutoPush: function() {\n return this.settings.get('features.autoPush') && this.get('factorType') === 'push';\n },\n\n setCustomHotpVendorName: function(attributes) {\n // If factor is token:hotp and not enrolled, we assume the first profile is the default.\n // If factor is enrolled, we only support one profile to be enrolled, so find that one\n // and display as enrolled profile. We do this by populating profile name in vendorName.\n if (attributes.factorType === 'token:hotp' && attributes.profiles) {\n if (attributes.status === 'NOT_SETUP') {\n attributes.vendorName = attributes.profiles[0].name;\n } else if (attributes.status === 'ACTIVE') {\n const enrolledProfiles = attributes.profiles.filter(profile => {\n return profile._embedded.enrolledFactors.length > 0;\n });\n attributes.vendorName = enrolledProfiles[0].name;\n }\n }\n return attributes;\n },\n});\nconst FactorFactors = Collection.extend({\n model: FactorFactor,\n comparator: 'sortOrder',\n\n // One override necessary here - When Okta Verify OTP and Push are in the list,\n // they are presented in the view as one factor - in the beacon menu,\n // there's only one option (Okta Verify), and we show a form with Push\n // with an inline totp option. What we need to do is to add totp\n // as a \"backupFactor\" for push\n parse: function(factors) {\n // Keep a track of the last used factor, since\n // we need it to determine the default factor.\n this.lastUsedFactor = factors[0];\n\n const oktaPushFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'push' });\n\n let totpFactor;\n\n if (_.where(factors, { factorType: 'push' }).length > 1) {\n totpFactor = _.findWhere(factors, { factorType: 'token:software:totp' });\n } else {\n totpFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'token:software:totp' });\n }\n if (!oktaPushFactor || !totpFactor) {\n return factors;\n }\n\n const isTotpFirst = totpFactor === factors[0];\n\n const parsedFactors = _.reduce(\n factors,\n function(memo, factor) {\n const isOkta = factor.provider === 'OKTA';\n const isOktaTotp = isOkta && factor.factorType === 'token:software:totp';\n const isOktaPush = isOkta && factor.factorType === 'push';\n const notEnrolled = factor.status !== 'ACTIVE';\n const hideOktaTotp = isOktaTotp && (notEnrolled || oktaPushFactor.status === 'ACTIVE');\n const hideOktaPush = isOktaPush && notEnrolled && totpFactor.status === 'ACTIVE';\n\n if (hideOktaTotp || hideOktaPush) {\n return memo;\n }\n\n if (isOktaPush) {\n factor.backupFactor = new FactorFactor(totpFactor, { parse: true });\n }\n memo.push(factor);\n return memo;\n },\n []\n );\n\n // Use push factor instead of TOTP, if TOTP is first in the list\n // (since it is stored as backupFactor for push).\n if (isTotpFirst) {\n this.lastUsedFactor = oktaPushFactor;\n }\n\n return parsedFactors;\n },\n\n // Will need to update this to use HAL link to get last used factor:\n // https://oktainc.atlassian.net/browse/OKTA-58380\n // However, current code returns last used factor as first factor in list.\n // Also, will need to add priority - i.e. if they do not have a last used\n // factor, should try Okta Verify, then Okta SMS, etc.\n getDefaultFactor: function() {\n const factor = _.pick(this.lastUsedFactor, 'factorType', 'provider');\n\n return this.findWhere(factor);\n },\n\n getFirstUnenrolledRequiredFactor: function() {\n return this.findWhere({ required: true, enrolled: false });\n },\n\n _getFactorsOfType: function(factorType) {\n return this.where({ factorType: factorType });\n },\n\n getFactorIndex: function(factorType, factorId) {\n return this._getFactorsOfType(factorType).findIndex(function(factor) {\n return factor.get('id') === factorId;\n });\n },\n\n hasMultipleFactorsOfSameType: function(factorType) {\n return this._getFactorsOfType(factorType).length > 1;\n },\n\n getFactorByTypeAndIndex: function(factorType, factorIndex) {\n return this._getFactorsOfType(factorType)[factorIndex];\n },\n});\nexport default {\n Model: FactorFactor,\n Collection: FactorFactors,\n};\n","/*!\n * Copyright (c) 2015-2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport PrimaryAuthModel from 'v1/models/PrimaryAuth';\nimport CookieUtil from 'util/CookieUtil';\nimport Enums from 'util/Enums';\nimport Util from 'util/Util';\nexport default PrimaryAuthModel.extend({\n props: function() {\n const cookieUsername = CookieUtil.getCookieUsername();\n const properties = this.getUsernameAndRemember(cookieUsername);\n\n return {\n username: ['string', true, properties.username],\n lastUsername: ['string', false, cookieUsername],\n context: ['object', false],\n remember: ['boolean', true, properties.remember],\n };\n },\n\n local: {},\n\n save: function() {\n const username = this.settings.transformUsername(this.get('username'), Enums.IDP_DISCOVERY);\n const remember = this.get('remember');\n const lastUsername = this.get('lastUsername');\n const resource = 'okta:acct:' + username;\n const requestContext = this.get('requestContext');\n\n this.setUsernameCookie(username, remember, lastUsername);\n\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button\n this.trigger('save');\n\n this.appState.trigger('loading', true);\n\n const webfingerArgs = {\n resource: resource,\n requestContext: requestContext,\n };\n const authClient = this.appState.settings.getAuthClient();\n\n authClient\n .webfinger(webfingerArgs)\n .then(res => {\n if (res && res.links && res.links[0]) {\n if (res.links[0].properties['okta:idp:type'] === 'OKTA') {\n this.trigger('goToPrimaryAuth');\n } else if (res.links[0].href) {\n const redirectFn = res.links[0].href.includes('OKTA_INVALID_SESSION_REPOST%3Dtrue')\n ? Util.redirectWithFormGet.bind(Util)\n : this.settings.get('redirectUtilFn');\n //override redirectFn to only use Util.redirectWithFormGet if OKTA_INVALID_SESSION_REPOST is included\n //it will be encoded since it will be included in the encoded fromURI\n\n redirectFn(res.links[0].href);\n }\n }\n })\n .catch(() => {\n // webfinger request might fail when corporate proxy checks if request is 'authenticated' using cookies\n const error = {\n errorSummary: loc('oform.error.webfinger', 'login'),\n };\n this.trigger('error', this, {\n responseJSON: error,\n });\n // Specific event handled by the Header for the case where the security image is not\n // enabled and we want to show a spinner. (Triggered only here and handled only by Header).\n this.appState.trigger('removeLoading');\n CookieUtil.removeUsernameCookie();\n })\n .finally(() => {\n this.appState.trigger('loading', false);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Model } from 'okta';\nimport BaseLoginModel from './BaseLoginModel';\nexport default BaseLoginModel.extend({\n constructor: function(options) {\n this.settings = options && options.settings;\n Model.apply(this, arguments);\n },\n loginWithActivationToken: function(activationToken) {\n return this.startTransaction(function(authClient) {\n return authClient.signInWithCredentials({ token: activationToken });\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, Model } from 'okta';\nimport CookieUtil from 'util/CookieUtil';\nimport Enums from 'util/Enums';\nimport BaseLoginModel from './BaseLoginModel';\n\nexport default BaseLoginModel.extend({\n props: function() {\n const cookieUsername = CookieUtil.getCookieUsername();\n const properties = this.getUsernameAndRemember(cookieUsername);\n const props = {\n username: {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.username.required', 'login');\n }\n },\n value: properties.username,\n },\n lastUsername: ['string', false, cookieUsername],\n context: ['object', false],\n remember: ['boolean', true, properties.remember],\n multiOptionalFactorEnroll: ['boolean', true],\n };\n\n if (!(this.settings && this.settings.get('features.passwordlessAuth'))) {\n props.password = {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.password.required', 'login');\n }\n },\n };\n }\n return props;\n },\n\n getUsernameAndRemember: function(cookieUsername) {\n const settingsUsername = this.settings && this.settings.get('username');\n const rememberMeEnabled = this.settings && this.settings.get('features.rememberMe');\n let remember = false;\n let username;\n\n if (settingsUsername) {\n username = settingsUsername;\n remember = rememberMeEnabled && username === cookieUsername;\n } else if (rememberMeEnabled && cookieUsername) {\n // Only respect the cookie if the feature is enabled.\n // Allows us to force prompting when necessary, e.g. SAML ForceAuthn\n username = cookieUsername;\n remember = true;\n }\n\n return {\n username: username,\n remember: remember,\n };\n },\n\n constructor: function(options) {\n this.settings = options && options.settings;\n this.appState = options && options.appState;\n Model.apply(this, arguments);\n this.listenTo(this, 'change:username', function(model, username) {\n this.set({ remember: username === this.get('lastUsername') });\n });\n },\n parse: function(options) {\n return _.omit(options, ['settings', 'appState']);\n },\n\n save: function() {\n const username = this.settings.transformUsername(this.get('username'), Enums.PRIMARY_AUTH);\n const remember = this.get('remember');\n const lastUsername = this.get('lastUsername');\n\n this.setUsernameCookie(username, remember, lastUsername);\n\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the primary auth form\n this.trigger('save');\n\n this.appState.trigger('loading', true);\n\n const signInArgs = this.getSignInArgs(username);\n let primaryAuthPromise;\n\n if (this.appState.get('isUnauthenticated')) {\n const authClient = this.appState.settings.getAuthClient();\n\n // bootstrapped with stateToken\n if (this.appState.get('isIdxStateToken')) {\n // if its an idx stateToken, we send the parameter as identifier to login API\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.login);\n });\n } else {\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.authenticate);\n }, true);\n }\n } else {\n //normal username/password flow without stateToken\n primaryAuthPromise = this.startTransaction(function(authClient) {\n return this.doPrimaryAuth(authClient, signInArgs, _.bind(authClient.signInWithCredentials, authClient));\n });\n }\n\n return primaryAuthPromise\n .catch(() => {\n // Specific event handled by the Header for the case where the security image is not\n // enabled and we want to show a spinner. (Triggered only here and handled only by Header).\n this.appState.trigger('removeLoading');\n CookieUtil.removeUsernameCookie();\n })\n .finally(() => {\n this.appState.trigger('loading', false);\n });\n },\n\n getSignInArgs: function(username) {\n const multiOptionalFactorEnroll = this.get('multiOptionalFactorEnroll');\n const signInArgs = {};\n\n if (!this.settings.get('features.passwordlessAuth')) {\n signInArgs.password = this.get('password');\n }\n\n // if its an idx stateToken, we send the parameter as identifier to login API\n if (this.appState.get('isIdxStateToken')) {\n signInArgs.identifier = username;\n } else {\n //only post options param for non-idx flows\n signInArgs.username = username;\n signInArgs.options = {\n warnBeforePasswordExpired: true,\n multiOptionalFactorEnroll: multiOptionalFactorEnroll,\n };\n }\n return signInArgs;\n },\n\n setUsernameCookie: function(username, remember, lastUsername) {\n // Do not modify the cookie when feature is disabled, relevant for SAML ForceAuthn prompts\n if (this.settings.get('features.rememberMe')) {\n // Only delete the cookie if its owner says so. This allows other\n // users to log in on a one-off basis.\n if (!remember && lastUsername === username) {\n CookieUtil.removeUsernameCookie();\n } else if (remember) {\n CookieUtil.setUsernameCookie(username);\n }\n }\n },\n\n doPrimaryAuth: function(authClient, signInArgs, func) {\n const deviceFingerprintEnabled = this.settings.get('features.deviceFingerprinting');\n const typingPatternEnabled = this.settings.get('features.trackTypingPattern');\n\n // Add the custom header for fingerprint, typing pattern if needed, and then remove it afterwards\n // Since we only need to send it for primary auth\n if (deviceFingerprintEnabled && this.appState.get('deviceFingerprint')) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', this.appState.get('deviceFingerprint'));\n }\n if (typingPatternEnabled && this.appState.get('typingPattern')) {\n authClient.http.setRequestHeader('X-Typing-Pattern', this.appState.get('typingPattern'));\n }\n\n const self = this;\n\n return func(signInArgs).finally(function() {\n if (deviceFingerprintEnabled) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', undefined);\n self.appState.unset('deviceFingerprint'); //Fingerprint can only be used once\n }\n if (typingPatternEnabled) {\n authClient.http.setRequestHeader('X-Typing-Pattern', undefined);\n self.appState.unset('typingPattern');\n }\n });\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, internal } from 'okta';\nlet { BaseSchema } = internal.models;\nexport default BaseSchema.Model.extend({\n expand: ['schema'],\n setFieldPlaceholder: function(formFields) {\n _.each(formFields, function(formField) {\n formField.title = formField.label;\n });\n return formFields;\n },\n initialize: function(options) {\n let profileAttributes = options.profileSchemaAttributes;\n\n profileAttributes = this.setFieldPlaceholder(profileAttributes);\n if (profileAttributes) {\n const userProfileSchema = {\n properties: {},\n };\n\n for (var i = 0; i < profileAttributes.length; i++) {\n const profileAttributeObject = profileAttributes[i];\n\n userProfileSchema.properties[profileAttributeObject.name] = profileAttributeObject;\n }\n this.parse.apply(this, [{ schema: userProfileSchema }]);\n }\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, BaseModel, internal } from 'okta';\nlet { BaseSchema, SchemaProperty } = internal.models;\nconst RegistrationSchemaRegistrationSchemaPropertyCollection = SchemaProperty.Collection.extend({\n createModelProperties: function() {\n const modelProperties = SchemaProperty.Collection.prototype.createModelProperties.apply(this);\n\n _.each(\n modelProperties,\n function(modelProperty, name) {\n modelProperty.required = !!this.get(name).get('required');\n },\n this\n );\n return modelProperties;\n },\n});\nexport default BaseSchema.Model.extend({\n expand: ['schema'],\n\n constructor: function() {\n this.properties = new RegistrationSchemaRegistrationSchemaPropertyCollection();\n BaseModel.apply(this, arguments);\n },\n\n parse: function(resp) {\n const parseResponseData = resp => {\n const requireFields = resp.schema.required;\n\n if (_.isArray(requireFields)) {\n _.each(\n requireFields,\n function(requireField) {\n const field = this.properties.get(requireField);\n\n if (field) {\n field.set('required', true);\n }\n },\n this\n );\n }\n\n const fieldOrderIds = resp.schema.fieldOrder;\n\n if (_.isArray(fieldOrderIds)) {\n _.each(\n fieldOrderIds,\n function(fieldOrderId, sortOrder) {\n const field = this.properties.get(fieldOrderId);\n\n if (field) {\n field.set('sortOrder', sortOrder);\n }\n },\n this\n );\n this.properties.comparator = 'sortOrder';\n this.properties.sort();\n }\n this.properties.defaultPolicyId = resp.policyId;\n return resp;\n };\n\n const self = this;\n this.settings.parseRegistrationSchema(\n resp,\n function(resp) {\n if (resp.profileSchema) {\n resp.schema = resp.profileSchema;\n BaseSchema.Model.prototype.parse.apply(self, [resp]);\n resp = parseResponseData(resp);\n }\n self.trigger('parseComplete', { properties: self.properties });\n },\n function(error) {\n self.trigger('parseComplete', { properties: self.properties, error: error });\n }\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Form, Controller } from 'okta';\nimport Q from 'q';\n\nfunction getForm(controller) {\n return _.find(controller.getChildren(), function(item) {\n return item instanceof Form;\n });\n}\n\nexport default Controller.extend({\n // Ideally we should be attaching the listeners in the constructor, but because of the way\n // we construct the FormController (this.model is generated after the BaseLoginController's\n // constructor is called), this.model is undefined in when try to attach the events and\n // therefore we don't listen to events for such forms. And changing the order in which we call\n // the constructor doesn't help either (JS errors etc.). This at least guarantees that we\n // are listening to the model events.\n // Note - Figure out a way to call the constructor in the right order.\n addListeners: function() {\n // Events to enable/disable the primary button on the forms\n this.listenTo(this.model, 'save', function() {\n const form = getForm(this);\n //disable the submit button on forms while making the request\n //to prevent users from hitting rate limiting exceptions of\n //1 per second on the auth api\n\n const disableSubmitButton = form.disableSubmitButton;\n\n if (disableSubmitButton && !form.disableSubmitButton()) {\n return;\n }\n this.toggleButtonState(true);\n });\n\n this.listenTo(this.model, 'error', function() {\n this.toggleButtonState(false);\n });\n\n this.addModelListeners(this.model);\n },\n\n addModelListeners: function(model) {\n const setTransactionHandler = transaction => {\n this.options.appState.set('transaction', transaction);\n };\n\n const transactionErrorHandler = err => {\n this.options.appState.set('transactionError', err);\n };\n\n // Events to set the transaction attributes on the app state.\n this.listenTo(model, 'setTransaction', setTransactionHandler);\n this.listenTo(model, 'setTransactionError', transactionErrorHandler);\n\n // For TOTP factor model\n // TOTP model is special, its model will not be attached to a controller, but will\n // tag along with the push factor model. We need to listen to the transaction\n // changes on this as well (in case of the push+totp form).\n const totpModel = model.get('backupFactor');\n\n if (totpModel) {\n this.listenTo(totpModel, 'setTransaction', setTransactionHandler);\n this.listenTo(totpModel, 'setTransactionError', transactionErrorHandler);\n }\n },\n\n // Override this method to delay switching to this screen until return\n // promise is resolved. This is useful for cases like enrolling a security\n // question, which requires an additional request to fetch the question\n // list.\n fetchInitialData: function() {\n return Q();\n },\n\n // Override this method to prevent route navigation. This is useful for\n // intermediate status changes that do not trigger a full refresh of the\n // page, like MFA_ENROLL_ACTIVATE and MFA_CHALLENGE.\n trapAuthResponse: function() {\n return false;\n },\n\n toJSON: function() {\n const data = Controller.prototype.toJSON.apply(this, arguments);\n\n return _.extend(_.pick(this.options, 'appState'), data);\n },\n\n toggleButtonState: function(state) {\n const button = this.$el.find('.button');\n\n button.toggleClass('link-button-disabled', state).prop('disabled', state);\n },\n\n postRenderAnimation: function() {\n // Event triggered after a page is rendered along with the classname to identify the page\n // TODO: Deprecate this event in the next major version in favor of 'afterRender'\n this.trigger('pageRendered', { page: this.className });\n\n this.trigger('afterRender', { controller: this.className });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { $ } from 'okta';\nimport Q from 'q';\nexport default {\n getUserAgent: function() {\n return navigator.userAgent;\n },\n isMessageFromCorrectSource: function($iframe, event) {\n return event.source === $iframe[0].contentWindow;\n },\n generateDeviceFingerprint: function(oktaDomainUrl, element) {\n const userAgent = this.getUserAgent();\n\n if (!userAgent) {\n return Q.reject('user agent is not defined');\n } else if (isWindowsPhone(userAgent)) {\n return Q.reject('device fingerprint is not supported on Windows phones');\n }\n\n const deferred = Q.defer();\n const self = this;\n let $iframe;\n let iFrameTimeout;\n\n function isWindowsPhone(userAgent) {\n return userAgent.match(/windows phone|iemobile|wpdesktop/i);\n }\n\n function removeIframe() {\n $iframe.off();\n $iframe.remove();\n window.removeEventListener('message', onMessageReceivedFromOkta, false);\n }\n\n function handleError(reason) {\n removeIframe();\n deferred.reject(reason);\n }\n\n function onMessageReceivedFromOkta(event) {\n if (!self.isMessageFromCorrectSource($iframe, event)) {\n return;\n }\n // deviceFingerprint service is available, clear timeout\n clearTimeout(iFrameTimeout);\n if (!event || !event.data || event.origin !== oktaDomainUrl) {\n handleError('no data');\n return;\n }\n try {\n const message = JSON.parse(event.data);\n\n if (message && message.type === 'FingerprintServiceReady') {\n sendMessageToOkta({ type: 'GetFingerprint' });\n } else if (message && message.type === 'FingerprintAvailable') {\n removeIframe();\n deferred.resolve(message.fingerprint);\n } else {\n handleError('no data');\n }\n } catch (error) {\n //Ignore any errors since we could get other messages too\n }\n }\n\n function sendMessageToOkta(message) {\n const win = $iframe[0].contentWindow;\n\n if (win) {\n win.postMessage(JSON.stringify(message), oktaDomainUrl);\n }\n }\n\n // Attach listener\n window.addEventListener('message', onMessageReceivedFromOkta, false);\n // Create and Load devicefingerprint page inside the iframe\n $iframe = $('\n `).last();\n },\n\n stopProbing() {\n this.checkPortXhr && this.checkPortXhr.abort();\n this.probingXhr && this.probingXhr.abort();\n },\n});\n\nexport default Body;\n","import { _, View } from 'okta';\nimport BaseHeader from './BaseHeader';\nimport BaseForm from './BaseForm';\nimport BaseModel from './BaseModel';\nimport BaseFooter from './BaseFooter';\nimport hbs from 'handlebars-inline-precompile';\nimport {getClassNameMapping} from '../../ion/ViewClassNamesFactory';\n\nexport default View.extend({\n\n Header: BaseHeader,\n\n Body: BaseForm,\n\n Footer: BaseFooter,\n\n className() {\n const appState = this.options.appState;\n\n const formName = appState.get('currentFormName');\n const authenticatorKey = appState.get('authenticatorKey');\n const methodType = appState.get('authenticatorMethodType');\n const isPasswordRecoveryFlow = appState.get('isPasswordRecoveryFlow');\n\n const additionalClassNames = getClassNameMapping(\n formName,\n authenticatorKey,\n methodType,\n isPasswordRecoveryFlow,\n );\n\n const classNames = ['siw-main-view'].concat(additionalClassNames);\n return classNames.join(' ');\n },\n\n template: hbs`\n
          \n
          \n
          \n `,\n\n preRender() {\n View.prototype.preRender.apply(this, arguments);\n // Add Views\n if (this.Header !== null) {\n this.add(this.Header, {\n selector: '.siw-main-header',\n options: this.options,\n });\n }\n this.renderForm();\n this.add(this.Footer, {\n selector : '.siw-main-footer',\n options: this.options,\n });\n },\n\n renderForm() {\n let optionUiSchemaConfig;\n\n if (this.form) {\n this.form.remove();\n optionUiSchemaConfig = this.form.model.toJSON({verbose: true});\n }\n\n // Create Model\n const IonModel = this.createModelClass(\n this.options.currentViewState,\n optionUiSchemaConfig,\n this.settings,\n );\n\n const model = new IonModel ({\n formName: this.options.currentViewState.name,\n });\n\n if (!optionUiSchemaConfig) {\n optionUiSchemaConfig = model.toJSON({verbose: true});\n }\n\n this.model = model;\n this.form = this.add(this.Body, {\n selector : '.siw-main-body',\n options: Object.assign(\n {},\n this.options,\n {\n model,\n optionUiSchemaConfig,\n },\n ),\n }).last();\n\n _.each(model.attributes, (value, key) => {\n if (key.match(/sub_schema_local_[^ ]+/)) {\n // in order to render different sub-schema\n this.listenTo(model, `change:${key}`, () => {\n this.renderForm();\n });\n }\n });\n },\n\n createModelClass(currentViewState, optionUiSchemaConfig = {}) {\n return BaseModel.create(currentViewState, optionUiSchemaConfig);\n },\n\n});\n","export { default as BaseHeader } from './BaseHeader';\nexport { default as BaseFooter } from './BaseFooter';\nexport { default as BaseForm } from './BaseForm';\nexport { default as BaseFormWithPolling } from './BaseFormWithPolling';\nexport { default as BaseOktaVerifyChallengeView } from './BaseOktaVerifyChallengeView';\nexport { default as BaseModel } from './BaseModel';\nexport { default as BaseView } from './BaseView';\nexport { addCustomButton, createCustomButtons, createIdpButtons } from './FormInputFactory';\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { loc, _ } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport { AUTHENTICATOR_KEY } from '../../ion/RemediationConstants';\n\nconst { getPasswordComplexityDescriptionForHtmlList } = FactorUtil;\n\nconst getButtonDataSeAttr = function(authenticator) {\n if (authenticator.authenticatorKey) {\n const method = authenticator.value?.methodType ?\n '-' + authenticator.value?.methodType : '';\n return authenticator.authenticatorKey + method;\n }\n return '';\n};\n\n/* eslint complexity: [0, 0], max-statements: [2, 24] */\nconst getAuthenticatorData = function(authenticator, isVerifyAuthenticator) {\n const authenticatorKey = authenticator.authenticatorKey;\n const key = _.isString(authenticatorKey) ? authenticatorKey.toLowerCase() : '';\n let authenticatorData = {};\n switch (key) {\n case AUTHENTICATOR_KEY.EMAIL:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.email.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-email',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PASSWORD:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.password.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-password',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PHONE:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? authenticator.relatesTo?.profile?.phoneNumber\n : loc('oie.phone.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-phone',\n noTranslateClassName: isVerifyAuthenticator ? 'no-translate' : '',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.SECURITY_QUESTION:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.security.question.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-security-question',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.WEBAUTHN:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.webauthn.description', 'login'),\n iconClassName: 'mfa-webauthn',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.OV:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? loc('oie.okta_verify.label', 'login')\n : loc('oie.okta_verify.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-verify',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.GOOGLE_OTP:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.google_authenticator.authenticator.description', 'login'),\n iconClassName: 'mfa-google-auth',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.ON_PREM: {\n const vendorName = authenticator.relatesTo?.displayName ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.on_prem.authenticator.description', 'login', [vendorName]),\n iconClassName: 'mfa-onprem',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.RSA:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.rsa.authenticator.description', 'login'),\n iconClassName: 'mfa-rsa',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.DUO:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.duo.authenticator.description', 'login'),\n iconClassName: 'mfa-duo',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.IDP: {\n const idpName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.idp.authenticator.description', 'login', [idpName]),\n iconClassName: 'mfa-custom-factor',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n case AUTHENTICATOR_KEY.CUSTOM_OTP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.custom_otp.description', 'login'),\n iconClassName: 'mfa-hotp',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.SYMANTEC_VIP: {\n const appName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.symantecVip.authenticator.description', 'login', [appName]),\n iconClassName: 'mfa-symantec',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.YUBIKEY: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.yubikey.authenticator.description', 'login'),\n iconClassName: 'mfa-yubikey',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.CUSTOM_APP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? authenticator?.relatesTo?.displayName\n : loc('oie.custom.app.authenticator.description', 'login', [authenticator.label]),\n noTranslateClassName: isVerifyAuthenticator ? 'no-translate' : '',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n iconClassName: 'mfa-custom-app-logo',\n logoUri : authenticator?.relatesTo?.logoUri || ''\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.SMARTCARD: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? '' \n : loc('oie.smartcard.authenticator.description', 'login'),\n iconClassName: 'mfa-smartcard',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n }\n return authenticatorData;\n};\n\nexport function getAuthenticatorDataForEnroll(authenticator) {\n return getAuthenticatorData(authenticator);\n}\n\nexport function getAuthenticatorDataForVerification(authenticator) {\n return getAuthenticatorData(authenticator, true);\n}\n\nexport function getIconClassNameForBeacon(authenticatorKey) {\n return getAuthenticatorData({ authenticatorKey }).iconClassName;\n}\n\nexport function removeRequirementsFromError(errorJSON) {\n if (errorJSON.errorCauses?.length > 0\n && Array.isArray(errorJSON.errorCauses[0].errorSummary)\n && errorJSON.errorCauses[0].errorSummary.length > 0) {\n // Change from Array to string for all errors.\n errorJSON.errorCauses[0].errorSummary = errorJSON.errorCauses[0].errorSummary[0];\n\n // Overrides for particular error messages.\n const errorKey = errorJSON.errorCauses[0].errorKey?.length > 0 && errorJSON.errorCauses[0].errorKey[0];\n // Remove the requirements string only if this is requirements were not met error.\n if (errorKey === 'password.passwordRequirementsNotMet') {\n errorJSON.errorCauses[0].errorSummary = loc('registration.error.password.passwordRequirementsNotMet', 'login');\n }\n }\n return errorJSON;\n}\n\n/**\n * Get authenticator display name from {@code remediation}.\n *\n * @param {Object} remediation\n */\nexport function getAuthenticatorDisplayName(remediation) {\n return remediation.relatesTo?.value?.displayName;\n}\n\n// Re-export function from FactorUtil\nexport { getPasswordComplexityDescriptionForHtmlList };\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { loc, View, createButton, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport Util from 'util/Util';\nimport {\n FASTPASS_FALLBACK_SPINNER_TIMEOUT,\n IDENTIFIER_FLOW,\n LOOPBACK_RESPONSE_STATUS_CODE,\n OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP, \n OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE,\n REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON,\n} from '../utils/Constants';\n\nexport function appendLoginHint(deviceChallengeUrl, loginHint) {\n if (deviceChallengeUrl && loginHint) {\n deviceChallengeUrl += '&login_hint=' + loginHint;\n }\n\n return deviceChallengeUrl;\n}\n\nexport function doChallenge(view, fromView) {\n const deviceChallenge = view.getDeviceChallengePayload();\n const loginHint = view.options?.settings?.get('identifier');\n const HIDE_CLASS = 'hide';\n switch (deviceChallenge.challengeMethod) {\n case Enums.LOOPBACK_CHALLENGE:\n view.title = loc('deviceTrust.sso.redirectText', 'login');\n view.add(View.extend({\n className: 'loopback-content',\n template: hbs`
          `\n }));\n view.doLoopback(deviceChallenge);\n break;\n case Enums.CUSTOM_URI_CHALLENGE:\n view.title = loc('customUri.title', 'login');\n view.add(View.extend({\n className: 'skinny-content',\n template: hbs`\n

          \n {{i18n code=\"customUri.required.content.prompt\" bundle=\"login\"}}\n

          \n `,\n }));\n view.add(createButton({\n className: 'ul-button button button-wide button-primary',\n title: loc('oktaVerify.open.button', 'login'),\n id: 'launch-ov',\n click: () => {\n view.doCustomURI();\n }\n }));\n view.add(View.extend({\n className: 'skinny-content',\n template: hbs`\n

          \n {{i18n code=\"customUri.required.content.download.title\" bundle=\"login\"}}\n

          \n

          \n \n {{i18n code=\"customUri.required.content.download.linkText\" bundle=\"login\"}}\n \n

          \n `,\n getTemplateData() {\n return {\n downloadOVLink: deviceChallenge.downloadHref\n };\n },\n }));\n view.customURI = appendLoginHint(deviceChallenge.href, loginHint);\n view.doCustomURI();\n break;\n case Enums.UNIVERSAL_LINK_CHALLENGE:\n view.title = loc('universalLink.title', 'login');\n view.add(View.extend({\n className: 'universal-link-content',\n template: hbs`\n
          \n {{i18n code=\"universalLink.content\" bundle=\"login\"}}\n `\n }));\n view.add(createButton({\n className: 'ul-button button button-wide button-primary',\n title: loc('oktaVerify.open.button', 'login'),\n click: () => {\n // only window.location.href can open universal link in iOS/MacOS\n // other methods won't do, ex, AJAX get or form get (Util.redirectWithFormGet)\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, loginHint);\n Util.redirect(deviceChallengeUrl);\n }\n }));\n break;\n case Enums.APP_LINK_CHALLENGE:\n view.title = loc('appLink.title', 'login');\n view.add(View.extend({\n className: 'app-link-content',\n template: hbs`\n
          \n
          {{i18n code=\"appLink.content\" bundle=\"login\"}}
          \n `,\n getTemplateData() {\n return { hideClass: HIDE_CLASS };\n },\n postRender() {\n if (fromView === IDENTIFIER_FLOW) {\n this.$('.spinner').removeClass(HIDE_CLASS);\n setTimeout(_.bind(()=> {\n const data = { label: loc('goback', 'login') };\n this.options.appState.trigger('updateFooterLink', data);\n this.$('.spinner').addClass(HIDE_CLASS);\n this.$('.appLinkContent').removeClass(HIDE_CLASS);\n }, this), FASTPASS_FALLBACK_SPINNER_TIMEOUT);\n } else {\n this.$('.appLinkContent').removeClass(HIDE_CLASS);\n }\n },\n }));\n view.add(createButton({\n className: `${HIDE_CLASS} al-button button button-wide button-primary`,\n title: loc('oktaVerify.open.button', 'login'),\n click: () => {\n // only window.location.href can open app link in Android\n // other methods won't do, ex, AJAX get or form get (Util.redirectWithFormGet)\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, loginHint);\n Util.redirect(deviceChallengeUrl, window, true);\n },\n postRender() {\n if (fromView === IDENTIFIER_FLOW) {\n setTimeout(_.bind(()=> {\n this.$el.removeClass(HIDE_CLASS);\n }, this), FASTPASS_FALLBACK_SPINNER_TIMEOUT);\n } else {\n this.$el.removeClass(HIDE_CLASS);\n }\n }\n }));\n break;\n }\n}\n\nexport function cancelPollingWithParams(appState, pollingCancelAction, cancelReason, statusCode) {\n const actionParams = {};\n actionParams[REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON] = cancelReason;\n actionParams[LOOPBACK_RESPONSE_STATUS_CODE] = statusCode;\n appState.trigger('invokeAction', pollingCancelAction, actionParams);\n}\n\nexport function getBiometricsErrorOptions(error, isMessageObj) {\n let errorSummaryKeys;\n if (isMessageObj) {\n errorSummaryKeys = Object.values(error?.value[0]?.i18n);\n } else {\n errorSummaryKeys = error?.responseJSON?.errorSummaryKeys;\n }\n\n const isBiometricsRequiredMobile = errorSummaryKeys \n && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE);\n const isBiometricsRequiredDesktop = errorSummaryKeys \n && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP);\n let options = [];\n\n if (!isBiometricsRequiredMobile && !isBiometricsRequiredDesktop) {\n return options;\n }\n\n const bulletPoints = [\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point3', 'login')\n ];\n\n // Add an additional bullet point for desktop devices\n if (isBiometricsRequiredDesktop) {\n bulletPoints.push(\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point4', 'login')\n );\n }\n\n options = {\n type: 'error',\n className: 'okta-verify-uv-callout-content',\n title: loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.title', 'login'),\n subtitle: loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.description', 'login'),\n bullets: bulletPoints,\n };\n\n return options;\n}\n","export const SHOW_RESEND_TIMEOUT = 30000;\nexport const WARNING_TIMEOUT = 30000;\nexport const CHALLENGE_TIMEOUT = 300000;\nexport const MS_PER_SEC = 1000;\nexport const UNIVERSAL_LINK_POST_DELAY = 500;\nexport const CANCEL_POLLING_ACTION = 'authenticatorChallenge-cancel';\nexport const AUTHENTICATOR_CANCEL_ACTION = 'currentAuthenticator-cancel';\nexport const WIDGET_FOOTER_CLASS = 'siw-main-footer';\nexport const FASTPASS_FALLBACK_SPINNER_TIMEOUT = 4000;\nexport const IDENTIFIER_FLOW = 'IDENTIFIER';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.desktop';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.mobile';\nexport const AUTHENTICATOR_ALLOWED_FOR_OPTIONS = {\n ANY: 'any',\n SSO: 'sso',\n RECOVERY: 'recovery',\n};\nexport const REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON = 'reason';\nexport const LOOPBACK_RESPONSE_STATUS_CODE = 'statusCode';\nexport const AUTHENTICATION_CANCEL_REASONS = {\n LOOPBACK_FAILURE: 'OV_UNREACHABLE_BY_LOOPBACK',\n OV_ERROR: 'OV_RETURNED_ERROR',\n USER_CANCELED: 'USER_CANCELED',\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// TODO: Use AuthJS for device fingerprinting: OKTA-418160\nimport { $ } from 'okta';\n\nfunction getUserAgent() {\n return navigator.userAgent;\n}\n\nfunction isWindowsPhone(userAgent) {\n return userAgent.match(/windows phone|iemobile|wpdesktop/i);\n}\n\nexport default {\n isMessageFromCorrectSource($iframe, event) {\n return event.source === $iframe[0].contentWindow;\n },\n\n // NOTE: This utility is similar to the DeviceFingerprint.js file used for V1 authentication flows.\n generateDeviceFingerprint(fingerprintData) {\n return new Promise((resolve, reject) => {\n const userAgent = getUserAgent();\n if (!userAgent) {\n return reject('user agent is not defined');\n } else if (isWindowsPhone(userAgent)) {\n return reject('device fingerprint is not supported on Windows phones');\n }\n\n let $iframe;\n let iFrameTimeout;\n const self = this; // Needed for mocking\n\n function removeIframe() {\n $iframe.off();\n $iframe.remove();\n window.removeEventListener('message', onMessageReceivedFromOkta, false);\n }\n\n function handleError(reason) {\n removeIframe();\n reject(reason);\n }\n\n function onMessageReceivedFromOkta(event) {\n if (!self.isMessageFromCorrectSource($iframe, event)) {\n return;\n }\n // deviceFingerprint service is available, clear timeout\n clearTimeout(iFrameTimeout);\n if (!event || !event.data || event.origin !== fingerprintData.oktaDomainUrl) {\n handleError('no data');\n return;\n }\n try {\n const message = JSON.parse(event.data);\n\n if (message && message.type === 'FingerprintServiceReady') {\n sendMessageToOkta({\n type: 'GetFingerprint',\n });\n } else if (message && message.type === 'FingerprintAvailable') {\n removeIframe();\n resolve(message.fingerprint);\n } else {\n handleError('no data');\n }\n } catch (error) {\n //Ignore any errors since we could get other messages too\n }\n }\n\n function sendMessageToOkta(message) {\n const win = $iframe[0].contentWindow;\n\n if (win) {\n win.postMessage(JSON.stringify(message), fingerprintData.oktaDomainUrl);\n }\n }\n\n // Attach listener\n window.addEventListener('message', onMessageReceivedFromOkta, false);\n // Create and Load devicefingerprint page inside the iframe\n $iframe = $('`).last();\n try {\n Duo.init({\n host: contextualData.host,\n sig_request: contextualData.signedToken, // eslint-disable-line camelcase\n iframe: duoFrame.el,\n post_action: (signedData) => { // eslint-disable-line camelcase\n this.model.set('credentials.signatureData', signedData);\n this.saveForm(this.model);\n },\n });\n } catch (e) {\n duoFrame.remove();\n this.add(createCallout({\n type: 'error',\n subtitle: loc('oie.duo.iFrameError', 'login'),\n }), '.o-form-error-container');\n console.error(e); // eslint-disable-line no-console\n }\n },\n\n getContextualData() {\n // to be overriden\n }\n});\n","import { loc } from 'okta';\nimport BaseDuoAuthenticatorForm from './BaseDuoAuthenticatorForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseDuoAuthenticatorForm.extend({\n title() {\n return loc('oie.duo.verify.title', 'login');\n },\n\n getContextualData() {\n return this.options.appState.get('currentAuthenticatorEnrollment').contextualData;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport BaseDuoAuthenticatorForm from './BaseDuoAuthenticatorForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseDuoAuthenticatorForm.extend({\n title() {\n return loc('oie.duo.enroll.title', 'login');\n },\n\n getContextualData() {\n return this.options.appState.get('currentAuthenticator').contextualData;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import hbs from 'handlebars-inline-precompile';\nimport { View } from 'okta';\n\n// Courage doesn't support HTML, hence creating a subtitle here.\nconst CheckYourEmailTitle = View.extend({\n className: 'okta-form-subtitle',\n attributes: {\n 'data-se': 'o-form-explain',\n },\n template: hbs`\n {{#if email}}\n {{i18n \n code=\"oie.email.verify.alternate.magicLinkToEmailAddress\" \n bundle=\"login\" \n arguments=\"email\" \n $1=\"$1\"\n }}\n {{else}}\n {{i18n \n code=\"oie.email.verify.alternate.magicLinkToYourEmail\" \n bundle=\"login\"\n }}\n {{/if}}\n \n {{#if useEmailMagicLinkValue}}\n {{i18n \n code=\"oie.email.verify.alternate.instructions\" \n bundle=\"login\" \n }}\n {{else}}\n {{i18n \n code=\"oie.email.verify.alternate.verificationCode.instructions\" \n bundle=\"login\" \n }}\n {{/if}}\n `,\n \n getTemplateData() {\n return this.options;\n },\n});\n \nconst EnterCodeLink = View.extend({\n template: hbs`\n \n `,\n});\n\nexport function getCheckYourEmailTitle() {\n return CheckYourEmailTitle;\n}\n\nexport function getEnterCodeLink() {\n return EnterCodeLink;\n}","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport email from '../shared/email';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BaseResendView from '../shared/BaseResendView';\nimport BaseFormWithPolling from '../../internals/BaseFormWithPolling';\n\nconst ResendView = BaseResendView.extend(\n {\n className: 'hide resend-email-view',\n events: {\n 'click a.resend-link' : 'handelResendLink'\n },\n\n initialize() {\n this.add(createCallout({\n content: `${loc('email.code.not.received', 'login')}\n ${loc('email.button.resend', 'login')}`,\n type: 'warning',\n }));\n },\n\n handelResendLink() {\n this.options.appState.trigger('invokeAction', this.options.resendEmailAction);\n // Hide warning, but reinitiate to show warning again after some threshold of polling\n if (!this.$el.hasClass('hide')) {\n this.$el.addClass('hide');\n }\n this.showCalloutAfterTimeout();\n },\n },\n);\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n\n this.add(ResendView, {\n selector: '.o-form-error-container',\n options: {\n resendEmailAction: this.resendEmailAction,\n }\n });\n this.startPolling();\n },\n\n saveForm() {\n BaseForm.prototype.saveForm.apply(this, arguments);\n this.stopPolling();\n },\n\n remove() {\n BaseForm.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n\n triggerAfterError(model, error) {\n BaseForm.prototype.triggerAfterError.apply(this, arguments);\n const isFormPolling = !!this.polling;\n this.stopPolling();\n\n if (error.responseJSON?.errorSummaryKeys?.includes('idx.session.expired')) {\n // Do NOT resume polling since session is invalid and polling is already stopped\n return;\n }\n\n if (this.isRateLimitError(error)) {\n // When polling encounter rate limit error, wait 60 sec for rate limit bucket to reset\n // before polling again & hide error message\n if (isFormPolling) {\n setTimeout(() => {\n model.trigger('clearFormError');\n }, 0);\n }\n this.startPolling(60000);\n } else {\n this.startPolling(this.options.appState.get('dynamicRefreshInterval'));\n }\n },\n\n isRateLimitError(error) {\n return (error.responseJSON?.errorSummaryKeys?.includes('tooManyRequests') // IDX API error\n || (error.responseJSON?.errorCode === 'E0000047') && !error.responseJSON?.errorIntent); // Standard API error\n },\n },\n email,\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorView.prototype.Body;\n\nconst SubtitleView = View.extend({\n template: hbs`\n
          \n {{#if email}}\n {{i18n\n code=\"oie.email.verify.subtitle.text.with.email\"\n bundle=\"login\"\n arguments=\"email\"\n $1=\"$1\"\n }}\n {{else}}\n {{i18n\n code=\"oie.email.verify.subtitle.text.without.email\"\n bundle=\"login\"\n }}\n {{/if}}\n
          \n `,\n\n getTemplateData() {\n const email = this.options.appState.get('currentAuthenticatorEnrollment')?.profile?.email;\n return {\n email,\n };\n },\n});\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n {\n title() {\n return loc('oie.email.challenge.mfa.title', 'login');\n },\n\n save() {\n return loc('oie.email.verify.primaryButton', 'login');\n },\n\n postRender() {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n this.add(SubtitleView, {\n prepend: true,\n selector: '.o-form-info-container',\n });\n },\n\n getUISchema() {\n // Prevent from displaying radio buttons on the UI\n const uiSchemas = BaseAuthenticatorEmailForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n },\n);\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorEmailView from './BaseAuthenticatorEmailView';\nimport { getCheckYourEmailTitle, getEnterCodeLink } from './AuthenticatorEmailViewUtil';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorEmailView.prototype.Body;\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n Object.assign({\n noButtonBar: true,\n resendEmailAction: 'currentAuthenticatorEnrollment-resend',\n\n events: {\n 'click .enter-auth-code-instead-link': 'showAuthCodeEntry',\n },\n\n initialize() {\n BaseAuthenticatorEmailForm.prototype.initialize.apply(this, arguments);\n\n const { email } =\n this.options.currentViewState.relatesTo?.value?.profile || {};\n\n const useEmailMagicLinkValue = this.isUseEmailMagicLink();\n\n if (useEmailMagicLinkValue) {\n this.add(getEnterCodeLink(), {\n prepend: true,\n selector: '.o-form-error-container',\n });\n } \n\n this.add(getCheckYourEmailTitle(), {\n prepend: true,\n selector: '.o-form-error-container',\n options: { email, useEmailMagicLinkValue },\n });\n },\n\n postRender() {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n if (this.isUseEmailMagicLink()) {\n this.showCodeEntryField(false);\n } else {\n this.noButtonBar = false;\n }\n },\n\n isUseEmailMagicLink() {\n const useEmailMagicLink = this.options.appState.get('currentAuthenticatorEnrollment')?.\n contextualData?.useEmailMagicLink;\n return useEmailMagicLink !== undefined ? useEmailMagicLink : true;\n },\n\n showAuthCodeEntry() {\n this.noButtonBar = false;\n this.render();\n\n this.showCodeEntryField(true);\n this.removeEnterAuthCodeInsteadLink();\n },\n\n showCodeEntryField(show = true) {\n const $textField = this.$el.find('.o-form-fieldset-container');\n $textField.toggle(show);\n },\n\n removeEnterAuthCodeInsteadLink() {\n this.$el.find('.enter-auth-code-instead-link').remove();\n },\n })\n);\n\nexport default BaseAuthenticatorEmailView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport BaseAuthenticatorEmailView from './BaseAuthenticatorEmailView';\nimport { getCheckYourEmailTitle, getEnterCodeLink } from './AuthenticatorEmailViewUtil';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorEmailView.prototype.Body;\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n Object.assign({\n resendEmailAction: 'currentAuthenticator-resend',\n\n initialize() {\n BaseAuthenticatorEmailForm.prototype.initialize.apply(this, arguments);\n\n const email = this.options.appState.get('user')?.identifier || {};\n\n const useEmailMagicLinkValue = this.isUseEmailMagicLink();\n\n if (useEmailMagicLinkValue !== undefined) {\n \n this.noButtonBar = true;\n this.events['click .enter-auth-code-instead-link'] = 'showAuthCodeEntry';\n\n if (useEmailMagicLinkValue) {\n this.add(getEnterCodeLink(), {\n prepend: true,\n selector: '.o-form-error-container',\n });\n } \n \n this.add(getCheckYourEmailTitle(), {\n prepend: true,\n selector: '.o-form-error-container',\n options: { email, useEmailMagicLinkValue },\n });\n } else {\n this.subtitle = loc('oie.email.enroll.subtitle', 'login');\n }\n },\n\n postRender() {\n if (this.isUseEmailMagicLink() !== undefined) {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n if (this.isUseEmailMagicLink()) {\n this.showCodeEntryField(false);\n } else {\n this.noButtonBar = false;\n }\n }\n },\n\n isUseEmailMagicLink() {\n return this.options.appState.get('currentAuthenticator')?.\n contextualData?.useEmailMagicLink;\n },\n\n showAuthCodeEntry() {\n this.noButtonBar = false;\n this.render();\n\n this.showCodeEntryField(true);\n this.removeEnterAuthCodeInsteadLink();\n },\n\n showCodeEntryField(show = true) {\n const $textField = this.$el.find('.o-form-fieldset-container');\n $textField.toggle(show);\n },\n\n removeEnterAuthCodeInsteadLink() {\n this.$el.find('.enter-auth-code-instead-link').remove();\n },\n })\n);\n\nexport default BaseAuthenticatorEmailView.extend({\n Body,\n});\n","const I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS = {\n /**\n * Mapping fields in the enroll profile remediation form to their i18n label for localization.\n */\n 'enroll-profile.userProfile.lastName': 'oie.user.profile.lastname',\n 'enroll-profile.userProfile.firstName': 'oie.user.profile.firstname',\n 'enroll-profile.userProfile.email': 'oie.user.profile.primary.email',\n 'enroll-profile.userProfile.secondEmail': 'oie.user.profile.secondary.email',\n 'enroll-profile.userProfile.middleName': 'oie.user.profile.middleName',\n 'enroll-profile.userProfile.honorificPrefix': 'oie.user.profile.honorificPrefix',\n 'enroll-profile.userProfile.honorificSuffix': 'oie.user.profile.honorificSuffix',\n 'enroll-profile.userProfile.title': 'oie.user.profile.title',\n 'enroll-profile.userProfile.displayName': 'oie.user.profile.displayName',\n 'enroll-profile.userProfile.nickName': 'oie.user.profile.nickName',\n 'enroll-profile.userProfile.profileUrl': 'oie.user.profile.profileUrl',\n 'enroll-profile.userProfile.mobilePhone': 'oie.user.profile.mobilePhone',\n 'enroll-profile.userProfile.primaryPhone': 'oie.user.profile.primaryPhone',\n 'enroll-profile.userProfile.streetAddress': 'oie.user.profile.streetAddress',\n 'enroll-profile.userProfile.city': 'oie.user.profile.city',\n 'enroll-profile.userProfile.state': 'oie.user.profile.state',\n 'enroll-profile.userProfile.zipCode': 'oie.user.profile.zipCode',\n 'enroll-profile.userProfile.postalCode': 'oie.user.profile.postalCode',\n 'enroll-profile.userProfile.countryCode': 'oie.user.profile.countryCode',\n 'enroll-profile.userProfile.postalAddress': 'oie.user.profile.postalAddress',\n 'enroll-profile.userProfile.preferredLanguage': 'oie.user.profile.preferredLanguage',\n 'enroll-profile.userProfile.locale': 'oie.user.profile.locale',\n 'enroll-profile.userProfile.timezone': 'oie.user.profile.timezone',\n 'enroll-profile.userProfile.userType': 'oie.user.profile.userType',\n 'enroll-profile.userProfile.employeeNumber': 'oie.user.profile.employeeNumber',\n 'enroll-profile.userProfile.costCenter': 'oie.user.profile.costCenter',\n 'enroll-profile.userProfile.organization': 'oie.user.profile.organization',\n 'enroll-profile.userProfile.division': 'oie.user.profile.division',\n 'enroll-profile.userProfile.department': 'oie.user.profile.department',\n 'enroll-profile.userProfile.managerId': 'oie.user.profile.managerId',\n 'enroll-profile.userProfile.manager': 'oie.user.profile.manager',\n 'enroll-profile.credentials.passcode': 'oie.password.label',\n};\n\nexport {\n I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS,\n};\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'google-authenticator-challenge',\n\n title() {\n return loc('oie.verify.google_authenticator.otp.title', 'login');\n },\n\n subtitle() {\n return loc('oie.verify.google_authenticator.otp.description', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { addCustomButton, BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport EnrollGoogleAuthenticatorBarcodeView from './EnrollGoogleAuthenticatorBarcodeView';\nimport EnrollAuthenticatorManualSetupView from './EnrollAuthenticatorManualSetupView';\n\nconst VIEW_TO_DISPLAY = 'viewToDisplay';\nconst viewToDisplayState = {\n BARCODE: 'barcode',\n MANUAL: 'manual',\n ENTER_CODE: 'enterCode',\n};\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.enroll.google_authenticator.setup.title', 'login');\n },\n\n noButtonBar: true,\n\n className: 'oie-enroll-google-authenticator',\n\n enterCodeSubtitle: View.extend({\n template: hbs`\n
          \n {{i18n code=\"oie.enroll.google_authenticator.enterCode.title\" bundle=\"login\"}}\n
          \n `,\n }),\n\n getUISchema() {\n const schema = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n const nextButton = addCustomButton({\n className: 'google-authenticator-next',\n title: loc('oform.next', 'login'),\n attributes: {\n style: 'display: block',\n },\n click: () => {\n this.model.set(VIEW_TO_DISPLAY, viewToDisplayState.ENTER_CODE);\n }\n });\n\n const verifyButton = addCustomButton({\n className: 'google-authenticator-verify',\n title: loc('oform.verify', 'login'),\n click: () => {\n this.$el.submit();\n }\n });\n\n schema[0].showWhen = {\n viewToDisplay: viewToDisplayState.ENTER_CODE,\n };\n\n // Add Enter Code Subtitle\n schema.unshift({\n View: this.enterCodeSubtitle,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.ENTER_CODE,\n }\n });\n\n schema.push(\n {\n View: EnrollGoogleAuthenticatorBarcodeView,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.BARCODE,\n }\n }, {\n View: EnrollAuthenticatorManualSetupView,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.MANUAL,\n }\n }, {\n label: false,\n className: 'shared-secret',\n type: 'text',\n placeholder: this.options.appState.get('currentAuthenticator').contextualData.sharedSecret,\n disabled: true,\n showWhen: {\n viewToDisplay: viewToDisplayState.MANUAL,\n }\n },\n {\n View: nextButton,\n showWhen: {\n viewToDisplay: (val) => val === viewToDisplayState.BARCODE || val === viewToDisplayState.MANUAL,\n }\n },\n {\n View: verifyButton,\n showWhen: {\n viewToDisplay: (val) => val === viewToDisplayState.ENTER_CODE,\n }\n },\n );\n return schema;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n viewToDisplay: {\n value: 'barcode',\n type: 'string',\n required: true,\n values: [viewToDisplayState.BARCODE, viewToDisplayState.MANUAL, viewToDisplayState.ENTER_CODE],\n }\n },\n ModelClass.prototype.local,\n );\n return ModelClass.extend({\n local,\n });\n },\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'oie-enroll-google-authenticator-manual-setup',\n template: hbs`\n
          \n {{i18n code=\"oie.enroll.google_authenticator.cannotScanBarcode.title\" bundle=\"login\"}}\n
          \n

          \n {{i18n code=\"oie.enroll.google_authenticator.manualSetupInstructions\" bundle=\"login\"}}\n

          \n `,\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'oie-enroll-google-authenticator-barcode',\n template: hbs`\n {{#if href}}\n
          \n {{i18n code=\"oie.enroll.google_authenticator.scanBarcode.title\" bundle=\"login\"}}\n
          \n
          \n

          \n {{i18n code=\"oie.enroll.google_authenticator.scanBarcode.description\" bundle=\"login\"}}\n

          \n \n
          \n {{/if}}\n `,\n\n getTemplateData() {\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n return { href: contextualData.qrcode?.href };\n },\n\n events: {\n 'click .cannot-scan-link': function(e) {\n e.preventDefault();\n this.options.model.set('viewToDisplay', 'manual');\n }\n },\n});\n","import { loc } from 'okta';\nimport { BaseIdPAuthenticatorBody, BaseIdpAuthenticatorView} from './BaseIdpAuthenticator';\n\nconst Body = BaseIdPAuthenticatorBody.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.enroll.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.enroll.description', 'login', [displayName]);\n },\n\n save() {\n return loc('mfa.enroll', 'login');\n },\n\n});\n\nexport default BaseIdpAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport { BaseIdPAuthenticatorBody, BaseIdpAuthenticatorView} from './BaseIdpAuthenticator';\n\nconst Body = BaseIdPAuthenticatorBody.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.challenge.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.challenge.description', 'login', [displayName]);\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n});\n\nexport default BaseIdpAuthenticatorView.extend({\n Body\n});\n","import { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from 'v2/view-builder/components/BaseAuthenticatorView';\n\nexport const BaseIdPAuthenticatorBody = BaseForm.extend({\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.model.set('useRedirect', true);\n this.add('
          ');\n }\n});\n\nexport const BaseIdpAuthenticatorView = BaseAuthenticatorView.extend({\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n // get the error messages\n const messages = this.options.appState.get('messages') || {};\n // In case of failure, don't auto-redirect which will result in infinite redirects.\n // so catch the error and render to the user.\n if (this.settings.get('features.skipIdpFactorVerificationBtn') && !Array.isArray(messages.value)) {\n this.$('.o-form-button-bar').hide();\n this.$('.okta-waiting-spinner').show();\n this.form.trigger('save', this.model);\n } else {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n }\n }\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ON_PREM_TOKEN_CHANGE_KEY = 'errors.E0000113';\n\nconst Body = BaseForm.extend({\n\n className: 'on-prem-authenticator-verify',\n\n modelEvents: {\n 'error': '_checkTokenChange'\n },\n\n title() {\n const vendorName =\n this.options.appState.getAuthenticatorDisplayName() ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n return loc('oie.on_prem.verify.title', 'login', [vendorName]);\n },\n\n _checkTokenChange(model, convertedErrors) {\n const errorSummaryKeys = convertedErrors?.responseJSON?.errorSummaryKeys;\n if (errorSummaryKeys && errorSummaryKeys.includes(ON_PREM_TOKEN_CHANGE_KEY)) {\n // this means we are in change pin, so we should clear out answer input\n this.model.set('credentials.passcode', '');\n this.render();\n }\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ON_PREM_TOKEN_CHANGE_KEY = 'errors.E0000113';\n\nconst Body = BaseForm.extend({\n\n className: 'on-prem-authenticator-enroll',\n\n modelEvents: {\n 'error': '_checkTokenChange'\n },\n\n title() {\n const vendorName =\n this.options.appState.getAuthenticatorDisplayName() ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n return loc('oie.on_prem.enroll.title', 'login', [vendorName]);\n },\n\n _checkTokenChange(model, convertedErrors) {\n const errorSummaryKeys = convertedErrors?.responseJSON?.errorSummaryKeys;\n if (errorSummaryKeys && errorSummaryKeys.includes(ON_PREM_TOKEN_CHANGE_KEY)) {\n // this means we are in change pin, so we should clear out answer input\n this.model.set('credentials.passcode', '');\n this.render();\n }\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { _, createCallout } from 'okta';\nimport { BaseOktaVerifyChallengeView } from '../../internals';\nimport { getBiometricsErrorOptions } from '../../utils/ChallengeViewUtil';\n\nconst Body = BaseOktaVerifyChallengeView.extend({\n getDeviceChallengePayload() {\n return this.options.currentViewState.relatesTo.value.contextualData.challenge.value;\n },\n\n showCustomFormErrorCallout(error) {\n const options = getBiometricsErrorOptions(error, false);\n \n // If not biometrics error, just show the returned error message\n if (_.isEmpty(options)) {\n return false;\n }\n\n this.showMessages(createCallout(options));\n return true;\n },\n});\n\nexport default Body;\n","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst OV_NMC_FORCE_UPGRAGE_SERVER_KEY = 'oie.authenticator.app.method.push.force.upgrade.number_challenge';\nconst OV_UV_ENABLE_BIOMETRIC_SERVER_KEY = 'oie.authenticator.app.method.push.verify.enable.biometrics';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'okta-verify-resend-push',\n\n title() {\n return loc('oie.okta_verify.push.title', 'login');\n },\n\n save() {\n return loc('oie.okta_verify.push.resend', 'login');\n },\n\n showMessages() {\n let options = {};\n if (this.options.appState.containsMessageWithI18nKey(OV_NMC_FORCE_UPGRAGE_SERVER_KEY)) {\n // add a title for OV force upgrade\n options.title = loc('oie.numberchallenge.force.upgrade.title', 'login');\n } else if (this.options.appState.containsMessageWithI18nKey(OV_UV_ENABLE_BIOMETRIC_SERVER_KEY)) {\n // add a title for OV enable biometrics message during verification\n options.content = null;\n options.className = 'okta-verify-uv-callout-content';\n options.title = loc('oie.authenticator.app.method.push.verify.enable.biometrics.title', 'login');\n options.subtitle = loc('oie.authenticator.app.method.push.verify.enable.biometrics.description', 'login');\n options.type = 'error';\n options.bullets = [\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point3', 'login')\n ];\n options = createCallout(options);\n }\n BaseForm.prototype.showMessages.call(this, options);\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { BaseForm } from '../../internals';\nimport { loc, createCallout, _ } from 'okta';\nimport { getBiometricsErrorOptions } from '../../utils/ChallengeViewUtil';\n\n// for EA,\n// redirect is needed for Apple SSO Extension to intercept the request, because\n// - XHR request is not interceptable\n// - form post is interceptable, but some app (Outlook) closes the app after\n// We may have a different approach/UX for GA\nconst Body = BaseForm.extend({\n noButtonBar: true,\n\n className: 'ion-form device-challenge-poll',\n\n title() {\n return loc('deviceTrust.sso.redirectText', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n\n this.listenTo(this.model, 'error', () => {\n this.$('.spinner').hide();\n });\n this.add('
          ');\n\n const isGetMethod = this.options.currentViewState?.method?.toLowerCase() === 'get';\n this.model.set('useRedirect', isGetMethod);\n this.trigger('save', this.model);\n },\n\n showCustomFormErrorCallout(error) {\n const options = getBiometricsErrorOptions(error, false);\n \n // If not biometrics error, just show the returned error message\n if (_.isEmpty(options)) {\n return false;\n }\n\n this.showMessages(createCallout(options));\n return true;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst OV_UV_ENABLE_BIOMETRIC_SERVER_KEY = 'oie.authenticator.oktaverify.method.totp.verify.enable.biometrics';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'okta-verify-totp-challenge',\n\n title() {\n return loc('oie.okta_verify.totp.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n showCustomFormErrorCallout(error) {\n const errorSummaryKeys = error?.responseJSON?.errorSummaryKeys;\n let options;\n if (errorSummaryKeys && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRIC_SERVER_KEY)) {\n options = {\n type: 'error',\n className: 'okta-verify-uv-callout-content',\n title: loc('oie.authenticator.app.method.push.verify.enable.biometrics.title', 'login'),\n subtitle: loc('oie.authenticator.app.method.push.verify.enable.biometrics.description', 'login'),\n bullets: [\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point3', 'login')\n ],\n };\n this.showMessages(createCallout(options));\n return true;\n }\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { Body as ChallengePushViewBody } from '../shared/ChallengePushView';\nimport ChallengeOktaVerifyFastPassView from './ChallengeOktaVerifyFastPassView';\nimport NumberChallengePushView from './NumberChallengePushView';\nimport { AUTHENTICATOR_METHODS } from '../../../ion/RemediationConstants';\n\nexport default BaseAuthenticatorView.extend({\n initialize() {\n BaseAuthenticatorView.prototype.initialize.apply(this, arguments);\n const currentAuthenticator = this.options?.appState?.get('currentAuthenticator');\n const selectedMethod = currentAuthenticator?.methods[0];\n if (selectedMethod?.type === AUTHENTICATOR_METHODS.PUSH &&\n currentAuthenticator?.contextualData?.correctAnswer) {\n this.Body = NumberChallengePushView;\n } else if (selectedMethod?.type === AUTHENTICATOR_METHODS.PUSH) {\n this.Body = ChallengePushViewBody;\n } else {\n this.Body = ChallengeOktaVerifyFastPassView;\n }\n },\n});\n","import { View, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n template: hbs`\n {{#if href}}\n
            \n
          1. {{i18n code=\"oie.enroll.okta_verify.qrcode.step1\" bundle=\"login\"}}
          2. \n
          3. {{i18n code=\"oie.enroll.okta_verify.qrcode.step2\" bundle=\"login\"}}
          4. \n
          5. {{i18n code=\"oie.enroll.okta_verify.qrcode.step3\" bundle=\"login\"}}
          6. \n
          \n
          \n \"{{i18n\n
          \n {{/if}}\n {{#if email}}\n
            \n
          • {{{i18n code=\"oie.enroll.okta_verify.email.info\" bundle=\"login\" arguments=\"email\"}}}
          • \n
          • \n
          \n {{/if}}\n {{#if phoneNumber}}\n
            \n
          • {{{i18n code=\"oie.enroll.okta_verify.sms.info\" bundle=\"login\" arguments=\"phoneNumber\"}}}
          • \n
          • \n
          \n {{/if}}\n `,\n getTemplateData() {\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n return {\n href: contextualData.qrcode?.href,\n email: _.escape(contextualData?.email),\n phoneNumber: _.escape(contextualData?.phoneNumber),\n };\n }\n});\n","import { loc } from 'okta';\nimport { BaseFormWithPolling } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport polling from '../shared/polling';\nimport OVResendView from './OVResendView';\nimport SwitchEnrollChannelLinkView from './SwitchEnrollChannelLinkView';\nimport EnrollChannelPollDescriptionView from './EnrollChannelPollDescriptionView';\n\nconst OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_IOS =\n 'oie.authenticator.app.non_fips_compliant_enrollment_device_incompatible';\nconst OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_NON_IOS =\n 'oie.authenticator.app.non_fips_compliant_enrollment_app_update_required';\nconst OV_QR_ENROLL_ENABLE_BIOMETRICS_KEY = 'oie.authenticator.app.method.push.enroll.enable.biometrics';\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n title() {\n const selectedChannel = this.options.appState.get('currentAuthenticator').contextualData.selectedChannel;\n let title;\n switch (selectedChannel) {\n case 'email':\n title = loc('oie.enroll.okta_verify.setup.email.title', 'login');\n break;\n case 'sms':\n title = loc('oie.enroll.okta_verify.setup.sms.title', 'login');\n break;\n default:\n title = loc('oie.enroll.okta_verify.setup.title', 'login');\n }\n return title;\n },\n className: 'oie-enroll-ov-poll',\n noButtonBar: true,\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n this.listenTo(this.model, 'error', this.stopPolling);\n this.startPolling();\n },\n showMessages() {\n // override showMessages to display custom callout\n const calloutOptions = {};\n if (this.options.appState.containsMessageWithI18nKey(OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_IOS) ||\n this.options.appState.containsMessageWithI18nKey(OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_NON_IOS)) {\n // add a title for ov force upgrade\n calloutOptions.title = loc('oie.okta_verify.enroll.force.upgrade.title', 'login');\n } else if (this.options.appState.containsMessageWithI18nKey(OV_QR_ENROLL_ENABLE_BIOMETRICS_KEY)) {\n // add a title for OV enable biometrics message during enrollment\n calloutOptions.title = loc('oie.authenticator.app.method.push.enroll.enable.biometrics.title', 'login');\n }\n BaseFormWithPolling.prototype.showMessages.call(this, calloutOptions);\n },\n getUISchema() {\n const schema = [];\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n const selectedChannel = contextualData.selectedChannel;\n schema.push({\n View: EnrollChannelPollDescriptionView,\n });\n schema.push({\n View: SwitchEnrollChannelLinkView,\n options: {\n selectedChannel\n },\n selector: selectedChannel === 'qrcode' ? '.qrcode-container' : '.switch-channel-content',\n });\n if (['email', 'sms'].includes(selectedChannel)) {\n schema.push({\n View: OVResendView,\n selector: '.o-form-error-container',\n });\n }\n return schema;\n },\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n },\n\n polling,\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, _, Model } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CountryUtil from '../../../../util/CountryUtil';\nimport SwitchEnrollChannelLinkView from './SwitchEnrollChannelLinkView';\n\nconst Body = BaseForm.extend({\n className: 'oie-enroll-ov-data',\n title() {\n return this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'email' ?\n loc('oie.enroll.okta_verify.enroll.channel.email.title', 'login'):\n loc('oie.enroll.okta_verify.enroll.channel.sms.title', 'login');\n },\n\n save() {\n return loc('oie.enroll.okta_verify.setupLink', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const phoneNumberUISchema = _.find(uiSchemas, ({ name }) => name === 'phoneNumber');\n const phoneNumberUISchemaIndex = _.findIndex(uiSchemas, ({ name }) => name === 'phoneNumber');\n\n const countryUISchema = {\n 'label-top': true,\n label: loc('country.label', 'login'),\n type: 'select',\n options: CountryUtil.getCountries(),\n name: 'country',\n wide: true,\n };\n\n // Create an input group - serves as a display wrapper\n const phoneNumberWithCodeUISchema = {\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n type: 'group',\n modelType: 'string',\n 'label-top': true,\n name: 'phoneCode',\n input: [\n {\n type: 'label',\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: `+${this.model.get('phoneCode')}`,\n className: 'country-code-label no-translate',\n },\n Object.assign({}, phoneNumberUISchema),\n ],\n };\n\n if (phoneNumberUISchemaIndex !== -1) {\n // Replace phoneNumberUISchema and add countryUISchema before phone.\n uiSchemas.splice(phoneNumberUISchemaIndex, 1, countryUISchema, phoneNumberWithCodeUISchema);\n }\n\n const description = {\n View: this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'email' ?\n loc('oie.enroll.okta_verify.channel.email.description', 'login'):\n loc('oie.enroll.okta_verify.channel.sms.description', 'login'),\n selector: '.o-form-fieldset-container',\n };\n\n uiSchemas.push(description);\n return uiSchemas;\n },\n\n handlePhoneCodeChange() {\n const countryCodeField = this.el.querySelector('.country-code-label');\n countryCodeField.innerText = `+${this.model.get('phoneCode')}`;\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n if (this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'sms') {\n this.listenTo(this.model, 'change:phoneCode', this.handlePhoneCodeChange.bind(this));\n }\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n if (this.options.appState.get('currentAuthenticator').contextualData.selectedChannel !== 'sms') {\n return ModelClass;\n }\n const local = Object.assign(\n {\n country: {\n // Set default country to \"US\"\n 'value': 'US',\n 'type': 'string',\n },\n },\n ModelClass.prototype.local,\n );\n const derived = Object.assign(\n {\n phoneCode: {\n deps: [ 'country'],\n fn: function(country) {\n return CountryUtil.getCallingCodeForCountry(country);\n },\n },\n },\n ModelClass.prototype.derived,\n );\n return ModelClass.extend({\n local,\n derived,\n toJSON: function() {\n const modelJSON = Model.prototype.toJSON.call(this, arguments);\n const phoneCode = this.get('phoneCode');\n\n // Add country code..\n let formattedPhoneNumber = `+${phoneCode}${modelJSON.phoneNumber}`;\n\n // Override phone with formatted number..\n modelJSON.phoneNumber = formattedPhoneNumber;\n return modelJSON;\n },\n });\n },\n postRender() {\n this.add(SwitchEnrollChannelLinkView, 'form');\n },\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nconst NumberChallengePhoneView = View.extend({\n className: 'number-challenge-section',\n template: hbs`\n

          \n {{i18n\n code=\"oie.numberchallenge.instruction\"\n bundle=\"login\"\n arguments=\"correctAnswer\"\n $1=\"$1\"}}\n

          \n
          \n
          \n
          \n {{correctAnswer}}\n
          \n
          \n
          \n
          \n `,\n getTemplateData() {\n const correctAnswer = this.options.appState.get('currentAuthenticator')?.contextualData?.correctAnswer;\n return {\n correctAnswer\n };\n },\n});\n\n\nexport default NumberChallengePhoneView;\n","import { loc } from 'okta';\nimport { BaseFormWithPolling } from '../../internals';\nimport polling from '../shared/polling';\nimport ResendNumberChallengeView from './ResendNumberChallengeView';\nimport NumberChallengePhoneView from './NumberChallengePhoneView';\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n noButtonBar: true,\n\n className: 'okta-verify-number-challenge',\n\n events: {\n 'click a.resend-number-challenge': 'handleResendNumberChallenge'\n },\n\n handleResendNumberChallenge() {\n this.options.appState.trigger('invokeAction', 'currentAuthenticator-resend');\n // hide the warning\n this.options.appState.trigger('hideNumberChallengeWarning');\n },\n\n title() {\n return loc('oie.okta_verify.push.sent', 'login');\n },\n\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n this.add(NumberChallengePhoneView);\n },\n\n triggerAfterError() {\n BaseFormWithPolling.prototype.triggerAfterError.apply(this, arguments);\n this.stopPolling();\n this.$el.find('.o-form-fieldset-container').empty();\n },\n\n postRender() {\n BaseFormWithPolling.prototype.postRender.apply(this, arguments);\n this.startPoll();\n },\n\n startPoll() {\n this.startPolling();\n this.addWarning();\n },\n\n stopPoll() {\n this.stopPolling();\n },\n\n addWarning() {\n this.add(ResendNumberChallengeView, '.o-form-error-container');\n this.options.appState.trigger('showNumberChallengeWarning');\n },\n\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n },\n\n polling,\n));\n\nexport default Body;\n","import { createCallout } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseResendView from '../shared/BaseResendView';\n\nexport default BaseResendView.extend({\n //only show after certain threshold of polling\n className: 'hide resend-ov-link-view',\n events: {\n 'click a.resend-link' : 'handelResendLink'\n },\n\n initialize() {\n const selectedChannel = this.options.appState.get('currentAuthenticator').contextualData.selectedChannel;\n this.add(createCallout({\n content: selectedChannel === 'email' ?\n hbs `{{{i18n code=\"oie.enroll.okta_verify.email.notReceived\" bundle=\"login\"}}}`:\n hbs `{{{i18n code=\"oie.enroll.okta_verify.sms.notReceived\" bundle=\"login\"}}}`,\n type: 'warning',\n }));\n },\n\n handelResendLink() {\n this.options.appState.trigger('invokeAction', 'currentAuthenticator-resend');\n //hide warning, but reinitiate to show warning again after some threshold of polling\n this.$el.addClass('hide');\n this.showCalloutAfterTimeout();\n },\n});\n","import { _, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { WARNING_TIMEOUT } from '../../utils/Constants';\n\nconst ResendNumberChallengeView = View.extend({\n initialize() {\n this.listenTo(this.options.appState, 'showNumberChallengeWarning', () => {\n this.startWarningTimeout();\n });\n\n this.listenTo(this.options.appState, 'hideNumberChallengeWarning', () => {\n this.clearWarning();\n });\n },\n className: 'resend-number-challenge-warning hide',\n template: hbs`\n
          \n \n

          {{i18n\n code=\"oie.numberchallenge.warning\"\n bundle=\"login\"\n $1=\"$1\"}}\n

          \n
          \n `,\n showWarning() {\n this.$el.removeClass('hide');\n },\n clearWarning() {\n this.$el.addClass('hide');\n clearTimeout(this.warningTimeout);\n this.startWarningTimeout();\n },\n startWarningTimeout() {\n this.warningTimeout = setTimeout(_.bind(function() {\n this.showWarning();\n }, this), WARNING_TIMEOUT);\n }\n});\n\nexport default ResendNumberChallengeView;\n","import { loc, _ } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BrowserFeatures from '../../../../util/BrowserFeatures';\n\nconst Body = BaseForm.extend({\n title() {\n return (BrowserFeatures.isAndroid() || BrowserFeatures.isIOS())\n ? loc('oie.enroll.okta_verify.setup.title', 'login')\n : loc('oie.enroll.okta_verify.select.channel.title', 'login');\n },\n getUISchema() {\n const schemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n // filter selected channel\n const channelField = _.find(schemas, (schema) => schema.name === 'authenticator.channel');\n channelField.options = _.filter(channelField?.options, (option) =>\n option.value !== this.options.appState.get('currentAuthenticator')?.contextualData?.selectedChannel);\n channelField.value = channelField.options[0]?.value;\n channelField.sublabel = null;\n this.model.set('authenticator.channel', channelField.value);\n const description = {\n View: loc('oie.enroll.okta_verify.select.channel.description', 'login'),\n selector: '.o-form-fieldset-container',\n };\n return [description, ...schemas];\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { FORMS as RemediationForms } from '../../../ion/RemediationConstants';\n\nexport default View.extend({\n className: 'switch-channel-text',\n template: hbs `\n {{#if isQRcodeChannel}}\n \n {{i18n code=\"enroll.totp.cannotScan\" bundle=\"login\"}}\n {{else}}\n {{{i18n code=\"oie.enroll.okta_verify.switch.channel.link.text\" bundle=\"login\"}}}\n {{/if}}`,\n getTemplateData() {\n return {\n isQRcodeChannel: this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'qrcode',\n };\n },\n postRender() {\n this.$el.find('.switch-channel-link').on('click', (event) => {\n const appState = this.options.appState;\n event.preventDefault();\n appState.trigger('switchForm', RemediationForms.SELECT_ENROLLMENT_CHANNEL);\n });\n },\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport AuthenticatorFooter from '../../components/AuthenticatorFooter';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { getForgotPasswordLink } from '../../utils/LinksUtil';\nimport { isCustomizedI18nKey } from '../../../ion/i18nTransformer';\n\n\nconst Body = BaseForm.extend({\n\n title: function() {\n return loc('oie.password.challenge.title', 'login');\n },\n\n save: function() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n /**\n * Update UI schemas for customization from .widgetrc.js or Admin Customization settings page.\n * @returns Array\n */\n getUISchema() {\n const schemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n const { settings } = this.options;\n const passwordExplainLabeli18nKey = 'primaryauth.password.tooltip';\n\n const passwordSchema = schemas.find(({name}) => name === 'credentials.passcode');\n\n if (passwordSchema && isCustomizedI18nKey(passwordExplainLabeli18nKey, settings)) {\n passwordSchema.explain = loc(passwordExplainLabeli18nKey, 'login');\n passwordSchema['explain-top'] = true;\n }\n\n return schemas;\n },\n\n});\n\nconst Footer = AuthenticatorFooter.extend({\n links: function() {\n let links = AuthenticatorFooter.prototype.links.apply(this, arguments);\n\n links = getForgotPasswordLink(this.options.appState, this.options.settings).concat(links);\n\n return links;\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n Footer,\n});\n","import { loc } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport {\n getPasswordComplexityDescriptionForHtmlList,\n removeRequirementsFromError } from '../../utils/AuthenticatorUtil';\nimport { generatePasswordPolicyHtml } from './PasswordPolicyUtil';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.password.enroll.title', 'login');\n },\n save() {\n return loc('oform.next', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n const policy = this.getPasswordPolicySettings();\n this.displayPasswordPolicy(policy);\n },\n\n displayPasswordPolicy(policy) {\n if (policy) {\n const rulesList = getPasswordComplexityDescriptionForHtmlList( policy );\n generatePasswordPolicyHtml(this, rulesList, true);\n }\n },\n\n triggerAfterError(model, error) {\n error.responseJSON = removeRequirementsFromError(error.responseJSON);\n this.options.appState.trigger('afterError', error);\n },\n\n getPasswordPolicySettings() {\n // This will be overridden by following scenario since the policies could be different for those.\n // - password reset (`ReEnrollAuthenticatorPasswordView.js`)\n //\n const relatesToObject = this.options.currentViewState.relatesTo;\n return relatesToObject?.value?.settings;\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const confirmPassword = {\n name: 'confirmPassword',\n label: loc('oie.password.confirmPasswordLabel','login'),\n type: 'password',\n 'label-top': true,\n params: {\n showPasswordToggle: this.settings.get('showPasswordToggle'),\n }\n };\n\n const updatedSchema = [];\n\n for (let field of uiSchemas) {\n updatedSchema.push(field);\n if (field.name === 'credentials.passcode') {\n updatedSchema.push(confirmPassword);\n }\n }\n\n return updatedSchema;\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n\n Body,\n\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n confirmPassword: {\n type: 'string',\n required: true,\n }\n },\n ModelClass.prototype.local,\n );\n return ModelClass.extend({\n local,\n validate() {\n if (this.get('credentials.passcode') !== this.get('confirmPassword') &&\n this.get('credential.value') !== this.get('confirmPassword')) {\n const errors = {\n 'confirmPassword': loc('password.error.match', 'login'),\n };\n return errors;\n } else {\n return null;\n }\n }\n });\n }\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nconst generatePasswordPolicyHtml = function(form, rulesList, prepend) {\n form.add(\n View.extend({\n tagName: 'section',\n template:\n hbs`
          \n {{i18n code=\"password.complexity.requirements.header\" bundle=\"login\"}}\n
          \n
            \n {{#each rulesList}}
          • {{this}}
          • {{/each}}\n
          `,\n getTemplateData: () => ({ rulesList }),\n attributes: {\n 'data-se': 'password-authenticator--rules'\n }\n }),\n {\n prepend,\n selector: '.o-form-fieldset-container',\n }\n );\n};\n\nexport {\n generatePasswordPolicyHtml,\n};","import { loc } from 'okta';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n\n className: 'password-authenticator',\n\n title() {\n const title = this.options.settings.get('brandName')?\n loc('password.expired.title.specific', 'login', [this.options.settings.get('brandName')]):\n loc('password.expired.title.generic', 'login');\n return title;\n },\n\n save() {\n return loc('password.expired.submit', 'login');\n },\n\n getPasswordPolicySettings() {\n return this.options.appState.get('recoveryAuthenticator')?.settings\n || this.options.appState.get('enrollmentAuthenticator')?.settings;\n },\n\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body });\n","import { loc } from 'okta';\nimport { BaseFooter } from '../../internals';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n className: 'password-authenticator',\n subtitle() {\n if (this.options.settings.get('brandName')) {\n return loc('password.expiring.subtitle.specific', 'login', [this.options.settings.get('brandName')]);\n }\n },\n title() {\n const passwordPolicy = this.getPasswordPolicySettings() || {};\n const daysToExpiry = passwordPolicy.daysToExpiry;\n\n if (daysToExpiry > 0) {\n return loc('password.expiring.title', 'login', [daysToExpiry]);\n } else if (daysToExpiry === 0) {\n return loc('password.expiring.today', 'login');\n } else {\n return loc('password.expiring.soon', 'login');\n }\n },\n\n save() {\n return loc('password.expired.submit', 'login');\n },\n showMessages() {\n // if brandName is configured and messages is present, render as subtitle with brandName in context\n if (this.options.settings.get('brandName')) {\n return null;\n }\n // else if brandName is not set, render messages object sent from server as text\n EnrollAuthenticatorPasswordView.prototype.Body.prototype.showMessages.apply(this, arguments);\n },\n});\n\nconst Footer = BaseFooter.extend({\n links() {\n const links = [];\n if (this.options.appState.hasRemediationObject('skip')) {\n links.push({\n 'type': 'link',\n 'label': loc('password.expiring.later', 'login'),\n 'name': 'skip',\n 'actionPath': 'skip',\n });\n }\n return links;\n }\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body, Footer });\n","import { loc } from 'okta';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n\n className: 'password-authenticator',\n\n title() {\n const title = this.options.settings.get('brandName')?\n loc('password.reset.title.specific', 'login', [this.options.settings.get('brandName')]):\n loc('password.reset.title.generic', 'login');\n return title;\n },\n\n save() {\n return loc('password.reset', 'login');\n },\n\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body });\n","import { _, loc } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend(\n {\n className: 'phone-authenticator-challenge',\n events: {\n 'click a.phone-authenticator-challenge__link' : 'handleSecondaryLinkClick'\n },\n\n title() {\n return loc('oie.phone.verify.title', 'login');\n },\n\n save() {\n return (this.model.get('primaryMode') === 'sms')\n ? loc('oie.phone.sms.primaryButton', 'login')\n : loc('oie.phone.call.primaryButton', 'login');\n },\n\n handleSecondaryLinkClick(e) {\n e.preventDefault();\n // Call the API to send a code via secondary mode\n const secondaryMode = this.model.get('secondaryMode');\n this.model.set('authenticator.methodType', secondaryMode);\n this.saveForm(this.model);\n },\n\n initialize() {\n // This is needed when user clicks on secondary (say voice) and call fails with ratelimit server-side error.\n // Then the user clicks primary button (say sms) and right methodType needs to be sent.\n this.model.on('error', () => this.model.set('authenticator.methodType', this.model.get('primaryMode')));\n BaseForm.prototype.initialize.apply(this, arguments);\n const sendText = ( this.model.get('primaryMode') === 'sms' )\n ? loc('oie.phone.verify.sms.sendText', 'login')\n : loc('oie.phone.verify.call.sendText', 'login');\n const carrierChargesText = loc('oie.phone.carrier.charges', 'login');\n const extraCssClasses =\n this.model.get('phoneNumber') !== loc('oie.phone.alternate.title', 'login') ?\n 'strong no-translate' : '';\n // Courage doesn't support HTML, hence creating a subtitle here.\n this.add(`
          ${sendText}\n ${this.model.escape('phoneNumber')}\n

          ${carrierChargesText}

          \n
          `);\n },\n\n getUISchema() {\n // Change the UI schema to not display radios here.\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n const secondaryMode = this.model.get('secondaryMode');\n if (secondaryMode) {\n const secondaryButtonTitle = (secondaryMode === 'sms')\n ? loc('oie.phone.sms.secondaryButton', 'login')\n : loc('oie.phone.call.secondaryButton', 'login');\n this.add(\n `${secondaryButtonTitle}`,\n '.o-form-button-bar');\n }\n },\n },\n);\n\nexport default BaseAuthenticatorView.extend({\n Body,\n\n createModelClass({ uiSchema }) {\n // It is important to get methods from here to maintain single source of truth.\n const { options: methods } = _.find(uiSchema, schema => schema.name === 'authenticator.methodType');\n const relatesToObject = this.options.currentViewState.relatesTo;\n const { profile } = relatesToObject?.value || {};\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign({\n primaryMode: {\n 'value': methods[0].value,\n 'type': 'string',\n },\n secondaryMode: {\n 'value': methods[1] && methods[1].value,\n 'type': 'string',\n },\n phoneNumber: {\n 'value': profile?.phoneNumber ? profile.phoneNumber : loc('oie.phone.alternate.title', 'login'),\n 'type': 'string',\n },\n }, ModelClass.prototype.local);\n return ModelClass.extend({ local });\n },\n});\n","import { loc, createCallout } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BaseResendView from '../shared/BaseResendView';\n\nconst ResendView = BaseResendView.extend(\n {\n // To be shown after a timeout\n className: 'phone-authenticator-challenge__resend-warning hide',\n events: {\n 'click a.resend-link': 'handleResendLink'\n },\n\n // Override this to change the resend action location from response\n resendActionKey: 'currentAuthenticatorEnrollment-resend',\n\n initialize() {\n const resendText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.resendText', 'login')\n : loc('oie.phone.verify.call.resendText', 'login');\n const linkText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.resendLinkText', 'login')\n : loc('oie.phone.verify.call.resendLinkText', 'login');\n this.add(createCallout({\n content: `${resendText} ${linkText}`,\n type: 'warning',\n }));\n },\n\n handleResendLink() {\n this.options.appState.trigger('invokeAction', this.resendActionKey);\n // Hide warning, but start a timeout again..\n if (!this.el.classList.contains('hide')) {\n this.el.classList.add('hide');\n }\n this.showCalloutAfterTimeout();\n },\n },\n);\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'phone-authenticator-challenge',\n\n title() {\n return loc('oie.phone.verify.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n const sendText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.codeSentText', 'login')\n : loc('mfa.calling', 'login');\n const enterCodeText = loc('oie.phone.verify.enterCodeText', 'login');\n const carrierChargesText = loc('oie.phone.carrier.charges', 'login');\n\n const strongClass = this.model.get('phoneNumber') !== loc('oie.phone.alternate.title', 'login') ?\n 'strong no-translate' : '';\n // Courage doesn't support HTML, hence creating a subtitle here.\n this.add(`
          \n ${sendText} ${this.model.escape('phoneNumber')}.\n  ${enterCodeText}\n

          ${carrierChargesText}

          \n
          `, {\n prepend: true,\n selector: '.o-form-fieldset-container',\n });\n },\n\n postRender() {\n BaseForm.prototype.postRender.apply(this, arguments);\n this.add(ResendView, {\n selector: '.o-form-info-container',\n prepend: true,\n });\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n\n createModelClass() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const { methods, profile } = relatesToObject?.value || {};\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign({\n mode: {\n 'value': methods[0].type,\n 'type': 'string',\n },\n phoneNumber: {\n 'value': profile?.phoneNumber ? profile.phoneNumber : loc('oie.phone.alternate.title', 'login'),\n 'type': 'string',\n }\n }, ModelClass.prototype.local );\n return ModelClass.extend({ local });\n },\n});\n\nexport { ResendView };","import { _, loc, Model } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CountryUtil from '../../../../util/CountryUtil';\n\nconst Body = BaseForm.extend({\n\n className: 'phone-authenticator-enroll',\n\n title() {\n return loc('oie.phone.enroll.title', 'login');\n },\n\n subtitle() {\n return this.model.get('authenticator.methodType') === 'voice'\n ? loc('oie.phone.enroll.call.subtitle', 'login')\n : loc('oie.phone.enroll.sms.subtitle', 'login');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n const selectedMethod = this.model.get('authenticator.methodType');\n const phoneField = this.el.querySelector('.phone-authenticator-enroll__phone');\n const extensionField = this.el.querySelector('.phone-authenticator-enroll__phone-ext');\n\n if (selectedMethod === 'voice') {\n if (!phoneField.classList.contains('phone-authenticator-enroll__phone--small')) {\n phoneField.classList.add('phone-authenticator-enroll__phone--small');\n }\n extensionField.classList.remove('hide');\n }\n\n if (selectedMethod === 'sms') {\n phoneField.classList.remove('phone-authenticator-enroll__phone--small');\n if (!extensionField.classList.contains('hide')) {\n extensionField.classList.add('hide');\n }\n }\n\n this.el.querySelector('.phone-authenticator-enroll__phone-code').innerText = `+${this.model.get('phoneCode')}`;\n },\n\n handlePhoneCodeChange() {\n const countryCodeField = this.el.querySelector('.phone-authenticator-enroll__phone-code');\n countryCodeField.innerText = `+${this.model.get('phoneCode')}`;\n },\n\n save() {\n return this.model.get('authenticator.methodType') === 'voice'\n ? loc('oie.phone.call.primaryButton', 'login')\n : loc('oie.phone.sms.primaryButton', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n // TODO: Using underscore to support IE, replace with Array.prototype methods (find, findIndex) when IE\n // support is removed\n const phoneNumberUISchemaIndex = _.findIndex(uiSchemas, ({ name }) => name === 'authenticator.phoneNumber');\n\n const countryUISchema = {\n 'label-top': true,\n label: loc('country.label', 'login'),\n type: 'select',\n options: CountryUtil.getCountries(),\n name: 'country',\n wide: true,\n };\n\n // Create an input group - serves as a display wrapper\n const phoneNumberWithCodeUISchema = {\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n type: 'group',\n modelType: 'string',\n 'label-top': true,\n name: 'phoneCode',\n className : 'phone-authenticator-enroll__phone',\n input: [\n {\n type: 'label',\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: `+${this.model.get('phoneCode')}`,\n className: 'phone-authenticator-enroll__phone-code no-translate',\n },\n Object.assign({}, uiSchemas[phoneNumberUISchemaIndex]),\n ],\n };\n\n const extensionUISchema = {\n label: loc('phone.extention.label', 'login'),\n type: 'text',\n // Need to manually hide and show\n // - toggleWhen puts display: block on the element when it unhides hence can't be used.\n // Because in this case, the element needs to be rendered as an inline-block.\n // - showWhen has an animation on the element when unhiding\n // The animation makes the element look weird because of the way it is positioned,\n // hence can't be used\n className: 'phone-authenticator-enroll__phone-ext hide',\n 'label-top': true,\n name: 'extension',\n };\n\n if (phoneNumberUISchemaIndex !== -1) {\n // Replace phoneNumberUISchema..\n uiSchemas.splice(phoneNumberUISchemaIndex, 1, phoneNumberWithCodeUISchema);\n // Add countryUISchema before & extensionUISchema after phone..\n uiSchemas.splice(phoneNumberUISchemaIndex, 0, countryUISchema);\n uiSchemas.splice(phoneNumberUISchemaIndex + 2, 0, extensionUISchema);\n }\n\n const methodType = _.find(uiSchemas, ({ name }) => name === 'authenticator.methodType');\n\n if (methodType && methodType.options.length === 1) {\n methodType.className = 'hide';\n }\n\n return uiSchemas;\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.listenTo(this.model, 'change:authenticator.methodType', this.render.bind(this));\n this.listenTo(this.model, 'change:phoneCode', this.handlePhoneCodeChange.bind(this));\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n\n Body,\n\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n country: {\n // Set default country to \"US\"\n 'value': 'US',\n 'type': 'string',\n },\n extension: {\n 'type': 'string',\n },\n },\n ModelClass.prototype.local,\n );\n const derived = Object.assign(\n {\n phoneCode: {\n deps: [ 'country' ],\n fn: function(country) {\n return CountryUtil.getCallingCodeForCountry(country);\n },\n },\n },\n ModelClass.prototype.derived,\n );\n return ModelClass.extend({\n local,\n derived,\n toJSON: function() {\n const modelJSON = Model.prototype.toJSON.call(this, arguments);\n const extension = this.get('extension');\n const phoneCode = this.get('phoneCode');\n\n // Add country code..\n let formattedPhoneNumber = `+${phoneCode}${modelJSON.authenticator.phoneNumber}`;\n\n // Add extension if present..\n if (modelJSON.authenticator.methodType === 'voice' && extension?.trim().length) {\n formattedPhoneNumber = `${formattedPhoneNumber}x${extension}`;\n }\n // Override phone with formatted number..\n modelJSON.authenticator.phoneNumber = formattedPhoneNumber;\n return modelJSON;\n },\n });\n },\n});\n","import { loc } from 'okta';\nimport {\n default as ChallengeAuthenticatorPhoneView,\n ResendView\n} from './ChallengeAuthenticatorPhoneView';\nimport { BaseForm } from '../../internals';\n\nconst EnrollResendView = ResendView.extend(\n {\n // To be shown after a timeout\n className: 'phone-authenticator-enroll--warning hide',\n resendActionKey: 'currentAuthenticator-resend',\n },\n);\n\nconst Body = ChallengeAuthenticatorPhoneView.prototype.Body.extend(\n {\n className: 'phone-authenticator-enroll',\n\n title() {\n return loc('oie.phone.enroll.title', 'login');\n },\n\n postRender() {\n BaseForm.prototype.postRender.apply(this, arguments);\n this.add(EnrollResendView, {\n selector: '.o-form-info-container',\n prepend: true,\n });\n },\n },\n);\n\nexport default ChallengeAuthenticatorPhoneView.extend({ Body });\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport PIVHeader from './PIVHeader';\n\nconst Body = BaseForm.extend({\n\n className: 'piv-cac-card',\n modelEvents: {\n request: 'startAuthentication',\n error: 'stopAuthentication',\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.model.set('useRedirect', true);\n this.addInstructions();\n },\n\n title() {\n return loc('piv.cac.title', 'login');\n },\n\n save() {\n return loc('retry', 'login');\n },\n\n addInstructions() {\n this.add(\n `
          \n

          ${loc('piv.cac.card.insert', 'login')}

          \n
          \n
          `\n );\n },\n \n startAuthentication: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n stopAuthentication: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n }\n \n});\n\nexport default BaseAuthenticatorView.extend({\n Header: PIVHeader,\n Body,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n const messages = this.options.appState.get('messages') || {};\n // if piv view has errors, show errors and stop authentication.\n // otherwise trigger authentication on page load\n if (Array.isArray(messages.value)) {\n this.form.stopAuthentication();\n } else {\n this.form.startAuthentication();\n this.form.trigger('save', this.model);\n }\n },\n});\n","import { BaseHeader } from '../../internals';\nimport HeaderBeacon from '../../components/HeaderBeacon';\n\nexport default BaseHeader.extend({\n HeaderBeacon: HeaderBeacon.extend({\n getBeaconClassName: function() {\n return 'smartcard';\n },\n })\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.security.question.challenge.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const questionKey = uiSchemas.filter(s => s.name.indexOf('questionKey') >= 0);\n const answer = uiSchemas.filter(s => s.name.indexOf('answer') >= 0);\n\n /**\n * At verify SQ case,\n * 'questionKey' is read-only hence it won't show up in UI anyway.\n * 'answer' has label 'answer' but apparently UI want to display the\n * actual question (label of `questionKey`) as better user experience.\n */\n if (questionKey.length === 1 && answer.length === 1) {\n answer[0].label = questionKey[0].label;\n }\n\n return uiSchemas;\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.security.question.enroll.title', 'login');\n },\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { View } from 'okta';\nimport { SHOW_RESEND_TIMEOUT } from '../../utils/Constants';\nimport sessionStorageHelper from '../../../client/sessionStorageHelper';\n\nexport default View.extend({\n\n postRender() {\n this.showCalloutAfterTimeout();\n },\n\n showCalloutAfterTimeout() {\n const timeStamp = sessionStorageHelper.getResendTimestamp();\n if (!timeStamp) {\n sessionStorageHelper.setResendTimestamp(Date.now());\n }\n\n // We keep track of a 'global' timestamp in sessionStorage because if the SIW does a re-render,\n // we don't want to force the user to wait another 30s again to see the resend link. With this\n // the user will wait AT MOST 30s until they see the resend link.\n this.showMeInterval = setInterval(() => {\n const start = sessionStorageHelper.getResendTimestamp();\n const now = Date.now();\n if (now - start >= SHOW_RESEND_TIMEOUT) {\n this.$el.removeClass('hide');\n clearInterval(this.showMeInterval);\n sessionStorageHelper.removeResendTimestamp();\n }\n }, 250);\n },\n\n remove() {\n View.prototype.remove.apply(this, arguments);\n clearInterval(this.showMeInterval);\n\n const formName = this.options.appState.get('currentFormName');\n const resendContext = this.options.appState.get('currentAuthenticator')?.resend \n || this.options.appState.get('currentAuthenticatorEnrollment')?.resend;\n const didFormNameChange = this.options.model.get('formName') !== formName;\n\n // Clear resend timeStamp whenever we change views (this means we're navigating away from the resend view)\n if (sessionStorageHelper.getResendTimestamp()\n && (!resendContext || didFormNameChange)) {\n sessionStorageHelper.removeResendTimestamp();\n } \n },\n});\n","// Common view for OV push and custom app.\nimport { BaseFooter } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport ChallengeOktaVerifyCustomAppPushOnlyFormView from './ChallengeOktaVerifyCustomAppPushOnlyFormView';\nimport ChallengeOktaVerifyCustomAppFormView from './ChallengeOktaVerifyCustomAppFormView';\n\nexport default BaseAuthenticatorView.extend({\n initialize() {\n BaseAuthenticatorView.prototype.initialize.apply(this, arguments);\n if (this.isPushOnlyWithAutoChallengeFlow()) {\n this.Body = ChallengeOktaVerifyCustomAppPushOnlyFormView;\n } else {\n this.Body = ChallengeOktaVerifyCustomAppFormView;\n this.Footer = BaseFooter;\n }\n },\n\n isPushOnlyWithAutoChallengeFlow() {\n const methodType = this.options.appState.getSchemaByName('authenticator.methodType');\n const hasAutoChallengeSchema = this.options.appState.getSchemaByName('authenticator.autoChallenge');\n const methodTypeOptions = methodType?.options;\n return hasAutoChallengeSchema && methodTypeOptions.length === 1 && methodTypeOptions[0].value === 'push';\n },\n});\n","// Common view for OV push and custom app.\nimport { Collection } from 'okta';\nimport { BaseForm } from '../../internals';\nimport AuthenticatorVerifyOptions from '../../components/AuthenticatorVerifyOptions';\nimport { getAuthenticatorDataForVerification } from '../../utils/AuthenticatorUtil';\nimport { Body as SelectAuthenticatorVerifyViewBody } from '../SelectAuthenticatorVerifyView';\nimport { AUTHENTICATOR_KEY } from '../../../ion/RemediationConstants';\n\nconst Body = SelectAuthenticatorVerifyViewBody.extend({\n getUISchema() {\n // Change the UI schema to not display radios here.\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const methodsSchema = uiSchemas.find(schema => schema.name === 'authenticator.methodType');\n\n this._sortMethodOptionsIfDeviceKnown(methodsSchema.options);\n\n const methodOptions = methodsSchema.options.map((option) => {\n return Object.assign({}, option, getAuthenticatorDataForVerification({authenticatorKey:\n this.isOV() ? AUTHENTICATOR_KEY.OV : AUTHENTICATOR_KEY.CUSTOM_APP}));\n });\n return [{\n View: AuthenticatorVerifyOptions,\n options: {\n name: methodsSchema.name,\n collection: new Collection(methodOptions),\n }\n }];\n },\n\n // If the `deviceKnown` attribute is true, we should put the signed_nonce method to the top of authenticator list.\n // This is in sync with v2/ion/ui-schema/ion-object-handler.js - createOVOptions\n _sortMethodOptionsIfDeviceKnown(methodOptions) {\n // Check if the `deviceKnown` attribute is true\n const deviceKnown = this.options?.currentViewState?.relatesTo?.value?.deviceKnown;\n\n if (deviceKnown) {\n const signedNonceIndex = methodOptions.findIndex((e) => e.value === 'signed_nonce');\n\n if (signedNonceIndex > 0) {\n const signedNonceModel = methodOptions[signedNonceIndex];\n\n // Put the 'signed_nonce' option to the top of the list\n methodOptions.splice(signedNonceIndex, 1);\n methodOptions.unshift(signedNonceModel);\n }\n }\n },\n isOV() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.OV;\n },\n});\n\nexport default Body;\n","// Common view for OV push and custom app.\nimport { BaseForm } from '../../internals';\nimport {AUTHENTICATOR_KEY} from 'v2/ion/RemediationConstants';\nimport { loc } from 'okta';\n\n\nconst Body = BaseForm.extend(Object.assign({\n className: function() {\n return this.isOV() ? 'okta-verify-send-push-form' : 'custom-app-send-push-form';\n },\n\n save() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.OV ?\n loc('oie.okta_verify.sendPushButton', 'login'):\n loc('oie.custom_app.sendPushButton', 'login');\n },\n\n title() {\n return this.isOV() ? loc('oie.okta_verify.push.title', 'login'): loc('oie.custom_app.push.title', 'login');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n // Move checkbox below the button\n // Checkbox is rendered by BaseForm using remediation response and \n // hence by default always gets added above buttons.\n const checkbox = this.$el.find('[data-se=\"o-form-fieldset-authenticator.autoChallenge\"]');\n checkbox.length && this.$el.find('.o-form-button-bar').after(checkbox);\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n\n isOV() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.OV;\n },\n}));\n\nexport default Body;\n","// Common view for OV push and custom push.\nimport { loc, createButton, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { BaseFormWithPolling } from '../../internals';\nimport polling from '../shared/polling';\nimport { WARNING_TIMEOUT } from '../../utils/Constants';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { AUTHENTICATOR_KEY } from '../../../ion/RemediationConstants';\n\nconst warningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning',\n template: hbs`\n \n

          {{warning}}

          \n `\n});\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n noButtonBar: true,\n\n title() {\n return this.isOV() ? loc('oie.okta_verify.push.title', 'login') :\n loc('oie.verify.custom_app.title', 'login', [this.options.appState.getAuthenticatorDisplayName()]);\n },\n\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n // 'hasSavingState' would be true by default.\n // Setting it to false when auth key is okta_verify or custom_app with autochallenge schema\n // So that 'o-form-saving' css class is not added while polling and checkbox remains enabled.\n if ((this.isOV() || this.isCustomApp()) && this.isAutoChallengeSupported()) {\n this.hasSavingState = false;\n }\n this.listenTo(this.model, 'error', this.stopPoll);\n this.addView();\n },\n\n addView() {\n this.add(createButton({\n className: 'button button-wide button-primary send-push link-button-disabled',\n title: this.isOV() ? loc('oie.okta_verify.push.sent', 'login') : loc('oie.custom_app.push.sent', 'login'),\n click: (e) => {\n e.preventDefault();\n }\n }));\n this.add(\n `\n ${this.isOV() ? loc('oie.okta_verify.push.sent', 'login') : loc('oie.custom_app.push.sent', 'login')}`,\n );\n },\n\n render() {\n BaseFormWithPolling.prototype.render.apply(this, arguments);\n\n const checkbox = this.$el.find('[data-se=\"o-form-fieldset-autoChallenge\"]');\n\n if (!this.isAutoChallengeSupported()) {\n checkbox.length && checkbox.hide();\n } else if (this.isOV() || this.isCustomApp()) {\n // Move checkbox below the button\n // Checkbox is rendered by BaseForm using remediation response and\n // hence by default always gets added above buttons.\n checkbox.length && this.$el.find('.o-form-fieldset-container').append(checkbox);\n }\n },\n\n postRender() {\n BaseFormWithPolling.prototype.postRender.apply(this, arguments);\n\n const className = this.isOV() ?\n 'okta-verify-push-challenge' : ' custom-app-push-challenge';\n this.$el.addClass(className);\n this.startPoll();\n },\n\n startPoll() {\n this.startPolling();\n this.warningTimeout = setTimeout(() => {\n const warningText = this.isOV() ? loc('oktaverify.warning', 'login') :\n loc('oie.custom_app.push.warning', 'login', [this.options.appState.getAuthenticatorDisplayName()]);\n this.showWarning(warningText);\n }, WARNING_TIMEOUT);\n },\n\n stopPoll() {\n this.stopPolling();\n this.clearWarning();\n },\n\n showWarning(msg) {\n this.clearWarning();\n this.add(warningTemplate, '.o-form-error-container', {options: {warning: msg}});\n },\n\n clearWarning() {\n if (this.$('.o-form-error-container div').hasClass('okta-form-infobox-warning')) {\n this.$('.okta-form-infobox-warning').remove();\n }\n clearTimeout(this.warningTimeout);\n },\n\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n\n isOV() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.OV;\n },\n\n isCustomApp() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.CUSTOM_APP;\n },\n\n isAutoChallengeSupported() {\n return (this.options.appState.getSchemaByName('autoChallenge') !== null &&\n this.options.appState.getSchemaByName('autoChallenge') !== undefined);\n }\n },\n\n polling,\n));\n\nconst AuthenticatorView = BaseAuthenticatorView.extend({\n Body,\n});\n\nexport {\n AuthenticatorView as default,\n Body,\n};\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'custom-access-denied-error-message',\n template: hbs`\n {{#if message}}\n

          {{message}}

          \n {{/if}}\n {{#if links}}\n \n {{/if}}\n `,\n getTemplateData() {\n return {\n message: this.options.message,\n links: this.options.links,\n };\n },\n});","import { loc } from 'okta';\nexport default {\n title() {\n return loc('oie.email.mfa.title', 'login');\n }\n};\n","import { _ } from 'okta';\nimport { MS_PER_SEC } from '../../utils/Constants';\n\nexport default {\n startPolling(newRefreshInterval) {\n this.fixedPollingInterval = this.options.currentViewState.refresh;\n this.dynamicPollingInterval = newRefreshInterval;\n this.countDownCounterValue = Math.ceil(this.pollingInterval / MS_PER_SEC);\n // Poll is present in remediation form\n if (this.fixedPollingInterval) {\n this._startRemediationPolling();\n } else {\n // Poll is present in authenticator/ authenticator Enrollment obj.\n // Authenticator won't co-exists hence it's safe to trigger both.\n this._startAuthenticatorPolling();\n }\n },\n\n _startAuthenticatorPolling() {\n // Authenticator won't co-exists hence it's safe to trigger both.\n [\n 'currentAuthenticator',\n 'currentAuthenticatorEnrollment',\n ].some(responseKey => {\n if (this.options.appState.has(responseKey)) {\n const authenticator = this.options.appState.get(responseKey);\n const authenticatorPollAction = `${responseKey}-poll`;\n const pollInterval = this.dynamicPollingInterval || authenticator?.poll?.refresh;\n if (_.isNumber(pollInterval)) {\n this.polling = setTimeout(()=>{\n this.options.appState.trigger('invokeAction', authenticatorPollAction);\n }, pollInterval);\n }\n return true;\n } else {\n return false;\n }\n });\n },\n\n _startRemediationPolling() {\n const pollInterval = this.dynamicPollingInterval || this.fixedPollingInterval;\n if (_.isNumber(pollInterval)) {\n this.polling = setTimeout(() => {\n this.options.appState.trigger('saveForm', this.model);\n }, pollInterval);\n }\n },\n\n stopPolling() {\n if (this.polling) {\n clearTimeout(this.polling);\n this.polling = null;\n }\n }\n};\n","import { View, createButton } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'custom-buttons',\n template: hbs`\n {{#if addSeparateLine}}\n
          {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
          \n {{/if}}\n
          \n `,\n\n initialize(options) {\n options.customButtons.forEach((idpButton) => {\n this.add(createButton(idpButton), '.okta-custom-buttons-container');\n });\n },\n\n getTemplateData() {\n const jsonData = View.prototype.getTemplateData.apply(this, arguments);\n\n return Object.assign(jsonData, {\n addSeparateLine: this.options.addSeparateLine,\n });\n }\n});\n","import { View, createButton, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Util from '../../../../util/Util';\nimport Enums from '../../../../util/Enums';\nimport { UNIVERSAL_LINK_POST_DELAY } from '../../utils/Constants';\nimport { FORMS } from '../../../ion/RemediationConstants';\nimport { appendLoginHint } from '../../utils/ChallengeViewUtil';\n\nexport default View.extend({\n className: 'sign-in-with-device-option',\n template: hbs`\n
          \n {{#if signInWithDeviceIsRequired}}\n
          \n
          \n {{/if}}\n
          \n {{#unless signInWithDeviceIsRequired}}\n
          \n {{i18n code=\"authbutton.divider.text\" bundle=\"login\"}}\n
          \n {{/unless}}\n `,\n initialize() {\n const appState = this.options.appState;\n const deviceChallengePollRemediation = appState.hasRemediationObject(FORMS.LAUNCH_AUTHENTICATOR);\n \n const deviceChallenge = deviceChallengePollRemediation?.relatesTo?.value;\n this.add(createButton({\n className: 'button',\n icon: 'okta-verify-authenticator',\n title: loc('oktaVerify.button', 'login'),\n click() {\n if (this.settings.get('features.engFastpassMultipleAccounts') && this.model.get('identifier')) {\n this.options.settings.set('identifier', encodeURIComponent(this.model.get('identifier')));\n }\n\n const isUVapproach = deviceChallenge?.challengeMethod === Enums.UNIVERSAL_LINK_CHALLENGE;\n if (isUVapproach) {\n // launch the Okta Verify app\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, this.options?.settings?.get('identifier'));\n Util.redirect(deviceChallengeUrl);\n }\n\n const isAppLinkapproach = deviceChallenge?.challengeMethod === Enums.APP_LINK_CHALLENGE;\n if (isAppLinkapproach) {\n // launch the Okta Verify app\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, this.options?.settings?.get('identifier'));\n Util.redirect(deviceChallengeUrl, window, true);\n }\n\n // OKTA-350084\n // For the universal link (iOS) and app link (Android) approach,\n // we need to 1. launch the Okta Verify app\n // and 2. take the enduser to the next step right away\n // In Safari, when Okta Verify app is not installed, step 1 responds with error immediately,\n // then step 2 will respond with error.\n // To avoid showing the error right before switching to the next UI,\n // wait for 500 milliseconds before invoking step 2\n Util.callAfterTimeout(() => {\n if (this.options.isRequired) {\n appState.trigger('saveForm', this.model);\n } else {\n appState.trigger('invokeAction', FORMS.LAUNCH_AUTHENTICATOR);\n }\n }, isUVapproach || isAppLinkapproach ? UNIVERSAL_LINK_POST_DELAY : 0);\n }\n }), '.okta-verify-container');\n },\n\n getTemplateData() {\n return {\n signInWithDeviceIsRequired: !!this.options.isRequired,\n };\n },\n\n postRender() {\n if(this.options.isRequired) {\n const appLabel = this.options.appState.attributes?.app?.label;\n const resourceLabel = appLabel ? loc('oktaVerify.appDescription', 'login', [appLabel]) : \n loc('oktaVerify.description', 'login');\n const ovDescContainer = this.$el.find('.signin-with-ov-description');\n ovDescContainer.text(resourceLabel);\n }\n }\n});\n","import { View, createButton } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'sign-in-with-idp',\n template: hbs`\n {{#if isSecondaryIdpDisplay}}\n
          {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
          \n {{/if}}\n
          \n {{#if isPrimaryIdpDisplay}}\n
          {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
          \n {{/if}} \n `,\n initialize() {\n this.options.idpButtons.forEach((idpButton) => {\n this.add(createButton(idpButton), '.okta-idps-container');\n });\n },\n\n getTemplateData() {\n const jsonData = View.prototype.getTemplateData.apply(this, arguments);\n const addDivider = this.options.idpButtons.length > 0;\n\n return Object.assign(jsonData, {\n isPrimaryIdpDisplay: addDivider && this.options.isPrimaryIdpDisplay,\n isSecondaryIdpDisplay: addDivider && !this.options.isPrimaryIdpDisplay\n });\n }\n});\n","import { View, loc, createButton } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { FORMS } from '../../../ion/RemediationConstants';\n\nexport default View.extend({\n className: 'sign-in-with-webauthn-option',\n template: hbs`\n
          \n
          \n
          \n {{i18n code=\"authbutton.divider.text\" bundle=\"login\"}}\n
          \n `,\n initialize() {\n this.add(createButton({\n className: 'button',\n icon: 'okta-webauthn-authenticator',\n title: loc('signinWithWebAuthn.button', 'login'),\n click: () => {\n this.options.appState.trigger('invokeAction', FORMS.LAUNCH_WEBAUTHN_AUTHENTICATOR);\n }\n }), '.okta-webauthn-container');\n },\n});","import { loc } from 'okta';\nimport BaseForm from '../../internals/BaseForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.symantecVip.challenge.title', 'login', [displayName])\n : loc('oie.symantecVip.enroll.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.symantecVip.challenge.description', 'login', [displayName])\n : loc('oie.symantecVip.enroll.description', 'login', [displayName]);\n },\n\n save() {\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('mfa.challenge.verify', 'login')\n : loc('mfa.enroll', 'login');\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View, createCallout } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n // eslint-disable-next-line max-len\n template: hbs`

          {{i18n code=\"oie.verify.webauthn.instructions\" bundle=\"login\"}}

          `,\n initialize() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const challengeData = relatesToObject?.value.contextualData.challengeData;\n if (challengeData.userVerification === 'required') {\n this.add(createCallout({\n className: 'uv-required-callout',\n size: 'slim',\n type: 'warning',\n subtitle: loc('oie.verify.webauthn.uv.required.instructions', 'login'),\n }));\n }\n this.add('
          ');\n },\n});\n","import { _, loc, createButton, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CryptoUtil from '../../../../util/CryptoUtil';\nimport webauthn from '../../../../util/webauthn';\nimport BrowserFeatures from '../../../../util/BrowserFeatures';\nimport ChallengeWebauthnInfoView from './ChallengeWebauthnInfoView';\nimport { getMessageFromBrowserError } from '../../../ion/i18nTransformer';\nimport ChallengeWebauthnFooter from '../../components/ChallengeWebauthnFooter';\nimport { FORMS as RemediationForms } from '../../../ion/RemediationConstants';\nimport EnrollWebAuthnResidentKeyLinkView from './EnrollWebAuthnResidentkeyLinkView';\n\nconst Body = BaseForm.extend({\n\n title() {\n return loc('oie.verify.webauth.title', 'login');\n },\n\n className: 'oie-verify-webauthn',\n\n getUISchema() {\n const schema = [];\n // Returning custom array so no input fields are displayed for webauthn\n if (webauthn.isNewApiAvailable()) {\n const retryButton = createButton({\n className: 'retry-webauthn button-primary default-custom-button',\n title: loc('mfa.challenge.verify', 'login'),\n click: () => {\n this.getCredentialsAndSave();\n }\n });\n\n schema.push({\n View: ChallengeWebauthnInfoView,\n }, {\n View: retryButton,\n });\n if (this._canSetupWebAuthnResidentKey()) {\n schema.push({View: EnrollWebAuthnResidentKeyLinkView});\n }\n } else {\n schema.push({\n View: createCallout({\n className: 'webauthn-not-supported',\n type: 'error',\n subtitle: loc('oie.webauthn.error.not.supported', 'login'),\n }),\n });\n }\n return schema;\n },\n\n remove() {\n BaseForm.prototype.remove.apply(this, arguments);\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n },\n\n noButtonBar: true,\n\n modelEvents: {\n 'error': '_stopVerification'\n },\n\n getCredentialsAndSave() {\n this.clearErrors();\n this._startVerification();\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n this.webauthnAbortController = new AbortController();\n }\n const relatesToObject = this.options.currentViewState.relatesTo;\n const authenticatorData = relatesToObject?.value || {};\n const allowCredentials = [];\n const authenticatorEnrollments = this.options.appState.get('authenticatorEnrollments')?.value || [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n allowCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(enrollement.credentialId),\n });\n }\n });\n const challengeData = authenticatorData.contextualData.challengeData;\n const options = _.extend({}, challengeData, {\n allowCredentials,\n challenge: CryptoUtil.strToBin(challengeData.challenge),\n });\n // navigator.credentials() is not supported in IE11\n // eslint-disable-next-line compat/compat\n navigator.credentials.get({\n publicKey: options,\n signal: this.webauthnAbortController && this.webauthnAbortController.signal\n }).then((assertion) => {\n const credentials = {\n clientData: CryptoUtil.binToStr(assertion.response.clientDataJSON),\n authenticatorData: CryptoUtil.binToStr(assertion.response.authenticatorData),\n signatureData: CryptoUtil.binToStr(assertion.response.signature)\n };\n const hasUserHandleSchema = this.options.appState.getSchemaByName('credentials.userHandle');\n if (hasUserHandleSchema) {\n _.extend(credentials, {\n userHandle: CryptoUtil.binToStr(assertion.response.userHandle ?? '')\n });\n }\n \n this.model.set({\n credentials\n });\n this.saveForm(this.model);\n }, (error) => {\n // Do not display if it is abort error triggered by code when switching.\n // this.webauthnAbortController would be null if abort was triggered by code.\n if (this.webauthnAbortController) {\n this.model.trigger('error', this.model, {responseJSON: {errorSummary: getMessageFromBrowserError(error)}});\n }\n }).finally(() => {\n // unset webauthnAbortController on successful authentication or error\n this.webauthnAbortController = null;\n });\n },\n\n _startVerification: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.retry-webauthn').hide();\n this.$('.setup-webauthn-residentkey-text').hide();\n this.$('.retry-webauthn')[0].textContent = loc('retry', 'login');\n },\n\n _stopVerification: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.retry-webauthn').show();\n this.$('.setup-webauthn-residentkey-text').show();\n },\n\n _canSetupWebAuthnResidentKey: function() {\n return this.options.appState.hasRemediationObject(RemediationForms.ENROLL_WEBAUTHN_RESIDENTKEY);\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n Footer: ChallengeWebauthnFooter,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n // Trigger browser prompt automatically for other browsers for better UX.\n if (webauthn.isNewApiAvailable() && !BrowserFeatures.isSafari()) {\n this.form.getCredentialsAndSave();\n }\n },\n});\n","import { View } from 'okta';\nimport { FORMS as RemediationForms } from '../../../ion/RemediationConstants';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'setup-webauthn-residentkey-text',\n template: hbs `
          {{{i18n code=\"oie.enroll.webauthn.rk.link\" bundle=\"login\"}}}
          `,\n events: {\n 'click .setup-webauthn-residentkey-link': function(e) {\n e.preventDefault();\n this.options.appState.trigger('invokeAction', RemediationForms.ENROLL_WEBAUTHN_RESIDENTKEY);\n },\n },\n});\n","import { loc, View, createCallout } from 'okta';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n // eslint-disable-next-line max-len\n template: hbs`

          {{i18n code=\"oie.enroll.webauthn.instructions\" bundle=\"login\"}}

          `,\n initialize() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const activationData = relatesToObject?.value.contextualData.activationData;\n if (BrowserFeatures.isEdge()) {\n this.add(View.extend({\n tagName: 'p',\n className: 'idx-webauthn-enroll-text-edge',\n template: hbs`{{i18n code=\"oie.enroll.webauthn.instructions.edge\" bundle=\"login\"}}`\n }));\n }\n if (activationData.authenticatorSelection.userVerification === 'required') {\n this.add(createCallout({\n className: 'uv-required-callout',\n size: 'slim',\n type: 'warning',\n subtitle: loc('oie.enroll.webauthn.uv.required.instructions', 'login'),\n }));\n }\n this.add('
          ');\n },\n});\n","import { _, loc, createCallout, createButton } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport webauthn from 'util/webauthn';\nimport CryptoUtil from 'util/CryptoUtil';\nimport EnrollWebauthnInfoView from './EnrollWebauthnInfoView';\nimport { getMessageFromBrowserError } from '../../../ion/i18nTransformer';\n\nfunction getExcludeCredentials(authenticatorEnrollments = []) {\n const credentials = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(enrollement.credentialId),\n });\n }\n });\n return credentials;\n}\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.enroll.webauthn.title', 'login');\n },\n className: 'oie-enroll-webauthn',\n modelEvents: {\n 'error': '_stopEnrollment',\n },\n getUISchema() {\n const schema = [];\n // Returning custom array so no input fields are displayed for webauthn\n if (webauthn.isNewApiAvailable()) {\n schema.push({\n View: EnrollWebauthnInfoView,\n });\n schema.push({\n View: createButton({\n className: 'webauthn-setup button button-primary button-wide',\n title: loc('oie.enroll.webauthn.save', 'login'),\n click: () => {\n this.triggerWebauthnPrompt();\n },\n }),\n });\n } else {\n schema.push({\n View: createCallout({\n className: 'webauthn-not-supported',\n type: 'error',\n subtitle: loc('oie.webauthn.error.not.supported', 'login'),\n }),\n });\n }\n return schema;\n },\n triggerWebauthnPrompt() {\n this.$el.find('.o-form-error-container').empty();\n this._startEnrollment();\n const relatesToObject = this.options.currentViewState.relatesTo;\n const activationData = relatesToObject?.value.contextualData.activationData;\n if (webauthn.isNewApiAvailable()) {\n const excludeCredentials = activationData.authenticatorSelection?.requireResidentKey === true ?\n [] :\n getExcludeCredentials(this.options.appState.get('authenticatorEnrollments').value);\n const options = _.extend({}, activationData, {\n challenge: CryptoUtil.strToBin(activationData.challenge),\n user: {\n id: CryptoUtil.strToBin(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n excludeCredentials\n });\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n this.webauthnAbortController = new AbortController();\n }\n navigator.credentials.create({\n publicKey: options,\n signal: this.webauthnAbortController && this.webauthnAbortController.signal\n }).then((newCredential) => {\n this.model.set({\n credentials : {\n clientData: CryptoUtil.binToStr(newCredential.response.clientDataJSON),\n attestation: CryptoUtil.binToStr(newCredential.response.attestationObject),\n }\n });\n this.saveForm(this.model);\n })\n .catch((error) => {\n this.model.trigger('error', this.model, {responseJSON: {errorSummary: getMessageFromBrowserError(error)}});\n }).finally(() => {\n this.webauthnAbortController = null;\n });\n }\n },\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.webauthn-setup').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.webauthn-setup').show();\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n this.$el.find('.o-form-button-bar [type=\"submit\"]').remove();\n },\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseForm from '../../internals/BaseForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ExampleView = View.extend({\n template: hbs`
          `,\n});\n\nconst Body = BaseForm.extend({\n title() {\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.yubikey.challenge.title', 'login')\n : loc('oie.yubikey.enroll.title', 'login');\n },\n\n subtitle() {\n return loc('oie.yubikey.description', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n getUISchema() {\n const schema = BaseForm.prototype.getUISchema.apply(this, arguments);\n schema.unshift({\n View: ExampleView,\n selector: '.o-form-fieldset-container',\n });\n return schema;\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { _, $ } from 'okta';\nimport { ConfigError } from 'util/Errors';\nimport OAuth2Util from 'util/OAuth2Util';\n\nexport default function buildRenderOptions(widgetOptions = {}, options = {}) {\n const authParams = $.extend(true, {}, widgetOptions.authParams, _.pick(options, OAuth2Util.AUTH_PARAMS));\n const { el, clientId, redirectUri } = Object.assign({}, widgetOptions, options);\n const renderOptions = Object.assign({}, { el, clientId, redirectUri, authParams });\n\n if (!renderOptions.el) {\n throw new ConfigError('\"el\" is required');\n }\n\n if (!renderOptions.clientId) {\n throw new ConfigError('\"clientId\" is required');\n }\n\n if (!renderOptions.redirectUri) {\n throw new ConfigError('\"redirectUri\" is required');\n }\n\n return renderOptions;\n}","import { $ } from 'okta';\nimport Enums from 'util/Enums';\n\nexport default function createRouter(Router, widgetOptions, renderOptions, authClient, successFn, errorFn, hooks) {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n const routerOptions = $.extend(true, {}, widgetOptions, renderOptions, {\n authClient,\n hooks,\n globalSuccessFn: (res) => {\n successFn && successFn(res); // call success function if provided\n if (res && res.status === Enums.SUCCESS) {\n resolve(res);\n }\n },\n globalErrorFn: (error) => {\n errorFn && errorFn(error); // call error function if provided\n reject(error);\n }\n });\n const router = new Router(routerOptions);\n router.start();\n return {\n router,\n routerOptions,\n promise\n };\n}\n\n","// Default supports both Authn and IDX pipelines\nimport { mixinAuthn } from '@okta/okta-auth-js';\nimport { OktaAuth as OktaAuthIdx } from './oie';\n\n// okta-auth-js supports a mixin pattern that allows us to compose a custom version containing only the code we need\n// build an AuthJS client that supports both the Classic and OIE engines\n\n// Simply add Authn support to the IDX client\nconst OktaAuth = mixinAuthn(OktaAuthIdx);\n\nexport { OktaAuth };\n","// OIE supports only IDX pipeline\nimport {\n createOktaAuthOAuth,\n mixinIdx,\n IdxTransactionMeta,\n IdxStorageManagerInterface,\n createIdxStorageManager,\n createIdxOptionsConstructor,\n OktaAuthIdxOptions,\n IdxTransactionManagerInterface,\n createIdxTransactionManager\n} from '@okta/okta-auth-js';\n\n// okta-auth-js supports a mixin pattern that allows us to compose a custom version containing only the code we need\n// build an AuthJS client that supports only the OIE engine\n\ntype M = IdxTransactionMeta;\ntype S = IdxStorageManagerInterface;\ntype O = OktaAuthIdxOptions;\ntype TM = IdxTransactionManagerInterface;\n\nconst OptionsConstructor = createIdxOptionsConstructor();\nconst StorageManager = createIdxStorageManager();\nconst IdxTransactionManager = createIdxTransactionManager();\n\n// Start with OAuth as base\nconst OktaAuthOAuth = createOktaAuthOAuth(StorageManager, OptionsConstructor, IdxTransactionManager);\n\n// Mixin IDX support\nconst OktaAuth = mixinIdx(OktaAuthOAuth);\n\nexport { OktaAuth };\n","import { OktaSignIn } from '../default';\n\n// CDN bundle must have a single default export\nexport default OktaSignIn;\n","// Default supports both IDX and Authn pipelines\nimport { OktaAuth } from '../authClient/default';\nimport { routerClassFactory } from '../router/default';\nimport { WidgetOptions } from '../types/options';\nimport { createOktaSignIn } from '../widget/OktaSignIn';\n\nclass OktaSignIn extends createOktaSignIn(OktaAuth, routerClassFactory) {\n constructor(options: WidgetOptions) {\n super(options);\n }\n}\n\nexport default OktaSignIn\nexport { OktaSignIn }\nexport * from '../types';\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Model } from 'okta';\nimport { mergeHook } from 'util/Hooks';\nimport { HookDefinition, HooksOptions } from 'types';\n\nexport default class Hooks extends Model {\n\n mergeHook(formName: string, hookToMerge: HookDefinition): void {\n const hooks = this.get('hooks') || {};\n mergeHook(hooks, formName, hookToMerge);\n this.set('hooks', hooks);\n }\n\n getHook(formName: string): HookDefinition {\n const hooks: HooksOptions = this.get('hooks') || {};\n return hooks[formName]; // may be undefined\n }\n \n}\n","/* eslint max-statements: [2, 22], complexity: [2, 12] */\n\n/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Model, loc, internal, ModelProperty } from 'okta';\nimport config from 'config/config.json';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport {\n ConfigError,\n UnsupportedBrowserError\n} from 'util/Errors';\nimport IDP from 'util/IDP';\nimport Logger from 'util/Logger';\nimport Util from 'util/Util';\nimport CountryUtil from 'util/CountryUtil';\nimport { OktaAuth } from '@okta/okta-auth-js';\nconst SharedUtil = internal.util.Util;\nconst assetBaseUrlTpl = hbs('https://global.oktacdn.com/okta-signin-widget/{{version}}');\n\nconst local: Record = {\n authClient: ['object', false, undefined],\n baseUrl: ['string', true],\n recoveryToken: ['string', false, undefined],\n stateToken: ['string', false, undefined],\n username: ['string', false],\n relayState: ['string', false],\n\n // These two settings are aliases. Setting either value will set `backToSignInUri` \n signOutLink: ['string', false], // for backward compatibility\n backToSignInLink: ['string', false], // preferred setting\n\n redirect: {\n type: 'string',\n values: ['never', 'always', 'auto'],\n value: 'auto',\n },\n\n // allows bootstrapping the Widget into a specific view such\n // as register or forgot password\n flow: ['string', false, 'default'],\n\n // Function to transform the username before passing it to the API\n // for Primary Auth, Forgot Password and Unlock Account.\n transformUsername: ['function', false],\n\n // CALLBACKS\n globalSuccessFn: 'function',\n globalErrorFn: 'function',\n processCreds: 'function',\n hooks: 'object',\n\n // IMAGES\n logo: 'string',\n logoText: ['string', false],\n helpSupportNumber: 'string',\n\n // \n // attribute to hold proxy (fake) idx response\n // to render static pages without initiating idx pipeline\n proxyIdxResponse: ['object', false],\n\n // \n // By default, state handle will be saved to session storage\n // and will be clear when terminal error or success redirect.\n // Set this flag to true if you want to override this behavior.\n // a.k.a dishonor the state handle stored in session storage.\n overrideExistingStateToken: ['boolean', false, false],\n\n // FEATURES\n 'features.router': ['boolean', true, false],\n 'features.securityImage': ['boolean', true, false],\n 'features.rememberMe': ['boolean', true, true],\n 'features.autoPush': ['boolean', true, false],\n 'features.smsRecovery': ['boolean', true, false],\n 'features.callRecovery': ['boolean', true, false],\n 'features.emailRecovery': ['boolean', false, true],\n 'features.webauthn': ['boolean', true, false],\n 'features.selfServiceUnlock': ['boolean', true, false],\n 'features.multiOptionalFactorEnroll': ['boolean', true, false],\n 'features.deviceFingerprinting': ['boolean', false, false],\n 'features.hideSignOutLinkInMFA': ['boolean', false, false],\n 'features.skipIdpFactorVerificationBtn': ['boolean', false, false],\n 'features.hideBackToSignInForReset': ['boolean', false, false],\n 'features.customExpiredPassword': ['boolean', true, false],\n 'features.registration': ['boolean', false, false],\n 'features.idpDiscovery': ['boolean', false, false],\n 'features.passwordlessAuth': ['boolean', false, false],\n 'features.showPasswordToggleOnSignInPage': ['boolean', false, false],\n 'features.trackTypingPattern': ['boolean', false, false],\n 'features.redirectByFormSubmit': ['boolean', false, false],\n 'features.useDeviceFingerprintForSecurityImage': ['boolean', false, true],\n 'features.showPasswordRequirementsAsHtmlList': ['boolean', false, false],\n 'features.mfaOnlyFlow': ['boolean', false, false],\n 'features.scrollOnError': ['boolean', false, true],\n 'features.showKeepMeSignedIn': ['boolean', false, true],\n 'features.showIdentifier': ['boolean', false, true],\n 'features.autoFocus': ['boolean', false, true],\n 'features.rememberMyUsernameOnOIE': ['boolean', false, false],\n 'features.showSessionRevocation': ['boolean', false, false],\n \n defaultCountryCode: ['string', false, 'US'],\n\n // I18N\n language: ['any', false], // Can be a string or a function\n i18n: ['object', false],\n\n // ASSETS\n 'assets.baseUrl': ['string', false],\n 'assets.rewrite': {\n type: 'function',\n value: _.identity,\n },\n 'assets.languages': ['array', false],\n\n // OAUTH2\n issuer: 'string',\n clientId: 'string',\n redirectUri: 'string',\n state: 'string',\n nonce: 'string',\n scopes: 'array',\n codeChallenge: 'string',\n codeChallengeMethod: ['string', false],\n oAuthTimeout: ['number', false],\n\n authScheme: ['string', false, 'OAUTH2'],\n\n // External IdPs\n idps: ['array', false, []],\n idpDisplay: {\n type: 'string',\n values: ['PRIMARY', 'SECONDARY'],\n value: 'SECONDARY',\n },\n\n // HELP LINKS\n 'helpLinks.help': 'string',\n 'helpLinks.forgotPassword': 'string',\n 'helpLinks.unlock': 'string',\n 'helpLinks.custom': 'array',\n 'helpLinks.factorPage.href': 'string',\n 'helpLinks.factorPage.text': 'string',\n\n //Custom Buttons\n customButtons: ['array', false, []],\n\n //Registration\n policyId: 'string',\n 'registration.click': 'function',\n 'registration.parseSchema': 'function',\n 'registration.preSubmit': 'function',\n 'registration.postSubmit': 'function',\n\n //Consent\n 'consent.cancel': 'function',\n\n //IDP Discovery\n 'idpDiscovery.requestContext': 'string',\n\n //Colors\n 'colors.brand': 'string',\n\n //Descriptions\n brandName: 'string',\n\n //PIV\n piv: ['object', false, {}],\n\n //Email verify callback\n otp: 'string',\n\n //Support classic engine\n useClassicEngine: ['boolean', false, false]\n};\n\nconst derived: Record = {\n backToSignInUri: {\n deps: ['backToSignInLink', 'signOutLink'],\n fn: function(backToSignInLink, signOutLink) {\n return backToSignInLink || signOutLink; // prefer backToSignInLink over signOutLink, but they are aliases\n }\n },\n showPasswordToggle: {\n deps: ['features.showPasswordToggleOnSignInPage'],\n fn: function() {\n // showPasswordToggle is for OIE only.\n // Used to default showPasswordToggleOnSignInPage to true.\n const defaultValue = true;\n const customizedValue = this.options?.features?.showPasswordToggleOnSignInPage ??\n this.options?.['features.showPasswordToggleOnSignInPage'];\n return customizedValue ?? defaultValue;\n },\n cache: true,\n },\n redirectUtilFn: {\n deps: ['features.redirectByFormSubmit'],\n fn: function(redirectByFormSubmit) {\n return redirectByFormSubmit ? Util.redirectWithFormGet.bind(Util) : SharedUtil.redirect.bind(SharedUtil);\n },\n cache: true,\n },\n supportedLanguages: {\n deps: ['i18n', 'language', 'assets.languages'],\n fn: function(i18n, language, hostedLanguages) {\n // By default, the language be automatically detected from the browser\n // Developers can specify the language. It will be added to the supportedLanguages list.\n // Developers can also provide a list of languages with hosted assets, these replace the default list\n const supportedLanguages = hostedLanguages || config.supportedLanguages;\n return _.union(\n supportedLanguages, \n _.keys(i18n), \n _.isString(language) ? [language] : []\n );\n },\n cache: true,\n },\n languageCode: {\n deps: ['language', 'supportedLanguages'],\n fn: function(language, supportedLanguages) {\n const userLanguages = BrowserFeatures.getUserLanguages();\n\n // TODO: revisit this fix - OKTA-491150\n userLanguages.forEach((val, idx) => {\n if (val === 'nl') {\n userLanguages[idx] = 'nl-NL';\n }\n else if (val === 'pt') {\n userLanguages[idx] = 'pt-BR';\n }\n });\n \n const preferred = _.clone(userLanguages);\n\n const supportedLowerCase = Util.toLower(supportedLanguages);\n\n // Any developer defined \"language\" takes highest priority:\n // As a string, i.e. 'en', 'ja', 'zh-CN'\n if (_.isString(language)) {\n preferred.unshift(language);\n } else if (_.isFunction(language)) {\n // As a callback function, which is passed the list of supported\n // languages and detected user languages. This function must return\n // a languageCode, i.e. 'en', 'ja', 'zh-CN'\n preferred.unshift(language(supportedLanguages, userLanguages));\n }\n\n // Add default language, and expand to include any language\n // codes that do not include region, dialect, etc.\n preferred.push(config.defaultLanguage);\n const expanded = Util.toLower(Util.expandLanguages(preferred));\n\n // Perform a case insensitive search - this is necessary in the case\n // of browsers like Safari\n let i;\n let supportedPos;\n\n for (i = 0; i < expanded.length; i++) {\n supportedPos = supportedLowerCase.indexOf(expanded[i]);\n if (supportedPos > -1) {\n return supportedLanguages[supportedPos];\n }\n }\n },\n },\n countryCode: {\n deps: ['defaultCountryCode'],\n fn: function(defaultCountryCode) {\n const countries = CountryUtil.getCountries();\n return Object.keys(countries).includes(defaultCountryCode)\n ? defaultCountryCode : 'US';\n },\n },\n mode: {\n deps: ['codeChallenge'],\n fn: function(codeChallenge) {\n if (codeChallenge) {\n return 'remediation';\n }\n return 'relying-party';\n }\n },\n oauth2Enabled: {\n deps: ['clientId', 'authScheme', 'authClient'],\n fn: function(clientId, authScheme, authClient) {\n if (!clientId && authClient) {\n clientId = authClient.options.clientId;\n }\n return (!!clientId) && authScheme.toLowerCase() === 'oauth2';\n },\n cache: true,\n },\n // Redirect Uri to provide in the oauth API\n oauthRedirectUri: {\n deps: ['redirectUri'],\n fn: function(redirectUri) {\n if (redirectUri) {\n return redirectUri;\n }\n\n let origin = window.location.origin;\n\n // IE8\n if (!origin) {\n const href = window.location.href;\n const path = window.location.pathname;\n\n if (path !== '') {\n origin = href.substring(0, href.lastIndexOf(path));\n }\n }\n\n return encodeURI(origin);\n },\n },\n // Adjusts the idps passed into the widget based on if they get explicit support\n configuredSocialIdps: {\n deps: ['idps'],\n fn: function(idps) {\n return _.map(idps, function(idpConfig) {\n const idp = _.clone(idpConfig);\n\n let type = idp.type && idp.type.toLowerCase();\n\n if (!(type && _.contains(IDP.SUPPORTED_SOCIAL_IDPS, type))) {\n type = 'general-idp';\n idp.text = idp.text || '{ Please provide a text value }';\n }\n\n idp.className = [\n 'social-auth-button',\n 'social-auth-' + type + '-button ',\n idp.className ? idp.className : '',\n ].join(' ');\n idp.dataAttr = 'social-auth-' + type + '-button';\n idp.i18nKey = 'socialauth.' + type + '.label';\n return idp;\n });\n },\n cache: true,\n },\n // Can support piv authentication\n hasPivCard: {\n deps: ['piv'],\n fn: function(piv) {\n return piv && piv.certAuthUrl;\n },\n cache: true,\n },\n // social auth buttons order - 'above'/'below' the primary auth form (boolean)\n socialAuthPositionTop: {\n deps: ['configuredSocialIdps', 'hasPivCard', 'idpDisplay'],\n fn: function(configuredSocialIdps, hasPivCard, idpDisplay) {\n return (!_.isEmpty(configuredSocialIdps) || hasPivCard) && idpDisplay.toUpperCase() === 'PRIMARY';\n },\n cache: true,\n },\n hasConfiguredButtons: {\n deps: ['configuredSocialIdps', 'customButtons', 'hasPivCard'],\n fn: function(configuredSocialIdps, customButtons, hasPivCard) {\n return !_.isEmpty(configuredSocialIdps) || !_.isEmpty(customButtons) || hasPivCard;\n },\n cache: true,\n }\n};\n\ntype SettingsProps = typeof local & typeof derived;\n\nexport default class Settings extends Model {\n authClient:OktaAuth;\n\n constructor(attributes, options) {\n // base class constructor will call preinitialize() and initialize() and compute derived properties\n super(attributes, options);\n\n // apply languageCode\n const authClient = this.getAuthClient();\n this.setAcceptLanguageHeader(authClient);\n }\n\n get>(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n initialize(options) {\n options = options || {};\n const { colors, authClient } = options;\n let { baseUrl } = options;\n\n if (!baseUrl) {\n // infer baseUrl from the issuer\n // favor authClient API first\n if (authClient) {\n baseUrl = authClient.getIssuerOrigin();\n } else {\n // issuer can also be passed a top-level option or exist in authParams\n const { authParams } = options;\n let { issuer } = options;\n issuer = issuer || authParams?.issuer;\n baseUrl = issuer?.split('/oauth2/')[0];\n }\n this.set('baseUrl', baseUrl);\n }\n\n if (!baseUrl) {\n this.callGlobalError(new ConfigError(loc('error.required.baseUrl')));\n } else if (colors && _.isString(colors.brand) && !colors.brand.match(/^#[0-9A-Fa-f]{6}$/)) {\n this.callGlobalError(new ConfigError(loc('error.invalid.colors.brand')));\n } else if (BrowserFeatures.corsIsNotSupported()) {\n this.callGlobalError(new UnsupportedBrowserError(loc('error.unsupported.cors')));\n }\n }\n\n setAcceptLanguageHeader(authClient) {\n if (authClient) {\n authClient.http.setRequestHeader('Accept-Language', this.get('languageCode'));\n }\n }\n\n setAuthClient(authClient) {\n this.set('authClient', authClient);\n this.setAcceptLanguageHeader(authClient);\n }\n\n getAuthClient() {\n return this.get('authClient');\n }\n\n set(...args: any[]) {\n try {\n return Model.prototype.set.apply(this, args);\n } catch (e) {\n const message = e.message ? e.message : e;\n\n this.callGlobalError(new ConfigError(message));\n }\n }\n\n // Invokes the global success function. This should only be called on a\n // terminal part of the code (i.e. authStatus SUCCESS or after sending\n // a recovery email)\n callGlobalSuccess(status, data) {\n const res = _.extend(data, { status: status });\n // Defer this to ensure that our functions have rendered completely\n // before invoking their function\n\n _.defer(_.partial(this.get('globalSuccessFn'), res));\n }\n\n // Invokes the global error function. This should only be called on non\n // recoverable errors (i.e. configuration errors, browser unsupported\n // errors, etc)\n callGlobalError(err) {\n const globalErrorFn = this.get('globalErrorFn') || this.options.globalErrorFn;\n // Note: Must use \"this.options.globalErrorFn\" when they've passed invalid\n // arguments - globalErrorFn will not have been set yet\n\n if (globalErrorFn) {\n globalErrorFn(err);\n } else {\n // Only throw the error if they have not registered a globalErrorFn\n throw err;\n }\n }\n\n // Get the username by applying the transform function if it exists.\n transformUsername(username, operation) {\n const transformFn = this.get('transformUsername');\n\n if (transformFn && _.isFunction(transformFn)) {\n return transformFn(username, operation);\n }\n return username;\n }\n\n processCreds(creds) {\n const processCreds = this.get('processCreds');\n\n return Q.Promise(function(resolve) {\n if (!_.isFunction(processCreds)) {\n resolve();\n } else if (processCreds.length === 2) {\n processCreds(creds, resolve);\n } else {\n processCreds(creds);\n resolve();\n }\n });\n }\n\n parseRegistrationSchema(schema, onSuccess, onFailure) {\n const parseSchema = this.get('registration.parseSchema');\n\n //check for parseSchema callback\n if (_.isFunction(parseSchema)) {\n parseSchema(\n schema,\n function(schema) {\n onSuccess(schema);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'parseSchema';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(schema);\n }\n }\n\n preRegistrationSubmit(postData, onSuccess, onFailure) {\n const preSubmit = this.get('registration.preSubmit');\n\n //check for preSubmit callback\n if (_.isFunction(preSubmit)) {\n preSubmit(\n postData,\n function(postData) {\n onSuccess(postData);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'preSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(postData);\n }\n }\n\n postRegistrationSubmit(response, onSuccess, onFailure) {\n const postSubmit = this.get('registration.postSubmit');\n\n //check for postSubmit callback\n if (_.isFunction(postSubmit)) {\n postSubmit(\n response,\n function(response) {\n onSuccess(response);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'postSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(response);\n }\n }\n\n // Use the parse function to transform config options to the standard\n // settings we currently support. This is a good place to deprecate old\n // option formats.\n parse(options) {\n if (options.labels || options.country) {\n Logger.deprecate('Use \"i18n\" instead of \"labels\" and \"country\"');\n const overrides = options.labels || {};\n\n _.each(options.country, function(val, key) {\n overrides['country.' + key] = val;\n });\n // Old behavior is to treat the override as a global override, so we\n // need to add these overrides to each language\n options.i18n = {};\n _.each(config.supportedLanguages, function(language) {\n options.i18n[language] = overrides;\n });\n delete options.labels;\n delete options.country;\n }\n\n // Default the assets.baseUrl to the cdn, or remove any trailing slashes\n if (!options.assets) {\n options.assets = {};\n }\n const abu = options.assets.baseUrl;\n\n if (!abu) {\n options.assets.baseUrl = assetBaseUrlTpl({ version: config.version });\n } else if (abu[abu.length - 1] === '/') {\n options.assets.baseUrl = abu.substring(0, abu.length - 1);\n }\n\n return options;\n }\n\n isDsTheme() {\n return false;\n }\n\n}\n","\n// Default router factory will detect between classic and OIE pipeline\nimport Util from 'util/Util';\nimport V1Router from 'v1/LoginRouter';\nimport V2Router from 'v2/WidgetRouter';\n\nimport { RouterConstructor, WidgetOptions } from 'types';\n\n\nexport function routerClassFactory(options: WidgetOptions) {\n let Router: RouterConstructor;\n\n // V1 (\"classic\") flow will load under these conditions:\n const v1DefaultFlow = (!options.stateToken && !options.clientId && !options.proxyIdxResponse); // Default entry flow on okta-hosted login page\n const v1StateTokenFlow = options.stateToken && Util.isV1StateToken(options.stateToken); // Resuming a flow on okta-hosted login page\n const v1AuthFlow = (options.clientId && options.useClassicEngine === true); // Self hosted widget can set the `useClassicEngine` option to use V1Router\n\n if (v1DefaultFlow || v1StateTokenFlow || v1AuthFlow) {\n Router = V1Router;\n } else {\n Router = V2Router;\n }\n return Router;\n}\n","export * from './appState';\nexport * from './api';\nexport * from './authClient';\nexport * from './errors';\nexport * from './events';\nexport * from './registration';\nexport * from './options';\nexport * from './results';\nexport * from './router';\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst fn: Record any> = {};\nconst hasFullCorsSupport = 'withCredentials' in new window.XMLHttpRequest();\nconst hasXDomainRequest = typeof window.XDomainRequest !== 'undefined';\n\nfn.corsIsNotSupported = function() {\n return !(hasFullCorsSupport || hasXDomainRequest);\n};\n\nfn.corsIsNotEnabled = function(jqXhr) {\n // Not a definitive check, but it's the best we've got.\n // Note: This will change when OktaAuth is updated\n return jqXhr.status === 0;\n};\n\n// This is currently not being used, but we'll keep it around for when we\n// want a fallback mechanism - i.e. use localStorage if it exists, else fall\n// back to cookies.\nfn.localStorageIsNotSupported = function() {\n const test = 'test';\n\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return false;\n } catch (e) {\n return true;\n }\n};\n\nfn.supportsPushState = function(win) {\n win = win || window;\n return !!(win.history && win.history.pushState);\n};\n\nfn.isIE = function() {\n return /(msie|trident)/i.test(navigator.userAgent);\n};\n\nfn.isFirefox = function() {\n return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n};\n\nfn.isEdge = function() {\n // This is to just check for windows edge. Mac edge - chromium based's UA is 'edg'.\n return navigator.userAgent.toLowerCase().indexOf('edge') > -1;\n};\n\nfn.isSafari = function() {\n // Chrome has safari in its useragent string so adding this extra check.\n return (\n navigator.userAgent.toLowerCase().indexOf('safari') > -1 &&\n navigator.userAgent.toLowerCase().indexOf('chrome') === -1\n );\n};\n\nfn.isMac = function() {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n};\n\n\nfn.isAndroid = function() {\n // Windows Phone also contains \"Android\"\n return /android/i.test(navigator.userAgent) &&\n !/windows phone/i.test(navigator.userAgent);\n};\n\nfn.isIOS = function() {\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n};\n\n// Returns a list of languages the user has configured for their browser, in\n// order of preference.\nfn.getUserLanguages = function() {\n // Chrome, Firefox\n if (navigator.languages) {\n return [...navigator.languages];\n }\n\n const languages = [];\n const properties = [\n 'language', // Safari, IE11\n 'userLanguage', // IE\n 'browserLanguage', // IE\n 'systemLanguage' // IE\n ];\n\n properties.forEach(function(property) {\n if (navigator[property]) {\n languages.push(navigator[property]);\n }\n });\n\n return languages;\n};\n\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport config from 'config/config.json';\nimport fetch from 'cross-fetch';\nimport country from 'nls/country.json';\nimport login from 'nls/login.json';\nimport Q from 'q';\nimport { _ } from 'okta';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Logger from 'util/Logger';\nconst STORAGE_KEY = 'osw.languages';\n\ndeclare type i18nOptions = {\n [localeOrCountry: string]: {\n [i18nKey: string]: string;\n }\n}\n\ndeclare type Assets = {\n baseUrl: string;\n rewrite(origPath: string): string;\n}\n\n/**\n * Converts options to our internal format, which distinguishes between\n * login and country bundles.\n *\n * Example options.i18n passed in by the developer:\n * {\n * 'en': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * 'country.JP' = 'Japan, Japan'\n * }\n * }\n *\n * Parsed:\n * {\n * 'en': {\n * 'login': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * },\n * 'country': {\n * 'JP': 'Japan, Japan'\n * }\n * }\n * }\n */\nfunction parseOverrides(i18n) {\n if (!i18n) {\n return {};\n }\n\n const i18nWithLowerCaseKeys = {};\n\n _.each(_.keys(i18n), function(key) {\n i18nWithLowerCaseKeys[key.toLowerCase()] = i18n[key];\n });\n\n return _.mapObject(i18nWithLowerCaseKeys, function(props) {\n const mapped = { login: {}, country: {} };\n\n if (!_.isObject(props)) {\n throw new Error('Invalid format for \"i18n\"');\n }\n _.each(props, function(val, key) {\n const split = key.split(/^country\\./);\n\n if (split.length > 1) {\n mapped.country[split[1]] = val;\n } else {\n mapped.login[split[0]] = val;\n }\n });\n return mapped;\n });\n}\n\n// Caching: We only bundle English by default in the Sign-In Widget. Other\n// languages are loaded on demand and cached in localStorage. These languages\n// are tied to the version of the widget - when it bumps, we reset the cache.\n\nfunction getCachedLanguages() {\n let storage = JSON.parse(localStorage.getItem(STORAGE_KEY));\n\n if (!storage || storage.version !== config.version) {\n storage = {\n version: config.version,\n };\n }\n return storage;\n}\n\nfunction addLanguageToCache(language, loginJson, countryJson) {\n const current = getCachedLanguages();\n\n current[language] = {\n login: loginJson,\n country: countryJson,\n };\n localStorage.setItem(STORAGE_KEY, JSON.stringify(current));\n}\n\n// By default, the assets.bundleUrl is tied to the Okta CDN.\n//\n// There are two overrides available for modifying where we load the asset\n// bundles from:\n//\n// 1. assets.baseUrl\n//\n// This is the base path the OSW pulls assets from, which in this case is\n// the Okta CDN. Override this config option if you want to host the\n// files on your own domain, or if you're using a new version of the\n// widget whose language files haven't been published to the CDN yet.\n//\n// 2. assets.rewrite\n//\n// This is a function that can be used to modify the path + fileName of\n// the bundle we're loading, relative to the baseUrl. When called, it\n// will pass the current path, and expect the new path to be returned.\n// This is useful, for example, if your build process has an extra\n// cachebusting step, i.e:\n//\n// function rewrite(file) {\n// // file: /labels/json/login_ja.json\n// return file.replace('.json', '.' + md5file(file) + '.json');\n// }\n//\n// Note: Most developers will not need to use these overrides - the default\n// is to use the Okta CDN and to use the same path + file structure the\n// widget module publishes by default.\nfunction fetchJson(bundle, language, assets) {\n // Our bundles use _ to separate country and region, i.e:\n // zh-CN -> zh_CN\n const languageCode = language.replace('-', '_');\n\n const path = assets.rewrite(encodeURI(`/labels/json/${bundle}_${languageCode}.json`));\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'text/plain',\n };\n\n const mode = 'no-cors';\n\n return fetch(assets.baseUrl + path, {\n method: 'GET',\n headers,\n mode,\n })\n .then(res => res.text())\n .then(txt => JSON.parse(txt));\n}\n\nfunction getBundles(language, assets, supportedLanguages) {\n // Two special cases:\n // 1. Default language is already bundled with the widget\n // 2. If the language is not in our config file, it means that they've\n // probably defined it on their own.\n if (language === config.defaultLanguage || !_.contains(supportedLanguages, language)) {\n return Q({});\n }\n\n //local storage does not work correctly with android web views (embeded browers)\n //so skip the caching and just make the request to get the local info\n const localStorageIsSupported = !BrowserFeatures.localStorageIsNotSupported();\n\n if (localStorageIsSupported) {\n const cached = getCachedLanguages();\n\n if (cached[language]) {\n return Q(cached[language]);\n }\n }\n\n return Q.all([fetchJson('login', language, assets), fetchJson('country', language, assets)])\n .spread(function(loginJson, countryJson) {\n if (localStorageIsSupported) {\n addLanguageToCache(language, loginJson, countryJson);\n }\n return { login: loginJson, country: countryJson };\n })\n .catch(function() {\n // If there is an error, this will default to the bundled language and\n // we will no longer try to load the language this session.\n Logger.warn('Unable to load language: ' + language);\n return {};\n });\n}\n\nexport default {\n login: login,\n country: country,\n // Courage components within the sign in widget point to courage bundle to look\n // up i18nkeys. Since we dont have courage.properties inside the sign in widget\n // we are pointing courage bundle to login.\n courage: login,\n\n currentLanguage: null,\n\n isLoaded: function(language: string): boolean {\n return this.currentLanguage === language;\n },\n\n remove: function(): void {\n this.currentLanguage = null;\n },\n\n loadLanguage: function(language: string, overrides: i18nOptions, assets: Assets, supportedLanguages: string[]): Q.Promise {\n const parsedOverrides = parseOverrides(overrides);\n const lowerCaseLanguage = language.toLowerCase();\n return getBundles(language, assets, supportedLanguages).then(bundles => {\n // Always extend from the built in defaults in the event that some\n // properties are not translated\n this.login = _.extend({}, login, bundles.login);\n this.country = _.extend({}, country, bundles.country);\n this.courage = _.extend({}, login, bundles.login);\n if (parsedOverrides[lowerCaseLanguage]) {\n _.extend(this.login, parsedOverrides[lowerCaseLanguage]['login']);\n _.extend(this.country, parsedOverrides[lowerCaseLanguage]['country']);\n _.extend(this.courage, parsedOverrides[lowerCaseLanguage]['login']);\n }\n this.currentLanguage = language;\n });\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from 'okta';\nimport Enums from './Enums';\nimport { ErrorXHR, ErrorContextData } from 'types/errors';\nimport { FlowIdentifier } from '@okta/okta-auth-js';\n\nabstract class CustomError extends Error {\n constructor(message?: string) {\n super(message);\n\n // 'Error' breaks prototype chain. Need to restore it for ES5.\n // https://github.com/microsoft/TypeScript/wiki/FAQ#why-doesnt-extending-built-ins-like-error-array-and-map-work\n // Note: no need to adjust prototype in subclasses of 'CustomError'.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class ConfigError extends CustomError {\n name = Enums.CONFIG_ERROR;\n constructor(message?: string) {\n super(message || loc('error.config'));\n }\n}\n\nexport class UnsupportedBrowserError extends CustomError {\n name = Enums.UNSUPPORTED_BROWSER_ERROR;\n constructor(message?: string) {\n super(message || loc('error.unsupported.browser'));\n }\n}\n\nexport class OAuthError extends CustomError {\n name = Enums.OAUTH_ERROR;\n}\n\nexport class RegistrationError extends CustomError {\n name = Enums.REGISTRATION_FAILED;\n}\n\n// Thrown when initiation of poll was cancelled.\nexport class AuthStopPollInitiationError extends CustomError {\n name = Enums.AUTH_STOP_POLL_INITIATION_ERROR;\n}\n\nexport class U2FError extends CustomError {\n xhr: ErrorXHR;\n name = Enums.U2F_ERROR;\n constructor(err: ErrorContextData) {\n super(err.xhr.responseJSON.errorSummary);\n this.xhr = err.xhr;\n }\n}\n\nexport class WebAuthnError extends CustomError {\n xhr: ErrorXHR;\n name = Enums.WEB_AUTHN_ERROR;\n constructor(err: ErrorContextData) {\n super(err.xhr.responseJSON.errorSummary);\n this.xhr = err.xhr;\n }\n}\n\n// This is triggered only when code aborts webauthn browser prompt.\nexport class WebauthnAbortError extends CustomError {\n name = Enums.WEBAUTHN_ABORT_ERROR;\n}\n\nexport class ConfiguredFlowError extends CustomError {\n flowSetting: FlowIdentifier;\n name = Enums.CONFIGURED_FLOW_ERROR;\n constructor(message: string, flowSetting: FlowIdentifier) {\n super(message);\n this.flowSetting = flowSetting;\n }\n}\n","import { loc } from 'okta';\n\nimport { AuthSdkError, OAuthError as SdkOAuthError} from '@okta/okta-auth-js';\nimport { OAuthError } from './Errors';\nimport { ErrorDetails } from 'types/errors';\n\ntype ErrorTraits = 'inline' | 'terminal';\n\ntype ErrorType = {\n [key in ErrorTraits]?: boolean;\n};\n\nclass InlineErrorType implements ErrorType {\n inline = true;\n}\n\nclass TerminalErrorType implements ErrorType {\n terminal = true;\n}\n\nclass TypedOAuthError extends OAuthError {\n errorType: T;\n orginalError: AuthSdkError | SdkOAuthError;\n errorDetails: ErrorDetails\n\n constructor(originalError, errorTypeCtor: new () => T) {\n super(originalError.message);\n this.errorType = new errorTypeCtor();\n this.orginalError = originalError;\n\n this.errorDetails = {\n errorSummary: this.getErrorSummary(),\n errorCode: originalError.errorCode,\n errorCauses: originalError.errorCauses,\n }\n }\n\n protected getErrorSummary() {\n return this.orginalError.errorSummary;\n }\n\n public is(errorTrait: ErrorTraits) {\n return Boolean(Object.getOwnPropertyDescriptor(this.errorType, errorTrait as PropertyKey)?.value);\n }\n}\n\nclass RecoverableError extends TypedOAuthError {\n \n}\n\nclass NonRecoverableError extends TypedOAuthError {\n \n}\n\nclass ClockDriftError extends RecoverableError {\n constructor(error) {\n super(error, TerminalErrorType);\n }\n\n getErrorSummary(): string {\n return loc('error.unsynced.clock', 'login');\n }\n}\n\nclass UserNotAssignedError extends RecoverableError {\n constructor(error) {\n super(error, InlineErrorType);\n }\n}\n\nclass JITProfileProvisioningError extends RecoverableError {\n constructor(error) {\n super(error, InlineErrorType);\n }\n getErrorSummary(): string {\n return loc('error.jit_failure', 'login');\n }\n}\n\nclass MfaRequiredError extends NonRecoverableError {\n constructor(error) {\n super(error, InlineErrorType);\n }\n\n getErrorSummary(): string {\n return loc('error.mfa.required', 'login');\n }\n}\n\nfunction getTypedOAuthError(error: AuthSdkError | SdkOAuthError) {\n switch(error.errorCode) {\n case 'access_denied':\n return new UserNotAssignedError(error);\n\n case 'jit_failure_missing_fields':\n case 'jit_failure_invalid_login_format':\n case 'jit_failure_values_not_match_pattern':\n case 'jit_failure_values_too_long':\n case 'jit_failure_invalid_locale':\n return new JITProfileProvisioningError(error);\n\n case 'login_required':\n const mfaRequiredMsg = 'The client specified not to prompt, but the client app requires re-authentication or MFA.';\n if (error.message === mfaRequiredMsg) {\n return new MfaRequiredError(error);\n }\n\n case 'INTERNAL':\n const clockDriftMsg = 'The JWT was issued in the future';\n if (error.message === clockDriftMsg) {\n return new ClockDriftError(error);\n }\n\n default:\n return new RecoverableError(error, Object);\n }\n}\n\nexport {\n RecoverableError,\n NonRecoverableError,\n JITProfileProvisioningError,\n ClockDriftError,\n UserNotAssignedError,\n MfaRequiredError,\n TypedOAuthError,\n getTypedOAuthError\n}\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-params: 0 */\nimport AccountUnlockedController from 'v1/controllers/AccountUnlockedController';\nimport ActivateTotpController from 'v1/controllers/ActivateTotpController';\nimport AdminConsentRequiredController from 'v1/controllers/AdminConsentRequiredController';\nimport BarcodePushController from 'v1/controllers/BarcodePushController';\nimport BarcodeTotpController from 'v1/controllers/BarcodeTotpController';\nimport ConsentRequiredController from 'v1/controllers/ConsentRequiredController';\nimport CustomPasswordExpiredController from 'v1/controllers/CustomPasswordExpiredController';\nimport DeviceActivateController from 'v1/controllers/DeviceActivateController';\nimport DeviceActivateTerminalController from 'v1/controllers/DeviceActivateTerminalController';\nimport EnrollActivateCustomFactorController from 'v1/controllers/EnrollActivateCustomFactorController';\nimport EnrollActivateEmailController from 'v1/controllers/EnrollActivateEmailController';\nimport EnrollCallAndSmsController from 'v1/controllers/EnrollCallAndSmsController';\nimport EnrollChoicesController from 'v1/controllers/EnrollChoicesController';\nimport EnrollCustomFactorController from 'v1/controllers/EnrollCustomFactorController';\nimport EnrollDuoController from 'v1/controllers/EnrollDuoController';\nimport EnrollEmailController from 'v1/controllers/EnrollEmailController';\nimport EnrollHotpController from 'v1/controllers/EnrollHotpController';\nimport EnrollOnPremController from 'v1/controllers/EnrollOnPremController';\nimport EnrollPasswordController from 'v1/controllers/EnrollPasswordController';\nimport EnrollQuestionController from 'v1/controllers/EnrollQuestionController';\nimport EnrollSymantecVipController from 'v1/controllers/EnrollSymantecVipController';\nimport EnrollTotpController from 'v1/controllers/EnrollTotpController';\nimport EnrollU2FController from 'v1/controllers/EnrollU2FController';\nimport EnrollUserController from 'v1/controllers/EnrollUserController';\nimport EnrollWebauthnController from 'v1/controllers/EnrollWebauthnController';\nimport EnrollWindowsHelloController from 'v1/controllers/EnrollWindowsHelloController';\nimport EnrollYubikeyController from 'v1/controllers/EnrollYubikeyController';\nimport EnrollmentLinkSentController from 'v1/controllers/EnrollmentLinkSentController';\nimport EnterPasscodePushFlowController from 'v1/controllers/EnterPasscodePushFlowController';\nimport ForgotPasswordController from 'v1/controllers/ForgotPasswordController';\nimport IDPDiscoveryController from 'v1/controllers/IDPDiscoveryController';\nimport ForceIDPDiscoveryController from 'v1/controllers/ForceIDPDiscoveryController';\nimport ManualSetupPushController from 'v1/controllers/ManualSetupPushController';\nimport ManualSetupTotpController from 'v1/controllers/ManualSetupTotpController';\nimport MfaVerifyController from 'v1/controllers/MfaVerifyController';\nimport PasswordExpiredController from 'v1/controllers/PasswordExpiredController';\nimport PasswordResetController from 'v1/controllers/PasswordResetController';\nimport PollController from 'v1/controllers/PollController';\nimport PrimaryAuthController from 'v1/controllers/PrimaryAuthController';\nimport PwdResetEmailSentController from 'v1/controllers/PwdResetEmailSentController';\nimport RecoveryChallengeController from 'v1/controllers/RecoveryChallengeController';\nimport RecoveryLoadingController from 'v1/controllers/RecoveryLoadingController';\nimport RecoveryQuestionController from 'v1/controllers/RecoveryQuestionController';\nimport RefreshAuthStateController from 'v1/controllers/RefreshAuthStateController';\nimport RegistrationCompleteController from 'v1/controllers/RegistrationCompleteController';\nimport RegistrationController from 'v1/controllers/RegistrationController';\nimport UnlockAccountController from 'v1/controllers/UnlockAccountController';\nimport UnlockEmailSentController from 'v1/controllers/UnlockEmailSentController';\nimport VerifyCustomFactorController from 'v1/controllers/VerifyCustomFactorController';\nimport VerifyDuoController from 'v1/controllers/VerifyDuoController';\nimport VerifyPIVController from 'v1/controllers/VerifyPIVController';\nimport VerifyU2FController from 'v1/controllers/VerifyU2FController';\nimport VerifyWebauthnController from 'v1/controllers/VerifyWebauthnController';\nimport VerifyWindowsHelloController from 'v1/controllers/VerifyWindowsHelloController';\nimport ErrorStateController from 'v1/controllers/ErrorStateController';\nimport BaseLoginRouter from 'v1/BaseLoginRouter';\nimport FactorBeacon from 'v1/views/shared/FactorBeacon';\nimport PIVBeacon from 'v1/views/shared/PIVBeacon';\nimport SecurityBeacon from 'v1/views/shared/SecurityBeacon';\n\nimport Enums from 'util/Enums';\n\nexport default BaseLoginRouter.extend({\n routes: {\n '': 'defaultAuth',\n signin: 'primaryAuth',\n 'signin/okta/:username': 'primaryAuth',\n 'signin/verify/duo/web': 'verifyDuo',\n 'signin/verify/piv': 'verifyPIV',\n 'signin/poll': 'poll',\n 'signin/verify/fido/webauthn': 'verifyWebauthn',\n 'signin/verify/webauthn': 'verifyWebauthn',\n 'signin/verify/fido/u2f': 'verifyU2F',\n 'signin/verify/u2f': 'verifyU2F',\n 'signin/verify/generic_saml/assertion:saml2': 'verifySAMLFactor',\n 'signin/verify/generic_oidc/assertion:oidc': 'verifyOIDCFactor',\n 'signin/verify/custom/claims_provider': 'verifyClaimsFactor',\n 'signin/verify/:factorType': 'verifyNoProvider',\n 'signin/verify/:provider/:factorType(/:factorIndex)': 'verify',\n 'signin/enroll': 'enrollChoices',\n 'signin/enroll/duo/web': 'enrollDuo',\n 'signin/enroll/okta/question': 'enrollQuestion',\n 'signin/enroll/okta/password': 'enrollPassword',\n 'signin/enroll/okta/sms': 'enrollSms',\n 'signin/enroll/okta/call': 'enrollCall',\n 'signin/enroll/okta/email': 'enrollEmail',\n 'signin/enroll-activate/okta/sms': 'enrollSms',\n 'signin/enroll-activate/okta/call': 'enrollCall',\n 'signin/enroll/rsa/token': 'enrollRsa',\n 'signin/enroll/del_oath/token': 'enrollOnPrem',\n 'signin/enroll/symantec/token': 'enrollSymantecVip',\n 'signin/enroll/yubico/token:hardware': 'enrollYubikey',\n 'signin/enroll/fido/webauthn': 'enrollWebauthn',\n 'signin/enroll/fido/u2f': 'enrollU2F',\n 'signin/enroll/generic_saml/assertion:saml2': 'enrollSAMLFactor',\n 'signin/enroll/generic_oidc/assertion:oidc': 'enrollOIDCFactor',\n 'signin/enroll/custom/claims_provider': 'enrollClaimsFactor',\n 'signin/enroll/custom/token:hotp': 'enrollHotpFactor',\n 'signin/enroll/:provider/:factorType': 'enrollTotpFactor',\n 'signin/enroll-activate/okta/email': 'enrollActivateEmail',\n 'signin/enroll-activate/okta/push': 'scanBarcodePushFactor',\n 'signin/enroll-activate/okta/push/manual': 'manualSetupPushFactor',\n 'signin/enroll-activate/okta/push/sent': 'activationLinkSent',\n 'signin/enroll-activate/okta/token:software:totp/passcode': 'enterPasscodeInPushEnrollmentFlow',\n 'signin/enroll-activate/custom/claims_provider': 'enrollActivateClaimsFactor',\n 'signin/enroll-activate/:provider/:factorType': 'scanBarcodeTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/activate': 'activateTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/manual': 'manualSetupTotpFactor',\n 'signin/password-expired': 'passwordExpired',\n 'signin/custom-password-expired': 'customPasswordExpired',\n 'signin/forgot-password': 'forgotPassword',\n 'signin/recovery-challenge': 'recoveryChallenge',\n 'signin/recovery-emailed': 'recoveryEmailSent',\n 'signin/recovery-question': 'recoveryQuestion',\n 'signin/password-reset': 'passwordReset',\n 'signin/reset-password/:token': 'recoveryLoading',\n 'signin/user-unlock/:token': 'recoveryLoading',\n 'signin/recovery/:token': 'recoveryLoading',\n 'signin/unlock-emailed': 'unlockEmailSent',\n 'signin/unlock': 'unlockAccount',\n 'signin/account-unlocked': 'accountUnlocked',\n 'signin/refresh-auth-state(/:token)': 'refreshAuthState',\n 'signin/register': 'register',\n 'signin/register-complete': 'registerComplete',\n 'signin/error': 'errorState',\n 'signin/consent': 'consentRequired',\n 'signin/admin-consent': 'adminConsentRequired',\n 'signin/enroll-user': 'enrollUser',\n 'signin/device-activate-complete': 'deviceActivateComplete',\n 'signin/device-activate': 'deviceActivate',\n 'signin/idp-discovery-check': 'idpDiscoveryCheck',\n '*wildcard': 'defaultAuth',\n },\n\n // Route handlers that do not require a stateToken. If the page is refreshed,\n // these functions will not require a status call to refresh the stateToken.\n stateLessRouteHandlers: [\n 'defaultAuth',\n 'idpDiscovery',\n 'primaryAuth',\n 'forgotPassword',\n 'recoveryLoading',\n 'unlockAccount',\n 'refreshAuthState',\n 'register',\n 'registerComplete',\n 'errorState',\n 'verifyPIV',\n ],\n\n defaultAuth: function() {\n if (window.location.hash === `#${Enums.WIDGET_CONTAINER_ID}`) {\n document.getElementById(Enums.WIDGET_CONTAINER_ID).focus();\n return;\n }\n if (this.settings.get('features.idpDiscovery')) {\n this.idpDiscovery();\n } else {\n this.primaryAuth();\n }\n },\n\n idpDiscoveryCheck: function() {\n this.render(ForceIDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n idpDiscovery: function() {\n this.render(IDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n primaryAuth: function(username) {\n this.render(PrimaryAuthController, {\n Beacon: SecurityBeacon,\n username\n });\n },\n\n verifyDuo: function() {\n this.render(VerifyDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n verifyPIV: function() {\n this.render(VerifyPIVController, { Beacon: PIVBeacon });\n },\n\n poll: function() {\n this.render(PollController);\n },\n\n verifyWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(VerifyWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(VerifyWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n verifyU2F: function() {\n this.render(VerifyU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n verifySAMLFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n verifyOIDCFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n verifyClaimsFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n verify: function(provider, factorType, factorIndex) {\n this.render(MfaVerifyController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n factorIndex: factorIndex,\n Beacon: FactorBeacon,\n });\n },\n\n verifyNoProvider: function(factorType) {\n this.render(MfaVerifyController, {\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollChoices: function() {\n this.render(EnrollChoicesController, { Beacon: SecurityBeacon });\n },\n\n enrollDuo: function() {\n this.render(EnrollDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n enrollQuestion: function() {\n this.render(EnrollQuestionController, {\n provider: 'OKTA',\n factorType: 'question',\n Beacon: FactorBeacon,\n });\n },\n\n enrollPassword: function() {\n this.render(EnrollPasswordController, {\n provider: 'OKTA',\n factorType: 'password',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSms: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'sms',\n Beacon: FactorBeacon,\n });\n },\n\n enrollCall: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'call',\n Beacon: FactorBeacon,\n });\n },\n\n enrollEmail: function() {\n this.render(EnrollEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateEmail: function() {\n this.render(EnrollActivateEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollRsa: function() {\n this.render(EnrollOnPremController, {\n provider: 'RSA',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOnPrem: function() {\n this.render(EnrollOnPremController, {\n provider: 'DEL_OATH',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSymantecVip: function() {\n this.render(EnrollSymantecVipController, {\n provider: 'SYMANTEC',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollYubikey: function() {\n this.render(EnrollYubikeyController, {\n provider: 'YUBICO',\n factorType: 'token:hardware',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSAMLFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOIDCFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n enrollClaimsFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateClaimsFactor: function() {\n this.render(EnrollActivateCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollTotpFactor: function(provider, factorType) {\n this.render(EnrollTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollHotpFactor: function() {\n this.render(EnrollHotpController, {\n provider: 'CUSTOM',\n factorType: 'token:hotp',\n Beacon: FactorBeacon,\n });\n },\n\n enrollWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(EnrollWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(EnrollWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n enrollU2F: function() {\n this.render(EnrollU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodeTotpFactor: function(provider, factorType) {\n this.render(BarcodeTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodePushFactor: function() {\n this.render(BarcodePushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activateTotpFactor: function(provider, factorType) {\n this.render(ActivateTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupTotpFactor: function(provider, factorType) {\n this.render(ManualSetupTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupPushFactor: function() {\n this.render(ManualSetupPushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activationLinkSent: function() {\n this.render(EnrollmentLinkSentController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n enterPasscodeInPushEnrollmentFlow: function() {\n this.render(EnterPasscodePushFlowController, {\n provider: 'OKTA',\n factorType: 'token:software:totp',\n Beacon: FactorBeacon,\n });\n },\n\n passwordExpired: function() {\n this.render(PasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n customPasswordExpired: function() {\n this.render(CustomPasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n forgotPassword: function() {\n this.render(ForgotPasswordController);\n },\n\n recoveryChallenge: function() {\n this.render(RecoveryChallengeController, { Beacon: SecurityBeacon });\n },\n\n recoveryEmailSent: function() {\n this.render(PwdResetEmailSentController, { Beacon: SecurityBeacon });\n },\n\n unlockEmailSent: function() {\n this.render(UnlockEmailSentController, { Beacon: SecurityBeacon });\n },\n\n recoveryQuestion: function() {\n this.render(RecoveryQuestionController, { Beacon: SecurityBeacon });\n },\n\n passwordReset: function() {\n this.render(PasswordResetController, { Beacon: SecurityBeacon });\n },\n\n recoveryLoading: function(token) {\n this.render(RecoveryLoadingController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n unlockAccount: function() {\n this.render(UnlockAccountController);\n },\n\n accountUnlocked: function() {\n this.render(AccountUnlockedController, { Beacon: SecurityBeacon });\n },\n\n refreshAuthState: function(token) {\n this.render(RefreshAuthStateController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n register: function() {\n this.render(RegistrationController);\n },\n\n registerComplete: function() {\n this.render(RegistrationCompleteController);\n },\n\n errorState: function() {\n this.render(ErrorStateController, { Beacon: SecurityBeacon });\n },\n\n consentRequired: function() {\n this.render(ConsentRequiredController);\n },\n\n adminConsentRequired: function() {\n this.render(AdminConsentRequiredController);\n },\n\n enrollUser: function() {\n this.render(EnrollUserController);\n },\n\n deviceActivate: function() {\n this.render(DeviceActivateController);\n },\n deviceActivateComplete: function() {\n this.render(DeviceActivateTerminalController);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Animations from 'util/Animations';\nimport LoadingBeacon from 'v1/views/shared/LoadingBeacon';\nconst NO_BEACON_CLS = 'no-beacon';\nconst LOADING_BEACON_CLS = 'beacon-small beacon-loading';\n\nfunction isLoadingBeacon(beacon) {\n return beacon && beacon.equals(LoadingBeacon);\n}\n\nfunction removeBeacon(view) {\n // There are some timing issues with removing beacons (i.e. the case of\n // transitioning from loadingBeacon -> loadingBeacon)\n if (!view.currentBeacon) {\n return;\n }\n view.currentBeacon.remove();\n view.currentBeacon = null;\n}\n\nfunction addBeacon(view, NextBeacon, selector, options) {\n view.add(NextBeacon, {\n selector: selector,\n options: options,\n });\n view.currentBeacon = view.first();\n}\n\nfunction typeOfTransition(currentBeacon, NextBeacon, options) {\n if (!currentBeacon && !NextBeacon) {\n return 'none';\n }\n // Show Loading beacon\n if (!currentBeacon && options.loading) {\n return 'load';\n }\n // Swap/Hide Loading beacon\n if (currentBeacon && isLoadingBeacon(currentBeacon)) {\n return NextBeacon ? 'swap' : 'unload';\n }\n if (currentBeacon && currentBeacon.equals(NextBeacon, options)) {\n return 'same';\n }\n if (!currentBeacon && NextBeacon) {\n return 'add';\n }\n if (currentBeacon && !NextBeacon) {\n return 'remove';\n }\n if (currentBeacon instanceof NextBeacon) {\n return 'fade';\n }\n // If none of the above\n // then we are changing the type of beacon\n // ex. from SecurityBeacon to FactorBeacon\n return 'swap';\n}\n\nexport default class Header extends View {\n currentBeacon;\n \n preinitialize(...args) {\n this.currentBeacon = null;\n /* eslint-disable @okta/okta/no-unlocalized-text-in-templates */\n this.template = hbs(\n '\\\n \\\n
          \\\n '\n );\n /* eslint-enable @okta/okta/no-unlocalized-text-in-templates */\n View.prototype.preinitialize.apply(this, args);\n }\n\n\n // Attach a 'no-beacon' class if the security image feature\n // is not passed in to prevent the beacon from jumping.\n initialize(options) {\n if (!options.settings.get('features.securityImage')) {\n this.$el.addClass(NO_BEACON_CLS);\n // To show/hide the spinner when there is no security image,\n // listen to the appState's loading/removeLoading events.\n this.listenTo(options.appState, 'loading', this.setLoadingBeacon);\n this.listenTo(options.appState, 'removeLoading', this.removeLoadingBeacon);\n }\n }\n\n /* eslint complexity: 0 */\n setBeacon(NextBeacon, options) {\n const selector = '[data-type=\"beacon-container\"]';\n const container = this.$(selector);\n const transition = typeOfTransition(this.currentBeacon, NextBeacon, options);\n\n switch (transition) {\n case 'none':\n this.$el.addClass(NO_BEACON_CLS);\n return;\n case 'same':\n return;\n case 'add':\n this.$el.removeClass(NO_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'remove':\n this.$el.addClass(NO_BEACON_CLS);\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n case 'fade':\n // Other transitions are performed on the beacon container,\n // but this transition is on the content inside the beacon.\n // For a SecurityBeacon the username change will update the\n // AppState and trigger an transition to a new Becon\n // Since there is no url change this method is not called.\n // For a FactorBeacon a page refresh has occurred\n // so we execute the beacon's own transition method.\n if (!this.currentBeacon.fadeOut) {\n throw new Error('The current beacon is missing the \"fadeOut\" method');\n }\n options.animate = true;\n return this.currentBeacon\n .fadeOut()\n .then(() => {\n removeBeacon(this);\n addBeacon(this, NextBeacon, selector, options);\n })\n .done(); // TODO: can this be removed if fadeOut returns standard ES6 Promise?\n case 'swap':\n return Animations.swapBeacons({\n $el: container,\n swap: () => {\n const isLoading = isLoadingBeacon(this.currentBeacon);\n\n // Order of these calls is important for -\n // loader --> security/factor beacon swap.\n removeBeacon(this);\n if (isLoading) {\n container.removeClass(LOADING_BEACON_CLS);\n this.$el.removeClass(NO_BEACON_CLS);\n }\n addBeacon(this, NextBeacon, selector, options);\n },\n }).done(); // TODO: can this be removed if Animations.swapBeacons returns standard ES6 Promise?\n case 'load':\n // Show the loading beacon. Add a couple of classes\n // before triggering the add beacon code.\n container.addClass(LOADING_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'unload':\n // Hide the loading beacon.\n return this.removeLoadingBeacon();\n default:\n throw new Error('the \"' + transition + '\" is not recognized');\n }\n }\n\n // Show the loading beacon when the security image feature is not enabled.\n setLoadingBeacon(isLoading) {\n if (!isLoading || isLoadingBeacon(this.currentBeacon)) {\n return;\n }\n this.setBeacon(LoadingBeacon, { loading: true });\n }\n\n // Hide the beacon on primary auth failure. On primary auth success, setBeacon does this job.\n removeLoadingBeacon() {\n const container = this.$('[data-type=\"beacon-container\"]');\n\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n container.removeClass(LOADING_BEACON_CLS);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n }\n\n getTemplateData() {\n return this.settings.toJSON({ verbose: true });\n }\n\n getContentEl() {\n return this.$('.auth-content-inner');\n }\n}\n","/* eslint max-depth: [1,4] */\n/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc, BaseRouterOptions } from 'okta';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport ColorsUtil from 'util/ColorsUtil';\nimport Enums from 'util/Enums';\nimport { ConfigError } from 'util/Errors';\nimport Logger from 'util/Logger';\nimport LanguageUtil from 'util/LanguageUtil';\nimport AuthContainer from 'v1/views/shared/AuthContainer';\nimport Header from 'v1/views/shared/Header';\nimport AppState from './models/AppState';\nimport sessionStorageHelper from './client/sessionStorageHelper';\nimport {\n startLoginFlow,\n handleConfiguredFlow,\n updateAppState,\n} from './client';\n\nimport CookieUtil from 'util/CookieUtil';\nimport { formatError, LegacyIdxError, StandardApiError } from './client/formatError';\nimport { RenderError, RenderResult } from 'types';\nimport { OktaAuth, IdxResponse } from '@okta/okta-auth-js';\nimport Hooks from 'models/Hooks';\nimport IonHelper from './ion/IonResponseHelper';\n\nexport interface BaseLoginRouterOptions extends BaseRouterOptions, Backbone.RouterOptions {\n globalSuccessFn?: (res: RenderResult) => void;\n globalErrorFn?: (res: RenderError) => void;\n authClient?: OktaAuth;\n hooks: Hooks\n}\n\nclass BaseLoginRouter extends Router {\n Events: Backbone.Events = Backbone.Events; // also set on prototype\n hasControllerRendered = false;\n settings: Settings;\n appState: AppState;\n hooks: Hooks;\n header: Header;\n\n constructor(options: BaseLoginRouterOptions) {\n super(options);\n\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() { /* dummy function */ };\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el', 'hooks'), { parse: true });\n\n if (!options.el) {\n this.settings.callGlobalError(new ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.hooks = options.hooks;\n this.appState = new AppState({}, {\n settings: this.settings,\n hooks: this.hooks\n });\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:deviceFingerprint', this.updateDeviceFingerprint);\n this.listenTo(this.appState, 'restartLoginFlow', this.restartLoginFlow);\n }\n\n updateDeviceFingerprint() {\n const authClient = this.settings.getAuthClient();\n const fingerprint = this.appState.get('deviceFingerprint');\n if (fingerprint) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', fingerprint);\n }\n }\n\n async handleIdxResponseFailure(error: LegacyIdxError = { error: 'unknown', details: undefined }) {\n // IDX errors will not call the global error handler\n error = formatError(error);\n await updateAppState(this.appState, error.details);\n }\n\n // Generic error handler for all exceptions\n async handleError(error: LegacyIdxError | StandardApiError | Error = { error: 'unknown', details: undefined }) {\n const formattedError = formatError({...error}); // format the error to resemble an IDX response\n await updateAppState(this.appState, formattedError.details);\n }\n\n /* eslint max-statements: [2, 36], complexity: [2, 16] */\n async render(Controller, options = {}) {\n // If url changes then widget assumes that user's intention was to initiate a new login flow,\n // so clear stored token to use the latest token.\n if (sessionStorageHelper.getLastInitiatedLoginUrl() !== window.location.href) {\n sessionStorageHelper.removeStateHandle();\n }\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.settings.get('languageCode'))) {\n await LanguageUtil.loadLanguage(this.appState, this.settings);\n }\n\n let error;\n try {\n let idxResp = await startLoginFlow(this.settings);\n if (idxResp.error) {\n await this.handleIdxResponseFailure(idxResp.error);\n } else {\n if (this.settings.get('flow') && !this.hasControllerRendered) {\n idxResp = await handleConfiguredFlow(idxResp, this.settings);\n }\n\n // TODO: OKTA-494979 - temporary fix, remove when auth-js is upgraded to 6.6+\n if (!idxResp.requestDidSucceed && IonHelper.isIdxSessionExpiredError(idxResp)) {\n // clear transaction subsequent page loads do not use stale interactionHandle\n const authClient = this.settings.getAuthClient();\n authClient.transactionManager.clear();\n }\n\n await updateAppState(this.appState, idxResp);\n }\n } catch (exception) {\n if (exception.is?.('terminal')) {\n this.appState.setNonIdxError(exception);\n } else {\n error = exception;\n await this.handleError(exception);\n }\n } finally {\n // These settings should only be used one time, for initial render\n this.settings.unset('stateToken');\n this.settings.unset('proxyIdxResponse');\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n\n ColorsUtil.addStyle(colors);\n }\n\n // Show before initial render\n this.show();\n\n // render Controller\n this.unload();\n const controllerOptions = _.extend({\n el: this.el,\n settings: this.settings,\n appState: this.appState\n }, options);\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n this.controller.render();\n\n this.hasControllerRendered = true;\n\n // This will reject the promise returned from renderEl\n if (error) {\n this.settings.callGlobalError(error);\n }\n\n // -- TODO: OKTA-244631 How to surface up the CORS error in IDX?\n // -- The `err` object from idx.js doesn't have XHR object\n // Global error handling for CORS enabled errors\n // if (err.xhr && BrowserFeatures.corsIsNotEnabled(err.xhr)) {\n // this.settings.callGlobalError(new UnsupportedBrowserError(loc('error.enabled.cors')));\n // return;\n // }\n }\n\n /**\n * When \"Remember My Username\" is enabled, we save the identifier in a cookie\n * so that the next time the user visits the SIW, the identifier field can be \n * pre-filled with this value.\n */\n updateIdentifierCookie(idxResponse: IdxResponse) {\n if (this.settings.get('features.rememberMe')) {\n // Update the cookie with the identifier\n const user = idxResponse?.context?.user;\n const { identifier } = user?.value || {};\n if (identifier) {\n CookieUtil.setUsernameCookie(identifier);\n }\n } else {\n // We remove the cookie explicitly if this feature is disabled.\n CookieUtil.removeUsernameCookie();\n } \n }\n\n hasAuthenticationSucceeded(idxResponse: IdxResponse) {\n // Check whether authentication has succeeded. This is done by checking the server response\n // and seeing if either the 'success' or 'successWithInteractionCode' objects are present.\n return idxResponse?.rawIdxState?.success || idxResponse?.rawIdxState?.successWithInteractionCode;\n }\n\n restartLoginFlow() {\n // clear all transaction data and saved IDX response\n this.settings.getAuthClient().transactionManager.clear();\n this.appState.set('idx', undefined);\n\n // Clear the recoveryToken, if any\n const authClient = this.settings.getAuthClient();\n delete authClient.options['recoveryToken'];\n this.settings.unset('recoveryToken');\n // clear otp (email magic link), if any\n this.settings.unset('otp');\n\n // remove all event listeners from current controller instance. A new instance will be created in render().\n this.controller.stopListening();\n\n // Re-render the widget\n this.render(this.controller.constructor);\n }\n\n start() {\n const pushState = BrowserFeatures.supportsPushState();\n Router.prototype.start.call(this, { pushState: pushState });\n }\n\n hide() {\n this.header.$el.hide();\n }\n\n show() {\n this.header.$el.show();\n }\n\n remove() {\n this.unload();\n this.header.$el.remove();\n this.stopListening(this.appState);\n this.stopListening(this.settings);\n Bundles.remove();\n Backbone.history.stop();\n }\n}\n\n// Add \"Events\" to prototype for compatibility with existing code\nBaseLoginRouter.prototype.Events = Backbone.Events;\n\nexport default BaseLoginRouter;\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AbstractRouter } from 'types';\nimport BaseLoginRouter, { BaseLoginRouterOptions } from './BaseLoginRouter';\nimport FormController from './controllers/FormController';\n\nconst routes = {\n '': 'defaultAuth',\n '*wildcard': 'defaultAuth',\n};\n\nexport default class WidgetRouter extends BaseLoginRouter implements AbstractRouter {\n constructor(options: BaseLoginRouterOptions) {\n super({ routes, ...options });\n }\n\n defaultAuth() {\n this.render(FormController);\n }\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ProceedOptions } from '@okta/okta-auth-js';\n\nexport async function emailVerifyCallback(settings) {\n const authClient = settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n };\n const meta = await authClient.idx.getSavedTransactionMeta(); // meta can load in another tab using state if it matches\n if (!meta || !meta.interactionHandle) {\n // Flow can not continue in this tab. Create a synthetic server response and use it to display a message to the user\n const messages = {\n type: 'array',\n value: [\n // terminal-return-otp-only-no-location.json\n {\n 'message': 'Enter the OTP in your original browser or device.',\n 'i18n': {\n 'key': 'idx.enter.otp.in.original.tab'\n },\n 'class': 'INFO'\n }\n ]\n };\n\n const resp = {\n neededToProceed: [],\n // OKTA-382410 so bad that has to leverage rawIdxState\n rawIdxState: {\n messages,\n },\n context: {\n messages,\n }\n };\n return resp;\n }\n \n // Proceed using the OTP code\n const otp = settings.get('otp');\n const idxResponse = await authClient.idx.proceed({\n ...idxOptions,\n otp\n });\n return idxResponse;\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n IdxContext,\n IdxMessages,\n IdxResponse,\n RawIdxResponse\n} from '@okta/okta-auth-js';\nimport { loc } from 'okta';\n\nexport interface LegacyIdxError {\n error: string;\n details: IdxResponse\n}\n\nexport interface StandardApiError {\n error: string;\n error_description: string;\n}\n\nexport function isInvalidRecoveryTokenError(error): error is StandardApiError {\n // special case: error from interact when passing an (invalid) recovery token\n return (error?.error === 'invalid_request' && error.error_description === 'The recovery token is invalid');\n}\n\nexport function formatInvalidRecoveryTokenError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so is not an IDX error.\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.invalid.recovery.token'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return idxError;\n}\n\nexport function isOIENotEnabledError(error): error is StandardApiError {\n // special case: error from interact when the Org does not have OIE enabled\n // The response is not in IDX format. See playground/mocks/data/oauth2/error-feature-not-enabled.json\n return (error?.error === 'access_denied' && error.error_description);\n}\n\nexport function formatOIENotEnabledError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.feature.disabled'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function isOIEConfigurationError(error): error is StandardApiError {\n return (error?.error && error.error_description);\n}\n\nexport function formatOIEConfigurationError(error) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oie.configuration.error', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function formatIDXError(error: LegacyIdxError | StandardApiError | Error): LegacyIdxError {\n // Make the error object resemble an IDX response\n const idxError = error as LegacyIdxError;\n idxError.details = idxError.details || {} as IdxResponse;\n const { details } = idxError;\n details.rawIdxState = details.rawIdxState || {} as RawIdxResponse;\n details.context = details.context || {} as IdxContext;\n details.neededToProceed = details.neededToProceed || [];\n\n // Populate generic error message if there isn't any.\n if (!details.rawIdxState.messages) {\n const idxMessage: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oform.error.unexpected', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ]\n };\n details.rawIdxState.messages = idxMessage;\n details.context.messages = idxMessage;\n }\n\n return idxError;\n}\n\nexport function formatError(error: string | Error | LegacyIdxError | StandardApiError) {\n // If the error is a string, wrap it in an Error object\n if (typeof error === 'string') {\n error = new Error(error);\n }\n\n // special case error handling\n\n // invalid reccovery token\n if (isInvalidRecoveryTokenError(error)) {\n return formatInvalidRecoveryTokenError(error);\n }\n\n // OIE is not enabled\n if (isOIENotEnabledError(error)) {\n return formatOIENotEnabledError(error);\n }\n\n // Other errors from /interact in OAuth format\n if (isOIEConfigurationError(error)) {\n return formatOIEConfigurationError(error);\n }\n\n error = formatIDXError(error);\n return error;\n}","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ConfiguredFlowError, ConfigError } from 'util/Errors';\nimport { emailVerifyCallback } from './emailVerifyCallback';\nimport sessionStorageHelper from './sessionStorageHelper';\nimport { CONFIGURED_FLOW } from './constants';\nimport { IdxTransactionMeta, ProceedOptions } from '@okta/okta-auth-js';\n\nconst handleProxyIdxResponse = async (settings) => {\n return Promise.resolve({\n rawIdxState: settings.get('proxyIdxResponse'),\n context: settings.get('proxyIdxResponse'),\n neededToProceed: [],\n });\n};\n\n/* eslint max-depth: [2, 3] */\n// eslint-disable-next-line complexity, max-statements\nexport async function startLoginFlow(settings) {\n const authClient = settings.getAuthClient();\n // nonce is not a top-level auth-js option, must be passed in manually\n const { authParams } = settings.toJSON({verbose: true});\n const nonce = settings.get('nonce') || authParams?.nonce;\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n ...(nonce && { nonce })\n };\n\n // Return a preset response\n if (settings.get('proxyIdxResponse')) {\n return handleProxyIdxResponse(settings);\n }\n\n if (settings.get('overrideExistingStateToken')) {\n sessionStorageHelper.removeStateHandle();\n }\n\n if (settings.get('otp')) {\n return emailVerifyCallback(settings);\n }\n\n if (settings.get('oauth2Enabled')) {\n const meta: IdxTransactionMeta = await authClient.idx.getSavedTransactionMeta();\n if (!meta) {\n // no saved transaction\n // if the configured flow is set to `proceed`, the SIW should only continue an existing idx transaction\n // if the SIW loads from a fresh state (there is no current transaction), throw an error\n const flow = authClient.idx.getFlow();\n if (flow && flow === CONFIGURED_FLOW.PROCEED) {\n throw new ConfiguredFlowError(\n 'Unable to proceed: saved transaction could not be loaded', flow\n );\n }\n // start new transaction\n return authClient.idx.start(idxOptions); // calls interact\n }\n\n // continue saved transaction\n return authClient.idx.proceed(idxOptions); // calls introspect\n }\n\n // Use stateToken from session storage if exists\n // See more details at ./docs/use-session-token-prior-to-settings.png\n const stateHandleFromSession = sessionStorageHelper.getStateHandle();\n if (stateHandleFromSession) {\n try {\n const idxResp = await authClient.idx.start({\n ...idxOptions,\n stateHandle: stateHandleFromSession\n });\n const hasError = idxResp.context?.messages?.value.length > 0;\n if (hasError) {\n throw new Error('saved stateToken is invalid'); // will be caught in this function\n }\n\n // 1. abandon the settings.stateHandle given session.stateHandle is still valid\n settings.set('stateToken', stateHandleFromSession);\n // 2. chain the idxResp to next handler\n return idxResp;\n } catch {\n // 1. remove session.stateHandle\n sessionStorageHelper.removeStateHandle();\n // 2. start the login again in order to introspect on settings.stateHandle\n return startLoginFlow(settings);\n }\n }\n\n // Use stateToken from options\n const stateHandle = settings.get('stateToken');\n if (stateHandle) {\n return authClient.idx.start({\n ...idxOptions,\n stateHandle\n });\n }\n\n throw new ConfigError('Invalid OIDC configuration. Set \"clientId\" and \"redirectUri\" in the widget options.');\n}\n","import { IdxResponse } from \"@okta/okta-auth-js\";\nimport CookieUtil from '../../util/CookieUtil';\nimport AppState from '../models/AppState';\nimport sessionStorageHelper from './sessionStorageHelper';\nimport { interactionCodeFlow } from './interactionCodeFlow';\nimport { FORMS } from \"../ion/RemediationConstants\";\nimport transformIdxResponse from '../ion/transformIdxResponse';\n\nfunction hasAuthenticationSucceeded(idxResponse: IdxResponse) {\n // Check whether authentication has succeeded. This is done by checking the server response\n // and seeing if either the 'success' or 'successWithInteractionCode' objects are present.\n return idxResponse?.rawIdxState?.success || idxResponse?.rawIdxState?.successWithInteractionCode;\n}\n\n/**\n * When \"Remember My Username\" is enabled, we save the identifier in a cookie\n * so that the next time the user visits the SIW, the identifier field can be \n * pre-filled with this value.\n */\nfunction updateIdentifierCookie(appState: AppState, idxResponse: IdxResponse) {\n const settings = appState.settings;\n if (settings.get('features.rememberMe')) {\n // Update the cookie with the identifier\n const user = idxResponse?.context?.user;\n const { identifier } = user?.value || {};\n if (identifier) {\n CookieUtil.setUsernameCookie(identifier);\n }\n } else {\n // We remove the cookie explicitly if this feature is disabled.\n CookieUtil.removeUsernameCookie();\n } \n}\n\nexport async function updateAppState(appState: AppState, idxResponse: IdxResponse): Promise {\n const settings = appState.settings;\n\n // Only update the cookie when the user has successfully authenticated themselves \n // to avoid incorrect/unnecessary updates.\n if (hasAuthenticationSucceeded(idxResponse) && settings.get('features.rememberMyUsernameOnOIE')) {\n updateIdentifierCookie(appState, idxResponse);\n }\n\n const lastResponse = appState.get('idx');\n const useInteractionCodeFlow = settings.get('oauth2Enabled');\n if (useInteractionCodeFlow) {\n if (idxResponse.interactionCode) {\n // Although session.stateHandle isn't used by interation flow,\n // it's better to clean up at the end of the flow.\n sessionStorageHelper.removeStateHandle();\n // This is the end of the IDX flow, now entering OAuth\n const tokens = await interactionCodeFlow(settings, idxResponse);\n // reset terminal view in case the were OAuth errors prior to successful token retrieval\n if (appState.get('currentFormName') === FORMS.TERMINAL) {\n appState.unset('currentFormName', { silent: true });\n }\n return tokens;\n } \n } else {\n // Do not save state handle for the first page loads.\n // Because there shall be no difference between following behavior\n // 1. bootstrap widget\n // -> save state handle to session storage\n // -> refresh page\n // -> introspect using sessionStorage.stateHandle\n // 2. bootstrap widget\n // -> do not save state handle to session storage\n // -> refresh page\n // -> introspect using options.stateHandle\n if (lastResponse) {\n sessionStorageHelper.setStateHandle(idxResponse?.context?.stateHandle);\n }\n // Login flows that mimic step up (moving forward in login pipeline) via internal api calls,\n // need to clear stored stateHandles.\n // This way the flow can maintain the latest state handle. For eg. Device probe calls\n if (appState.get('currentFormName') === FORMS.CANCEL_TRANSACTION) {\n sessionStorageHelper.removeStateHandle();\n }\n }\n\n // transform response\n const ionResponse = transformIdxResponse(settings, idxResponse, lastResponse);\n\n await appState.setIonResponse(ionResponse);\n}\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { _, Controller, loc } from 'okta';\nimport ViewFactory from '../view-builder/ViewFactory';\nimport IonResponseHelper from '../ion/IonResponseHelper';\nimport { getV1ClassName } from '../ion/ViewClassNamesFactory';\nimport { FORMS, TERMINAL_FORMS, FORM_NAME_TO_OPERATION_MAP } from '../ion/RemediationConstants';\nimport Util from 'util/Util';\nimport sessionStorageHelper from '../client/sessionStorageHelper';\nimport { HttpResponse, IdxStatus, ProceedOptions } from '@okta/okta-auth-js';\nimport { EventErrorContext } from 'types/events';\nimport { CONFIGURED_FLOW } from '../client/constants';\nimport { ConfigError } from 'util/Errors';\nimport { updateAppState } from 'v2/client';\n\nexport interface ContextData {\n controller: string;\n formName: string;\n authenticatorKey?: string;\n methodType?: string;\n}\n\nexport default Controller.extend({\n className: 'form-controller',\n\n appStateEvents: {\n 'change:currentFormName': 'handleFormNameChange',\n 'afterError': 'handleAfterError',\n 'invokeAction': 'handleInvokeAction',\n 'saveForm': 'handleSaveForm',\n 'switchForm': 'handleSwitchForm',\n },\n\n preRender() {\n this.removeChildren();\n },\n\n postRender() {\n const currentViewState = this.options.appState.getCurrentViewState();\n // TODO: add comments regarding when `currentViewState` would be null?\n if (!currentViewState) {\n return;\n }\n\n this.clearMetadata();\n\n let formName = currentViewState.name;\n if (formName === 'identify' && this.options.settings.get('flow') === CONFIGURED_FLOW.RESET_PASSWORD) {\n formName = 'identify-recovery';\n }\n const TheView = ViewFactory.create(\n formName,\n this.options.appState.get('authenticatorKey'),\n );\n try {\n this.formView = this.add(TheView, {\n options: {\n currentViewState,\n }\n }).last();\n } catch (error) {\n // This is the place where runtime error (NPE) happens at most of time.\n // It has been swallowed by Q.js hence add try/catch to surface up errors.\n this.options.settings.callGlobalError(error);\n return;\n }\n\n this.triggerAfterRenderEvent();\n },\n\n clearMetadata() {\n const formName = this.options.appState.get('currentFormName');\n // TODO: OKTA-392835 shall not clear state handle at terminal page\n if (TERMINAL_FORMS.includes(formName)) {\n sessionStorageHelper.removeStateHandle();\n }\n },\n\n triggerAfterRenderEvent() {\n const contextData = this.createAfterEventContext();\n this.trigger('afterRender', contextData);\n },\n\n handleFormNameChange() {\n this.render();\n },\n\n handleAfterError(error: HttpResponse) {\n const contextData = this.createAfterEventContext();\n const errorContextData: EventErrorContext = {\n xhr: error,\n errorSummary: error.responseJSON && error.responseJSON.errorSummary,\n };\n // TODO: need some enhancement after https://github.com/okta/okta-idx-js/pull/27\n // OKTA-318062\n this.trigger('afterError', contextData, errorContextData);\n },\n\n createAfterEventContext(): ContextData {\n const formName = this.options.appState.get('currentFormName');\n const authenticatorKey = this.options.appState.get('authenticatorKey');\n const methodType = this.options.appState.get('authenticatorMethodType');\n const isPasswordRecoveryFlow = this.options.appState.get('isPasswordRecoveryFlow');\n\n const v1ControllerClassName = getV1ClassName(\n formName,\n authenticatorKey,\n methodType,\n isPasswordRecoveryFlow,\n );\n\n const eventData: ContextData = {\n controller: v1ControllerClassName,\n formName,\n };\n\n if (authenticatorKey) {\n eventData.authenticatorKey = authenticatorKey;\n }\n if (methodType) {\n eventData.methodType = methodType;\n }\n\n return eventData;\n },\n\n handleSwitchForm(formName) {\n // trigger formName change to change view\n if (this.options.appState.get('messages')) {\n // Clear messages before calling switch form.\n // If a form has errors sent form API inside messages\n // and user hits back to factors list which triggers switchForm,\n // those error will show up on another screen that gets rendered after switchForm\n this.options.appState.unset('messages');\n }\n this.options.appState.set('currentFormName', formName);\n },\n\n // eslint-disable-next-line max-statements\n async handleInvokeAction(actionPath = '', actionParams = {}) {\n const { appState, settings } = this.options;\n const idx = appState.get('idx');\n const { stateHandle } = idx.context;\n let invokeOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n stateHandle\n };\n let error;\n\n // Cancel action is executes synchronously\n if (actionPath === 'cancel') {\n // TODO: resolve race conditions caused by event pattern: OKTA-490220\n settings.getAuthClient().transactionManager.clear({ clearIdxResponse: false });\n sessionStorageHelper.removeStateHandle();\n appState.clearAppStateCache();\n\n if (settings.get('oauth2Enabled')) {\n // In this case we need to restart login flow and recreate transaction meta\n // that will be used in interactionCodeFlow function\n appState.trigger('restartLoginFlow');\n return;\n }\n }\n\n // Build options to invoke or throw error for invalid action\n if (idx['neededToProceed'].find(item => item.name === actionPath)) {\n invokeOptions = { ...invokeOptions, step: actionPath };\n } else if (_.isFunction(idx['actions'][actionPath])) {\n invokeOptions = {\n ...invokeOptions,\n actions: [{\n name: actionPath,\n params: actionParams\n }]\n };\n } else {\n error = new ConfigError(`Invalid action selected: ${actionPath}`);\n this.options.settings.callGlobalError(error);\n await this.showFormErrors(this.formView.model, error, this.formView.form);\n return;\n }\n\n // action will be executed asynchronously\n await this.invokeAction(invokeOptions);\n },\n\n async invokeAction(invokeOptions) {\n const authClient = this.options.settings.getAuthClient();\n let resp;\n let error;\n try {\n resp = await authClient.idx.proceed(invokeOptions);\n if (resp.requestDidSucceed === false) {\n error = resp;\n }\n } catch (e) {\n error = e;\n }\n\n // if request did not succeed, show error on the current form\n if (error) {\n await this.showFormErrors(this.formView.model, error, this.formView.form);\n return;\n }\n\n // process response, may render a new form\n await this.handleIdxResponse(resp);\n },\n\n // eslint-disable-next-line max-statements, complexity\n async handleSaveForm(model) {\n const formName = model.get('formName');\n\n // Toggle Form saving status (e.g. disabling save button, etc)\n this.toggleFormButtonState(true);\n model.trigger('request');\n\n // Use full page redirection if necessary\n if (model.get('useRedirect')) {\n // Clear when navigates away from SIW page, e.g. success, IdP Authenticator.\n // Because SIW sort of finished its current /transaction/\n sessionStorageHelper.removeStateHandle();\n\n const currentViewState = this.options.appState.getCurrentViewState();\n Util.redirectWithFormGet(currentViewState.href);\n return;\n }\n\n // Run hook: transform the user name (a.k.a identifier)\n const values = this.transformIdentifier(formName, model);\n\n // Error out when this is not a remediation form. Unexpected Exception.\n if (!this.options.appState.hasRemediationObject(formName)) {\n this.options.settings.callGlobalError(`Cannot find http action for \"${formName}\".`);\n await this.showFormErrors(this.formView.model, 'Cannot find action to proceed.', this.formView.form);\n return;\n }\n\n // Reset password in identity-first flow needs some help to auto-select password and begin the reset flow\n if (formName === 'identify' && this.options.settings.get('flow') === CONFIGURED_FLOW.RESET_PASSWORD) {\n values.authenticator = 'okta_password';\n }\n\n // Submit request to idx endpoint\n const authClient = this.options.settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n };\n try {\n const idx = this.options.appState.get('idx');\n const { stateHandle } = idx.context;\n const resp = await authClient.idx.proceed({\n ...idxOptions,\n step: formName,\n stateHandle,\n ...values\n });\n\n if (resp.status === IdxStatus.FAILURE) {\n throw resp.error; // caught and handled in this function\n }\n // follow idx transaction to render terminal view for session expired error\n if (IonResponseHelper.isIdxSessionExpiredError(resp)) {\n const authClient = this.settings.getAuthClient();\n authClient.transactionManager.clear();\n await this.handleIdxResponse(resp);\n return;\n }\n // If the last request did not succeed, show errors on the current form\n // Special case: Okta server responds 401 status code with WWW-Authenticate header and new remediation\n // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n // the response reaches here when Okta Verify is not installed\n // we need to return an idx object so that\n // the SIW can proceed to the next step without showing error\n if (resp.requestDidSucceed === false && !resp.stepUp) {\n await this.showFormErrors(model, resp, this.formView.form);\n return;\n }\n const onSuccess = this.handleIdxResponse.bind(this, resp);\n if (formName === FORMS.ENROLL_PROFILE) {\n // call registration (aka enroll profile) hook\n this.settings.postRegistrationSubmit(values?.userProfile?.email, onSuccess, (error) => {\n model.trigger('error', model, {\n responseJSON: error,\n });\n });\n } else {\n await onSuccess();\n }\n } catch(error) {\n if (error.is?.('terminal')) {\n this.options.appState.setNonIdxError(error);\n } else {\n await this.showFormErrors(model, error, this.formView.form);\n }\n } finally {\n this.toggleFormButtonState(false);\n }\n },\n\n transformIdentifier(formName, model) {\n const modelJSON = model.toJSON();\n if (Object.prototype.hasOwnProperty.call(modelJSON, 'identifier')) {\n // The callback function is passed two arguments:\n // 1) username: The name entered by the user\n // 2) operation: The type of operation the user is trying to perform:\n // - PRIMARY_AUTH\n // - FORGOT_PASSWORD\n // - UNLOCK_ACCOUNT\n const operation = FORM_NAME_TO_OPERATION_MAP[formName];\n modelJSON.identifier = this.settings.transformUsername(modelJSON.identifier, operation);\n }\n return modelJSON;\n },\n\n /**\n * @param model current form model\n * @param error any errors after user action\n * @param form current form\n * Handle errors that get displayed right after any user action. After such form errors widget doesn't\n * reload or re-render, but updates the AppSate with latest remediation.\n */\n async showFormErrors(model, error, form) {\n /* eslint max-statements: [2, 24] */\n let errorObj;\n let idxStateError;\n let showErrorBanner = true;\n model.trigger('clearFormError');\n\n if (!error) {\n error = 'FormController - unknown error found';\n this.options.settings.callGlobalError(error);\n }\n\n if(error?.rawIdxState) {\n idxStateError = error;\n error = error.rawIdxState;\n }\n\n if (IonResponseHelper.isIonErrorResponse(error)) {\n errorObj = IonResponseHelper.convertFormErrors(error);\n } else if (error.errorSummary) {\n errorObj = { responseJSON: error };\n } else {\n Util.logConsoleError(error);\n errorObj = { responseJSON: { errorSummary: loc('error.unsupported.response', 'login')}};\n }\n\n if(_.isFunction(form?.showCustomFormErrorCallout)) {\n showErrorBanner = !form.showCustomFormErrorCallout(errorObj, idxStateError.messages);\n }\n\n // show error before updating app state.\n model.trigger('error', model, errorObj, showErrorBanner);\n idxStateError = Object.assign({}, idxStateError, {hasFormError: true});\n\n // TODO OKTA-408410: Widget should update the state on every new response. It should NOT do selective update.\n // For eg 429 rate-limit errors, we have to skip updating idx state, because error response is not an idx response.\n if (Array.isArray(idxStateError?.neededToProceed) && idxStateError?.neededToProceed.length) {\n await this.handleIdxResponse(idxStateError);\n }\n },\n\n async handleIdxResponse(idxResp) {\n await updateAppState(this.options.appState, idxResp);\n },\n\n /**\n * SignIn widget has its own (hacky) way to customize the button disabled state:\n * adding `link-button-disabled` despite the name was intend only to disable\n * `link-button`.\n * Instead of doing decent refactor, we want to follow the convention for now.\n *\n * @param {boolean} disabled whether add extra disable CSS class.\n */\n toggleFormButtonState: function(disabled) {\n const button = this.$el.find('.o-form-button-bar .button');\n button.toggleClass('link-button-disabled', disabled);\n },\n});\n","import { _ } from 'okta';\n\ndeclare module 'okta' {\n interface OktaUnderscore {\n nestedOmit(obj: Record, names): Record\n }\n}\n\n_.mixin({\n nestedOmit: function(obj, names) {\n let result = _.omit(obj, names);\n\n if (names.includes(result.name)) {\n result = _.omit(result, 'value');\n }\n\n _.each(result, function(val, key) {\n if (Array.isArray(val)) {\n result[key] = val.map((v) => {\n return _.nestedOmit(v, names);\n });\n } else if (typeof val === 'object') {\n result[key] = _.nestedOmit(val, names);\n }\n });\n return result;\n },\n});\n\nexport { _ };\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Model, ModelProperty } from 'okta';\nimport Logger from 'util/Logger';\nimport {\n FORMS_WITHOUT_SIGNOUT,\n FORMS_WITH_STATIC_BACK_LINK,\n FORMS_FOR_VERIFICATION,\n AUTHENTICATOR_KEY,\n FORMS,\n} from '../ion/RemediationConstants';\nimport { createOVOptions } from '../ion/ui-schema/ion-object-handler';\nimport { _ } from '../mixins/mixins';\nimport { executeHooksBefore, executeHooksAfter } from 'util/Hooks';\nimport Settings from 'models/Settings';\nimport Hooks from 'models/Hooks';\nimport { RecoverableError } from 'util/OAuthErrors';\nimport { IdxRemediation } from '@okta/okta-auth-js';\nimport BrowserFeatures from 'util/BrowserFeatures';\n\nconst UNKNOWN_USER_I8N_KEY = \"idx.unknown.user\";\n/**\n * Keep track of stateMachine with this special model. Similar to `src/models/AppState.js`\n */\n\nconst local: Record = {\n user: 'object', // optional\n currentFormName: 'string',\n idx: 'object',\n remediations: 'array',\n dynamicRefreshInterval: 'number',\n deviceFingerprint: 'string',\n hooks: 'object' // instance of models/Hooks\n};\n\nconst derived: Record = {\n authenticatorProfile: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { profile: undefined }, currentAuthenticatorEnrollment = { profile: undefined }) {\n return currentAuthenticator.profile\n || currentAuthenticatorEnrollment.profile\n || {};\n },\n },\n authenticatorKey: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { key: undefined }, currentAuthenticatorEnrollment = { key: undefined }) {\n return currentAuthenticator.key\n || currentAuthenticatorEnrollment.key\n || '';\n },\n },\n authenticatorMethodType: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { methods: undefined }, currentAuthenticatorEnrollment = { methods: undefined }) {\n return currentAuthenticator.methods && currentAuthenticator.methods[0].type\n || currentAuthenticatorEnrollment.methods && currentAuthenticatorEnrollment.methods[0].type\n || '';\n },\n },\n isPasswordRecovery: {\n deps: ['recoveryAuthenticator'],\n fn: function(recoveryAuthenticator = { type: undefined }) {\n return recoveryAuthenticator?.type === 'password';\n }\n }\n};\n\nexport type AppStateProps = typeof local & typeof derived;\n\nexport default class AppState extends Model {\n settings: Settings;\n hooks: Hooks;\n \n constructor(attributes, options) {\n super(attributes, options);\n this.settings = options.settings;\n this.hooks = options.hooks;\n }\n\n get
          >(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n isIdentifierOnlyView() {\n return !this.get('remediations')?.find(({ name }) => name === 'identify')\n ?.uiSchema?.find(({ name }) => name === 'credentials.passcode');\n }\n\n hasRemediationObject(formName) {\n return this.get('idx').neededToProceed.find((remediation) => remediation.name === formName);\n }\n\n hasActionObject(actionName) {\n return !!this.get('idx')?.actions?.[actionName];\n }\n\n getRemediationAuthenticationOptions(formName) {\n const form = this.hasRemediationObject(formName);\n if (!form) {\n return [];\n }\n const authenticator = form.value.find((value) => value.name === 'authenticator');\n let authenticatorOptions = authenticator?.options || [];\n // OV is a special case, so process OV options\n authenticatorOptions = [...authenticatorOptions]; //clone it since we are changing it for OV\n createOVOptions(authenticatorOptions);\n return authenticatorOptions;\n }\n\n getActionByPath(actionPath) {\n const paths = actionPath.split('.');\n let targetObject;\n if (paths.length === 1) {\n targetObject = this.get('idx').actions;\n } else {\n targetObject = this.get(paths.shift());\n }\n // Limitation\n // At the time of writting, action only lives in first level of state objects.\n const actionName = paths.shift();\n if (targetObject && _.isFunction(targetObject[actionName])) {\n return targetObject[actionName];\n } else {\n return null;\n }\n }\n\n getCurrentViewState() {\n const currentFormName = this.get('currentFormName');\n\n if (!currentFormName) {\n return;\n }\n\n // didn't expect `remediations` is empty. See `setIonResponse`.\n const currentViewState = this.get('remediations').filter(r => r.name === currentFormName)[0];\n\n if (!currentViewState) {\n Logger.error('Panic!!');\n Logger.error(`\\tCannot find view state for form ${currentFormName}.`);\n const allFormNames = this.get('remediations').map(r => r.name);\n Logger.error(`\\tAll available form names: ${allFormNames}`);\n }\n\n return currentViewState;\n }\n\n /**\n * Returns ui schema of the form field from current view state\n * @param {string} fieldName\n * @returns {}\n */\n getSchemaByName(fieldName) {\n const currentViewState = this.getCurrentViewState();\n if(currentViewState) {\n const uiSchema = currentViewState.uiSchema;\n return uiSchema.find(({ name }) => name === fieldName);\n }\n }\n\n /**\n * Returns the displayName of the authenticator\n * @returns {string}\n */\n getAuthenticatorDisplayName() {\n const currentAuthenticator = this.get('currentAuthenticator') || {};\n const currentAuthenticatorEnrollment = this.get('currentAuthenticatorEnrollment') || {};\n\n // For enrollment and certain verification flows, the currentAuthenticator object will be present.\n // If not, we're likely in a traditional verify/challenge flow.\n return currentAuthenticator.displayName || currentAuthenticatorEnrollment.displayName;\n }\n\n /**\n * Checks to see if we're in an authenticator challenge flow.\n * @returns {boolean}\n */\n isAuthenticatorChallenge() {\n const currentFormName = this.get('currentFormName');\n return FORMS_FOR_VERIFICATION.includes(currentFormName);\n }\n\n shouldReRenderView(transformedResponse) {\n if (transformedResponse?.idx?.hasFormError) {\n return false;\n }\n\n const previousRawState = this.has('idx') ? this.get('idx').rawIdxState : null;\n\n const identicalResponse = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'headers']));\n\n if (identicalResponse) {\n this.set('dynamicRefreshInterval', this.getRefreshInterval(transformedResponse));\n }\n\n return this._isReRenderRequired(identicalResponse, transformedResponse, previousRawState);\n }\n\n getRefreshInterval(transformedResponse) {\n // Only polling refresh interval has changed in the response,\n // make sure to update the correct poll view's refresh value\n const currentFormName = this.get('currentFormName');\n const currentViewState = transformedResponse.remediations.filter(r => r.name === currentFormName)[0];\n // Get new refresh interval for either: remediations, authenticator, or authenticator enrollment\n return currentViewState.refresh ||\n transformedResponse.currentAuthenticatorEnrollment?.poll?.refresh ||\n transformedResponse.currentAuthenticator?.poll?.refresh;\n }\n\n // Sign Out link will be displayed in the footer of a form, unless:\n // - widget configuration set hideSignOutLinkInMFA or mfaOnlyFlow to true\n // - cancel remediation form is not present in the response\n // - form is part of our list FORMS_WITHOUT_SIGNOUT\n shouldShowSignOutLinkInCurrentForm(hideSignOutLinkInMFA) {\n const idxActions = this.get('idx') && this.get('idx').actions;\n const currentFormName = this.get('currentFormName');\n\n return !hideSignOutLinkInMFA\n && _.isFunction(idxActions?.cancel)\n && !FORMS_WITHOUT_SIGNOUT.includes(currentFormName);\n }\n\n containsMessageWithI18nKey(keys) {\n if (!Array.isArray(keys)) {\n keys = [keys];\n }\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => _.contains(keys, messagesObj.i18n?.key));\n }\n\n containsMessageStartingWithI18nKey(keySubStr) {\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => messagesObj.i18n?.key.startsWith(keySubStr));\n }\n\n clearAppStateCache() {\n // clear appState before setting new values\n const attrs = {};\n for (const key in this.attributes) {\n if (key !== 'currentFormName') {\n attrs[key] = void 0;\n }\n }\n this.set(attrs, Object.assign({}, { unset: true, silent: true }));\n // clear cache for derived props.\n this.trigger('cache:clear');\n }\n\n chooseRemediation(transformedResponse): IdxRemediation | undefined {\n if (_.isEmpty(transformedResponse.remediations)) {\n return;\n }\n\n const firstRemediation = transformedResponse.remediations[0];\n\n // Special case: Okta Verify: show select enrollment channel instead of QR code on mobile\n if (firstRemediation.name === 'enroll-poll'\n && this.get('authenticatorKey') === AUTHENTICATOR_KEY.OV\n && (BrowserFeatures.isAndroid() || BrowserFeatures.isIOS())\n && transformedResponse.currentAuthenticator?.contextualData?.selectedChannel === 'qrcode'\n ) {\n return transformedResponse.remediations.find(r => r.name === 'select-enrollment-channel')\n }\n\n // Default case: return the first remediation in the list\n return firstRemediation;\n }\n\n async setIonResponse(transformedResponse) {\n const doRerender = this.shouldReRenderView(transformedResponse);\n this.clearAppStateCache();\n // set new app state properties\n this.set(transformedResponse);\n\n if (doRerender) {\n const remediation = this.chooseRemediation(transformedResponse);\n let currentFormName = null;\n if (remediation) {\n currentFormName = remediation.name;\n } else {\n Logger.error('Panic!!');\n Logger.error('\\tNo remediation found.');\n Logger.error('\\tHere is the entire response');\n Logger.error(JSON.stringify(transformedResponse, null, 2));\n }\n\n const hook = this.hooks?.getHook(currentFormName); // may be undefined\n await executeHooksBefore(hook);\n \n this.unset('currentFormName', { silent: true });\n // make sure change `currentFormName` is last step.\n // change `currentFormName` will re-render FormController,\n // which may depend on other derived properties hence\n // those derived properties must be re-computed before\n // re-rendering controller.\n this.set({ currentFormName });\n\n await executeHooksAfter(hook);\n }\n }\n\n setNonIdxError(error: RecoverableError) {\n this.set('remediations', [{ name: FORMS.TERMINAL }]);\n this.set('messages', { value: [\n {\n message: error.errorDetails.errorSummary,\n class: 'ERROR'\n }\n ]})\n this.set('currentFormName', FORMS.TERMINAL);\n }\n\n getUser() {\n return this.get('user');\n }\n\n _isReRenderRequired(identicalResponse, transformedResponse, previousRawState) {\n let reRender = true;\n\n const isPreviousStateError = this.get('idx')?.hasFormError;\n if (isPreviousStateError && this._isChallengeAuthenticatorPoll(transformedResponse, previousRawState)) {\n reRender = false;\n }\n\n if (identicalResponse) {\n /**\n * returns false: When new response is same as last.\n * usually happens during polling when pipeline doesn't proceed to next step.\n * expiresAt will be different for each response, hence compare objects without that property\n */\n reRender = false;\n if (this.get('currentFormName') === 'poll') {\n /**\n * returns true: We want to force reRender when currentForm is poll because request has to reinitiate\n * based on new refresh and UI has to reflect new timer.\n * We dont technical poll here we just make a request after the specified refresh time each time\n * we get a new response.\n */\n reRender = true;\n } else if (FORMS_WITH_STATIC_BACK_LINK.includes(this.get('currentFormName'))) {\n /**\n * returns true: We want to force reRender if you go back to selection screen from challenge or enroll screen\n * and re-select the same authenticator for challenge. In this case also new response will be identical\n * to the old response.\n */\n reRender = true;\n } else if (this.containsMessageWithI18nKey(UNKNOWN_USER_I8N_KEY)) {\n /**\n * Need to re-render or else form will be stuck in saving mode.\n * This message is a form warning that can result in identical responses if the user enters the same\n * username as the one in the last message warning.\n */\n reRender = true;\n }\n }\n\n return reRender;\n }\n\n /**\n * This is to account for the edge case introduced by this issue: OKTA-419210. With the current idx remediations,\n * there's no good way to generalize this as the backend handles the authenticators for phone, sms and \n * email differently. Although not ideal, we have to keep this check in for now until we find a better solution.\n */\n _isChallengeAuthenticatorPoll(transformedResponse, previousRawState) {\n const isSameExceptMessages = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'messages', 'headers']));\n\n const isChallengeAuthenticator = this.get('currentFormName') === 'challenge-authenticator';\n const isCurrentAuthenticatorEmail = this.get('currentAuthenticatorEnrollment')?.key === AUTHENTICATOR_KEY.EMAIL;\n\n return isSameExceptMessages && isChallengeAuthenticator && isCurrentAuthenticatorEmail;\n }\n}\n","import Logger from 'util/Logger';\nimport { AUTHENTICATOR_KEY, FORMS as RemediationForms } from '../ion/RemediationConstants';\nimport { BaseView } from './internals';\n\n// Identify\nimport IdentifierView from './views/IdentifierView';\nimport RedirectIdPView from './views/RedirectIdPView';\nimport IdentifyRecoveryView from './views/IdentifyRecoveryView';\n\n// Terminal & Auto-Redirect\nimport TerminalView from './views/TerminalView';\nimport AutoRedirectView from './views/AutoRedirectView';\n\n// safe mode poll view\nimport PollView from './views/PollView';\n\n// consent\nimport AdminConsentView from './views/consent/AdminConsentView';\nimport EnduserConsentView from './views/consent/EnduserConsentView';\nimport GranularConsentView from './views/consent/GranularConsentView';\nimport EnduserEmailConsentView from './views/consent/EnduserEmailConsentView';\n\n// Device (Okta Verify)\nimport DeviceChallengePollView from './views/device/DeviceChallengePollView';\nimport SSOExtensionView from './views/device/SSOExtensionView';\nimport SignInDeviceView from './views/device/SignInDeviceView';\nimport DeviceEnrollmentTerminalView from './views/device/DeviceEnrollmentTerminalView';\n\n// registration\nimport EnrollProfileView from './views/EnrollProfileView';\n\n// registration update\nimport EnrollProfileUpdateView from './views/EnrollProfileUpdateView';\n\n// Email Activation\nimport RequestActivationEmail from './views/activation/RequestActivationEmailView';\n\n// authenticator list\nimport SelectAuthenticatorEnrollView from './views/SelectAuthenticatorEnrollView';\nimport SelectAuthenticatorVerifyView from './views/SelectAuthenticatorVerifyView';\nimport SelectAuthenticatorUnlockAccountView from './views/authenticator/SelectAuthenticatorUnlockAccountView';\n\n// password\nimport EnrollAuthenticatorPasswordView from './views/password/EnrollAuthenticatorPasswordView';\nimport ChallengeAuthenticatorPasswordView from './views/password/ChallengeAuthenticatorPasswordView';\nimport ReEnrollAuthenticatorPasswordView from './views/password/ReEnrollAuthenticatorPasswordView';\nimport ReEnrollAuthenticatorWarningPasswordView from './views/password/ReEnrollAuthenticatorWarningPasswordView';\nimport ResetAuthenticatorPasswordView from './views/password/ResetAuthenticatorPasswordView';\n\n// phone\nimport EnrollAuthenticatorPhoneView from './views/phone/EnrollAuthenticatorPhoneView';\nimport EnrollAuthenticatorDataPhoneView from './views/phone/EnrollAuthenticatorDataPhoneView';\nimport ChallengeAuthenticatorPhoneView from './views/phone/ChallengeAuthenticatorPhoneView';\nimport ChallengeAuthenticatorDataPhoneView from './views/phone/ChallengeAuthenticatorDataPhoneView';\n\n// security question\nimport EnrollAuthenticatorSecurityQuestion from './views/security-question/EnrollAuthenticatorSecurityQuestionView';\nimport ChallengeAuthenticatorSecurityQuestion from './views/security-question/ChallengeAuthenticatorSecurityQuestion';\n\n//webauthn\nimport EnrollWebauthnView from './views/webauthn/EnrollWebauthnView';\nimport ChallengeWebauthnView from './views/webauthn/ChallengeWebauthnView';\n\n// email\nimport EnrollAuthenticatorEmailView from './views/email/EnrollAuthenticatorEmailView';\nimport ChallengeAuthenticatorEmailView from './views/email/ChallengeAuthenticatorEmailView';\nimport ChallengeAuthenticatorDataEmailView from './views/email/ChallengeAuthenticatorDataEmailView';\n\n// app (okta verify)\nimport EnrollPollOktaVerifyView from './views/ov/EnrollPollOktaVerifyView';\nimport SelectEnrollmentChannelOktaVerifyView from './views/ov/SelectEnrollmentChannelOktaVerifyView';\nimport EnrollementChannelDataOktaVerifyView from './views/ov/EnrollementChannelDataOktaVerifyView';\nimport ChallengeOktaVerifyView from './views/ov/ChallengeOktaVerifyView';\nimport ChallengeOktaVerifyTotpView from './views/ov/ChallengeOktaVerifyTotpView';\nimport ChallengeOktaVerifyResendPushView from './views/ov/ChallengeOktaVerifyResendPushView';\nimport ChallengeOktaVerifyCustomAppDataView from './views/shared/ChallengeOktaVerifyCustomAppDataView';\nimport ChallengeOktaVerifySSOExtensionView from './views/ov/ChallengeOktaVerifySSOExtensionView';\n\n// app (google authenticator)\nimport EnrollAuthenticatorGoogleAuthenticatorView\n from './views/google-authenticator/EnrollAuthenticatorGoogleAuthenticatorView';\nimport ChallengeGoogleAuthenticatorView from './views/google-authenticator/ChallengeGoogleAuthenticatorView';\n\n// on-prem mfa\nimport EnrollAuthenticatorOnPremView from './views/on-prem/EnrollAuthenticatorOnPremView';\nimport ChallengeAuthenticatorOnPremView from './views/on-prem/ChallengeAuthenticatorOnPremView';\n\n// duo mfa\nimport EnrollDuoAuthenticatorView from './views/duo/EnrollDuoAuthenticatorView';\nimport ChallengeDuoAuthenticatorView from './views/duo/ChallengeDuoAuthenticatorView';\n\n// idp authenticator\nimport AuthenticatorIdPVerifyView from './views/idp/AuthenticatorIdPVerifyView';\nimport AuthenticatorIdPEnrollView from './views/idp/AuthenticatorIdPEnrollView';\n\n// custom otp\nimport ChallengeCustomOTPAuthenticatorView from './views/custom-otp/ChallengeCustomOTPAuthenticatorView';\n\n// Symantec VIP authenticator\nimport AuthenticatorSymantecView from './views/symantec/AuthenticatorSymantecView';\n\n// Device code activate view\nimport DeviceCodeActivateView from './views/device/DeviceCodeActivateView';\n\n// X509 PIV view\nimport ChallengePIVView from './views/piv/ChallengePIVView';\n\n// YubiKey\nimport AuthenticatorYubiKeyView from './views/yubikey/AuthenticatorYubiKeyView';\n\n// custom app\nimport ChallengePushView from './views/shared/ChallengePushView';\nimport ChallengeCustomAppResendPushView from './views/custom-app/ChallengeCustomAppResendPushView';\n\n// custom password\nimport ReEnrollCustomPasswordExpiryView from './views/custom-password/ReEnrollCustomPasswordExpiryView';\n\nconst DEFAULT = '_';\n\nconst VIEWS_MAPPING = {\n [RemediationForms.IDENTIFY]: {\n [DEFAULT]: IdentifierView,\n },\n [RemediationForms.IDENTIFY_RECOVERY]: {\n [DEFAULT]: IdentifyRecoveryView,\n },\n [RemediationForms.DEVICE_CHALLENGE_POLL]: {\n [DEFAULT]: DeviceChallengePollView,\n },\n [RemediationForms.LAUNCH_AUTHENTICATOR]: {\n [DEFAULT]: SignInDeviceView,\n },\n [RemediationForms.DEVICE_APPLE_SSO_EXTENSION]: {\n [DEFAULT]: SSOExtensionView,\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifySSOExtensionView,\n },\n [RemediationForms.CANCEL_TRANSACTION]: {\n [DEFAULT]: SSOExtensionView,\n },\n [RemediationForms.ENROLL_PROFILE]: {\n [DEFAULT]: EnrollProfileView,\n },\n [RemediationForms.ENROLL_PROFILE_UPDATE]: {\n [DEFAULT]: EnrollProfileUpdateView,\n },\n [RemediationForms.POLL]: {\n [DEFAULT]: PollView\n },\n [RemediationForms.REQUEST_ACTIVATION]: {\n [DEFAULT]: RequestActivationEmail\n },\n [RemediationForms.SELECT_AUTHENTICATOR_ENROLL]: {\n [DEFAULT]: SelectAuthenticatorEnrollView,\n },\n [RemediationForms.AUTHENTICATOR_ENROLLMENT_DATA]: {\n [AUTHENTICATOR_KEY.PHONE]: EnrollAuthenticatorDataPhoneView,\n [AUTHENTICATOR_KEY.EMAIL]: ChallengeAuthenticatorDataEmailView,\n },\n [RemediationForms.CONSENT_ADMIN]: {\n [DEFAULT]: AdminConsentView\n },\n [RemediationForms.CONSENT_ENDUSER]: {\n [DEFAULT]: EnduserConsentView\n },\n [RemediationForms.CONSENT_GRANULAR]: {\n [DEFAULT]: GranularConsentView\n },\n [RemediationForms.CONSENT_EMAIL_CHALLENGE]: {\n [DEFAULT]: EnduserEmailConsentView,\n },\n [RemediationForms.ENROLL_AUTHENTICATOR]: {\n [AUTHENTICATOR_KEY.DUO]: EnrollDuoAuthenticatorView,\n [AUTHENTICATOR_KEY.EMAIL]: EnrollAuthenticatorEmailView,\n [AUTHENTICATOR_KEY.GOOGLE_OTP]: EnrollAuthenticatorGoogleAuthenticatorView,\n [AUTHENTICATOR_KEY.IDP]: AuthenticatorIdPEnrollView,\n [AUTHENTICATOR_KEY.ON_PREM]: EnrollAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.PASSWORD]: EnrollAuthenticatorPasswordView,\n [AUTHENTICATOR_KEY.PHONE]: EnrollAuthenticatorPhoneView,\n [AUTHENTICATOR_KEY.RSA]: EnrollAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.SECURITY_QUESTION]: EnrollAuthenticatorSecurityQuestion,\n [AUTHENTICATOR_KEY.SYMANTEC_VIP]: AuthenticatorSymantecView,\n [AUTHENTICATOR_KEY.WEBAUTHN]: EnrollWebauthnView,\n [AUTHENTICATOR_KEY.YUBIKEY]: AuthenticatorYubiKeyView,\n },\n [RemediationForms.CHALLENGE_AUTHENTICATOR]: {\n [AUTHENTICATOR_KEY.CUSTOM_OTP]: ChallengeCustomOTPAuthenticatorView,\n [AUTHENTICATOR_KEY.DUO]: ChallengeDuoAuthenticatorView,\n [AUTHENTICATOR_KEY.EMAIL]: ChallengeAuthenticatorEmailView,\n [AUTHENTICATOR_KEY.GOOGLE_OTP]: ChallengeGoogleAuthenticatorView,\n [AUTHENTICATOR_KEY.IDP]: AuthenticatorIdPVerifyView,\n [AUTHENTICATOR_KEY.ON_PREM]: ChallengeAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyTotpView,\n [AUTHENTICATOR_KEY.PASSWORD]: ChallengeAuthenticatorPasswordView,\n [AUTHENTICATOR_KEY.PHONE]: ChallengeAuthenticatorPhoneView,\n [AUTHENTICATOR_KEY.RSA]: ChallengeAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.SECURITY_QUESTION]: ChallengeAuthenticatorSecurityQuestion,\n [AUTHENTICATOR_KEY.SYMANTEC_VIP]: AuthenticatorSymantecView,\n [AUTHENTICATOR_KEY.WEBAUTHN]: ChallengeWebauthnView,\n [AUTHENTICATOR_KEY.YUBIKEY]: AuthenticatorYubiKeyView,\n },\n [RemediationForms.ENROLL_POLL]: {\n [AUTHENTICATOR_KEY.OV]: EnrollPollOktaVerifyView,\n },\n [RemediationForms.SELECT_ENROLLMENT_CHANNEL]: {\n [AUTHENTICATOR_KEY.OV]: SelectEnrollmentChannelOktaVerifyView,\n },\n [RemediationForms.ENROLLMENT_CHANNEL_DATA]: {\n [AUTHENTICATOR_KEY.OV]: EnrollementChannelDataOktaVerifyView,\n },\n // Expired scenarios for authenticators..\n [RemediationForms.REENROLL_AUTHENTICATOR]: {\n // Password expired scenario..\n [AUTHENTICATOR_KEY.PASSWORD]: ReEnrollAuthenticatorPasswordView\n },\n [RemediationForms.REENROLL_CUSTOM_PASSWORD_EXPIRY]: {\n // Custom password expired scenario\n [AUTHENTICATOR_KEY.PASSWORD]: ReEnrollCustomPasswordExpiryView,\n },\n // Will expire soon warnings for authenticators..\n [RemediationForms.REENROLL_AUTHENTICATOR_WARNING]: {\n // Password will expire soon scenario..\n [AUTHENTICATOR_KEY.PASSWORD]: ReEnrollAuthenticatorWarningPasswordView,\n },\n // Reset forms for authenticators..\n [RemediationForms.RESET_AUTHENTICATOR]: {\n // Admin driven password reset..\n [AUTHENTICATOR_KEY.PASSWORD]: ResetAuthenticatorPasswordView,\n },\n [RemediationForms.SELECT_AUTHENTICATOR_AUTHENTICATE]: {\n [DEFAULT]: SelectAuthenticatorVerifyView,\n },\n [RemediationForms.SELECT_AUTHENTICATOR_UNLOCK]: {\n [DEFAULT]: SelectAuthenticatorUnlockAccountView,\n },\n [RemediationForms.CHALLENGE_POLL]: {\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyView,\n [AUTHENTICATOR_KEY.CUSTOM_APP]: ChallengePushView,\n },\n [RemediationForms.RESEND]: {\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyResendPushView,\n [AUTHENTICATOR_KEY.CUSTOM_APP]: ChallengeCustomAppResendPushView,\n },\n [RemediationForms.AUTHENTICATOR_VERIFICATION_DATA]: {\n [AUTHENTICATOR_KEY.PHONE]: ChallengeAuthenticatorDataPhoneView,\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyCustomAppDataView,\n [AUTHENTICATOR_KEY.EMAIL]: ChallengeAuthenticatorDataEmailView,\n [AUTHENTICATOR_KEY.CUSTOM_APP]: ChallengeOktaVerifyCustomAppDataView,\n },\n [RemediationForms.FAILURE_REDIRECT]: {\n [DEFAULT]: AutoRedirectView,\n },\n [RemediationForms.SUCCESS_REDIRECT]: {\n [DEFAULT]: AutoRedirectView,\n },\n [RemediationForms.REDIRECT_IDP]: {\n [DEFAULT]: RedirectIdPView,\n },\n [RemediationForms.PIV_IDP]: {\n [DEFAULT]: ChallengePIVView,\n },\n [RemediationForms.DEVICE_ENROLLMENT_TERMINAL]: {\n [DEFAULT]: DeviceEnrollmentTerminalView,\n },\n [RemediationForms.USER_CODE] : {\n [DEFAULT] : DeviceCodeActivateView\n },\n [RemediationForms.TERMINAL]: {\n [DEFAULT]: TerminalView,\n },\n};\n\nexport default {\n create(formName, authenticatorKey = DEFAULT) {\n const config = VIEWS_MAPPING[formName];\n if (!config) {\n Logger.warn(`Cannot find customized View for ${formName}.`);\n return BaseView;\n }\n const View = config[authenticatorKey] || config[DEFAULT];\n if (!View) {\n Logger.warn(`Cannot find customized View for ${formName} + ${authenticatorKey}.`);\n return BaseView;\n }\n\n return View;\n }\n};\n","import hbs from 'handlebars-inline-precompile';\n\nimport { _, Form, loc, internal, createCallout, View } from 'okta';\nimport * as FormInputFactory from './FormInputFactory';\n\nconst { FormUtil } = internal.views.forms.helpers;\nconst INFO_MESSAGE_CLASS = 'INFO';\n\nexport default Form.extend({\n\n layout: 'o-form-theme',\n className: 'ion-form',\n hasSavingState: true,\n autoSave: false,\n noCancelButton: true,\n\n title() {\n return loc('oform.title.authenticate', 'login');\n },\n\n save() {\n return loc('oform.next', 'login');\n },\n\n modelEvents: {\n 'clearFormError': 'handleClearFormError',\n 'error': 'triggerAfterError',\n },\n\n initialize() {\n const uiSchemas = this.getUISchema();\n const inputOptions = uiSchemas.map(FormInputFactory.create);\n\n //should be used before adding any other input components\n this.showMessages();\n\n // Render CAPTCHA if one of the form fields requires us to.\n this.listenTo(this.options.appState, 'onCaptchaLoaded', (captchaObject) => {\n this.captchaObject = captchaObject;\n });\n\n inputOptions.forEach(input => {\n this.addInputOrView(input);\n });\n\n this.listenTo(this, 'save', this.saveForm);\n this.listenTo(this, 'cancel', this.cancelForm);\n },\n\n focus(...args) {\n if (this.settings.get('features.autoFocus')) {\n Form.prototype.focus.apply(this, args);\n }\n },\n\n handleClearFormError() {\n const formErrorContainer = this.$('.o-form-error-container');\n formErrorContainer.empty();\n if (formErrorContainer.hasClass('o-form-has-errors')) {\n this.clearErrors();\n }\n },\n\n triggerAfterError(model, error) {\n this.options.appState.trigger('afterError', error);\n },\n\n saveForm(model) {\n //remove any existing warnings or messages before saving form\n this.$el.find('.o-form-error-container').empty();\n\n // Execute Captcha if enabled for this form.\n if (this.captchaObject) {\n this.captchaObject.execute();\n } else {\n this.options.appState.trigger('saveForm', model);\n }\n },\n\n postRender() {\n /**\n * Widget would use infoContainer to display interactive messages that should be persisted during\n * invalid form submissions. For eg resend-warning callout should not be cleared upon invalid form submit.\n * Rerender would clear infoContainer or views classes can clear it explicitly.\n */\n const infoContainer= '
          ';\n this.$el.find('.o-form-error-container').before(infoContainer);\n\n this.addIdentifier();\n },\n\n /**\n * Render user identifier below title, or if no title, render below message.\n */\n addIdentifier() {\n const { identifier } = this.options.appState.get('user') || {};\n if (!identifier) {\n return;\n } else if (!this.settings.get('features.showIdentifier')) {\n return;\n }\n\n const header = this.$el.find('[data-se=\"o-form-head\"]');\n const identifierHTMLString = hbs('
          \\\n {{identifier}}\\\n
          ')({identifier});\n\n if (header.length) {\n header.after(identifierHTMLString);\n } else {\n this.$el.find('.o-form-error-container').after(identifierHTMLString);\n }\n },\n\n cancelForm() {\n this.options.appState.trigger('invokeAction', 'cancel');\n },\n\n getUISchema() {\n if (Array.isArray(this.options.currentViewState.uiSchema)) {\n return this.options.currentViewState.uiSchema;\n } else {\n return [];\n }\n },\n\n addInputOrView(input) {\n if (input.visible === false || (input.mutable === false && input.visible !== true)) {\n return;\n }\n if (input.View) {\n this.add(input.View, _.omit(input, 'View', 'showWhen'));\n if (input.showWhen) {\n FormUtil.applyShowWhen(this.last(), input.showWhen);\n }\n } else {\n this.addInput(input);\n }\n\n if (Array.isArray(input.optionsUiSchemas)) {\n if (this.options.optionUiSchemaConfig[input.name]) {\n const optionUiSchemaIndex = Number(this.options.optionUiSchemaConfig[input.name]);\n const optionUiSchemas = input.optionsUiSchemas[optionUiSchemaIndex] || [];\n optionUiSchemas.forEach(this.addInputOrView.bind(this));\n }\n }\n },\n\n /*\n * Views should override this function to render custom error callouts for invalid form actions.\n * Should return true when callout is customized\n */\n showCustomFormErrorCallout: null,\n\n /*\n * Renders the contents of messages object (if any, on error) during initialize\n * This function is called during Form.initialize, and will display\n * messages when the form reloads.\n * Note: Any user action related form errors handled by FormController.showFormErrors\n */\n showMessages(options) {\n const messages = this.options.appState.get('messages') || {};\n const errContainer = '.o-form-error-container';\n if (Array.isArray(messages.value) && !(options instanceof View)) {\n this.add('
          ', errContainer);\n messages.value.forEach(obj => {\n if(!obj?.class || obj.class === INFO_MESSAGE_CLASS) {\n // add message as plain text\n this.add(`

          ${obj.message}

          `, '.ion-messages-container');\n } else {\n const errorObj = {\n class: obj?.class ?? '',\n message: obj?.message,\n title: '',\n ...options\n };\n this.add(createCallout({\n content: errorObj.message,\n type: errorObj.class.toLowerCase(),\n title: errorObj.title\n }), errContainer);\n options = null; // prevent repeating first error message\n }\n });\n } else if (options instanceof View) {\n // if callee is showCustomFormErrorCallout. show custom error views\n this.add(options, errContainer);\n }\n },\n});","import { Collection, _, loc, createButton, InputOptions } from 'okta';\n\nimport AuthenticatorEnrollOptions from '../components/AuthenticatorEnrollOptions';\nimport AuthenticatorVerifyOptions from '../components/AuthenticatorVerifyOptions';\nimport { getAuthenticatorDataForEnroll, getAuthenticatorDataForVerification } from '../utils/AuthenticatorUtil';\nimport { AUTHENTICATOR_KEY, FORMS as RemediationForms } from '../../ion/RemediationConstants';\nimport IDP from 'util/IDP';\nimport AdminScopeList from 'v1/views/admin-consent/ScopeList';\nimport EnduserScopeList from 'v1/views/consent/ScopeList';\nimport CaptchaView from '../views/captcha/CaptchaView';\n\nconst isTextOverflowing = (text, maxWidth) => {\n // Create a temporary element and attach it to the document so we can compare the client width to the \n // max width allowed.\n const elem = document.createElement('div');\n elem.style.position = 'absolute';\n elem.style.left = '-9999px';\n elem.style.whiteSpace = 'nowrap';\n elem.innerHTML = text;\n\n document.body.appendChild(elem);\n const result = elem.clientWidth;\n document.body.removeChild(elem);\n\n return result > maxWidth;\n};\n\nconst createAuthenticatorEnrollSelectView = (opt) => {\n const optionItems = (opt.options || [])\n .map(opt => {\n return Object.assign({}, opt, getAuthenticatorDataForEnroll(opt));\n });\n return {\n View: AuthenticatorEnrollOptions,\n options: {\n name: opt.name,\n collection: new Collection(optionItems),\n }\n };\n};\n\nconst createAuthenticatorVerifySelectView = (opt) => {\n let optionItems = (opt.options || []);\n // If webauthn enrollments > 1 just show one entry with a generic namne (first) so user doesnt have to select which\n // one to pick. eg) If there is yubikey5 and another unknown u2f key, user cannot identify that easily. We need to\n // do this at least until users can give authenticator enrollments custom names.\n const authSet = new Set();\n optionItems = optionItems.filter(opt => {\n let isDuplicate;\n if (opt.authenticatorKey === AUTHENTICATOR_KEY.WEBAUTHN) {\n isDuplicate = authSet.has(opt.authenticatorKey);\n authSet.add(opt.authenticatorKey);\n } else if(opt.authenticatorKey === AUTHENTICATOR_KEY.CUSTOM_APP) {\n // Filter the duplicate enrollment by id for custom app. \n isDuplicate = authSet.has(opt?.value?.id);\n authSet.add(opt?.value?.id);\n } \n return !isDuplicate;\n });\n optionItems = optionItems.map(opt => {\n return Object.assign({}, opt, getAuthenticatorDataForVerification(opt));\n });\n return {\n View: AuthenticatorVerifyOptions,\n options: {\n name: opt.name,\n collection: new Collection(optionItems),\n }\n };\n};\n\nconst createAdminScopesView = () => {\n return {\n View: AdminScopeList,\n };\n};\nconst createEnduserScopesView = () => {\n return {\n View: EnduserScopeList,\n };\n};\n\nconst createCaptchaView = (opt) => {\n return {\n View: CaptchaView,\n options: {\n name: opt.name,\n } \n };\n};\n\nconst inputCreationStrategy = {\n authenticatorEnrollSelect: createAuthenticatorEnrollSelectView,\n authenticatorVerifySelect: createAuthenticatorVerifySelectView,\n ['admin-consent']: createAdminScopesView,\n ['consent']: createEnduserScopesView,\n ['captcha']: createCaptchaView,\n};\n\n// TODO: move logic to uiSchemaTransformer\nconst create = function(uiSchemaObj) {\n const strategyFn = inputCreationStrategy[uiSchemaObj.type] || _.identity;\n return strategyFn(uiSchemaObj);\n};\n\nconst createPIVButton = (settings, appState) => {\n const pivIdp =\n appState.get('remediations').filter(idp => idp.name === RemediationForms.PIV_IDP);\n if (pivIdp.length < 1) {\n return [];\n }\n const pivConfig = settings.get('piv');\n const className = pivConfig.className || '';\n return [{\n attributes: {\n 'data-se': 'piv-card-button',\n },\n className: className + ' piv-button',\n title: pivConfig.text || loc('piv.cac.card', 'login'),\n click: (e) => {\n e.preventDefault();\n appState.trigger('switchForm', RemediationForms.PIV_IDP);\n },\n }];\n};\n\n/**\n * Example of `redirect-idp` remediation.\n * {\n * \"name\": \"redirect-idp\",\n * \"type\": \"MICROSOFT\",\n * \"idp\": {\n * \"id\": \"0oa2szc1K1YPgz1pe0g4\",\n * \"name\": \"Microsoft IDP\"\n * },\n * \"href\": \"http://localhost:3000/sso/idps/0oa2szc1K1YPgz1pe0g4?stateToken=BB...AA\",\n * \"method\": \"GET\"\n * }\n *\n */\nconst createIdpButtons = ({ settings, appState }) => {\n // This is the max allowable text width that we can display for IDP buttons.\n // Generated by taking the 316px width of button minus padding-left (90 px) and padding-right (50px)\n const MAX_IDP_BUTTON_WIDTH = 186;\n\n const redirectIdpRemediations =\n appState.get('remediations').filter(idp => idp.name === RemediationForms.REDIRECT_IDP);\n\n if (!Array.isArray(redirectIdpRemediations)) {\n return [];\n }\n\n // create piv button\n const pivButton = createPIVButton(settings, appState);\n\n //add buttons from idp object\n const idpButtons = redirectIdpRemediations.map(idpObject => {\n let type = idpObject.type?.toLowerCase();\n let displayName;\n\n if (!_.contains(IDP.SUPPORTED_SOCIAL_IDPS, type)) {\n type = 'general-idp';\n // OKTA-396684 - makes sure that custom idps always have a name\n displayName = loc('customauth.sign.in.with.label', 'login', [idpObject.idp?.name]);\n } else {\n displayName = loc(`socialauth.${type}.label`, 'login');\n }\n\n const classNames = [\n 'social-auth-button',\n `social-auth-${type}-button`,\n ];\n\n if (type === 'general-idp') {\n classNames.push('no-translate');\n }\n\n if (idpObject.idp.className) {\n classNames.push(idpObject.idp.className);\n }\n\n const button: InputOptions = {\n attributes: {\n 'data-se': `social-auth-${type}-button`,\n },\n className: classNames.join(' '),\n title: displayName,\n href: idpObject.href,\n };\n\n if (isTextOverflowing(displayName, MAX_IDP_BUTTON_WIDTH)) {\n // We add a tooltip in case the name gets truncated if too long\n button.attributes.title = displayName;\n }\n\n return button;\n });\n\n return [...pivButton, ...idpButtons];\n};\n\nconst createCustomButtons = (settings) => {\n const customButtons = settings.get('customButtons');\n return customButtons.map(customButton => {\n const button = {\n attributes: {\n 'data-se': customButton.dataAttr\n },\n className: customButton.className + ' default-custom-button',\n title: customButton.title || loc(customButton.i18nKey, 'login'),\n click: customButton.click\n };\n return button;\n });\n};\n\nconst addCustomButton = (customButtonSettings) => {\n return createButton({\n ...customButtonSettings,\n className: `${customButtonSettings.className} default-custom-button button-primary`,\n });\n};\n\nexport {\n create,\n createIdpButtons,\n createCustomButtons,\n addCustomButton,\n isTextOverflowing\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ConfigError } from 'util/Errors';\nimport Util from 'util/Util';\nimport Logger from 'util/Logger';\nimport getAuthClient from 'widget/getAuthClient';\nimport buildRenderOptions from 'widget/buildRenderOptions';\nimport createRouter from 'widget/createRouter';\nimport Hooks from 'models/Hooks';\nimport {\n WidgetOptions,\n WidgetOktaAuthConstructor,\n WidgetOktaAuthInterface,\n OktaSignInAPI,\n RenderSuccessCallback,\n RenderErrorCallback,\n RenderResult,\n RenderOptions,\n HookFunction,\n RenderResultSuccess,\n EventCallback,\n EventCallbackWithError,\n EventName,\n RouterClassFactory,\n AbstractRouter,\n RouterConstructor\n} from '../types';\nimport { Tokens } from '@okta/okta-auth-js';\n\nconst EVENTS_LIST = ['ready', 'afterError', 'afterRender'];\n\nexport function createOktaSignIn\n(\n authClientConstructor: WidgetOktaAuthConstructor,\n routerClassFactory: RouterClassFactory\n)\n{\n return class OktaSignIn implements OktaSignInAPI {\n Router: RouterConstructor;\n options: WidgetOptions;\n hooks: Hooks;\n router: AbstractRouter;\n authClient: WidgetOktaAuthInterface;\n\n constructor(options: WidgetOptions) {\n Util.debugMessage(`\n The Okta Sign-In Widget is running in development mode.\n When you are ready to publish your app, embed the minified version to turn on production mode.\n See: https://developer.okta.com/code/javascript/okta_sign-in_widget#cdn\n `);\n\n this.options = options;\n this.authClient = getAuthClient(authClientConstructor, options);\n\n // validate authClient configuration against widget options\n if (options.useClassicEngine !== true && this.authClient.options.clientId && this.authClient.isPKCE() === false) {\n throw new ConfigError(\n 'OAuth2 with interaction code flow requires PKCE to be enabled on the authClient.'\n );\n }\n\n // Hooks can be modified before or after render\n this.hooks = new Hooks({\n hooks: options.hooks\n });\n\n this.Router = routerClassFactory(options);\n\n // Triggers the event up the chain so it is available to the consumers of the widget.\n this.Router.prototype.Events.listenTo.call(this, this.Router.prototype, 'all', this.trigger);\n\n // On the first afterRender event (usually when the Widget is ready) - emit a 'ready' event\n this.once('afterRender', function(context) {\n this.trigger('ready', context);\n });\n }\n\n /**\n * Render the sign in widget to an element. Returns a promise that will resolve on success or reject on error.\n * @param options - options for the signin widget.\n * Must have an el or $el property to render the widget to.\n * @param success - success callback function\n * @param error - error callback function\n */\n renderEl(renderOptions: RenderOptions, successFn?: RenderSuccessCallback, errorFn?: RenderErrorCallback): Promise {\n if (this.router) {\n throw new Error('An instance of the widget has already been rendered. Call remove() first.');\n }\n\n const res = createRouter(this.Router, this.options, renderOptions, this.authClient, successFn, errorFn, this.hooks);\n this.router = res.router;\n return res.promise;\n }\n\n \n hide(): void {\n if (this.router) {\n this.router.hide();\n }\n }\n\n show(): void {\n if (this.router) {\n this.router.show();\n }\n }\n\n remove(): void {\n if (this.router) {\n this.router.remove();\n this.router = undefined;\n }\n }\n\n /**\n * Renders the Widget and returns a promise that resolves to OAuth tokens\n * @param options - options for the signin widget\n */\n showSignInToGetTokens(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options), {\n redirect: 'never'\n });\n const promise = this.renderEl(renderOptions).then(res => {\n return (res as RenderResultSuccess).tokens;\n });\n const authClient = this.router.settings.getAuthClient();\n if (authClient.isAuthorizationCodeFlow() && !authClient.isPKCE()) {\n throw new ConfigError('\"showSignInToGetTokens()\" should not be used for authorization_code flow. ' + \n 'Use \"showSignInAndRedirect()\" instead');\n }\n return promise;\n }\n\n /**\n * Renders the widget and redirects to the OAuth callback\n * @param options - options for the signin widget\n */\n showSignInAndRedirect(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options), {\n redirect: 'always'\n });\n return this.renderEl(renderOptions).then(() => {\n // This method should never return, it will either redirect or reject with error\n return;\n });\n }\n\n /**\n * Renders the widget. Either resolves the returned promise, or redirects.\n * @param options - options for the signin widget\n */\n showSignIn(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options));\n return this.renderEl(renderOptions);\n }\n\n // Hook convenience functions\n before(formName: string, callbackFn: HookFunction): void {\n this.hooks.mergeHook(formName, {\n before: [\n callbackFn\n ]\n });\n }\n\n after(formName: string, callbackFn: HookFunction): void {\n this.hooks.mergeHook(formName, {\n after: [\n callbackFn\n ]\n });\n }\n\n getUser(): any {\n return this.router?.appState?.getUser();\n }\n \n // Events API\n\n on(event: EventName, callback: EventCallback | EventCallbackWithError): void {\n // custom events listener on widget instance to trap third-party callback errors\n if (EVENTS_LIST.includes(event)) {\n const origCallback = callback;\n callback = function(...callbackArgs) {\n try {\n origCallback.apply(this, callbackArgs);\n } catch (err) {\n Logger.error(`[okta-signin-widget] \"${event}\" event handler error:`, err);\n }\n };\n }\n this.Router.prototype.Events.on.call(this, event, callback);\n }\n\n off(event?: EventName, callback?: EventCallback | EventCallbackWithError): void {\n this.Router.prototype.Events.off.call(this, event, callback);\n }\n\n once(event: EventName, callback: EventCallback): void {\n this.Router.prototype.Events.once.call(this, event, callback);\n }\n\n stopListening(event?: EventName, callback?: EventCallback): void {\n this.Router.prototype.Events.stopListening.call(this, event, callback);\n }\n\n listenTo(object: any, event: EventName, callback: EventCallback): void {\n this.Router.prototype.Events.listenTo.call(this, object, event, callback);\n }\n\n trigger(event: EventName, ...args: any[]): void {\n this.Router.prototype.Events.trigger.apply(this, [event, ...args]);\n }\n\n };\n}\n","import { ConfigError } from 'util/Errors';\nimport Util from 'util/Util';\nimport config from 'config/config.json';\nimport { WidgetOptions, WidgetOktaAuthConstructor, WidgetOktaAuthInterface } from 'types';\n\nexport default function getAuthClientInstance(\n OktaAuth: WidgetOktaAuthConstructor,\n options: WidgetOptions = {}\n): WidgetOktaAuthInterface\n{\n // if authClient is set, authParams are disregarded\n let { authClient, authParams } = options;\n\n if (!authClient) {\n // Create an authClient using widget options and optional authParams\n const {\n issuer,\n clientId,\n redirectUri,\n state,\n scopes,\n flow,\n codeChallenge,\n codeChallengeMethod,\n recoveryToken\n } = options;\n authParams = {\n issuer,\n clientId,\n redirectUri,\n state,\n scopes,\n flow,\n codeChallenge,\n codeChallengeMethod,\n transformErrorXHR: Util.transformErrorXHR,\n recoveryToken,\n ...authParams\n };\n\n if (!authParams.issuer) {\n authParams.issuer = options.baseUrl + '/oauth2/default';\n }\n\n authClient = new OktaAuth(authParams);\n }\n\n // Add widget version to extended user agent header\n if (!authClient._oktaUserAgent) {\n throw new ConfigError('The passed in authClient should be version 5.4.0 or above.');\n } else {\n authClient._oktaUserAgent.addEnvironment(`okta-signin-widget-${config.version}`);\n }\n\n return authClient;\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"OktaAuth\"] = factory();\n\telse\n\t\troot[\"OktaAuth\"] = factory();\n})(self, function() {\nreturn ","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\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n\nimport { AuthnTransactionState } from '../types';\n\nexport function addStateToken(res, options?) {\n var builtArgs = {} as AuthnTransactionState;\n Object.assign(builtArgs, options);\n\n // Add the stateToken if one isn't passed and we have one\n if (!builtArgs.stateToken && res.stateToken) {\n builtArgs.stateToken = res.stateToken;\n }\n\n return builtArgs;\n}\n\nexport function getStateToken(res) {\n return addStateToken(res);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity, max-statements */\nimport { post } from '../http';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { STATE_TOKEN_KEY_NAME } from '../constants';\nimport { OktaAuthHttpInterface } from '../http/types';\nimport { OktaAuthStorageOptions } from '../storage/types';\nimport { addStateToken } from './util/stateToken';\nimport { AuthnTransactionAPI } from './types';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function transactionStatus(sdk: OktaAuthHttpInterface, args) {\n args = addStateToken(sdk, args);\n return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn', args, { withCredentials: true });\n}\n\nexport function resumeTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n if (!args || !args.stateToken) {\n var stateToken = getSavedStateToken(sdk);\n if (stateToken) {\n args = {\n stateToken: stateToken\n };\n } else {\n return Promise.reject(new AuthSdkError('No transaction to resume'));\n }\n }\n return transactionStatus(sdk, args)\n .then(function(res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function introspectAuthn (sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n if (!args || !args.stateToken) {\n var stateToken = getSavedStateToken(sdk);\n if (stateToken) {\n args = {\n stateToken: stateToken\n };\n } else {\n return Promise.reject(new AuthSdkError('No transaction to evaluate'));\n }\n }\n return transactionStep(sdk, args)\n .then(function (res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function transactionStep(sdk: OktaAuthHttpInterface, args) {\n args = addStateToken(sdk, args);\n // v1 pipeline introspect API\n return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn/introspect', args, { withCredentials: true });\n}\n\nexport function transactionExists(sdk: OktaAuthBaseInterface) {\n // We have a cookie state token\n return !!getSavedStateToken(sdk);\n}\n\nexport function postToTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, url: string, args, options?) {\n options = Object.assign({ withCredentials: true }, options);\n return post(sdk, url, args, options)\n .then(function(res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function getSavedStateToken(sdk: OktaAuthBaseInterface) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storage = sdk.options.storageUtil!.storage;\n return storage.get(STATE_TOKEN_KEY_NAME);\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { find, omit, toQueryString } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { get } from '../../http';\nimport { AuthnTransactionAPI, AuthnTransactionState } from '../types';\nimport { postToTransaction } from '../api';\nimport { addStateToken } from './stateToken';\n\n\n// query parameters to post url\ninterface PostToTransactionParams {\n autoPush?: boolean;\n rememberDevice?: boolean;\n updatePhone?: boolean;\n}\n\n// eslint-disable-next-line max-params\nexport function link2fn(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, link, ref) {\n if (Array.isArray(link)) {\n return function(name, opts?) {\n if (!name) {\n throw new AuthSdkError('Must provide a link name');\n }\n\n var lk = find(link, {name: name});\n if (!lk) {\n throw new AuthSdkError('No link found for that name');\n }\n\n return link2fn(sdk, tx, res, obj, lk, ref)(opts);\n };\n\n } else if (link.hints &&\n link.hints.allow &&\n link.hints.allow.length === 1) {\n var method = link.hints.allow[0];\n switch (method) {\n\n case 'GET':\n return function() {\n return get(sdk, link.href, { withCredentials: true });\n };\n\n case 'POST':\n // eslint-disable-next-line max-statements,complexity\n return function(opts: AuthnTransactionState) {\n if (ref && ref.isPolling) {\n ref.isPolling = false;\n }\n\n var data = addStateToken(res, opts);\n\n if (res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL') {\n // Add factorType and provider\n Object.assign(data, {\n factorType: obj.factorType,\n provider: obj.provider\n });\n }\n\n var params = {} as PostToTransactionParams;\n var autoPush = data.autoPush;\n if (autoPush !== undefined) {\n if (typeof autoPush === 'function') {\n try {\n params.autoPush = !!autoPush();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n }\n }\n else if (autoPush !== null) {\n params.autoPush = !!autoPush;\n }\n data = omit(data, 'autoPush');\n }\n\n var rememberDevice = data.rememberDevice;\n if (rememberDevice !== undefined) {\n if (typeof rememberDevice === 'function') {\n try {\n params.rememberDevice = !!rememberDevice();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n }\n }\n else if (rememberDevice !== null) {\n params.rememberDevice = !!rememberDevice;\n }\n data = omit(data, 'rememberDevice');\n\n } else if (data.profile &&\n data.profile.updatePhone !== undefined) {\n if (data.profile.updatePhone) {\n params.updatePhone = true;\n }\n data.profile = omit(data.profile, 'updatePhone');\n }\n var href = link.href + toQueryString(params);\n return postToTransaction(sdk, tx, href, data);\n };\n }\n }\n}\n\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { post } from '../../http';\nimport { isNumber, isObject, getLink, toQueryString, delay as delayFn } from '../../util';\nimport { DEFAULT_POLLING_DELAY } from '../../constants';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport AuthPollStopError from '../../errors/AuthPollStopError';\nimport { AuthnTransactionState } from '../types';\nimport { getStateToken } from './stateToken';\n\ninterface PollOptions {\n delay?: number;\n rememberDevice?: boolean;\n autoPush?: boolean;\n transactionCallBack?: (AuthnTransactionState) => void;\n}\n\nexport function getPollFn(sdk, res: AuthnTransactionState, ref) {\n return function (options: PollOptions | number) {\n var delay;\n var rememberDevice;\n var autoPush;\n var transactionCallBack;\n\n if (isNumber(options)) {\n delay = options;\n } else if (isObject(options)) {\n options = options as PollOptions;\n delay = options.delay;\n rememberDevice = options.rememberDevice;\n autoPush = options.autoPush;\n transactionCallBack = options.transactionCallBack;\n }\n\n if (!delay && delay !== 0) {\n delay = DEFAULT_POLLING_DELAY;\n }\n\n // Get the poll function\n var pollLink = getLink(res, 'next', 'poll');\n // eslint-disable-next-line complexity\n function pollFn() {\n var opts = {} as PollOptions;\n if (typeof autoPush === 'function') {\n try {\n opts.autoPush = !!autoPush();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n }\n }\n else if (autoPush !== undefined && autoPush !== null) {\n opts.autoPush = !!autoPush;\n }\n if (typeof rememberDevice === 'function') {\n try {\n opts.rememberDevice = !!rememberDevice();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n }\n }\n else if (rememberDevice !== undefined && rememberDevice !== null) {\n opts.rememberDevice = !!rememberDevice;\n }\n\n var href = pollLink.href + toQueryString(opts);\n return post(sdk, href, getStateToken(res), {\n saveAuthnState: false,\n withCredentials: true\n });\n }\n\n ref.isPolling = true;\n\n var retryCount = 0;\n var recursivePoll = function () {\n // If the poll was manually stopped during the delay\n if (!ref.isPolling) {\n return Promise.reject(new AuthPollStopError());\n }\n return pollFn()\n .then(function (pollRes) {\n // Reset our retry counter on success\n retryCount = 0;\n\n // If we're still waiting\n if (pollRes.factorResult && pollRes.factorResult === 'WAITING') {\n\n // If the poll was manually stopped while the pollFn was called\n if (!ref.isPolling) {\n throw new AuthPollStopError();\n }\n\n if (typeof transactionCallBack === 'function') {\n transactionCallBack(pollRes);\n }\n\n // Continue poll\n return delayFn(delay).then(recursivePoll);\n\n } else {\n // Any non-waiting result, even if polling was stopped\n // during a request, will return\n ref.isPolling = false;\n return sdk.tx.createTransaction(pollRes);\n }\n })\n .catch(function(err) {\n // Exponential backoff, up to 16 seconds\n if (err.xhr &&\n (err.xhr.status === 0 || err.xhr.status === 429) &&\n retryCount <= 4) {\n var delayLength = Math.pow(2, retryCount) * 1000;\n retryCount++;\n return delayFn(delayLength)\n .then(recursivePoll);\n }\n throw err;\n });\n };\n return recursivePoll()\n .catch(function(err) {\n ref.isPolling = false;\n throw err;\n });\n };\n}\n","/* eslint-disable complexity */\nimport { OktaAuthHttpInterface } from '../../http/types';\nimport { clone, isObject, omit } from '../../util';\nimport { AuthnTransactionAPI } from '../types';\nimport { links2fns } from './links2fns';\n\nexport function flattenEmbedded(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n obj = obj || res;\n obj = clone(obj);\n\n if (Array.isArray(obj)) {\n var objArr = [];\n for (var o = 0, ol = obj.length; o < ol; o++) {\n objArr.push(flattenEmbedded(sdk, tx, res, obj[o], ref) as never);\n }\n return objArr;\n }\n\n var embedded = obj._embedded || {};\n\n for (var key in embedded) {\n if (!Object.prototype.hasOwnProperty.call(embedded, key)) {\n continue;\n }\n\n // Flatten any nested _embedded objects\n if (isObject(embedded[key]) || Array.isArray(embedded[key])) {\n embedded[key] = flattenEmbedded(sdk, tx, res, embedded[key], ref);\n }\n }\n\n // Convert any links on the embedded object\n var fns = links2fns(sdk, tx, res, obj, ref);\n Object.assign(embedded, fns);\n\n obj = omit(obj, '_embedded', '_links');\n Object.assign(obj, embedded);\n return obj;\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { AuthnTransactionFunctions, AuthnTransactionAPI } from '../types';\nimport { link2fn } from './link2fn';\nimport { getPollFn } from './poll';\n\nexport function links2fns(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n var fns = {} as AuthnTransactionFunctions;\n for (var linkName in obj._links) {\n if (!Object.prototype.hasOwnProperty.call(obj._links, linkName)) {\n continue;\n }\n\n var link = obj._links[linkName];\n \n if (linkName === 'next') {\n linkName = link.name;\n }\n\n if (link.type) {\n fns[linkName] = link;\n continue;\n }\n\n switch (linkName) {\n // poll is only found at the transaction\n // level, so we don't need to pass the link\n case 'poll':\n fns.poll = getPollFn(sdk, res, ref);\n break;\n\n default:\n var fn = link2fn(sdk, tx, res, obj, link, ref);\n if (fn) {\n fns[linkName] = fn;\n }\n }\n }\n return fns;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { OktaAuthHttpInterface } from '../http/types';\nimport {\n AuthnTransactionFunction,\n AuthnTransaction,\n AuthnTransactionAPI,\n AuthnTransactionState\n} from './types';\nimport { flattenEmbedded } from './util/flattenEmbedded';\n\nexport class AuthnTransactionImpl implements AuthnTransaction {\n next?: AuthnTransactionFunction;\n cancel?: AuthnTransactionFunction;\n skip?: AuthnTransactionFunction;\n unlock?: AuthnTransactionFunction;\n changePassword?: AuthnTransactionFunction;\n resetPassword?: AuthnTransactionFunction;\n answer?: AuthnTransactionFunction;\n recovery?: AuthnTransactionFunction;\n verify?: AuthnTransactionFunction;\n resend?: AuthnTransactionFunction;\n activate?: AuthnTransactionFunction;\n poll?: AuthnTransactionFunction;\n prev?: AuthnTransactionFunction;\n\n data?: AuthnTransactionState;\n stateToken?: string;\n sessionToken?: string;\n status: string;\n user?: Record;\n factor?: Record;\n factors?: Array >;\n policy?: Record;\n scopes?: Array >;\n target?: Record;\n authentication?: Record;\n constructor(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res: AuthnTransactionState | null = null) {\n this.data = undefined;\n this.status = undefined as unknown as string;\n if (res) {\n this.data = res;\n\n // Parse response from Authn V1\n Object.assign(this, flattenEmbedded(sdk, tx, res, res, {}));\n delete this.stateToken;\n\n // RECOVERY_CHALLENGE has some responses without _links.\n // Without _links, we emulate cancel to make it intuitive\n // to return to the starting state. We may remove this\n // when OKTA-75434 is resolved\n if (res.status === 'RECOVERY_CHALLENGE' && !res._links) {\n this.cancel = function() {\n return Promise.resolve(tx.createTransaction());\n };\n }\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { RequestData, RequestOptions, OktaAuthHttpInterface } from '../http/types';\nimport {\n introspectAuthn,\n transactionStatus,\n transactionExists,\n resumeTransaction,\n postToTransaction\n} from './api';\nimport { AuthnTransactionImpl } from './AuthnTransactionImpl';\nimport { AuthnTransactionAPI, AuthnTransactionState } from './types';\n\n// Factory\nexport function createAuthnTransactionAPI(sdk: OktaAuthHttpInterface): AuthnTransactionAPI {\n const tx: AuthnTransactionAPI = {\n status: transactionStatus.bind(null, sdk),\n resume(args) {\n return resumeTransaction(sdk, tx, args);\n },\n exists: transactionExists.bind(null, sdk),\n introspect(args) {\n return introspectAuthn(sdk, tx, args);\n },\n createTransaction: (res?: AuthnTransactionState) => {\n return new AuthnTransactionImpl(sdk, tx, res);\n },\n postToTransaction: (url: string, args?: RequestData, options?: RequestOptions) => {\n return postToTransaction(sdk, tx, url, args, options);\n }\n };\n return tx;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { isFingerprintSupported } from '../features';\nimport {\n addListener,\n removeListener\n} from '../oidc';\nimport { FingerprintOptions } from '../authn/types';\nimport { OktaAuthHttpInterface } from '../http/types';\n\nexport default function fingerprint(sdk: OktaAuthHttpInterface, options?: FingerprintOptions): Promise {\n options = options || {};\n\n if (!isFingerprintSupported()) {\n return Promise.reject(new AuthSdkError('Fingerprinting is not supported on this device'));\n }\n\n var timeout;\n var iframe;\n var listener;\n var promise = new Promise(function (resolve, reject) {\n iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n\n // eslint-disable-next-line complexity\n listener = function listener(e) {\n if (!e || !e.data || e.origin !== sdk.getIssuerOrigin()) {\n return;\n }\n\n try {\n var msg = JSON.parse(e.data);\n } catch (err) {\n // iframe messages should all be parsable\n // skip not parsable messages come from other sources in same origin (browser extensions)\n // TODO: add namespace flag in okta-core to distinguish messages that come from other sources\n return;\n }\n\n if (!msg) { return; }\n if (msg.type === 'FingerprintAvailable') {\n return resolve(msg.fingerprint as string);\n }\n if (msg.type === 'FingerprintServiceReady') {\n e.source.postMessage(JSON.stringify({\n type: 'GetFingerprint'\n }), e.origin);\n }\n };\n addListener(window, 'message', listener);\n\n iframe.src = sdk.getIssuerOrigin() + '/auth/services/devicefingerprint';\n document.body.appendChild(iframe);\n\n timeout = setTimeout(function() {\n reject(new AuthSdkError('Fingerprinting timed out'));\n }, options?.timeout || 15000);\n });\n\n return promise.finally(function() {\n clearTimeout(timeout);\n removeListener(window, 'message', listener);\n if (document.body.contains(iframe)) {\n iframe.parentElement.removeChild(iframe);\n }\n }) as Promise;\n}\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { \n clone,\n} from '../util';\nimport fingerprint from '../browser/fingerprint';\nimport {\n FingerprintAPI,\n SigninWithCredentialsOptions,\n ForgotPasswordOptions,\n VerifyRecoveryTokenOptions,\n SigninOptions,\n OktaAuthTxInterface,\n AuthnTransaction,\n AuthnTransactionAPI\n} from './types';\nimport {\n createAuthnTransactionAPI,\n} from './factory';\nimport { StorageManagerInterface } from '../storage/types';\nimport { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\n\nexport function mixinAuthn\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthTx extends Base implements OktaAuthTxInterface {\n tx: AuthnTransactionAPI; // legacy, may be removed in future version\n authn: AuthnTransactionAPI;\n fingerprint: FingerprintAPI;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.authn = this.tx = createAuthnTransactionAPI(this);\n \n // Fingerprint API\n this.fingerprint = fingerprint.bind(null, this);\n }\n\n // Authn V1\n async signIn(opts: SigninOptions): Promise {\n opts = clone(opts || {});\n const _postToTransaction = (options?) => {\n delete opts.sendFingerprint;\n return this.tx.postToTransaction('/api/v1/authn', opts, options);\n };\n if (!opts.sendFingerprint) {\n return _postToTransaction();\n }\n return this.fingerprint()\n .then(function(fingerprint) {\n return _postToTransaction({\n headers: {\n 'X-Device-Fingerprint': fingerprint\n }\n });\n });\n }\n\n // Authn V1\n async signInWithCredentials(opts: SigninWithCredentialsOptions): Promise {\n return this.signIn(opts);\n }\n\n // { username, (relayState) }\n forgotPassword(opts): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/password', opts);\n }\n\n // { username, (relayState) }\n unlockAccount(opts: ForgotPasswordOptions): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/unlock', opts);\n }\n\n // { recoveryToken }\n verifyRecoveryToken(opts: VerifyRecoveryTokenOptions): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/token', opts);\n }\n\n };\n}\n","\n\n// Do not use this type in code, so it won't be emitted in the declaration output\nimport { removeNils } from '../util';\n\nimport * as features from '../features';\nimport * as constants from '../constants';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport Emitter from 'tiny-emitter';\n\nimport {\n EventEmitter,\n OktaAuthConstructor,\n OktaAuthBaseInterface,\n OktaAuthBaseOptions,\n OktaAuthOptionsConstructor, \n FeaturesAPI,\n} from './types';\n\nexport function createOktaAuthBase\n<\n O extends OktaAuthBaseOptions = OktaAuthBaseOptions,\n>\n(\n OptionsConstructor: OktaAuthOptionsConstructor\n): OktaAuthConstructor>\n{\n class OktaAuthBase implements OktaAuthBaseInterface\n {\n options: O;\n emitter: EventEmitter;\n features: FeaturesAPI;\n static features: FeaturesAPI = features;\n static constants = constants;\n \n constructor(...args: any[]) {\n const options = new OptionsConstructor(args.length ? args[0] || {} : {});\n this.options = removeNils(options) as O; // clear out undefined values\n this.emitter = new Emitter();\n this.features = features;\n }\n }\n\n // Hoist feature detection functions to prototype & static type\n OktaAuthBase.features = OktaAuthBase.prototype.features = features;\n\n // Also hoist constants for CommonJS users\n Object.assign(OktaAuthBase, {\n constants\n });\n\n return OktaAuthBase;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthBaseOptions } from './types';\n\nexport function createBaseOptionsConstructor() {\n\n return class BaseOptionsConstructor implements Required {\n devMode: boolean;\n\n constructor(args: any) {\n this.devMode = !!args.devMode;\n }\n };\n\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport Cookies from 'js-cookie';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n StorageOptions,\n CookieOptions,\n SimpleStorage,\n StorageType,\n StorageUtil,\n} from '../storage/types';\nimport { warn } from '../util';\nimport { isIE11OrLess } from '../features';\n\nexport interface CookieStorage extends SimpleStorage {\n setItem(key: string, value: any, expiresAt?: string | null): void; // can customize expiresAt\n getItem(key?: string): any; // if no key is passed, all cookies are returned\n removeItem(key: string); // remove a cookie\n}\n\nexport interface BrowserStorageUtil extends StorageUtil {\n browserHasLocalStorage(): boolean;\n browserHasSessionStorage(): boolean;\n getStorageByType(storageType: StorageType, options: StorageOptions): SimpleStorage;\n getLocalStorage(): Storage;\n getSessionStorage(): Storage;\n getInMemoryStorage(): SimpleStorage;\n getCookieStorage(options?: StorageOptions): CookieStorage;\n testStorage(storage: any): boolean;\n storage: Cookies;\n inMemoryStore: Record;\n}\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n // IE11 bug that Microsoft doesn't plan to fix\n // https://connect.microsoft.com/IE/Feedback/Details/1496040\n browserHasLocalStorage: function() {\n try {\n var storage = this.getLocalStorage();\n return this.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n browserHasSessionStorage: function() {\n try {\n var storage = this.getSessionStorage();\n return this.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n testStorageType: function(storageType: StorageType): boolean {\n var supported = false;\n switch (storageType) {\n case 'sessionStorage':\n supported = this.browserHasSessionStorage();\n break;\n case 'localStorage':\n supported = this.browserHasLocalStorage();\n break;\n case 'cookie':\n case 'memory':\n supported = true;\n break;\n default:\n supported = false;\n break;\n }\n return supported;\n },\n\n getStorageByType: function(storageType: StorageType, options?: StorageOptions): SimpleStorage {\n let storageProvider;\n switch (storageType) {\n case 'sessionStorage':\n storageProvider = this.getSessionStorage();\n break;\n case 'localStorage':\n storageProvider = this.getLocalStorage();\n break;\n case 'cookie':\n storageProvider = this.getCookieStorage(options);\n break;\n case 'memory':\n storageProvider = this.getInMemoryStorage();\n break;\n default:\n throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n break;\n }\n return storageProvider;\n },\n\n findStorageType: function(types: StorageType[]) {\n let curType;\n let nextType;\n \n types = types.slice(); // copy array\n curType = types.shift();\n nextType = types.length ? types[0] : null;\n if (!nextType) {\n return curType;\n }\n\n if (this.testStorageType(curType)) {\n return curType;\n }\n\n // preferred type was unsupported.\n warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n\n // fallback to the next type. this is a recursive call\n return this.findStorageType(types);\n },\n\n getLocalStorage: function() {\n // Workaound for synchronization issue of LocalStorage cross tabs in IE11\n if (isIE11OrLess() && !window.onstorage) {\n window.onstorage = function() {};\n }\n \n return localStorage;\n },\n\n getSessionStorage: function() {\n return sessionStorage;\n },\n\n // Provides webStorage-like interface for cookies\n getCookieStorage: function(options): CookieStorage {\n const secure = options!.secure;\n const sameSite = options!.sameSite;\n const sessionCookie = options!.sessionCookie;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n }\n const storage: CookieStorage = {\n getItem: this.storage.get,\n setItem: (key, value, expiresAt = '2200-01-01T00:00:00.000Z') => {\n // By defauilt, cookie shouldn't expire\n expiresAt = (sessionCookie ? null : expiresAt) as string;\n this.storage.set(key, value, expiresAt, {\n secure: secure, \n sameSite: sameSite,\n });\n },\n removeItem: (key) => {\n this.storage.delete(key);\n },\n };\n\n if (!options!.useSeparateCookies) {\n return storage;\n }\n\n // Tokens are stored separately because cookies have size limits.\n // Can only be used when storing an object value. Object properties will be saved to separate cookies.\n // Each property of the object must also be an object.\n return {\n getItem: function(key) {\n var data = storage.getItem(); // read all cookies\n var value = {};\n Object.keys(data).forEach(k => {\n if (k.indexOf(key!) === 0) { // filter out unrelated cookies\n value[k.replace(`${key}_`, '')] = JSON.parse(data[k]); // populate with cookie data\n }\n });\n return JSON.stringify(value);\n },\n setItem: function(key, value) {\n var existingValues = JSON.parse(this.getItem(key));\n value = JSON.parse(value);\n // Set key-value pairs from input to cookies\n Object.keys(value).forEach(k => {\n var storageKey = key + '_' + k;\n var valueToStore = JSON.stringify(value[k]);\n storage.setItem(storageKey, valueToStore);\n delete existingValues[k];\n });\n // Delete unmatched keys from existing cookies\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n removeItem: function(key) {\n var existingValues = JSON.parse(this.getItem(key));\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n };\n },\n\n // Provides an in-memory solution\n inMemoryStore: {}, // override this for a unique memory store per instance\n getInMemoryStorage: function() {\n return {\n getItem: (key) => {\n return this.inMemoryStore[key];\n },\n setItem: (key, value) => {\n this.inMemoryStore[key] = value;\n },\n };\n },\n\n testStorage: function(storage) {\n var key = 'okta-test-storage';\n try {\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n },\n\n storage: {\n set: function(name: string, value: string, expiresAt: string, options: CookieOptions): string {\n const { sameSite, secure } = options;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n }\n var cookieOptions: CookieOptions = {\n path: options.path || '/',\n secure,\n sameSite\n };\n\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(Date.parse(expiresAt))) {\n // Expires value can be converted to a Date object.\n //\n // If the 'expiresAt' value is not provided, or the value cannot be\n // parsed as a Date object, the cookie will set as a session cookie.\n cookieOptions.expires = new Date(expiresAt);\n }\n\n Cookies.set(name, value, cookieOptions);\n return this.get(name);\n },\n\n get: function(name?: string): string {\n // return all cookies when no args is provided\n if (!arguments.length) {\n return Cookies.get();\n }\n return Cookies.get(name);\n },\n\n delete: function(name: string): string {\n return Cookies.remove(name, { path: '/' });\n }\n }\n};\n\nexport default storageUtil;\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport const STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nexport const DEFAULT_POLLING_DELAY = 500;\nexport const DEFAULT_MAX_CLOCK_SKEW = 300;\nexport const DEFAULT_CACHE_DURATION = 86400;\nexport const TOKEN_STORAGE_NAME = 'okta-token-storage';\nexport const CACHE_STORAGE_NAME = 'okta-cache-storage';\nexport const PKCE_STORAGE_NAME = 'okta-pkce-storage';\nexport const TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nexport const SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';\nexport const ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';\nexport const IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nexport const ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nexport const ID_TOKEN_STORAGE_KEY = 'idToken';\nexport const REFRESH_TOKEN_STORAGE_KEY = 'refreshToken';\nexport const REFERRER_PATH_STORAGE_KEY = 'referrerPath';\n\n// Code verifier: Random URL-safe string with a minimum length of 43 characters.\n// Code challenge: Base64 URL-encoded SHA-256 hash of the code verifier.\nexport const MIN_VERIFIER_LENGTH = 43;\nexport const MAX_VERIFIER_LENGTH = 128;\nexport const DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\n\nexport const IDX_API_VERSION = '1.0.0';","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n \n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport PCancelable from 'p-cancelable';\nimport { AuthSdkError } from '../errors';\nimport {\n EVENT_ADDED,\n EVENT_REMOVED,\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface\n} from '../oidc';\nimport {\n AuthState,\n AuthStateLogOptions,\n OktaAuthCoreOptions,\n} from './types';\nimport { PromiseQueue, getConsole } from '../util';\n\nexport const INITIAL_AUTH_STATE = null;\nconst DEFAULT_PENDING = {\n updateAuthStatePromise: null,\n canceledTimes: 0\n};\nconst EVENT_AUTH_STATE_CHANGE = 'authStateChange';\nconst MAX_PROMISE_CANCEL_TIMES = 10;\n\n// only compare first level of authState\nconst isSameAuthState = (prevState: AuthState | null, state: AuthState) => {\n // initial state is null\n if (!prevState) {\n return false;\n }\n\n return prevState.isAuthenticated === state.isAuthenticated \n && JSON.stringify(prevState.idToken) === JSON.stringify(state.idToken)\n && JSON.stringify(prevState.accessToken) === JSON.stringify(state.accessToken)\n && prevState.error === state.error;\n};\n\n\nexport class AuthStateManager\n<\n M extends OAuthTransactionMeta,\n S extends OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions\n>\n{\n _sdk: OktaAuthOAuthInterface;\n _pending: { \n updateAuthStatePromise: any;\n canceledTimes: number; \n };\n _authState: AuthState | null;\n _prevAuthState: AuthState | null;\n _logOptions: AuthStateLogOptions;\n _transformQueue: PromiseQueue;\n\n constructor(sdk: OktaAuthOAuthInterface) {\n if (!sdk.emitter) {\n throw new AuthSdkError('Emitter should be initialized before AuthStateManager');\n }\n\n this._sdk = sdk;\n this._pending = { ...DEFAULT_PENDING };\n this._authState = INITIAL_AUTH_STATE;\n this._logOptions = {};\n this._prevAuthState = null;\n this._transformQueue = new PromiseQueue({\n quiet: true\n });\n\n // Listen on tokenManager events to start updateState process\n // \"added\" event is emitted in both add and renew process\n // Only listen on \"added\" event to update auth state\n sdk.tokenManager.on(EVENT_ADDED, (key, token) => {\n this._setLogOptions({ event: EVENT_ADDED, key, token });\n this.updateAuthState();\n });\n sdk.tokenManager.on(EVENT_REMOVED, (key, token) => {\n this._setLogOptions({ event: EVENT_REMOVED, key, token });\n this.updateAuthState();\n });\n }\n\n _setLogOptions(options) {\n this._logOptions = options;\n }\n\n getAuthState(): AuthState | null {\n return this._authState;\n }\n\n getPreviousAuthState(): AuthState | null {\n return this._prevAuthState;\n }\n\n async updateAuthState(): Promise {\n const { transformAuthState, devMode } = this._sdk.options;\n\n const log = (status) => {\n const { event, key, token } = this._logOptions;\n getConsole().group(`OKTA-AUTH-JS:updateAuthState: Event:${event} Status:${status}`);\n getConsole().log(key, token);\n getConsole().log('Current authState', this._authState);\n getConsole().groupEnd();\n \n // clear log options after logging\n this._logOptions = {};\n };\n\n const emitAuthStateChange = (authState) => {\n if (isSameAuthState(this._authState, authState)) {\n devMode && log('unchanged'); \n return;\n }\n this._prevAuthState = this._authState;\n this._authState = authState;\n // emit new authState object\n this._sdk.emitter.emit(EVENT_AUTH_STATE_CHANGE, { ...authState });\n devMode && log('emitted');\n };\n\n const finalPromise = (origPromise) => { \n return this._pending.updateAuthStatePromise.then(() => {\n const curPromise = this._pending.updateAuthStatePromise;\n if (curPromise && curPromise !== origPromise) {\n return finalPromise(curPromise);\n }\n return this.getAuthState();\n });\n };\n\n if (this._pending.updateAuthStatePromise) {\n if (this._pending.canceledTimes >= MAX_PROMISE_CANCEL_TIMES) {\n // stop canceling then starting a new promise\n // let existing promise finish to prevent running into loops\n devMode && log('terminated');\n return finalPromise(this._pending.updateAuthStatePromise);\n } else {\n this._pending.updateAuthStatePromise.cancel();\n }\n }\n\n /* eslint-disable complexity */\n const cancelablePromise = new PCancelable((resolve, _, onCancel) => {\n onCancel.shouldReject = false;\n onCancel(() => {\n this._pending.updateAuthStatePromise = null;\n this._pending.canceledTimes = this._pending.canceledTimes + 1;\n devMode && log('canceled');\n });\n\n const emitAndResolve = (authState) => {\n if (cancelablePromise.isCanceled) {\n resolve();\n return;\n }\n // emit event and resolve promise \n emitAuthStateChange(authState);\n resolve();\n\n // clear pending states after resolve\n this._pending = { ...DEFAULT_PENDING };\n };\n\n this._sdk.isAuthenticated()\n .then(() => {\n if (cancelablePromise.isCanceled) {\n resolve();\n return;\n }\n\n const { accessToken, idToken, refreshToken } = this._sdk.tokenManager.getTokensSync();\n const authState = {\n accessToken,\n idToken,\n refreshToken,\n isAuthenticated: !!(accessToken && idToken)\n };\n\n // Enqueue transformAuthState so that it does not run concurrently\n const promise: Promise = transformAuthState\n ? this._transformQueue.push(transformAuthState, null, this._sdk, authState) as Promise\n : Promise.resolve(authState);\n\n promise\n .then(authState => emitAndResolve(authState))\n .catch(error => emitAndResolve({\n accessToken, \n idToken, \n refreshToken,\n isAuthenticated: false, \n error\n }));\n });\n });\n /* eslint-enable complexity */\n this._pending.updateAuthStatePromise = cancelablePromise;\n\n return finalPromise(cancelablePromise);\n }\n\n subscribe(handler): void {\n this._sdk.emitter.on(EVENT_AUTH_STATE_CHANGE, handler);\n }\n\n unsubscribe(handler?): void {\n this._sdk.emitter.off(EVENT_AUTH_STATE_CHANGE, handler);\n }\n}\n","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/**\n * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n\n return true;\n } else {\n return false;\n }\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nvar ObliviousSet = /** @class */ (function () {\n function ObliviousSet(ttl) {\n this.ttl = ttl;\n this.map = new Map();\n /**\n * Creating calls to setTimeout() is expensive,\n * so we only do that if there is not timeout already open.\n */\n this._to = false;\n }\n ObliviousSet.prototype.has = function (value) {\n return this.map.has(value);\n };\n ObliviousSet.prototype.add = function (value) {\n var _this = this;\n this.map.set(value, now());\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n if (!this._to) {\n this._to = true;\n setTimeout(function () {\n _this._to = false;\n removeTooOldValues(_this);\n }, 0);\n }\n };\n ObliviousSet.prototype.clear = function () {\n this.map.clear();\n };\n return ObliviousSet;\n}());\nexport { ObliviousSet };\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(obliviousSet) {\n var olderThen = now() - obliviousSet.ttl;\n var iterator = obliviousSet.map[Symbol.iterator]();\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n var next = iterator.next().value;\n if (!next) {\n return; // no more elements\n }\n var value = next[0];\n var time = next[1];\n if (time < olderThen) {\n obliviousSet.map.delete(value);\n }\n else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\nexport function now() {\n return new Date().getTime();\n}\n//# sourceMappingURL=index.js.map","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\n\nexport var TRANSACTION_SETTINGS = {\n durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n\n return false;\n}\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\n\nexport function commitIndexedDBTransaction(tx) {\n if (tx.commit) {\n tx.commit();\n }\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n /**\n * All IndexedDB databases are opened without version\n * because it is a bit faster, especially on firefox\n * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n */\n\n var openRequest = IndexedDB.open(dbName);\n\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\n\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n return new Promise(function (res, rej) {\n tx.oncomplete = function () {\n return res();\n };\n\n tx.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n commitIndexedDBTransaction(tx);\n });\n}\nexport function getAllMessages(db) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n /**\n * Optimization shortcut,\n * if getAll() can be used, do not use a cursor.\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\n if (objectStore.getAll) {\n var getAllRequest = objectStore.getAll(keyRangeValue);\n return new Promise(function (res, rej) {\n getAllRequest.onerror = function (err) {\n return rej(err);\n };\n\n getAllRequest.onsuccess = function (e) {\n res(e.target.result);\n };\n });\n }\n\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n\n return new Promise(function (res, rej) {\n var openCursorRequest = openCursor();\n\n openCursorRequest.onerror = function (err) {\n return rej(err);\n };\n\n openCursorRequest.onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function removeMessagesById(db, ids) {\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n return Promise.all(ids.map(function (id) {\n var deleteRequest = objectStore[\"delete\"](id);\n return new Promise(function (res) {\n deleteRequest.onsuccess = function () {\n return res();\n };\n });\n }));\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n commitIndexedDBTransaction(tx);\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return removeMessagesById(db, tooOld.map(function (msg) {\n return msg.id;\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parrallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n\n\n _readLoop(state);\n\n return state;\n });\n}\n\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID; // if no one is listening, we do not need to scan for new messages\n\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\n\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState.db, channelState.options.idb.ttl);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n var idb = getIdb();\n\n if (!idb) {\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\n\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n\n };\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n var ls = getLocalStorage();\n if (!ls) return false;\n\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import NativeMethod from './methods/native.js';\nimport IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js'; // the line below will be removed from es5/browser builds\n\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // the line below will be removed from es5/browser builds\n\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error(\"No useable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\n\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * Unsend message promises\n * where the sending is still in progress\n * @type {Set}\n */\n\n this._uMP = new Set();\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was realy hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) {\n return;\n }\n\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n }) // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }) // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n },\n\n get isClosed() {\n return this.closed;\n }\n\n};\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\n\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj); // add/remove to unsend messages list\n\n broadcastChannel._uMP.add(sendPromise);\n\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\n\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n /**\n * Getting the current time in JavaScript has no good precision.\n * So instead of only listening to events that happend 'after' the listener\n * was added, we also listen to events that happended 100ms before it.\n * This ensures that when another process, like a WebWorker, sends events\n * we do not miss them out because their timestamp is a bit off compared to the main process.\n * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n */\n var hundredMsInMicro = 100 * 1000;\n var minMessageTime = listenerObject.time - hundredMsInMicro;\n\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE } from './util.js';\nimport { add as unloadAdd } from 'unload';\n\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n\n this.broadcastChannel = broadcastChannel;\n this._options = options;\n this.isLeader = false;\n this.hasLeader = false;\n this.isDead = false;\n this.token = randomToken();\n /**\n * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n\n this._aplQ = PROMISE_RESOLVED_VOID; // amount of unfinished applyOnce() calls\n\n this._aplQC = 0; // things to clean up\n\n this._unl = []; // _unloads\n\n this._lstns = []; // _listeners\n\n this._dpL = function () {}; // onduplicate listener\n\n\n this._dpLC = false; // true when onduplicate called\n\n /**\n * Even when the own instance is not applying,\n * we still listen to messages to ensure the hasLeader flag\n * is set correctly.\n */\n\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this.hasLeader = false;\n }\n\n if (msg.action === 'tell') {\n _this.hasLeader = true;\n }\n }\n };\n\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n\n this._lstns.push(hasLeaderListener);\n};\n\nLeaderElection.prototype = {\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce( // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n\n if (this.isLeader) {\n return sleep(0, true);\n }\n\n if (this.isDead) {\n return sleep(0, false);\n }\n /**\n * Already applying more then once,\n * -> wait for the apply queue to be finished.\n */\n\n\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n /**\n * Add a new apply-run\n */\n\n\n var applyRun = function applyRun() {\n /**\n * Optimization shortcuts.\n * Directly return if a previous run\n * has already elected a leader.\n */\n if (_this2.isLeader) {\n return PROMISE_RESOLVED_TRUE;\n }\n\n var stopCriteria = false;\n var stopCriteriaPromiseResolve;\n /**\n * Resolves when a stop criteria is reached.\n * Uses as a performance shortcut so we do not\n * have to await the responseTime when it is already clear\n * that the election failed.\n */\n\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var recieved = [];\n\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n recieved.push(msg);\n\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this2.token) {\n /**\n * other has higher token\n * -> stop applying and let other become leader.\n */\n stopCriteriaPromiseResolve();\n }\n }\n\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2.hasLeader = true;\n }\n }\n };\n\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\n /**\n * If the applyOnce() call came from the fallbackInterval,\n * we can assume that the election runs in the background and\n * not critical process is waiting for it.\n * When this is true, we give the other intances\n * more time to answer to messages in the election cycle.\n * This makes it less likely to elect duplicate leaders.\n * But also it takes longer which is not a problem because we anyway\n * run in the background.\n */\n\n\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n\n var applyPromise = _sendMessage(_this2, 'apply') // send out that this one is applying\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n }) // send again in case another instance was just created\n .then(function () {\n return _sendMessage(_this2, 'apply');\n }) // let others time to respond\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })[\"catch\"](function () {}).then(function () {\n _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n\n if (!stopCriteria) {\n // no stop criteria -> own is leader\n return beLeader(_this2).then(function () {\n return true;\n });\n } else {\n // other is leader\n return false;\n }\n });\n\n return applyPromise;\n };\n\n this._aplQC = this._aplQC + 1;\n this._aplQ = this._aplQ.then(function () {\n return applyRun();\n }).then(function () {\n _this2._aplQC = _this2._aplQC - 1;\n });\n return this._aplQ.then(function () {\n return _this2.isLeader;\n });\n },\n awaitLeadership: function awaitLeadership() {\n if (\n /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n\n return this._aLP;\n },\n\n set onduplicate(fn) {\n this._dpL = fn;\n },\n\n die: function die() {\n var _this3 = this;\n\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n\n this._lstns = [];\n\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n\n this._unl = [];\n\n if (this.isLeader) {\n this.hasLeader = false;\n this.isLeader = false;\n }\n\n this.isDead = true;\n return _sendMessage(this, 'death');\n }\n};\n/**\n * @param leaderElector {LeaderElector}\n */\n\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n\n return new Promise(function (res) {\n var resolved = false;\n\n function finish() {\n if (resolved) {\n return;\n }\n\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n } // try once now\n\n\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n /**\n * Try on fallbackInterval\n * @recursive\n */\n\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\n\n if (leaderElector.isLeader) {\n finish();\n } else {\n return leaderElector.applyOnce(true).then(function () {\n if (leaderElector.isLeader) {\n finish();\n } else {\n tryOnFallBack();\n }\n });\n }\n });\n };\n\n tryOnFallBack(); // try when other leader dies\n\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector.hasLeader = false;\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n\n leaderElector._lstns.push(whenDeathListener);\n });\n}\n/**\n * sends and internal message over the broadcast-channel\n */\n\n\nfunction _sendMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\n\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector.hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n\n leaderElector._unl.push(unloadFn);\n\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n _sendMessage(leaderElector, 'tell');\n }\n\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n /**\n * another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n * @link https://github.com/pubkey/broadcast-channel/issues/414\n * @link https://github.com/pubkey/broadcast-channel/issues/385\n */\n leaderElector._dpLC = true;\n\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n\n\n _sendMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n\n leaderElector._lstns.push(isLeaderListener);\n\n return _sendMessage(leaderElector, 'tell');\n}\n\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n\n return options;\n}\n\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n\n options = fillOptionsWithDefaults(options, channel);\n var elector = new LeaderElection(channel, options);\n\n channel._befC.push(function () {\n return elector.die();\n });\n\n channel._leaderElector = elector;\n return elector;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport {\n BroadcastChannel,\n createLeaderElection,\n LeaderElector\n} from 'broadcast-channel';\nimport { isBrowser } from '../features';\n\ndeclare type OnLeaderHandler = (() => Promise);\ndeclare type ServiceOptions = ServiceManagerOptions & {\n onLeader?: OnLeaderHandler;\n};\n\nexport class LeaderElectionService implements ServiceInterface {\n private options: ServiceOptions;\n private channel?: BroadcastChannel;\n private elector?: LeaderElector;\n private started = false;\n\n constructor(options: ServiceOptions = {}) {\n this.options = options;\n this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n this.onLeader = this.onLeader.bind(this);\n }\n\n private onLeaderDuplicate() {\n }\n\n private async onLeader() {\n await this.options.onLeader?.();\n }\n\n isLeader() {\n return !!this.elector?.isLeader;\n }\n\n hasLeader() {\n return !!this.elector?.hasLeader;\n }\n\n async start() {\n await this.stop();\n if (this.canStart()) {\n const { electionChannelName } = this.options;\n this.channel = new BroadcastChannel(electionChannelName as string);\n this.elector = createLeaderElection(this.channel);\n this.elector.onduplicate = this.onLeaderDuplicate;\n this.elector.awaitLeadership().then(this.onLeader);\n this.started = true;\n }\n }\n\n async stop() {\n if (this.started) {\n if (this.elector) {\n await this.elector.die();\n this.elector = undefined;\n }\n if (this.channel) {\n // Workaround to fix error `Failed to execute 'postMessage' on 'BroadcastChannel': Channel is closed`\n (this.channel as any).postInternal = () => Promise.resolve();\n await this.channel.close();\n this.channel = undefined;\n }\n this.started = false;\n }\n }\n\n requiresLeadership() {\n return false;\n }\n\n isStarted() {\n return this.started;\n }\n\n canStart() {\n return isBrowser();\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport { EVENT_EXPIRED, TokenManagerInterface } from '../oidc/types';\nimport { isBrowser } from '../features';\n\nexport class AutoRenewService implements ServiceInterface {\n private tokenManager: TokenManagerInterface;\n private options: ServiceManagerOptions;\n private renewTimeQueue: Array;\n private started = false;\n\n constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n this.tokenManager = tokenManager;\n this.options = options;\n this.renewTimeQueue = [];\n this.onTokenExpiredHandler = this.onTokenExpiredHandler.bind(this);\n }\n \n private shouldThrottleRenew(): boolean {\n let res = false;\n this.renewTimeQueue.push(Date.now());\n if (this.renewTimeQueue.length >= 10) {\n // get and remove first item from queue\n const firstTime = this.renewTimeQueue.shift() as number;\n const lastTime = this.renewTimeQueue[this.renewTimeQueue.length - 1];\n res = (lastTime - firstTime) < 30 * 1000;\n }\n return res;\n }\n\n requiresLeadership() {\n // If tokens sync storage is enabled, handle tokens expiration only in 1 leader tab\n return !!this.options.syncStorage && isBrowser();\n }\n\n private onTokenExpiredHandler(key: string) {\n if (this.options.autoRenew) {\n if (this.shouldThrottleRenew()) {\n const error = new AuthSdkError('Too many token renew requests');\n this.tokenManager.emitError(error);\n } else {\n this.tokenManager.renew(key).catch(() => {}); // Renew errors will emit an \"error\" event \n }\n } else if (this.options.autoRemove) {\n this.tokenManager.remove(key);\n }\n }\n\n canStart() {\n return (!!this.options.autoRenew || !!this.options.autoRemove);\n }\n\n async start() {\n if (this.canStart()) {\n await this.stop();\n this.tokenManager.on(EVENT_EXPIRED, this.onTokenExpiredHandler);\n this.started = true;\n }\n }\n\n async stop() {\n if (this.started) {\n this.tokenManager.off(EVENT_EXPIRED, this.onTokenExpiredHandler);\n this.renewTimeQueue = [];\n this.started = false;\n }\n }\n\n isStarted() {\n return this.started;\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { BroadcastChannel } from 'broadcast-channel';\nimport { isBrowser } from '../features';\nimport {\n ServiceManagerOptions, ServiceInterface\n} from '../core/types';\nimport {\n Token, Tokens, \n EVENT_ADDED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE, TokenManagerInterface\n} from '../oidc/types';\nimport { AuthSdkError } from '../errors';\n\nexport type SyncMessage = {\n type: string;\n key?: string;\n token?: Token;\n oldToken?: Token;\n storage?: Tokens;\n};\nexport class SyncStorageService implements ServiceInterface {\n private tokenManager: TokenManagerInterface;\n private options: ServiceManagerOptions;\n private channel?: BroadcastChannel;\n private started = false;\n private enablePostMessage = true;\n\n constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n this.tokenManager = tokenManager;\n this.options = options;\n this.onTokenAddedHandler = this.onTokenAddedHandler.bind(this);\n this.onTokenRemovedHandler = this.onTokenRemovedHandler.bind(this);\n this.onTokenRenewedHandler = this.onTokenRenewedHandler.bind(this);\n this.onSetStorageHandler = this.onSetStorageHandler.bind(this);\n this.onSyncMessageHandler = this.onSyncMessageHandler.bind(this);\n }\n\n requiresLeadership() {\n return false;\n }\n\n isStarted() {\n return this.started;\n }\n\n canStart() {\n return !!this.options.syncStorage && isBrowser();\n }\n\n async start() {\n if (!this.canStart()) {\n return;\n }\n\n await this.stop();\n \n const { syncChannelName } = this.options;\n try {\n // BroadcastChannel throws if no supported method can be found\n this.channel = new BroadcastChannel(syncChannelName as string);\n } catch (err) {\n throw new AuthSdkError('SyncStorageService is not supported in current browser.');\n }\n\n this.tokenManager.on(EVENT_ADDED, this.onTokenAddedHandler);\n this.tokenManager.on(EVENT_REMOVED, this.onTokenRemovedHandler);\n this.tokenManager.on(EVENT_RENEWED, this.onTokenRenewedHandler);\n this.tokenManager.on(EVENT_SET_STORAGE, this.onSetStorageHandler);\n this.channel.addEventListener('message', this.onSyncMessageHandler);\n this.started = true;\n }\n\n async stop() {\n if (this.started) {\n this.tokenManager.off(EVENT_ADDED, this.onTokenAddedHandler);\n this.tokenManager.off(EVENT_REMOVED, this.onTokenRemovedHandler);\n this.tokenManager.off(EVENT_RENEWED, this.onTokenRenewedHandler);\n this.tokenManager.off(EVENT_SET_STORAGE, this.onSetStorageHandler);\n this.channel?.removeEventListener('message', this.onSyncMessageHandler);\n await this.channel?.close();\n this.channel = undefined;\n this.started = false;\n }\n }\n\n private onTokenAddedHandler(key: string, token: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_ADDED,\n key,\n token\n });\n }\n\n private onTokenRemovedHandler(key: string, token: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_REMOVED,\n key,\n token\n });\n }\n\n private onTokenRenewedHandler(key: string, token: Token, oldToken?: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_RENEWED,\n key,\n token,\n oldToken\n });\n }\n\n private onSetStorageHandler(storage: Tokens) {\n this.channel?.postMessage({\n type: EVENT_SET_STORAGE,\n storage\n });\n }\n\n /* eslint-disable complexity */\n private onSyncMessageHandler(msg: SyncMessage) {\n // Notes:\n // 1. Using `enablePostMessage` flag here to prevent sync message loop.\n // If this flag is on, tokenManager event handlers do not post sync message.\n // 2. IE11 has known issue with synchronization of LocalStorage cross tabs.\n // One workaround is to set empty event handler for `window.onstorage`.\n // But it's not 100% working, sometimes you still get old value from LocalStorage.\n // Better approch is to explicitly udpate LocalStorage with `setStorage`.\n\n this.enablePostMessage = false;\n switch (msg.type) {\n case EVENT_SET_STORAGE:\n this.tokenManager.getStorage().setStorage(msg.storage);\n break;\n case EVENT_ADDED:\n this.tokenManager.emitAdded(msg.key!, msg.token!);\n this.tokenManager.setExpireEventTimeout(msg.key!, msg.token!);\n break;\n case EVENT_REMOVED:\n this.tokenManager.clearExpireEventTimeout(msg.key!);\n this.tokenManager.emitRemoved(msg.key!, msg.token!);\n break;\n case EVENT_RENEWED:\n this.tokenManager.emitRenewed(msg.key!, msg.token!, msg.oldToken);\n break;\n default:\n break;\n }\n this.enablePostMessage = true;\n }\n} ","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport {\n OAuthTransactionMeta,\n OAuthStorageManagerInterface,\n} from '../../oidc';\n\nimport {\n ServiceManagerInterface,\n ServiceInterface,\n ServiceManagerOptions,\n OktaAuthCoreInterface,\n OktaAuthCoreOptions\n} from '../types';\nimport { AutoRenewService, SyncStorageService, LeaderElectionService } from '../../services';\nimport { removeNils } from '../../util';\n\nconst AUTO_RENEW = 'autoRenew';\nconst SYNC_STORAGE = 'syncStorage';\nconst LEADER_ELECTION = 'leaderElection';\n\nexport class ServiceManager\n<\n M extends OAuthTransactionMeta,\n S extends OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions\n>\nimplements ServiceManagerInterface \n{\n private sdk: OktaAuthCoreInterface;\n private options: ServiceManagerOptions;\n private services: Map;\n private started: boolean;\n\n private static knownServices = [AUTO_RENEW, SYNC_STORAGE, LEADER_ELECTION];\n\n private static defaultOptions = {\n autoRenew: true,\n autoRemove: true,\n syncStorage: true\n };\n\n constructor(sdk: OktaAuthCoreInterface, options: ServiceManagerOptions = {}) {\n this.sdk = sdk;\n this.onLeader = this.onLeader.bind(this);\n\n // TODO: backwards compatibility, remove in next major version - OKTA-473815\n const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n options.electionChannelName = options.electionChannelName || options.broadcastChannelName;\n this.options = Object.assign({}, \n ServiceManager.defaultOptions,\n { autoRenew, autoRemove, syncStorage }, \n {\n electionChannelName: `${sdk.options.clientId}-election`,\n syncChannelName: `${sdk.options.clientId}-sync`,\n },\n removeNils(options)\n );\n\n this.started = false;\n this.services = new Map();\n\n ServiceManager.knownServices.forEach(name => {\n const svc = this.createService(name);\n if (svc) {\n this.services.set(name, svc);\n }\n });\n }\n\n private async onLeader() {\n if (this.started) {\n // Start services that requires leadership\n await this.startServices();\n }\n }\n\n isLeader() {\n return (this.getService(LEADER_ELECTION) as LeaderElectionService)?.isLeader();\n }\n\n isLeaderRequired() {\n return [...this.services.values()].some(srv => srv.canStart() && srv.requiresLeadership());\n }\n\n async start() {\n if (this.started) {\n return; // noop if services have already started\n }\n await this.startServices();\n this.started = true;\n }\n \n async stop() {\n await this.stopServices();\n this.started = false;\n }\n\n getService(name: string): ServiceInterface | undefined {\n return this.services.get(name);\n }\n\n private async startServices() {\n for (const [name, srv] of this.services.entries()) {\n if (this.canStartService(name, srv)) {\n await srv.start();\n }\n }\n }\n\n private async stopServices() {\n for (const srv of this.services.values()) {\n await srv.stop();\n }\n }\n\n // eslint-disable-next-line complexity\n private canStartService(name: string, srv: ServiceInterface): boolean {\n let canStart = srv.canStart() && !srv.isStarted();\n // only start election if a leader is required\n if (name === LEADER_ELECTION) {\n canStart &&= this.isLeaderRequired();\n } else if (srv.requiresLeadership()) {\n canStart &&= this.isLeader();\n }\n return canStart;\n }\n\n private createService(name: string): ServiceInterface {\n const tokenManager = this.sdk.tokenManager;\n\n let service: ServiceInterface;\n switch (name) {\n case LEADER_ELECTION:\n service = new LeaderElectionService({...this.options, onLeader: this.onLeader});\n break;\n case AUTO_RENEW:\n service = new AutoRenewService(tokenManager, {...this.options});\n break;\n case SYNC_STORAGE:\n service = new SyncStorageService(tokenManager, {...this.options});\n break;\n default:\n throw new Error(`Unknown service ${name}`);\n }\n return service;\n }\n\n}\n","import { StorageManagerConstructor } from '../storage/types';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../base/types';\n\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\nimport { createOktaAuthBase } from '../base';\nimport { mixinStorage } from '../storage/mixin';\nimport { mixinHttp } from '../http/mixin';\nimport { mixinOAuth } from '../oidc/mixin';\nimport {\n OAuthStorageManagerInterface,\n PKCETransactionMeta,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../oidc/types';\nimport { mixinCore } from './mixin';\nimport { mixinSession } from '../session/mixin';\n\nexport function createOktaAuthCore<\n M extends PKCETransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface\n>(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManagerConstructor: TransactionManagerConstructor\n): OktaAuthConstructor>\n{\n const Base = createOktaAuthBase(OptionsConstructor);\n const WithStorage = mixinStorage(Base, StorageManagerConstructor);\n const WithHttp = mixinHttp(WithStorage);\n const WithSession = mixinSession(WithHttp);\n const WithOAuth = mixinOAuth(WithSession, TransactionManagerConstructor);\n const Core = mixinCore(WithOAuth);\n return Core;\n}\n","import { parseOAuthResponseFromUrl } from '../oidc/parseFromUrl';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n PKCETransactionMeta,\n Tokens,\n TransactionManagerInterface,\n} from '../oidc/types';\nimport { AuthStateManager } from './AuthStateManager';\nimport { ServiceManager } from './ServiceManager';\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\n\nexport function mixinCore\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthCore extends Base implements OktaAuthCoreInterface\n {\n authStateManager: AuthStateManager;\n serviceManager: ServiceManager;\n \n constructor(...args: any[]) {\n super(...args);\n\n // AuthStateManager\n this.authStateManager = new AuthStateManager(this);\n\n // ServiceManager\n this.serviceManager = new ServiceManager(this, this.options.services);\n }\n\n async start() {\n await this.serviceManager.start();\n // TODO: review tokenManager.start\n this.tokenManager.start();\n if (!this.token.isLoginRedirect()) {\n await this.authStateManager.updateAuthState();\n }\n }\n \n async stop() {\n // TODO: review tokenManager.stop\n this.tokenManager.stop();\n await this.serviceManager.stop();\n }\n\n // eslint-disable-next-line complexity\n async handleLoginRedirect(tokens?: Tokens, originalUri?: string): Promise {\n let state = this.options.state;\n \n // Store tokens and update AuthState by the emitted events\n if (tokens) {\n this.tokenManager.setTokens(tokens);\n originalUri = originalUri || this.getOriginalUri(this.options.state);\n } else if (this.isLoginRedirect()) {\n try {\n // For redirect flow, get state from the URL and use it to retrieve the originalUri\n const oAuthResponse = await parseOAuthResponseFromUrl(this, {});\n state = oAuthResponse.state;\n originalUri = originalUri || this.getOriginalUri(state);\n await this.storeTokensFromRedirect();\n } catch(e) {\n // auth state should be updated\n await this.authStateManager.updateAuthState();\n throw e;\n }\n } else {\n return; // nothing to do\n }\n \n // ensure auth state has been updated\n await this.authStateManager.updateAuthState();\n \n // clear originalUri from storage\n this.removeOriginalUri(state);\n \n // Redirect to originalUri\n const { restoreOriginalUri } = this.options;\n if (restoreOriginalUri) {\n await restoreOriginalUri(this, originalUri);\n } else if (originalUri) {\n window.location.replace(originalUri);\n }\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createOAuthOptionsConstructor } from '../oidc';\nimport { AuthState, OktaAuthCoreInterface, OktaAuthCoreOptions, ServiceManagerOptions } from './types';\n\n\nexport function createCoreOptionsConstructor()\n{\n const OAuthOptionsConstructor = createOAuthOptionsConstructor();\n return class CoreOptionsConstructor\n extends OAuthOptionsConstructor\n implements Required\n {\n services: ServiceManagerOptions;\n transformAuthState: (oktaAuth: OktaAuthCoreInterface, authState: AuthState) => Promise;\n\n constructor(options: any) {\n super(options);\n this.services = options.services;\n this.transformAuthState = options.transformAuthState;\n }\n };\n}\n","import { createOAuthStorageManager } from '../oidc/storage';\nimport { PKCETransactionMeta } from '../oidc/types';\n\nexport function createCoreStorageManager() {\n return createOAuthStorageManager();\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthSdkError } from '../errors';\nimport { atob, btoa } from './webcrypto';\n\n// converts a string to base64 (url/filename safe variant)\nexport function stringToBase64Url(str) {\n var b64 = btoa(str);\n return base64ToBase64Url(b64);\n}\n\n// converts a standard base64-encoded string to a \"url/filename safe\" variant\nexport function base64ToBase64Url(b64) {\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n// converts a \"url/filename safe\" base64 string to a \"standard\" base64 string\nexport function base64UrlToBase64(b64u) {\n return b64u.replace(/-/g, '+').replace(/_/g, '/');\n}\n\nexport function base64UrlToString(b64u) {\n var b64 = base64UrlToBase64(b64u);\n switch (b64.length % 4) {\n case 0:\n break;\n case 2:\n b64 += '==';\n break;\n case 3:\n b64 += '=';\n break;\n default:\n throw new AuthSdkError('Not a valid Base64Url');\n }\n var utf8 = atob(b64);\n try {\n return decodeURIComponent(escape(utf8));\n } catch (e) {\n return utf8;\n }\n}\n\nexport function stringToBuffer(str) {\n var buffer = new Uint8Array(str.length);\n for (var i = 0; i < str.length; i++) {\n buffer[i] = str.charCodeAt(i);\n }\n return buffer;\n}\n\nexport function base64UrlDecode(str) {\n return atob(base64UrlToBase64(str));\n}\n\n// Converts base64 string to binary data view\nexport function base64UrlToBuffer(b64u) {\n return Uint8Array.from(base64UrlDecode(b64u), (c: string) => c.charCodeAt(0));\n}\n\n// Converts an ArrayBuffer object that contains binary data to base64 encoded string\nexport function bufferToBase64Url(bin) {\n return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n}\n\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* global atob, btoa, crypto */\nconst a = function(str) { return atob(str); };\nconst b = function (str) { return btoa(str); };\nconst c = typeof crypto === 'undefined' ? null : crypto;\n\nexport { a as atob, b as btoa, c as webcrypto };\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global TextEncoder */\nimport { stringToBase64Url } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function getOidcHash(str) { \n var buffer = new TextEncoder().encode(str);\n return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n var intBuffer = new Uint8Array(arrayBuffer);\n var firstHalf = intBuffer.slice(0, 16);\n var hash = String.fromCharCode.apply(null, firstHalf as unknown as number[]);\n var b64u = stringToBase64Url(hash); // url-safe base64 variant\n return b64u;\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { clone } from '../util';\nimport { stringToBuffer, base64UrlDecode } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function verifyToken(idToken, key) {\n key = clone(key);\n\n var format = 'jwk';\n var algo = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n };\n var extractable = true;\n var usages = ['verify'];\n\n // https://connect.microsoft.com/IE/feedback/details/2242108/webcryptoapi-importing-jwk-with-use-field-fails\n // This is a metadata tag that specifies the intent of how the key should be used.\n // It's not necessary to properly verify the jwt's signature.\n delete key.use;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return webcrypto.subtle.importKey(\n format,\n key,\n algo,\n extractable,\n usages\n )\n .then(function(cryptoKey) {\n var jwt = idToken.split('.');\n var payload = stringToBuffer(jwt[0] + '.' + jwt[1]);\n var b64Signature = base64UrlDecode(jwt[2]);\n var signature = stringToBuffer(b64Signature);\n\n return webcrypto.subtle.verify(\n algo,\n cryptoKey,\n signature,\n payload\n );\n });\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\nimport { HttpResponse } from '../http/types';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthApiError extends CustomError implements APIError {\n errorSummary: string;\n errorCode?: string;\n errorLink?: string;\n errorId?: string;\n errorCauses?: Array;\n xhr?: HttpResponse;\n meta?: Record;\n\n constructor(err: APIError, xhr?: HttpResponse, meta?: Record) {\n const message = err.errorSummary;\n super(message);\n\n this.name = 'AuthApiError';\n this.errorSummary = err.errorSummary;\n this.errorCode = err.errorCode;\n this.errorLink = err.errorLink;\n this.errorId = err.errorId;\n this.errorCauses = err.errorCauses;\n\n if (xhr) {\n this.xhr = xhr;\n }\n\n if (meta) {\n this.meta = meta;\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\n\nexport default class AuthPollStopError extends CustomError {\n constructor() {\n const message = 'The poll was stopped by the sdk';\n super(message);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthSdkError extends CustomError implements APIError {\n errorSummary: string;\n errorCode: string;\n errorLink: string;\n errorId: string;\n errorCauses: Array;\n xhr?: XMLHttpRequest;\n\n constructor(msg: string, xhr?: XMLHttpRequest) {\n super(msg);\n this.name = 'AuthSdkError';\n this.errorCode = 'INTERNAL';\n this.errorSummary = msg;\n this.errorLink = 'INTERNAL';\n this.errorId = 'INTERNAL';\n this.errorCauses = [];\n if (xhr) {\n this.xhr = xhr;\n }\n }\n}\n","export default 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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default 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}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default 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}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default class CustomError extends Error {\n constructor(message: string) {\n // https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n super(message); // 'Error' breaks prototype chain here\n Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain\n }\n}\n","/* eslint-disable camelcase */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport CustomError from './CustomError';\n\nexport default class OAuthError extends CustomError {\n errorCode: string;\n errorSummary: string;\n\n // for widget / idx-js backward compatibility\n error: string;\n error_description: string;\n\n constructor(errorCode: string, summary: string) {\n super(summary);\n\n this.name = 'OAuthError';\n this.errorCode = errorCode;\n this.errorSummary = summary;\n\n // for widget / idx-js backward compatibility\n this.error = errorCode;\n this.error_description = summary;\n }\n}\n\n","\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport AuthApiError from './AuthApiError';\nimport AuthPollStopError from './AuthPollStopError';\nimport AuthSdkError from './AuthSdkError';\nimport OAuthError from './OAuthError';\n\nfunction isAuthApiError(obj: any): obj is AuthApiError {\n return (obj instanceof AuthApiError);\n}\n\nfunction isOAuthError(obj: any): obj is OAuthError {\n return (obj instanceof OAuthError);\n}\n\nexport {\n isAuthApiError,\n isOAuthError,\n AuthApiError,\n AuthPollStopError,\n AuthSdkError,\n OAuthError\n};\n\nexport * from './types';\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable node/no-unsupported-features/node-builtins */\n/* global document, window, TextEncoder, navigator */\n\nimport { webcrypto } from './crypto';\n\nconst isWindowsPhone = /windows phone|iemobile|wpdesktop/i;\t\n\nexport function isBrowser() {\n return typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\nexport function isIE11OrLess() {\n if (!isBrowser()) {\n return false;\n }\n const documentMode = (document as any).documentMode;\n return !!documentMode && documentMode <= 11;\n}\n\nexport function getUserAgent() {\n return navigator.userAgent;\n}\n\nexport function isFingerprintSupported() {\n const agent = getUserAgent();\n return agent && !isWindowsPhone.test(agent);\t\n}\n\nexport function isPopupPostMessageSupported() {\n if (!isBrowser()) {\n return false;\n }\n const documentMode = (document as any).documentMode;\n var isIE8or9 = documentMode && documentMode < 10;\n if (typeof window.postMessage !== 'undefined' && !isIE8or9) {\n return true;\n }\n return false;\n}\n\nexport function isTokenVerifySupported() {\n return typeof webcrypto !== 'undefined'\n && webcrypto !== null\n && typeof webcrypto.subtle !== 'undefined'\n && typeof Uint8Array !== 'undefined';\n}\n\nexport function hasTextEncoder() {\n return typeof TextEncoder !== 'undefined';\n}\n\nexport function isPKCESupported() {\n return isTokenVerifySupported() && hasTextEncoder();\n}\n\nexport function isHTTPS() {\n if (!isBrowser()) {\n return false;\n }\n return window.location.protocol === 'https:';\n}\n\nexport function isLocalhost() {\n // eslint-disable-next-line compat/compat\n return isBrowser() && window.location.hostname === 'localhost';\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* global SDK_VERSION */\n\nimport { isBrowser } from '../features';\nexport class OktaUserAgent {\n environments: string[];\n\n constructor() {\n // add base sdk env\n this.environments = [`okta-auth-js/${SDK_VERSION}`];\n }\n\n addEnvironment(env: string) {\n this.environments.push(env);\n }\n\n getHttpHeader() {\n this.maybeAddNodeEnvironment();\n return { 'X-Okta-User-Agent-Extended': this.environments.join(' ') };\n }\n\n getVersion() {\n return SDK_VERSION;\n }\n\n maybeAddNodeEnvironment() {\n if (isBrowser() || !process || !process.versions) {\n return;\n }\n const { node: version } = process.versions;\n this.environments.push(`nodejs/${version}`);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { OktaAuthHttpInterface } from './types';\n\nexport function setRequestHeader(authClient: OktaAuthHttpInterface, headerName, headerValue) {\n authClient.options.headers = authClient.options.headers || {};\n authClient.options.headers[headerName] = headerValue;\n}","import { OktaAuthStorageInterface, StorageManagerInterface } from '../storage/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n HttpAPI,\n OktaAuthHttpInterface,\n OktaAuthHttpOptions,\n} from './types';\nimport { OktaUserAgent } from './OktaUserAgent';\nimport { setRequestHeader } from './headers';\nimport { toQueryString } from '../util';\nimport { get } from './request';\n\nexport function mixinHttp\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthHttp extends Base implements OktaAuthHttpInterface\n {\n _oktaUserAgent: OktaUserAgent;\n http: HttpAPI;\n \n constructor(...args: any[]) {\n super(...args);\n\n this._oktaUserAgent = new OktaUserAgent();\n\n // HTTP\n this.http = {\n setRequestHeader: setRequestHeader.bind(null, this)\n };\n }\n\n setHeaders(headers) {\n this.options.headers = Object.assign({}, this.options.headers, headers);\n }\n \n getIssuerOrigin(): string {\n // Infer the URL from the issuer URL, omitting the /oauth2/{authServerId}\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.options.issuer!.split('/oauth2/')[0];\n }\n \n webfinger(opts): Promise {\n var url = '/.well-known/webfinger' + toQueryString(opts);\n var options = {\n headers: {\n 'Accept': 'application/jrd+json'\n }\n };\n return get(this, url, options);\n }\n };\n}\n","/*!\n * Copyright (c) 2018-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport crossFetch from 'cross-fetch';\nimport { FetchOptions, HttpResponse } from '../http/types';\n\n// content-type = application/json OR application/ion+json\nconst appJsonContentTypeRegex = /application\\/\\w*\\+?json/;\n\nfunction readData(response: Response): Promise {\n if (response.headers.get('Content-Type') &&\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n response.headers.get('Content-Type')!.toLowerCase().indexOf('application/json') >= 0) {\n return response.json()\n // JSON parse can fail if response is not a valid object\n .catch(e => {\n return {\n error: e,\n errorSummary: 'Could not parse server response'\n };\n });\n } else {\n return response.text();\n }\n}\n\nfunction formatResult(status: number, data: object | string, response: Response) {\n const isObject = typeof data === 'object';\n const headers = {};\n for (const pair of (response.headers as any).entries()) {\n headers[pair[0]] = pair[1];\n }\n const result: HttpResponse = {\n responseText: isObject ? JSON.stringify(data) : data as string,\n status: status,\n headers\n };\n if (isObject) {\n result.responseType = 'json';\n result.responseJSON = data as object;\n }\n return result;\n}\n\n/* eslint-disable complexity */\nfunction fetchRequest(method: string, url: string, args: FetchOptions) {\n var body = args.data;\n var headers = args.headers || {};\n var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n\n if (body && typeof body !== 'string') {\n // JSON encode body (if appropriate)\n if (appJsonContentTypeRegex.test(contentType)) {\n body = JSON.stringify(body);\n }\n else if (contentType === 'application/x-www-form-urlencoded') {\n body = Object.entries(body)\n .map( ([param, value]) => `${param}=${encodeURIComponent(value)}` )\n .join('&');\n }\n }\n\n var fetch = global.fetch || crossFetch;\n var fetchPromise = fetch(url, {\n method: method,\n headers: args.headers,\n body: body as string,\n credentials: args.withCredentials ? 'include' : 'omit'\n });\n\n if (!fetchPromise.finally) {\n fetchPromise = Promise.resolve(fetchPromise);\n }\n\n return fetchPromise.then(function(response) {\n var error = !response.ok;\n var status = response.status;\n return readData(response)\n .then(data => {\n return formatResult(status, data, response);\n })\n .then(result => {\n if (error || result.responseJSON?.error) {\n // Throwing result object since error handling is done in http.js\n throw result;\n }\n return result;\n });\n });\n}\n\nexport default fetchRequest;\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createStorageOptionsConstructor } from '../storage';\nimport { HttpRequestClient, OktaAuthHttpOptions, RequestOptions } from './types';\nimport fetchRequest from '../fetch/fetchRequest';\n\nexport function createHttpOptionsConstructor() {\n const StorageOptionsConstructor = createStorageOptionsConstructor();\n return class HttpOptionsConstructor extends StorageOptionsConstructor implements Required {\n issuer: string;\n transformErrorXHR: (xhr: object) => any;\n headers: object;\n httpRequestClient: HttpRequestClient;\n httpRequestInterceptors: ((request: RequestOptions) => void)[];\n \n constructor(args: any) {\n super(args);\n this.issuer = args.issuer;\n this.transformErrorXHR = args.transformErrorXHR;\n this.headers = args.headers;\n this.httpRequestClient = args.httpRequestClient || fetchRequest;\n this.httpRequestInterceptors = args.httpRequestInterceptors;\n }\n };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity */\nimport { isString, clone, isAbsoluteUrl, removeNils } from '../util';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION } from '../constants';\nimport {\n OktaAuthHttpInterface,\n RequestOptions,\n FetchOptions,\n RequestData\n} from './types';\nimport { AuthApiError, OAuthError } from '../errors';\n\nexport function httpRequest(sdk: OktaAuthHttpInterface, options: RequestOptions): Promise {\n options = options || {};\n\n if (sdk.options.httpRequestInterceptors) {\n for (const interceptor of sdk.options.httpRequestInterceptors) {\n interceptor(options);\n }\n }\n\n var url = options.url,\n method = options.method,\n args = options.args,\n saveAuthnState = options.saveAuthnState,\n accessToken = options.accessToken,\n withCredentials = options.withCredentials === true, // default value is false\n storageUtil = sdk.options.storageUtil,\n storage = storageUtil!.storage,\n httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n if (options.cacheResponse) {\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[url as string];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n return Promise.resolve(cachedResponse.response);\n }\n }\n\n var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n var headers: HeadersInit = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...oktaUserAgentHeader\n };\n Object.assign(headers, sdk.options.headers, options.headers);\n headers = removeNils(headers) as HeadersInit;\n\n if (accessToken && isString(accessToken)) {\n headers['Authorization'] = 'Bearer ' + accessToken;\n }\n\n var ajaxOptions: FetchOptions = {\n headers,\n data: args || undefined,\n withCredentials\n };\n\n var err, res;\n return sdk.options.httpRequestClient!(method!, url!, ajaxOptions)\n .then(function(resp) {\n res = resp.responseText;\n if (res && isString(res)) {\n res = JSON.parse(res);\n if (res && typeof res === 'object' && !res.headers) {\n if (Array.isArray(res)) {\n res.forEach(item => {\n item.headers = resp.headers;\n });\n } else {\n res.headers = resp.headers;\n }\n }\n }\n\n if (saveAuthnState) {\n if (!res.stateToken) {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n }\n\n if (res && res.stateToken && res.expiresAt) {\n storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies!);\n }\n\n if (res && options.cacheResponse) {\n httpCache.updateStorage(url!, {\n expiresAt: Math.floor(Date.now()/1000) + DEFAULT_CACHE_DURATION,\n response: res\n });\n }\n \n return res;\n })\n .catch(function(resp) {\n var serverErr = resp.responseText || {};\n if (isString(serverErr)) {\n try {\n serverErr = JSON.parse(serverErr);\n } catch (e) {\n serverErr = {\n errorSummary: 'Unknown error'\n };\n }\n }\n\n if (resp.status >= 500) {\n serverErr.errorSummary = 'Unknown error';\n }\n\n if (sdk.options.transformErrorXHR) {\n resp = sdk.options.transformErrorXHR(clone(resp));\n }\n\n if (serverErr.error && serverErr.error_description) {\n err = new OAuthError(serverErr.error, serverErr.error_description);\n } else {\n err = new AuthApiError(serverErr, resp);\n }\n\n if (err.errorCode === 'E0000011') {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n\n throw err;\n });\n}\n\nexport function get(sdk: OktaAuthHttpInterface, url: string, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var getOptions = {\n url: url,\n method: 'GET'\n };\n Object.assign(getOptions, options);\n return httpRequest(sdk, getOptions);\n}\n\nexport function post(sdk: OktaAuthHttpInterface, url: string, args?: RequestData, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var postOptions = {\n url: url,\n method: 'POST',\n args: args,\n saveAuthnState: true\n };\n Object.assign(postOptions, options);\n return httpRequest(sdk, postOptions);\n}\n","import { ClearTransactionMetaOptions, TransactionManagerOptions } from '../oidc/types';\nimport { createTransactionManager } from '../oidc/TransactionManager';\nimport { IdxTransactionMeta, IntrospectOptions } from './types';\nimport { isRawIdxResponse } from './types/idx-js';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './types/storage';\n\nexport function createIdxTransactionManager\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface\n>\n()\n{\n const TransactionManager = createTransactionManager();\n return class IdxTransactionManager extends TransactionManager\n {\n constructor(options: TransactionManagerOptions) {\n super(options);\n }\n\n clear(options: ClearTransactionMetaOptions = {}) {\n super.clear(options);\n\n if (options.clearIdxResponse !== false) {\n this.clearIdxResponse();\n }\n }\n \n saveIdxResponse(data: SavedIdxResponse): void {\n if (!this.saveLastResponse) {\n return;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return;\n }\n storage.setStorage(data);\n }\n\n // eslint-disable-next-line complexity\n loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null {\n if (!this.saveLastResponse) {\n return null;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return null;\n }\n const storedValue = storage.getStorage();\n if (!storedValue || !isRawIdxResponse(storedValue.rawIdxResponse)) {\n return null;\n }\n\n if (options) {\n const { stateHandle, interactionHandle } = options;\n if (stateHandle && storedValue.stateHandle !== stateHandle) {\n return null;\n }\n if (interactionHandle && storedValue.interactionHandle !== interactionHandle) {\n return null;\n }\n }\n\n return storedValue;\n }\n\n clearIdxResponse(): void {\n if (!this.saveLastResponse) {\n return;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n storage?.clearStorage();\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n AuthenticatorKey,\n AuthenticationOptions\n} from './types';\nimport { run } from './run';\n\nexport async function authenticate(\n authClient: OktaAuthIdxInterface, options: AuthenticationOptions = {}\n): Promise {\n if (options.password && !options.authenticator) {\n options.authenticator = AuthenticatorKey.OKTA_PASSWORD;\n }\n return run(authClient, { \n ...options, \n flow: 'authenticate'\n });\n}\n","import { IdxAuthenticator, IdxRemediationValue } from '../types/idx-js';\n\n\nexport interface Credentials {\n [key: string]: string | undefined;\n}\n\nexport abstract class Authenticator {\n meta: IdxAuthenticator;\n\n constructor(authenticator: IdxAuthenticator) {\n this.meta = authenticator;\n }\n\n abstract canVerify(values: Values): boolean;\n\n abstract mapCredentials(values: Values): Credentials | undefined;\n\n abstract getInputs(idxRemediationValue: IdxRemediationValue): any; // TODO: add type\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface OktaPasswordInputValues {\n password?: string;\n passcode?: string;\n credentials?: Credentials;\n}\n\nexport class OktaPassword extends Authenticator {\n canVerify(values: OktaPasswordInputValues) {\n return !!(values.credentials || values.password || values.passcode);\n }\n\n mapCredentials(values: OktaPasswordInputValues): Credentials | undefined {\n const { credentials, password, passcode } = values;\n if (!credentials && !password && !passcode) {\n return;\n }\n return credentials || { passcode: passcode || password };\n }\n\n getInputs(idxRemediationValue) {\n return {\n ...idxRemediationValue.form?.value[0],\n name: 'password',\n type: 'string',\n required: idxRemediationValue.required\n };\n }\n}\n","import { Authenticator, isAuthenticator } from '../types';\n\nexport function formatAuthenticator(incoming: unknown): Authenticator {\n let authenticator: Authenticator;\n if (isAuthenticator(incoming)) {\n authenticator = incoming;\n } else if (typeof incoming === 'string') {\n authenticator = {\n key: incoming\n };\n } else {\n throw new Error('Invalid format for authenticator');\n }\n return authenticator;\n}\n\n// Returns true if the authenticators are equivalent\nexport function compareAuthenticators(auth1, auth2) {\n if (!auth1 || !auth2) {\n return false;\n }\n // by id\n if (auth1.id && auth2.id) {\n return (auth1.id === auth2.id);\n }\n // by key\n if (auth1.key && auth2.key) {\n return (auth1.key === auth2.key);\n }\n return false;\n}\n\n// Find matched authenticator in provided order\nexport function findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n}","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, CancelOptions, IdxTransactionMeta } from './types';\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\n\nexport async function cancel (authClient: OktaAuthIdxInterface, options?: CancelOptions) {\n const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n const flowSpec = getFlowSpecification(authClient, meta.flow);\n return run(authClient, {\n ...options,\n ...flowSpec,\n actions: ['cancel']\n });\n}\n","\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface } from './types';\n\nimport CustomError from '../errors/CustomError';\nimport { urlParamsToObject } from '../oidc/util/urlParams';\nimport { EmailVerifyCallbackResponse } from './types/api';\n\nexport class EmailVerifyCallbackError extends CustomError {\n state: string;\n otp: string;\n\n constructor(state: string, otp: string) {\n super(`Enter the OTP code in the originating client: ${otp}`);\n this.name = 'EmailVerifyCallbackError';\n this.state = state;\n this.otp = otp;\n }\n}\n\nexport function isEmailVerifyCallbackError(error: Error) {\n return (error.name === 'EmailVerifyCallbackError');\n}\n\n// Check if state && otp have been passed back in the url\nexport function isEmailVerifyCallback (urlPath: string): boolean {\n return /(otp=)/i.test(urlPath) && /(state=)/i.test(urlPath);\n}\n\n// Parse state and otp from a urlPath (should be either a search or fragment from the URL)\nexport function parseEmailVerifyCallback(urlPath: string): EmailVerifyCallbackResponse {\n return urlParamsToObject(urlPath) as EmailVerifyCallbackResponse;\n}\n\nexport async function handleEmailVerifyCallback(authClient: OktaAuthIdxInterface, search: string) {\n if (isEmailVerifyCallback(search)) {\n const { state, otp } = parseEmailVerifyCallback(search);\n if (authClient.idx.canProceed({ state })) {\n // same browser / device\n return await authClient.idx.proceed({ state, otp });\n } else {\n // different browser or device\n throw new EmailVerifyCallbackError(state, otp);\n }\n }\n}\n","import { createOktaAuthCore } from '../../core/factory';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../../base/types';\nimport { StorageManagerConstructor } from '../../storage/types';\nimport { IdxTransactionManagerInterface, OktaAuthIdxInterface } from '../types/api';\nimport { IdxTransactionMeta } from '../types/meta';\nimport { IdxStorageManagerInterface } from '../types/storage';\nimport { OktaAuthIdxOptions } from '../types/options';\nimport { mixinIdx } from '../mixin';\nimport { TransactionManagerConstructor } from '../../oidc/types';\nimport { OktaAuthCoreInterface } from '../../core/types';\n\nexport function createOktaAuthIdx<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManagerConstructor: TransactionManagerConstructor\n)\n: OktaAuthConstructor & OktaAuthCoreInterface>\n{\n const Core = createOktaAuthCore(\n StorageManagerConstructor,\n OptionsConstructor,\n TransactionManagerConstructor\n );\n const WithIdx = mixinIdx(Core);\n return WithIdx;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { isInteractionRequired, isInteractionRequiredError } from '../../oidc';\nimport { authenticate } from '../authenticate';\nimport { cancel } from '../cancel';\nimport {\n handleEmailVerifyCallback,\n isEmailVerifyCallback,\n isEmailVerifyCallbackError,\n parseEmailVerifyCallback\n} from '../emailVerify';\nimport { handleInteractionCodeRedirect } from '../handleInteractionCodeRedirect';\nimport { makeIdxState } from '../idxState';\nimport { interact } from '../interact';\nimport { introspect } from '../introspect';\nimport { poll } from '../poll';\nimport { canProceed, proceed } from '../proceed';\nimport { recoverPassword } from '../recoverPassword';\nimport { register } from '../register';\nimport { startTransaction } from '../startTransaction';\nimport {\n clearTransactionMeta,\n createTransactionMeta,\n getSavedTransactionMeta,\n getTransactionMeta,\n isTransactionMetaValid,\n saveTransactionMeta\n} from '../transactionMeta';\nimport { FlowIdentifier, IdxAPI, OktaAuthIdxInterface } from '../types';\nimport { unlockAccount } from '../unlockAccount';\n\n// Factory\nexport function createIdxAPI(sdk: OktaAuthIdxInterface): IdxAPI {\n const boundStartTransaction = startTransaction.bind(null, sdk);\n const idx = {\n interact: interact.bind(null, sdk),\n introspect: introspect.bind(null, sdk),\n makeIdxResponse: makeIdxState.bind(null, sdk),\n \n authenticate: authenticate.bind(null, sdk),\n register: register.bind(null, sdk),\n start: boundStartTransaction,\n startTransaction: boundStartTransaction, // Use `start` instead. `startTransaction` will be removed in 7.0\n poll: poll.bind(null, sdk),\n proceed: proceed.bind(null, sdk),\n cancel: cancel.bind(null, sdk),\n recoverPassword: recoverPassword.bind(null, sdk),\n\n // oauth redirect callback\n handleInteractionCodeRedirect: handleInteractionCodeRedirect.bind(null, sdk),\n\n // interaction required callback\n isInteractionRequired: isInteractionRequired.bind(null, sdk),\n isInteractionRequiredError,\n\n // email verify callback\n handleEmailVerifyCallback: handleEmailVerifyCallback.bind(null, sdk),\n isEmailVerifyCallback,\n parseEmailVerifyCallback,\n isEmailVerifyCallbackError,\n \n getSavedTransactionMeta: getSavedTransactionMeta.bind(null, sdk),\n createTransactionMeta: createTransactionMeta.bind(null, sdk),\n getTransactionMeta: getTransactionMeta.bind(null, sdk),\n saveTransactionMeta: saveTransactionMeta.bind(null, sdk),\n clearTransactionMeta: clearTransactionMeta.bind(null, sdk),\n isTransactionMetaValid,\n setFlow: (flow: FlowIdentifier) => {\n sdk.options.flow = flow;\n },\n getFlow: (): FlowIdentifier | undefined => {\n return sdk.options.flow;\n },\n canProceed: canProceed.bind(null, sdk),\n unlockAccount: unlockAccount.bind(null, sdk),\n };\n return idx;\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll,\n SelectEnrollmentChannel,\n EnrollmentChannelData,\n Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n 'identify': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'enroll-poll': EnrollPoll,\n 'select-enrollment-channel': SelectEnrollmentChannel,\n 'enrollment-channel-data': EnrollmentChannelData,\n 'redirect-idp': RedirectIdp,\n 'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n AuthenticatorVerificationData,\n ResetAuthenticator,\n ReEnrollAuthenticator,\n SelectAuthenticatorEnroll,\n AuthenticatorEnrollmentData,\n EnrollPoll\n} from '../remediators';\n\nexport const PasswordRecoveryFlow: RemediationFlow = {\n 'identify': Identify,\n 'identify-recovery': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'reset-authenticator': ResetAuthenticator,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'enroll-poll': EnrollPoll,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n SelectEnrollProfile,\n EnrollPoll,\n SelectEnrollmentChannel,\n EnrollmentChannelData,\n EnrollProfile,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorEnrollmentData,\n Skip,\n} from '../remediators';\n\nexport const RegistrationFlow: RemediationFlow = {\n 'select-enroll-profile': SelectEnrollProfile,\n 'enroll-profile': EnrollProfile,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'enroll-poll': EnrollPoll,\n 'select-enrollment-channel': SelectEnrollmentChannel,\n 'enrollment-channel-data': EnrollmentChannelData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n Identify,\n SelectAuthenticatorUnlockAccount,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ChallengePoll,\n AuthenticatorVerificationData\n} from '../remediators';\n\nexport const AccountUnlockFlow: RemediationFlow = {\n 'identify': Identify,\n // NOTE: unlock-account is purposely not included. Handled as action\n // because it's a rememdiation which requires no input\n // 'unlock-account': UnlockAccount,\n 'select-authenticator-unlock-account': SelectAuthenticatorUnlockAccount,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n};\n","import { OktaAuthIdxInterface, FlowIdentifier } from '../types';\nimport { AuthenticationFlow } from './AuthenticationFlow';\nimport { PasswordRecoveryFlow } from './PasswordRecoveryFlow';\nimport { RegistrationFlow } from './RegistrationFlow';\nimport { AccountUnlockFlow } from './AccountUnlockFlow';\nimport { RemediationFlow } from './RemediationFlow';\n\nexport interface FlowSpecification {\n flow: FlowIdentifier;\n remediators: RemediationFlow;\n actions?: string[];\n withCredentials?: boolean;\n}\n\n// eslint-disable-next-line complexity\nexport function getFlowSpecification(\n oktaAuth: OktaAuthIdxInterface,\n flow: FlowIdentifier = 'default'\n): FlowSpecification {\n let remediators, actions, withCredentials = true;\n switch (flow) {\n case 'register':\n case 'signup':\n case 'enrollProfile':\n remediators = RegistrationFlow;\n withCredentials = false;\n break;\n case 'recoverPassword':\n case 'resetPassword':\n remediators = PasswordRecoveryFlow;\n actions = [\n 'currentAuthenticator-recover', \n 'currentAuthenticatorEnrollment-recover'\n ];\n withCredentials = false;\n break;\n case 'unlockAccount':\n remediators = AccountUnlockFlow;\n withCredentials = false;\n actions = [\n 'unlock-account'\n ];\n break;\n case 'authenticate':\n case 'login':\n case 'signin':\n remediators = AuthenticationFlow;\n break;\n default:\n // default case has no flow monitor\n remediators = AuthenticationFlow;\n break;\n }\n return { flow, remediators, actions, withCredentials };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { IdxTransactionMeta } from './types/meta';\nimport { OktaAuthIdxInterface } from './types';\n\nexport async function handleInteractionCodeRedirect(\n authClient: OktaAuthIdxInterface, \n url: string\n): Promise {\n const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n if (!meta) {\n throw new AuthSdkError('No transaction data was found in storage');\n }\n\n const { \n codeVerifier,\n state: savedState \n } = meta;\n const { \n searchParams\n // URL API has been added to the polyfill\n // eslint-disable-next-line compat/compat\n } = new URL(url); \n const state = searchParams.get('state');\n const interactionCode = searchParams.get('interaction_code');\n\n // Error handling\n const error = searchParams.get('error');\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n throw new OAuthError(error, searchParams.get('error_description')!);\n }\n if (state !== savedState) {\n throw new AuthSdkError('State in redirect uri does not match with transaction state');\n }\n if (!interactionCode) {\n throw new AuthSdkError('Unable to parse interaction_code from the url');\n }\n \n // Save tokens to storage\n const { tokens } = await authClient.token.exchangeCodeForTokens({ interactionCode, codeVerifier });\n authClient.tokenManager.setTokens(tokens);\n}","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nconst isFieldMutable = function isFieldMutable(field) {\n // mutable defaults to true, annoyingly\n return ( field.mutable !== false );\n};\n\nconst divideSingleActionParamsByMutability = function divideSingleActionParamsByMutability( action ) {\n const defaultParamsForAction = {}; // mutable and present\n const neededParamsForAction = []; // mutable values\n const immutableParamsForAction = {}; // immutable\n // TODO: remove assumption that form names are unique, neededParams being an array is a temp fix\n // not all actions have value (e.g. redirect)\n // making sure they are not empty and instead hold the remediation object\n if (!action.value) {\n neededParamsForAction.push(action);\n return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n }\n\n for ( let field of action.value ) {\n\n if ( isFieldMutable( field ) ) {\n\n neededParamsForAction.push(field);\n\n if ( field.value ?? false ) {\n defaultParamsForAction[field.name] = field.value;\n }\n\n } else {\n immutableParamsForAction[field.name] = field.value ?? '';\n }\n }\n return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n};\n\nexport const divideActionParamsByMutability = function divideActionParamsByMutability( actionList ) {\n // TODO: when removing form name is unique assumption, this may all be redundant\n actionList = Array.isArray(actionList) ? actionList : [ actionList ];\n const neededParams = [];\n const defaultParams = {};\n const immutableParams = {};\n\n for ( let action of actionList ) {\n const { \n defaultParamsForAction, \n neededParamsForAction, \n immutableParamsForAction \n } = divideSingleActionParamsByMutability(action);\n neededParams.push(neededParamsForAction);\n defaultParams[action.name] = defaultParamsForAction;\n immutableParams[action.name] = immutableParamsForAction;\n }\n\n return { defaultParams, neededParams, immutableParams };\n};\n\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len, complexity */\nimport { httpRequest } from '../../../http';\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthIdxInterface, { \n actionDefinition, \n defaultParamsForAction = {}, \n immutableParamsForAction = {}, \n toPersist = {} as IdxToPersist\n}): IdxActionFunction {\n const target = actionDefinition.href;\n return async function(params: IdxActionParams = {}): Promise {\n const headers = {\n 'Content-Type': 'application/json',\n 'Accept': actionDefinition.accepts || 'application/ion+json',\n };\n const body = JSON.stringify({\n ...defaultParamsForAction,\n ...params,\n ...immutableParamsForAction\n });\n\n try {\n const response = await httpRequest(authClient, {\n url: target,\n method: actionDefinition.method,\n headers,\n args: body,\n withCredentials: toPersist?.withCredentials ?? true\n });\n\n return authClient.idx.makeIdxResponse({ ...response }, toPersist, true);\n }\n catch (err) {\n if (!(err instanceof AuthApiError) || !err?.xhr) {\n throw err;\n }\n\n const response = err.xhr;\n const payload = response.responseJSON || JSON.parse(response.responseText);\n const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n\n const idxResponse = authClient.idx.makeIdxResponse({ ...payload }, toPersist, false);\n if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n // Okta server responds 401 status code with WWW-Authenticate header and new remediation\n // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n // the response reaches here when Okta Verify is not installed\n // set `stepUp` to true if flow should be continued without showing any errors\n idxResponse.stepUp = true;\n }\n\n return idxResponse;\n }\n };\n};\n\n// TODO: Resolve in M2: Either build the final polling solution or remove this code\n// const generatePollingFetch = function generatePollingFetch( { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {} } ) {\n// // TODO: Discussions ongoing about when/how to terminate polling: OKTA-246581\n// const target = actionDefinition.href;\n// return async function(params) {\n// return fetch(target, {\n// method: actionDefinition.method,\n// headers: {\n// 'content-type': actionDefinition.accepts,\n// },\n// body: JSON.stringify({ ...defaultParamsForAction, ...params, ...immutableParamsForAction })\n// })\n// .then( response => response.ok ? response.json() : response.json().then( err => Promise.reject(err)) )\n// .then( idxResponse => makeIdxState(authClient, idxResponse) );\n// };\n// };\n\nconst generateIdxAction = function generateIdxAction( authClient: OktaAuthIdxInterface, actionDefinition, toPersist ): IdxActionFunction {\n // TODO: leaving this here to see where the polling is EXPECTED to drop into the code, but removing any accidental trigger of incomplete code\n // const generator = actionDefinition.refresh ? generatePollingFetch : generateDirectFetch;\n const generator = generateDirectFetch;\n const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability( actionDefinition );\n\n const action = generator(authClient, {\n actionDefinition,\n defaultParamsForAction: defaultParams[actionDefinition.name],\n immutableParamsForAction: immutableParams[actionDefinition.name],\n toPersist\n });\n action.neededParams = neededParams;\n return action;\n};\n\nexport default generateIdxAction;\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\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 && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _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\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _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\nfunction _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\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n 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}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n/**\n* @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject\n*/\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {any} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\n\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {any} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\n\n\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\n\n\nvar NewError = /*#__PURE__*/function (_Error) {\n _inherits(NewError, _Error);\n\n var _super = _createSuper(NewError);\n\n /**\n * @param {any} value The evaluated scalar value\n */\n function NewError(value) {\n var _this;\n\n _classCallCheck(this, NewError);\n\n _this = _super.call(this, 'JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n _this.avoidNew = true;\n _this.value = value;\n _this.name = 'NewError';\n return _this;\n }\n\n return NewError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n* @typedef {PlainObject} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {PlainObject|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|PlainObject} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {PlainObject|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @typedef {PlainObject} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {PlainObject} [sandbox={}]\n * @property {boolean} [preventEval=false]\n * @property {PlainObject|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\n\n\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n\n return e.value;\n }\n }\n\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n\n var optObj = opts && _typeof(opts) === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.preventEval = opts.preventEval || false;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n\n if (opts.autostart !== false) {\n var args = {\n path: optObj ? opts.path : expr\n };\n\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n\n var ret = this.evaluate(args);\n\n if (!ret || _typeof(ret) !== 'object') {\n throw new NewError(ret);\n }\n\n return ret;\n }\n} // PUBLIC METHODS\n\n\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n var _this2 = this;\n\n var currParent = this.parent,\n currParentProperty = this.parentProperty;\n var flatten = this.flatten,\n wrap = this.wrap;\n this.currResultType = this.resultType;\n this.currPreventEval = this.preventEval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n\n if (expr && _typeof(expr) === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n if (!hasOwnProp.call(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n var _expr = expr;\n json = _expr.json;\n flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;\n this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;\n callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n\n var exprList = JSONPath.toPathArray(expr);\n\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n\n this._hasParentSelector = null;\n\n var result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n\n return result.reduce(function (rslt, ea) {\n var valOrPath = _this2._getPreferredOutput(ea);\n\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n\n return rslt;\n }, []);\n}; // PRIVATE METHODS\n\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n var resultType = this.currResultType;\n\n switch (resultType) {\n case 'all':\n {\n var path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n\n default:\n throw new TypeError('Unknown result type');\n }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n var preferredOutput = this._getPreferredOutput(fullRetObj);\n\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line node/callback-return\n\n callback(preferredOutput, type, fullRetObj);\n }\n};\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {PlainObject|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\n\n\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n var _this3 = this;\n\n // No expr to follow? return path and value as the result of\n // this trace branch\n var retObj;\n\n if (!expr.length) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName,\n hasArrExpr: hasArrExpr\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n }\n\n var loc = expr[0],\n x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n\n var ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(function (t) {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n\n if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (_typeof(v[m]) === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(_this3._trace(unshift(l, _x), v[m], push(p, m), v, m, cb, true));\n }\n }); // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent: parent,\n parentProperty: null\n };\n\n this._handleCallback(retObj, callback, 'property');\n\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(\\x2D?[0-9]*):(\\x2D?[0-9]*):?([0-9]*)$/.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currPreventEval) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n if (_this3._eval(l.replace(/^\\?\\(((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?)\\)$/, '$1'), v[m], m, p, par, pr)) {\n addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true));\n }\n });\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currPreventEval) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n } // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n\n\n addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n var addType = false;\n var valueType = loc.slice(1, -2);\n\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(_typeof(val))) {\n addType = true;\n }\n\n break;\n\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n // eslint-disable-next-line valid-typeof\n if (_typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n\n break;\n\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'object':\n // eslint-disable-next-line valid-typeof\n if (val && _typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n\n break;\n\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n\n case 'null':\n if (val === null) {\n addType = true;\n }\n\n break;\n\n /* c8 ignore next 2 */\n\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n\n if (addType) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n } // `-escaped property\n\n } else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {\n var locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n var parts = loc.split(',');\n\n var _iterator = _createForOfIteratorHelper(parts),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n } // simple case--directly follow property\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (!literalPriority && val && hasOwnProp.call(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n } // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n\n\n if (this._hasParentSelector) {\n for (var t = 0; t < ret.length; t++) {\n var rett = ret[t];\n\n if (rett && rett.isParentSelector) {\n var tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n var tl = tmp.length;\n\n for (var tt = 1; tt < tl; tt++) {\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n\n return ret;\n};\n\nJSONPath.prototype._walk = function (loc, expr, val, path, parent, parentPropName, callback, f) {\n if (Array.isArray(val)) {\n var n = val.length;\n\n for (var i = 0; i < n; i++) {\n f(i, loc, expr, val, path, parent, parentPropName, callback);\n }\n } else if (val && _typeof(val) === 'object') {\n Object.keys(val).forEach(function (m) {\n f(m, loc, expr, val, path, parent, parentPropName, callback);\n });\n }\n};\n\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n\n var len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n var start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n var ret = [];\n\n for (var i = start; i < end; i += step) {\n var tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n\n\n tmp.forEach(function (t) {\n ret.push(t);\n });\n }\n\n return ret;\n};\n\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n if (code.includes('@parentProperty')) {\n this.currSandbox._$_parentProperty = parentPropName;\n code = code.replace(/@parentProperty/g, '_$_parentProperty');\n }\n\n if (code.includes('@parent')) {\n this.currSandbox._$_parent = parent;\n code = code.replace(/@parent/g, '_$_parent');\n }\n\n if (code.includes('@property')) {\n this.currSandbox._$_property = _vname;\n code = code.replace(/@property/g, '_$_property');\n }\n\n if (code.includes('@path')) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n code = code.replace(/@path/g, '_$_path');\n }\n\n if (code.includes('@root')) {\n this.currSandbox._$_root = this.json;\n code = code.replace(/@root/g, '_$_root');\n }\n\n if (/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/.test(code)) {\n this.currSandbox._$_v = _v;\n code = code.replace(/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/g, '_$_v$1');\n }\n\n try {\n return this.vm.runInNewContext(code, this.currSandbox);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n}; // PUBLIC CLASS PROPERTIES AND METHODS\n// Could store the cache object itself\n\n\nJSONPath.cache = {};\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\n\nJSONPath.toPathString = function (pathArr) {\n var x = pathArr,\n n = x.length;\n var p = '$';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += /^[\\*0-9]+$/.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n\n return p;\n};\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\n\n\nJSONPath.toPointer = function (pointer) {\n var x = pointer,\n n = x.length;\n var p = '';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += '/' + x[i].toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n }\n }\n\n return p;\n};\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\n\n\nJSONPath.toPathArray = function (expr) {\n var cache = JSONPath.cache;\n\n if (cache[expr]) {\n return cache[expr].concat();\n }\n\n var subx = [];\n var normalized = expr // Properties\n .replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/g, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replace(/['\\[](\\??\\((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\))['\\]]/g, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n }) // Escape periods and tildes within properties\n .replace(/\\[[\"']((?:(?!['\\]])[\\s\\S])*)[\"']\\]/g, function ($0, prop) {\n return \"['\" + prop.replace(/\\./g, '%@%').replace(/~/g, '%%@@%%') + \"']\";\n }) // Properties operator\n .replace(/~/g, ';~;') // Split by property boundaries\n .replace(/[\"']?\\.[\"']?(?!(?:(?!\\[)[\\s\\S])*\\])|\\[[\"']?/g, ';') // Reinsert periods within properties\n .replace(/%@%/g, '.') // Reinsert tildes within properties\n .replace(/%%@@%%/g, '~') // Parent\n .replace(/(?:;)?(\\^+)(?:;)?/g, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n }) // Descendents\n .replace(/;;;|;;/g, ';..;') // Remove trailing\n .replace(/;$|'?\\]|'$/g, '');\n var exprList = normalized.split(';').map(function (exp) {\n var match = exp.match(/#([0-9]+)/);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\n\n/**\n* @callback ConditionCallback\n* @param {any} item\n* @returns {boolean}\n*/\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\n\nvar moveToAnotherArray = function moveToAnotherArray(source, target, conditionCb) {\n var il = source.length;\n\n for (var i = 0; i < il; i++) {\n var item = source[i];\n\n if (conditionCb(item)) {\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n\nJSONPath.prototype.vm = {\n /**\n * @param {string} expr Expression to evaluate\n * @param {PlainObject} context Object whose items will be added\n * to evaluation\n * @returns {any} Result of evaluated code\n */\n runInNewContext: function runInNewContext(expr, context) {\n var keys = Object.keys(context);\n var funcs = [];\n moveToAnotherArray(keys, funcs, function (key) {\n return typeof context[key] === 'function';\n });\n var values = keys.map(function (vr, i) {\n return context[vr];\n });\n var funcString = funcs.reduce(function (s, func) {\n var fString = context[func].toString();\n\n if (!/function/.test(fString)) {\n fString = 'function ' + fString;\n }\n\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr; // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n\n if (!/([\"'])use strict\\1/.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n } // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n\n\n expr = expr.replace(/;[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/, ''); // Insert `return`\n\n var lastStatementEnd = expr.lastIndexOf(';');\n var code = lastStatementEnd > -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr; // eslint-disable-next-line no-new-func\n\n return _construct(Function, _toConsumableArray(keys).concat([code])).apply(void 0, _toConsumableArray(values));\n }\n};\n\nexport { JSONPath };\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { JSONPath } from 'jsonpath-plus';\n\nconst SKIP_FIELDS = Object.fromEntries([\n 'remediation', // remediations are put into proceed/neededToProceed\n 'context', // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n].map( (field) => [ field, !!'skip this field' ] ));\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ) {\n const actions = {};\n const context = {};\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n // eslint-disable-next-line new-cap\n const result = JSONPath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthIdxInterface, remediation, toPersist) => {\n // Only remediation that has `rel` field (indicator for form submission) can have http action\n if (remediation.rel) {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n }\n \n return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => expandRelatesTo(idxResponse, remediation)\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport generateIdxAction from './generateIdxAction';\n\nexport const generateRemediationFunctions = function generateRemediationFunctions(\n authClient: OktaAuthIdxInterface,\n remediationValue,\n toPersist = {}\n) {\n return Object.fromEntries( remediationValue.map( remediation => {\n return [\n remediation.name,\n generateIdxAction(authClient, remediation, toPersist),\n ];\n }) );\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { makeIdxState } from './makeIdxState';\n\nexport default {\n makeIdxState,\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, RawIdxResponse } from '../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthIdxInterface,\n idxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n const actionFn = remediationChoiceObject.action;\n if (typeof actionFn !== 'function') {\n return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action(paramsFromUser);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n","import { OktaAuthIdxInterface } from '../types'; // auth-js/types\nimport { IdxResponse, IdxToPersist, RawIdxResponse } from '../types/idx-js'; // idx/types\nimport { IDX_API_VERSION } from '../../constants';\nimport v1 from './v1/parsers';\n\n\nexport const parsersForVersion = function parsersForVersion( version ) {\n switch (version) {\n case '1.0.0':\n return v1;\n case undefined:\n case null:\n throw new Error('Api version is required');\n default:\n throw new Error(`Unknown api version: ${version}. Use an exact semver version.`);\n }\n};\n\nexport function validateVersionConfig(version) {\n if ( !version ) {\n throw new Error('version is required');\n }\n\n const cleanVersion = (version ?? '').replace(/[^0-9a-zA-Z._-]/, '');\n if ( cleanVersion !== version || !version ) {\n throw new Error('invalid version supplied - version is required and uses semver syntax');\n }\n\n parsersForVersion(version); // will throw for invalid version\n}\n\nexport function makeIdxState ( \n authClient: OktaAuthIdxInterface,\n rawIdxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean,\n): IdxResponse {\n const version = rawIdxResponse?.version ?? IDX_API_VERSION;\n validateVersionConfig(version);\n \n const { makeIdxState } = parsersForVersion(version);\n return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity:[0,8] */\nimport { OktaAuthIdxInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from './types';\nimport { getSavedTransactionMeta, saveTransactionMeta, createTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n max_age?: string | number;\n nonce?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthIdxInterface, \n options: InteractOptions = {}\n): Promise {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n maxAge,\n nonce\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n ...(activationToken && { activation_token: activationToken }),\n ...(recoveryToken && { recovery_token: recoveryToken }),\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n ...(clientSecret && { client_secret: clientSecret }),\n ...(maxAge && { max_age: maxAge }),\n ...(nonce && { nonce }),\n } as InteractParams;\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { makeIdxState, validateVersionConfig } from './idxState';\nimport { IntrospectOptions, OktaAuthIdxInterface } from './types';\nimport { IdxResponse, isRawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\nimport { httpRequest } from '../http';\nimport { isAuthApiError } from '../errors';\n\nexport async function introspect (\n authClient: OktaAuthIdxInterface, \n options: IntrospectOptions = {}\n): Promise {\n let rawIdxResponse;\n let requestDidSucceed;\n\n // try load from storage first\n const savedIdxResponse = authClient.transactionManager.loadIdxResponse(options);\n if (savedIdxResponse) {\n rawIdxResponse = savedIdxResponse.rawIdxResponse;\n requestDidSucceed = savedIdxResponse.requestDidSucceed;\n }\n\n // call idx.introspect if no existing idx response available in storage\n if (!rawIdxResponse) {\n const version = options.version || IDX_API_VERSION;\n const domain = getOAuthDomain(authClient);\n const { interactionHandle, stateHandle } = options;\n const withCredentials = options.withCredentials ?? true;\n try {\n requestDidSucceed = true;\n validateVersionConfig(version);\n const url = `${domain}/idp/idx/introspect`;\n const body = stateHandle ? { stateToken: stateHandle } : { interactionHandle };\n const headers = {\n 'Content-Type': `application/ion+json; okta-version=${version}`, // Server wants this version info\n Accept: `application/ion+json; okta-version=${version}`,\n };\n rawIdxResponse = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: body\n });\n } catch (err) {\n if (isAuthApiError(err) && err.xhr && isRawIdxResponse(err.xhr.responseJSON)) {\n rawIdxResponse = err.xhr.responseJSON;\n requestDidSucceed = false;\n } else {\n throw err;\n }\n }\n }\n\n const { withCredentials } = options;\n return makeIdxState(authClient, rawIdxResponse, { withCredentials }, requestDidSucceed);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from './types';\n\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n","import { OktaAuthConstructor } from '../base/types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\nimport { IdxAPI, IdxTransactionManagerInterface, OktaAuthIdxInterface, OktaAuthIdxOptions } from './types';\nimport { IdxTransactionMeta } from './types/meta';\nimport { IdxStorageManagerInterface } from './types/storage';\nimport { createIdxAPI } from './factory/api';\nimport { WebauthnAPI } from './webauthn';\nimport * as webauthn from './webauthn';\n\nexport function mixinIdx\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthIdx extends Base implements OktaAuthIdxInterface\n {\n idx: IdxAPI;\n static webauthn: WebauthnAPI = webauthn;\n \n constructor(...args: any[]) {\n super(...args);\n this.idx = createIdxAPI(this);\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createCoreOptionsConstructor } from '../core/options';\nimport { FlowIdentifier } from './types/FlowIdentifier';\nimport { OktaAuthIdxOptions } from './types/options';\n\n\nexport function createIdxOptionsConstructor() {\n const CoreOptionsConstructor = createCoreOptionsConstructor();\n return class IdxOptionsConstructor\n extends CoreOptionsConstructor \n implements Required\n {\n flow: FlowIdentifier;\n activationToken: string;\n recoveryToken: string;\n \n // BETA WARNING: configs in this section are subject to change without a breaking change notice\n idx: {\n useGenericRemediator?: boolean;\n exchangeCodeForTokens?: boolean;\n };\n \n constructor(options: any) {\n super(options);\n \n this.flow = options.flow;\n this.activationToken = options.activationToken;\n this.recoveryToken = options.recoveryToken;\n this.idx = options.idx;\n }\n };\n \n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n IdxPollOptions,\n IdxTransaction,\n OktaAuthIdxInterface,\n} from './types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthIdxInterface, options: IdxPollOptions = {}): Promise {\n let transaction = await proceed(authClient, {\n startPolling: true\n });\n\n const meta = getSavedTransactionMeta(authClient);\n let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n if (!availablePollingRemeditaions?.length) {\n warn('No polling remediations available at the current IDX flow stage');\n }\n\n if (Number.isInteger(options.refresh)) {\n return new Promise(function (resolve, reject) {\n setTimeout(async function () {\n try {\n const refresh = transaction.nextStep?.poll?.refresh;\n if (refresh) {\n resolve(poll(authClient, {\n refresh\n }));\n } else {\n resolve(transaction);\n }\n } catch (err) {\n reject(err);\n }\n }, options.refresh);\n });\n }\n\n return transaction;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n ProceedOptions,\n} from './types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthIdxInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthIdxInterface,\n options: ProceedOptions = {}\n): Promise {\n\n if (!canProceed(authClient, options)) {\n throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n }\n\n let { flow, state } = options;\n if (!flow) {\n const meta = getSavedTransactionMeta(authClient, { state });\n flow = meta?.flow;\n }\n\n return run(authClient, { \n ...options, \n flow\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\nimport { \n OktaAuthIdxInterface, \n PasswordRecoveryOptions, \n IdxTransaction,\n} from './types';\n\nexport async function recoverPassword(\n authClient: OktaAuthIdxInterface, options: PasswordRecoveryOptions = {}\n): Promise {\n const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n return run(\n authClient, \n { \n ...options,\n ...flowSpec,\n }\n );\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n RegistrationOptions, \n IdxTransaction, \n OktaAuthIdxInterface, \n IdxFeature,\n} from './types';\n\nexport async function register(\n authClient: OktaAuthIdxInterface, options: RegistrationOptions = {}\n): Promise {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures, availableSteps } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n throw new AuthSdkError('Registration is not supported based on your current org configuration.');\n }\n if (options.activationToken && availableSteps?.some(({ name }) => name === 'identify')) {\n throw new AuthSdkError('activationToken is not supported based on your current org configuration.');\n }\n }\n\n return run(authClient, {\n ...options,\n flow: 'register'\n });\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n methodType: authenticatorData!.methodType,\n phoneNumber: authenticatorData!.phoneNumber,\n };\n }\n\n getInputAuthenticator(remediation) {\n return [\n { name: 'methodType', type: 'string' }, \n { name: 'phoneNumber', label: 'Phone Number', type: 'string' }\n ].map(item => {\n const value = remediation.form.value.find(val => val.name === item.name);\n return { ...value, ...item };\n });\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n mapAuthenticator() {\n return this.getAuthenticatorData();\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { \n name: 'methodType', \n type: 'string', \n required: true, \n options: methodType.options \n };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types/api';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n\n // set before other data calculation\n this.authenticator = this.getAuthenticator()!;\n\n this.formatAuthenticatorData();\n }\n\n protected formatAuthenticatorData() {\n const authenticatorData = this.getAuthenticatorData();\n if (authenticatorData) {\n this.values.authenticatorsData = this.values.authenticatorsData!.map(data => {\n if (compareAuthenticators(this.authenticator, data)) {\n return this.mapAuthenticatorDataFromValues(data);\n }\n return data;\n });\n } else {\n const data = this.mapAuthenticatorDataFromValues();\n if (data) {\n this.values.authenticatorsData!.push(data);\n }\n }\n }\n\n protected getAuthenticatorData() {\n return this.values.authenticatorsData!\n .find((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value!\n .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n return authenticator;\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { OktaAuthIdxInterface, NextStep, IdxMessage, Authenticator, Input, RemediateOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase, getAuthenticatorFromRemediation } from '../util';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: (Authenticator | string)[];\n authenticator?: string | Authenticator;\n authenticatorsData?: Authenticator[];\n resend?: boolean;\n}\n\nexport interface RemediatorConstructor {\n new(\n remediation: IdxRemediation, \n values?: T, \n options?: RemediateOptions\n ): any;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: T;\n options: RemediateOptions;\n map?: IdxToRemediationValueMap;\n\n constructor(\n remediation: IdxRemediation, \n values: T = {} as T, \n options: RemediateOptions = {}\n ) {\n // assign fields to the instance\n this.values = { ...values };\n this.options = { ...options };\n this.formatAuthenticators();\n this.remediation = remediation;\n }\n\n private formatAuthenticators() {\n this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n\n // ensure authenticators are in the correct format\n this.values.authenticators = this.values.authenticators.map(authenticator => {\n return formatAuthenticator(authenticator);\n });\n\n // add authenticator (if any) to \"authenticators\"\n if (this.values.authenticator) {\n const authenticator = formatAuthenticator(this.values.authenticator);\n const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n return compareAuthenticators(authenticator, existing);\n });\n if (!hasAuthenticatorInList) {\n this.values.authenticators.push(authenticator);\n }\n }\n\n // save non-key meta to \"authenticatorsData\" field\n // authenticators will be removed after selection to avoid select-authenticator loop\n this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n // save authenticator meta into authenticator data\n acc.push(authenticator);\n }\n return acc;\n }, this.values.authenticatorsData || []);\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n /* eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars */\n canRemediate(): boolean {\n const required = getRequiredValues(this.remediation);\n const needed = required!.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues!.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n const val = this[`map${titleCase(key)}`](\n this.remediation.value!.find(({name}) => name === key)\n );\n if (val) {\n return val;\n }\n }\n\n // If a map is defined for this key, return the first aliased property that returns a truthy value\n if (this.map && this.map[key]) {\n const entry = this.map[key];\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n // fallback: return the value by key\n return this.values[key];\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n return !!this.getData(key);\n }\n\n getNextStep(_authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n getInputs(): Input[] {\n const inputs: Input[] = [];\n const inputsFromRemediation = this.remediation.value || [];\n inputsFromRemediation.forEach(inputFromRemediation => {\n let input;\n let { name, type, visible, messages } = inputFromRemediation;\n if (visible === false) {\n return; // Filter out invisible inputs, like stateHandle\n }\n if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let alias;\n const aliases = (this.map ? this.map[name] : null) || [];\n if (aliases.length === 1) {\n alias = aliases[0];\n } else {\n // try find key from values\n alias = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (alias) {\n input = { ...inputFromRemediation, name: alias };\n }\n }\n if (!input) {\n input = inputFromRemediation;\n }\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n // guarantees field-level messages are passed back\n if (messages) {\n input.messages = messages;\n }\n inputs.push(input);\n }\n });\n return inputs;\n }\n\n static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n if (!remediation.value) {\n return;\n }\n return remediation.value[0]?.form?.value.reduce((messages: IdxMessage[], field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove used values from inputs for the current remediation\n // Override this method if special cases need be handled\n getValuesAfterProceed(): T {\n const inputsFromRemediation = this.remediation.value || []; // \"raw\" inputs from server response\n const inputsFromRemediator = this.getInputs(); // \"aliased\" inputs from SDK remediator\n const inputs = [\n ...inputsFromRemediation,\n ...inputsFromRemediator\n ];\n // scrub all values related to this remediation\n for (const input of inputs) {\n delete this.values[input.name];\n }\n return this.values;\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n // relatesTo value may be an authenticator or an authenticatorEnrollment\n const relatesTo = this.remediation.relatesTo?.value;\n if (!relatesTo) {\n return;\n }\n\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n if (!authenticatorFromRemediation) {\n // Hopefully value is an authenticator\n return relatesTo;\n }\n\n // If relatesTo is an authenticatorEnrollment, the id is actually the enrollmentId\n // Let's get the correct authenticator id from the form value\n const id = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value as string;\n const enrollmentId = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'enrollmentId')?.value as string;\n\n return {\n ...relatesTo,\n id,\n enrollmentId\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types/api';\nimport { compareAuthenticators, findMatchedOption} from '../../authenticator/util';\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string | Authenticator;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator\n extends Remediator {\n selectedAuthenticator?: Authenticator;\n selectedOption?: any;\n\n // Find matched authenticator in provided order\n findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n }\n\n canRemediate() {\n const { authenticators, authenticator } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n return true;\n }\n\n // Proceed with provided authenticators\n const matchedOption = this.findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators, authenticator } = this.values;\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n this.selectedAuthenticator = authenticator; // track the selected authenticator\n return authenticator;\n }\n\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator\n this.selectedOption = selectedOption;\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator(remediation) {\n const options = remediation.options.map(({ label, relatesTo }) => {\n return {\n label,\n value: relatesTo.key\n };\n });\n return { name: 'authenticator', type: 'string', options };\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticators\n const authenticators = (this.values.authenticators as Authenticator[])\n .filter(authenticator => {\n return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n });\n return { ...this.values, authenticators };\n }\n\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface VerificationCodeValues {\n verificationCode?: string;\n otp?: string;\n credentials?: Credentials;\n}\n\ninterface VerificationCodeCredentials extends Credentials {\n passcode: string;\n}\n\n// general authenticator to handle \"verificationCode\" input\n// it can be used for \"email\", \"phone\", \"google authenticator\"\n// a new authenticator class should be created if special cases need to be handled\nexport class VerificationCodeAuthenticator extends Authenticator {\n canVerify(values: VerificationCodeValues) {\n return !!(values.credentials ||values.verificationCode || values.otp);\n }\n\n mapCredentials(values): VerificationCodeCredentials | Credentials | undefined {\n const { credentials, verificationCode, otp } = values;\n if (!credentials && !verificationCode && !otp) {\n return;\n }\n return credentials || { passcode: verificationCode || otp };\n }\n\n getInputs(idxRemediationValue) {\n return {\n ...idxRemediationValue.form?.value[0],\n name: 'verificationCode',\n type: 'string',\n required: idxRemediationValue.required\n };\n }\n}\n","import { Credentials } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\n\ninterface TotpCredentials extends Credentials {\n totp: string;\n}\n\nexport class OktaVerifyTotp extends VerificationCodeAuthenticator {\n mapCredentials(values): TotpCredentials | undefined {\n const { verificationCode } = values;\n if (!verificationCode) {\n return;\n }\n return { totp: verificationCode };\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionEnrollValues {\n questionKey?: string;\n question?: string;\n answer?: string;\n credentials?: Credentials;\n}\n\nexport class SecurityQuestionEnrollment extends Authenticator {\n canVerify(values: SecurityQuestionEnrollValues) {\n const { credentials } = values;\n if (credentials && credentials.questionKey && credentials.answer) {\n return true;\n }\n const { questionKey, question, answer } = values;\n return !!(questionKey && answer) || !!(question && answer);\n }\n\n mapCredentials(values: SecurityQuestionEnrollValues): Credentials | undefined {\n const { questionKey, question, answer } = values;\n if (!answer || (!questionKey && !question)) {\n return;\n }\n return {\n questionKey: question ? 'custom' : questionKey,\n question,\n answer\n };\n }\n\n getInputs() {\n return [\n { name: 'questionKey', type: 'string', required: true },\n { name: 'question', type: 'string', label: 'Create a security question' },\n { name: 'answer', type: 'string', label: 'Answer', required: true },\n ];\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionVerificationValues {\n answer?: string;\n credentials?: Credentials;\n}\n\nexport class SecurityQuestionVerification extends Authenticator {\n canVerify(values: SecurityQuestionVerificationValues) {\n const { credentials } = values;\n if (credentials && credentials.answer) {\n return true;\n }\n const { answer } = values;\n return !!answer;\n }\n\n mapCredentials(values: SecurityQuestionVerificationValues): Credentials | undefined {\n const { answer } = values;\n if (!answer) {\n return;\n }\n return {\n questionKey: this.meta.contextualData!.enrolledQuestion!.questionKey,\n answer\n };\n }\n\n getInputs() {\n return [\n { name: 'answer', type: 'string', label: 'Answer', required: true }\n ];\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnEnrollValues {\n clientData?: string;\n attestation?: string;\n credentials?: Credentials;\n}\n\nexport class WebauthnEnrollment extends Authenticator {\n canVerify(values: WebauthnEnrollValues) {\n const { credentials } = values;\n const obj = credentials || values;\n const { clientData, attestation } = obj;\n return !!(clientData && attestation);\n }\n\n mapCredentials(values: WebauthnEnrollValues): Credentials | undefined {\n const { credentials, clientData, attestation } = values;\n if (!credentials && !clientData && !attestation) {\n return;\n }\n return credentials || ({\n clientData,\n attestation\n });\n }\n\n getInputs() {\n return [\n { name: 'clientData', type: 'string', required: true, visible: false, label: 'Client Data' },\n { name: 'attestation', type: 'string', required: true, visible: false, label: 'Attestation' },\n ];\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnVerificationValues {\n clientData?: string;\n authenticatorData?: string;\n signatureData?: string;\n credentials?: Credentials;\n}\n\nexport class WebauthnVerification extends Authenticator {\n canVerify(values: WebauthnVerificationValues) {\n const { credentials } = values;\n const obj = credentials || values;\n const { clientData, authenticatorData, signatureData } = obj;\n return !!(clientData && authenticatorData && signatureData);\n }\n\n mapCredentials(values: WebauthnVerificationValues): Credentials | undefined {\n const { credentials, authenticatorData, clientData, signatureData } = values;\n if (!credentials && !authenticatorData && !clientData && !signatureData) {\n return;\n }\n return credentials || ({\n authenticatorData,\n clientData,\n signatureData\n });\n }\n\n getInputs() {\n return [\n { name: 'authenticatorData', type: 'string', label: 'Authenticator Data', required: true, visible: false },\n { name: 'clientData', type: 'string', label: 'Client Data', required: true, visible: false },\n { name: 'signatureData', type: 'string', label: 'Signature Data', required: true, visible: false },\n ];\n }\n}\n","import { OktaVerifyTotp } from './OktaVerifyTotp';\nimport { Authenticator } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\nimport { OktaPassword } from './OktaPassword';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification';\nimport { WebauthnEnrollment } from './WebauthnEnrollment';\nimport { WebauthnVerification } from './WebauthnVerification';\nimport { IdxAuthenticator, IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey } from '../types';\n\n/* eslint complexity:[0,8] */\nexport function getAuthenticator(remediation: IdxRemediation): Authenticator {\n const relatesTo = remediation.relatesTo;\n const value = relatesTo?.value || {} as IdxAuthenticator;\n switch (value.key) {\n case AuthenticatorKey.OKTA_PASSWORD:\n return new OktaPassword(value);\n case AuthenticatorKey.SECURITY_QUESTION:\n if (value.contextualData?.enrolledQuestion) {\n return new SecurityQuestionVerification(value);\n } else {\n return new SecurityQuestionEnrollment(value);\n }\n case AuthenticatorKey.OKTA_VERIFY:\n return new OktaVerifyTotp(value);\n case AuthenticatorKey.WEBAUTHN:\n if (value.contextualData?.challengeData) {\n return new WebauthnVerification(value);\n } else {\n return new WebauthnEnrollment(value);\n }\n default:\n return new VerificationCodeAuthenticator(value);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, NextStep } from '../../types';\n\nexport type VerifyAuthenticatorValues = AuthenticatorValues & RemediationValues;\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator\n extends Remediator {\n\n authenticator: Authenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n this.authenticator = getAuthenticator(remediation);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const nextStep = super.getNextStep(authClient, context);\n const authenticatorEnrollments = context?.authenticatorEnrollments?.value;\n\n return {\n ...nextStep,\n authenticatorEnrollments\n };\n }\n\n canRemediate() {\n return this.authenticator.canVerify(this.values);\n }\n\n mapCredentials() {\n return this.authenticator.mapCredentials(this.values);\n }\n\n getInputCredentials(input) {\n return this.authenticator.getInputs(input);\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {} as T);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ChallengeAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ChallengeAuthenticator extends VerifyAuthenticator {\n static remediationName = 'challenge-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { EnrollPoll } from './EnrollPoll';\n\nexport class ChallengePoll extends EnrollPoll{\n static remediationName = 'challenge-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'challenge-poll';\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type EnrollAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class EnrollAuthenticator extends VerifyAuthenticator {\n static remediationName = 'enroll-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { NextStep, OktaAuthIdxInterface } from '../types';\nimport { IdxContext } from '../types/idx-js';\n\nexport interface EnrollPollValues extends RemediationValues {\n startPolling?: boolean;\n}\n\nexport class EnrollPoll extends Remediator {\n static remediationName = 'enroll-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'enroll-poll';\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const common = super.getNextStep(authClient, context);\n let authenticator = this.getAuthenticator();\n if (!authenticator && context?.currentAuthenticator) {\n authenticator = context.currentAuthenticator.value;\n }\n return {\n ...common,\n authenticator,\n poll: {\n required: true,\n refresh: this.remediation.refresh\n },\n };\n }\n\n getValuesAfterProceed(): EnrollPollValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxRemediation, IdxRemediationValue, IdxAuthenticator } from '../types/idx-js';\nimport { RemediateOptions } from '../types';\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { Authenticator, Credentials, OktaPassword } from '../authenticator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n firstName?: string;\n lastName?: string;\n email?: string;\n credentials?: Credentials;\n password?: string;\n passcode?: string;\n}\n\nexport class EnrollProfile extends Remediator {\n static remediationName = 'enroll-profile';\n\n authenticator: Authenticator | null = null;\n\n constructor(\n remediation: IdxRemediation,\n values: EnrollProfileValues = {},\n options: RemediateOptions = {}\n ) {\n super(remediation, values, options);\n\n // credentials are only required when Profile Enrollment policy requires them\n // if credentials are included in the remediation, they are considered required\n // otherwise it will be omitted\n const credentials = this.getCredentialsFromRemediation();\n if (credentials) {\n this.authenticator = this.authenticator = new OktaPassword({} as IdxAuthenticator);\n }\n }\n\n canRemediate() {\n // ensure credentials can be verified, if required\n if (this.authenticator && !this.authenticator.canVerify(this.values)) {\n return false;\n }\n\n const userProfileFromValues = this.getData().userProfile;\n if (!userProfileFromValues) {\n return false;\n }\n // eslint-disable-next-line max-len\n const userProfileFromRemediation = this.remediation.value!.find(({ name }) => name === 'userProfile') as IdxRemediationValue;\n return userProfileFromRemediation.form!.value.reduce((canRemediate, curr) => {\n if (curr.required) {\n canRemediate = canRemediate && !!userProfileFromValues[curr.name];\n }\n return canRemediate;\n }, true);\n }\n\n getCredentialsFromRemediation () {\n return this.remediation.value!.find(({ name }) => name === 'credentials');\n }\n\n mapUserProfile({form: { value: profileAttributes }}) {\n const attributeNames = profileAttributes.map(({name}) => name);\n const data = attributeNames.reduce((attributeValues, attributeName) => (\n this.values[attributeName] ? {\n ...attributeValues,\n [attributeName]: this.values[attributeName]\n } : attributeValues), {});\n if (Object.keys(data).length === 0) {\n return;\n }\n return data;\n }\n\n mapCredentials() {\n const val = this.authenticator && this.authenticator.mapCredentials(this.values);\n if (!val) {\n return;\n }\n return val;\n }\n\n getInputUserProfile(input) {\n return [...input.form.value];\n }\n\n getInputCredentials(input) {\n return [...input.form.value];\n }\n\n getErrorMessages(errorRemediation) {\n return errorRemediation.value[0].form.value.reduce((errors, field) => {\n if (field.messages) {\n errors.push(field.messages.value[0].message);\n }\n return errors;\n }, []);\n }\n}","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxContext } from '../types/idx-js';\nimport { OktaAuthIdxInterface } from '../types';\n\n\nexport type EnrollmentChannelDataValues = RemediationValues & {\n email?: string;\n phoneNumber?: string;\n};\n\nexport class EnrollmentChannelData extends Remediator {\n static remediationName = 'enrollment-channel-data';\n\n getInputEmail() {\n return [\n { name: 'email', type: 'string', required: true, label: 'Email' },\n ];\n }\n\n getInputPhoneNumber() {\n return [\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n canRemediate() {\n return Boolean(this.values.email || this.values.phoneNumber);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n return {\n stateHandle: this.values.stateHandle,\n email: this.values.email,\n phoneNumber: this.values.phoneNumber\n };\n }\n\n getValuesAfterProceed(): EnrollmentChannelDataValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Credentials } from '../authenticator';\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface IdentifyValues extends RemediationValues {\n username?: string;\n password?: string;\n credentials?: Credentials;\n}\n\nexport class Identify extends Remediator {\n static remediationName = 'identify';\n\n map = {\n 'identifier': ['username']\n };\n\n canRemediate(): boolean {\n const { identifier } = this.getData();\n return !!identifier;\n }\n\n mapCredentials() {\n const { credentials, password } = this.values;\n if (!credentials && !password) {\n return;\n }\n return credentials || { passcode: password };\n }\n\n getInputCredentials(input) {\n return {\n ...input.form.value[0],\n name: 'password',\n required: input.required\n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface ReEnrollAuthenticatorValues extends RemediationValues {\n newPassword?: string;\n}\n\nexport class ReEnrollAuthenticator extends Remediator {\n static remediationName = 'reenroll-authenticator';\n\n mapCredentials() {\n const { newPassword } = this.values;\n if (!newPassword) {\n return;\n }\n return { \n passcode: newPassword,\n };\n }\n\n getInputCredentials(input) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const challengeType = this.getAuthenticator()!.type;\n const name = challengeType === 'password' ? 'newPassword' : 'verificationCode';\n return {\n ...input.form.value[0],\n name\n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator } from './Base/Remediator';\n\nexport class RedirectIdp extends Remediator {\n static remediationName = 'redirect-idp';\n\n canRemediate() {\n return false;\n }\n\n getNextStep() {\n const { name, type, idp, href } = this.remediation;\n return {\n name,\n type,\n idp,\n href\n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ResetAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ResetAuthenticator extends VerifyAuthenticator {\n static remediationName = 'reset-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey, Authenticator, RemediateOptions } from '../types';\n\nexport type SelectAuthenticatorAuthenticateValues = SelectAuthenticatorValues & {\n password?: string;\n};\n\nexport class SelectAuthenticatorAuthenticate extends SelectAuthenticator {\n static remediationName = 'select-authenticator-authenticate';\n\n constructor(\n remediation: IdxRemediation, \n values: SelectAuthenticatorValues = {}, \n options: RemediateOptions = {}\n ) {\n super(remediation, values, options);\n\n // Preset password authenticator to trigger recover action\n const isRecoveryFlow = this.options.flow === 'recoverPassword';\n const hasPasswordInOptions = getAuthenticatorFromRemediation(remediation)\n .options?.some(({ relatesTo }) => relatesTo?.key === AuthenticatorKey.OKTA_PASSWORD);\n if (hasPasswordInOptions && (isRecoveryFlow || this.values.password)) {\n this.values.authenticators = [\n ...this.values.authenticators || [],\n { key: AuthenticatorKey.OKTA_PASSWORD }\n ] as Authenticator[];\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\n\nexport type SelectAuthenticatorEnrollValues = SelectAuthenticatorValues;\n\nexport class SelectAuthenticatorEnroll extends SelectAuthenticator {\n static remediationName = 'select-authenticator-enroll';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { Authenticator } from '../types';\nimport { IdxRemediationValue } from '../types/idx-js';\n\n\nexport type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {\n identifier?: string;\n methodType?: string;\n};\n\nexport class SelectAuthenticatorUnlockAccount extends SelectAuthenticator {\n static remediationName = 'select-authenticator-unlock-account';\n authenticator?: Authenticator;\n\n map = {\n identifier: ['username']\n };\n\n canRemediate() {\n const identifier = this.getData('identifier');\n return !!identifier && super.canRemediate();\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const authenticatorMap = super.mapAuthenticator(remediationValue);\n const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');\n\n // defaults to 'manually defined' value\n // 2nd: option may have pre-defined value, like stateHandle\n // 3rd: if only a single OV option is available, default to that option\n const methodTypeValue = this.values.methodType ||\n methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;\n\n if (methodTypeValue) {\n return {\n ...authenticatorMap,\n methodType: methodTypeValue\n };\n }\n\n return authenticatorMap;\n }\n\n getInputUsername () {\n return { name: 'username', type: 'string' };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface SelectEnrollProfileValues extends RemediationValues {}\n\nexport class SelectEnrollProfile extends Remediator {\n static remediationName = 'select-enroll-profile';\n\n canRemediate() {\n return true;\n }\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxContext } from '../types/idx-js';\nimport { Authenticator, OktaAuthIdxInterface } from '../types/api';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n if (this.values.channel) {\n return true;\n }\n\n if (this.values.authenticator) {\n const { id, channel } = this.values.authenticator as Authenticator;\n if (!!id && !!channel) {\n return true;\n }\n }\n\n return false;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: (this.values.authenticator as Authenticator)?.channel || this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n this.values = super.getValuesAfterProceed();\n delete this.values.authenticators; // required to prevent infinite loops from auto-remediating via values\n const filterKey = this.values.channel ? 'channel' : 'authenticator';\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface SkipValues extends RemediationValues {\n skip?: boolean;\n}\n\nexport class Skip extends Remediator {\n static remediationName = 'skip';\n\n canRemediate() {\n return !!this.values.skip || this.options.step === 'skip';\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxRemediation, IdxRemediationValue } from '../types/idx-js';\n\nexport function getAllValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.map(r => r.name);\n}\n\nexport function getRequiredValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.reduce((required, cur) => {\n if (cur.required) {\n required.push(cur.name as never);\n }\n return required;\n }, []);\n}\n\nexport function titleCase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function getAuthenticatorFromRemediation(\n remediation: IdxRemediation\n): IdxRemediationValue {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediation.value!.find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n}\n","/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n if (Array.isArray(remediation)) {\n return remediation\n .map(item => {\n if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {\n return item;\n }\n return unwrapFormValue(item);\n }) as any;\n }\n\n const res = {};\n for (const [key, value] of Object.entries(remediation)) {\n if (value === null || typeof value === 'undefined') {\n continue;\n }\n\n if (typeof value === 'object') {\n const formKeys = Object.keys(value as object);\n // detect patterns like:\n // value -> form -> value | form -> value\n if (['value', 'form'].includes(key) \n && formKeys.length === 1 \n && ['value', 'form'].includes(formKeys[0])\n ) {\n // unwrap nested form\n const unwrappedForm = unwrapFormValue(value);\n Object.entries(unwrappedForm).forEach(([key, value]) => {\n res[key] = value;\n });\n } else {\n // dfs\n res[key] = unwrapFormValue(value);\n }\n } else {\n // handle primitive value\n res[key] = value;\n }\n }\n\n return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n const fn = (input, values, requiredTracker) => {\n const { name, value, type, options, required } = input;\n const isRequired = required || requiredTracker;\n\n // handle nested value - all required fields should be avaiable in values \n if (Array.isArray(value)) {\n return value.reduce((acc, item) => {\n return acc && fn(item, values[name], isRequired); // recursive call\n }, true);\n }\n\n // handle options field\n // 1. object type options - check if each object field is required and value can be found from the selectedOption\n // 2. primitive options - required field is avaiable from top level\n // 3. unknown format - pass to backend for validation\n if (options) {\n // object type options\n if (type === 'object') {\n const selectedOption = values[name];\n if (!selectedOption) {\n return false;\n }\n if (!selectedOption.id) {\n // unknown option format, pass to backend for validation\n return true;\n }\n const optionSchema = options.find((option) => {\n const idSchema = option.value.find(({ name }) => name === 'id' );\n return idSchema.value === selectedOption.id;\n });\n if (!optionSchema) {\n return false;\n }\n return optionSchema.value\n .filter(({ required }) => !!required)\n .reduce((acc, { name }) => {\n return acc && !!selectedOption[name];\n }, true);\n }\n\n // primitive options, not required - always valid\n if (required === false) {\n return true;\n }\n\n // primitive options, required - check if value is available\n if (required === true) {\n return !!values[name];\n }\n\n // unknown options, throw\n throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n }\n\n // base case\n if (!isRequired) {\n return true;\n }\n \n return !!(values && values[name]);\n };\n\n return fn(input, values, false);\n}\n","import { OktaAuthIdxInterface, IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue } from './util';\n\nexport class GenericRemediator extends Remediator {\n canRemediate(): boolean {\n // only handle remediations that are able to submit form (xhr)\n if (typeof this.remediation.action !== 'function') {\n return false;\n }\n\n // DO NOT REMOVE - bring it back when enable client side validation for GenericRemediator - OKTA-512003\n // const inputs = this.getInputs();\n // const res = inputs.reduce((acc, input) => {\n // return acc && hasValidInputValue(input, this.values);\n // }, true);\n // return res;\n\n if (this.remediation.name === 'poll' || this.remediation.name.endsWith('-poll')) {\n return true;\n }\n\n if (this.options.step) {\n return true;\n }\n \n // disable auto proceed for unknown remediations\n return false;\n }\n\n getData() {\n const data = this.getInputs().reduce((acc, { name }) => {\n acc[name] = this.values[name];\n return acc;\n }, {});\n return data;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n \n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n // excludes transformed fields\n const { \n // http metas have been transformed to action\n href, \n method, \n rel, \n accepts, \n produces, \n // value has been transform to inputs\n value,\n // will be transformed to a function that resolves IdxTransaction\n action,\n ...rest \n } = this.remediation;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n // step to handle form submission\n if (action) {\n return { \n ...rest,\n ...(!!inputs.length && { inputs }),\n action: async (params?) => {\n return authClient.idx.proceed({\n step: name,\n ...params\n });\n }\n };\n }\n\n // return whole remediation data for other steps, eg \"redirect-idp\"\n return { ...this.remediation } as NextStep;\n \n }\n\n getInputs(): Input[] {\n return (this.remediation.value || [])\n .filter(({ name }) => name !== 'stateHandle')\n .map(unwrapFormValue)\n .map(input => {\n // use string as default input type\n input.type = input.type || 'string';\n return input;\n });\n }\n\n}\n","import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { OktaAuthIdxInterface, IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { OktaAuthIdxInterface, RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleFailedResponse\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n idxResponse = await idxResponse.actions[action](params);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(\n authClient, \n idxResponse, \n valuesWithoutExecutedAction, \n optionsWithoutExecutedAction\n ); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n idxResponse = await idxResponse.proceed(action, params);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal };\n }\n\n if (!remediator) {\n // With options.step, remediator is not required\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n idxResponse = await idxResponse.proceed(options.step, values);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n return { idxResponse };\n }\n\n // With default flow, remediator is not required\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n\n idxResponse = await idxResponse.proceed(name, data);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n\n // generic remediator should not auto proceed in pending status\n // return nextStep directly\n if (options.useGenericRemediator && !idxResponse.interactionCode && !isTerminalResponse(idxResponse)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const gr = getRemediator(idxResponse.neededToProceed, values, options)!;\n const nextStep = getNextStep(authClient, gr, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n \n return remediate(authClient, idxResponse, values, options); // recursive call\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { getFlowSpecification } from './flow';\nimport * as remediators from './remediators';\nimport { \n OktaAuthIdxInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getAvailableSteps, getEnabledFeatures, getMessagesFromResponse, isTerminalResponse } from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: remediators.RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step',\n 'useGenericRemediator',\n 'exchangeCodeForTokens',\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient, data: RunData): RunData {\n let { options } = data;\n options = {\n ...authClient.options.idx,\n ...options\n };\n let {\n flow,\n withCredentials,\n remediators,\n actions,\n } = options;\n\n const status = IdxStatus.PENDING;\n\n // certain options can be set by the flow specification\n flow = flow || authClient.idx.getFlow() || 'default';\n if (flow) {\n authClient.idx.setFlow(flow);\n const flowSpec = getFlowSpecification(authClient, flow);\n // Favor option values over flow spec\n withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n remediators = remediators || flowSpec.remediators;\n actions = actions || flowSpec.actions;\n }\n\n return { \n ...data,\n options: { \n ...options, \n flow, \n withCredentials, \n remediators, \n actions,\n },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient, data: RunData): Promise {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken,\n maxAge,\n nonce,\n } = options;\n\n let idxResponse;\n let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n if (stateHandle) {\n idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n } else {\n let interactionHandle = meta?.interactionHandle; // may be undefined\n if (!interactionHandle) {\n // start a new transaction\n authClient.transactionManager.clear();\n const interactResponse = await interact(authClient, {\n withCredentials,\n state,\n scopes,\n activationToken,\n recoveryToken,\n maxAge,\n nonce,\n }); \n interactionHandle = interactResponse.interactionHandle;\n meta = interactResponse.meta;\n }\n \n // Introspect to get idx response\n idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n }\n return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient, data: RunData): Promise {\n let {\n idxResponse,\n options,\n values\n } = data;\n\n const {\n autoRemediate,\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n } = options;\n \n const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n if (!shouldRemediate) {\n return data;\n }\n\n values = { \n ...values, \n stateHandle: idxResponse!.rawIdxState.stateHandle \n };\n\n // Can we handle the remediations?\n const { \n idxResponse: idxResponseFromRemediation, \n nextStep,\n canceled,\n } = await remediate(\n authClient,\n idxResponse!, \n values, \n {\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n }\n );\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient, data: RunData): Promise {\n let { meta, idxResponse } = data;\n const { interactionCode } = idxResponse as IdxResponse;\n const {\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n urls,\n scopes,\n } = meta as IdxTransactionMeta;\n const tokenResponse = await authClient.token.exchangeCodeForTokens({\n interactionCode,\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n scopes\n }, urls);\n return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient, data: RunData): Promise {\n let {\n options,\n idxResponse,\n canceled,\n status,\n } = data;\n const { exchangeCodeForTokens } = options;\n let shouldSaveResponse = false;\n let shouldClearTransaction = false;\n let clearSharedStorage = true;\n let interactionCode;\n let tokens;\n let enabledFeatures;\n let availableSteps;\n let messages;\n let terminal;\n\n if (idxResponse) {\n shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n enabledFeatures = getEnabledFeatures(idxResponse);\n availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n messages = getMessagesFromResponse(idxResponse, options);\n terminal = isTerminalResponse(idxResponse);\n }\n\n if (terminal) {\n status = IdxStatus.TERMINAL;\n\n // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n // A terminal \"success\" is a non-error response with no further actions available.\n // In these narrow cases, saved transaction data should be cleared.\n // One example of a terminal success is when the email verify flow is continued in another tab\n const hasActions = Object.keys(idxResponse!.actions).length > 0;\n const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n if (isTerminalSuccess) {\n shouldClearTransaction = true;\n } else {\n // save response if there are actions available (ignore messages)\n shouldSaveResponse = !!hasActions;\n }\n // leave shared storage intact so the transaction can be continued in another tab\n clearSharedStorage = false;\n } else if (canceled) {\n status = IdxStatus.CANCELED;\n shouldClearTransaction = true;\n } else if (idxResponse?.interactionCode) { \n interactionCode = idxResponse.interactionCode;\n if (exchangeCodeForTokens === false) {\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = false;\n } else {\n tokens = await getTokens(authClient, data);\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = true;\n }\n }\n return {\n ...data,\n status,\n interactionCode,\n tokens,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n enabledFeatures,\n availableSteps,\n messages,\n terminal\n };\n}\n\nexport async function run(\n authClient: OktaAuthIdxInterface, \n options: RunOptions = {},\n): Promise {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(authClient, data);\n data = await finalizeData(authClient, data);\n\n const {\n idxResponse,\n meta,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n status,\n enabledFeatures,\n availableSteps,\n tokens,\n nextStep,\n messages,\n error,\n interactionCode\n } = data;\n\n if (shouldClearTransaction) {\n authClient.transactionManager.clear({ clearSharedStorage });\n }\n else {\n // ensures state is saved to sessionStorage\n saveTransactionMeta(authClient, { ...meta });\n\n if (shouldSaveResponse) {\n // Save intermediate idx response in storage to reduce introspect call\n const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n authClient.transactionManager.saveIdxResponse({\n rawIdxResponse,\n requestDidSucceed,\n stateHandle: idxResponse!.context?.stateHandle,\n interactionHandle: meta?.interactionHandle\n });\n }\n }\n \n // copy all fields from idxResponse which are needed by the widget\n const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n return {\n status: status!,\n ...(meta && { meta }),\n ...(enabledFeatures && { enabledFeatures }),\n ...(availableSteps && { availableSteps }),\n ...(tokens && { tokens }),\n ...(nextStep && { nextStep }),\n ...(messages && messages.length && { messages }),\n ...(error && { error }),\n ...(stepUp && { stepUp }),\n interactionCode, // if options.exchangeCodeForTokens is false\n\n // from idx-js\n actions: actions!,\n context: context!,\n neededToProceed: neededToProceed!,\n proceed: proceed!,\n rawIdxState: rawIdxState!,\n requestDidSucceed\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { OktaAuthIdxInterface, IdxTransaction, StartOptions } from './types';\n\nexport async function startTransaction(\n authClient: OktaAuthIdxInterface, \n options: StartOptions = {}\n): Promise {\n // Clear IDX response cache and saved transaction meta (if any)\n authClient.transactionManager.clear();\n\n return run(authClient, {\n exchangeCodeForTokens: false,\n ...options\n });\n}\n","import { CookieOptions, StorageManagerOptions, StorageOptions, StorageUtil } from '../storage/types';\nimport { IdxTransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { IDX_RESPONSE_STORAGE_NAME } from '../constants';\nimport { createCoreStorageManager } from '../core/storage';\nimport { IdxResponseStorage } from './types/storage';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\nimport AuthSdkError from '../errors/AuthSdkError';\n\nexport function createIdxStorageManager()\n{\n const CoreStorageManager = createCoreStorageManager();\n return class IdxStorageManager extends CoreStorageManager\n {\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n super(storageManagerOptions, cookieOptions, storageUtil);\n }\n\n // intermediate idxResponse\n // store for network traffic optimazation purpose\n // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n let storage;\n if (isBrowser()) {\n // on browser side only use memory storage \n try {\n storage = this.storageUtil.getStorageByType('memory', options);\n } catch (e) {\n // it's ok to miss response storage\n // eslint-disable-next-line max-len\n warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n }\n } else {\n // on server side re-use transaction custom storage\n const transactionStorage = this.getTransactionStorage(options);\n if (transactionStorage) {\n storage = {\n getItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (transaction && transaction[key]) {\n return transaction[key];\n }\n return null;\n },\n setItem: (key, val) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n }\n transaction[key] = val;\n transactionStorage.setStorage(transaction);\n },\n removeItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n return;\n }\n delete transaction[key];\n transactionStorage.setStorage(transaction);\n }\n };\n }\n }\n\n if (!storage) {\n return null;\n }\n\n return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n }\n };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxTransactionMeta, IdxTransactionMetaOptions } from './types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta, PKCETransactionMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options: IdxTransactionMetaOptions = {}\n): Promise {\n const tokenParams = await authClient.token.prepareTokenParams(options);\n const pkceMeta = createOAuthMeta(authClient, tokenParams) as PKCETransactionMeta;\n let {\n flow = 'default',\n withCredentials = true,\n activationToken = undefined,\n recoveryToken = undefined,\n maxAge = undefined,\n } = { ...authClient.options, ...options }; // local options override SDK options\n\n const meta: IdxTransactionMeta = {\n ...pkceMeta,\n flow,\n withCredentials,\n activationToken,\n recoveryToken,\n maxAge\n };\n return meta;\n}\n\nexport function hasSavedInteractionHandle(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): boolean {\n const savedMeta = getSavedTransactionMeta(authClient, options);\n if (savedMeta?.interactionHandle) {\n return true;\n }\n return false;\n}\n\n// Returns the saved transaction meta, if it exists and is valid\nexport function getSavedTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): IdxTransactionMeta | undefined {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n let savedMeta;\n try {\n savedMeta = authClient.transactionManager.load(options) as IdxTransactionMeta;\n } catch (e) {\n // ignore errors here\n }\n\n if (!savedMeta) {\n return;\n }\n\n if (isTransactionMetaValid(savedMeta, options)) {\n return savedMeta;\n }\n\n // existing meta is not valid for this configuration\n // this is common when changing configuration in local development environment\n // in a production environment, this may indicate that two apps are sharing a storage key\n warn('Saved transaction meta does not match the current configuration. ' + \n 'This may indicate that two apps are sharing a storage key.');\n\n}\n\nexport async function getTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): Promise {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n // Load existing transaction meta from storage\n const validExistingMeta = getSavedTransactionMeta(authClient, options);\n if (validExistingMeta) {\n return validExistingMeta;\n }\n // No existing? Create new transaction meta.\n return createTransactionMeta(authClient, options);\n}\n\nexport function saveTransactionMeta (authClient: OktaAuthIdxInterface, meta): void {\n authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthIdxInterface): void {\n authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: IdxTransactionMetaOptions = {}): boolean {\n // Validate against certain options. If these exist in options, they must match in meta\n const keys = [\n 'issuer',\n 'clientId',\n 'redirectUri',\n 'state',\n 'codeChallenge',\n 'codeChallengeMethod',\n 'activationToken',\n 'recoveryToken'\n ];\n if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n return false;\n }\n\n // Validate configured flow\n const { flow } = options;\n if (isTransactionMetaValidForFlow(meta, flow) === false) {\n return false;\n }\n\n return true;\n}\n\nexport function isTransactionMetaValidForFlow(meta, flow) {\n // Specific flows should not share transaction data\n const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n if (shouldValidateFlow) {\n if (flow !== meta.flow) {\n // The flow has changed; abandon the old transaction\n return false;\n }\n }\n return true;\n}\n\nexport function isTransactionMetaValidForOptions(meta, options, keys) {\n // returns false if values in meta do not match options\n // if the option does not have a value for a specific key, it is ignored\n const mismatch = keys.some(key => {\n const value = options[key];\n if (value && value !== meta[key]) {\n return true;\n }\n });\n return !mismatch;\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { APIError } from '../../errors/types';\nimport {\n OktaAuthOAuthInterface,\n Tokens,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../../oidc/types';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n IdxActions,\n IdxAuthenticator,\n IdxContext,\n IdxForm,\n IdxMessage,\n IdxOption,\n IdxRemediation,\n IdxResponse,\n RawIdxResponse,\n IdxActionParams,\n IdpConfig,\n IdxToPersist,\n} from './idx-js';\nimport {\n AccountUnlockOptions,\n AuthenticationOptions,\n CancelOptions,\n InteractOptions,\n IntrospectOptions,\n OktaAuthIdxOptions,\n PasswordRecoveryOptions,\n ProceedOptions,\n RegistrationOptions,\n StartOptions,\n IdxTransactionMetaOptions\n} from './options';\nimport { IdxTransactionMeta } from './meta';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './storage';\n\nexport enum IdxStatus {\n SUCCESS = 'SUCCESS',\n PENDING = 'PENDING',\n FAILURE = 'FAILURE',\n TERMINAL = 'TERMINAL',\n CANCELED = 'CANCELED',\n}\n\nexport enum AuthenticatorKey {\n OKTA_PASSWORD = 'okta_password',\n OKTA_EMAIL = 'okta_email',\n PHONE_NUMBER = 'phone_number',\n GOOGLE_AUTHENTICATOR = 'google_otp',\n SECURITY_QUESTION = 'security_question',\n OKTA_VERIFY = 'okta_verify',\n WEBAUTHN = 'webauthn',\n}\n\nexport type Input = {\n name: string;\n key?: string;\n type?: string;\n label?: string;\n value?: string | {form: IdxForm} | Input[];\n minLength?: number;\n maxLength?: number;\n secret?: boolean;\n required?: boolean;\n options?: IdxOption[];\n mutable?: boolean;\n visible?: boolean;\n}\n\n\nexport interface IdxPollOptions {\n required?: boolean;\n refresh?: number;\n}\n\nexport type NextStep = {\n name: string;\n authenticator?: IdxAuthenticator;\n canSkip?: boolean;\n canResend?: boolean;\n inputs?: Input[];\n poll?: IdxPollOptions;\n authenticatorEnrollments?: IdxAuthenticator[];\n // eslint-disable-next-line no-use-before-define\n action?: (params?: IdxActionParams) => Promise;\n idp?: IdpConfig;\n href?: string;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n refresh?: number;\n}\n\nexport enum IdxFeature {\n PASSWORD_RECOVERY = 'recover-password',\n REGISTRATION = 'enroll-profile',\n SOCIAL_IDP = 'redirect-idp',\n ACCOUNT_UNLOCK = 'unlock-account',\n}\n\n\nexport interface IdxTransaction {\n status: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n requestDidSucceed?: boolean;\n stepUp?: boolean;\n \n // from idx-js, used by signin widget\n proceed: (remediationName: string, params: unknown) => Promise;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n context: IdxContext;\n}\n\n\nexport type Authenticator = {\n id?: string;\n key?: string;\n methodType?: string;\n phoneNumber?: string;\n channel?: string;\n};\n\nexport function isAuthenticator(obj: any): obj is Authenticator {\n return obj && (obj.key || obj.id);\n}\n\nexport interface RemediationResponse {\n idxResponse: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n\nexport interface EmailVerifyCallbackResponse {\n state: string;\n otp: string;\n}\n\nexport interface IdxAPI {\n // lowest level api\n interact: (options?: InteractOptions) => Promise;\n introspect: (options?: IntrospectOptions) => Promise;\n makeIdxResponse: (rawIdxResponse: RawIdxResponse, toPersist: IdxToPersist, requestDidSucceed: boolean) => IdxResponse;\n\n // flow entrypoints\n authenticate: (options?: AuthenticationOptions) => Promise;\n register: (options?: RegistrationOptions) => Promise;\n recoverPassword: (options?: PasswordRecoveryOptions) => Promise;\n unlockAccount: (options?: AccountUnlockOptions) => Promise;\n poll: (options?: IdxPollOptions) => Promise;\n\n // flow control\n start: (options?: StartOptions) => Promise;\n canProceed(options?: ProceedOptions): boolean;\n proceed: (options?: ProceedOptions) => Promise;\n cancel: (options?: CancelOptions) => Promise;\n getFlow(): FlowIdentifier | undefined;\n setFlow(flow: FlowIdentifier): void;\n\n // call `start` instead of `startTransaction`. `startTransaction` will be removed in next major version (7.0)\n startTransaction: (options?: StartOptions) => Promise;\n\n // redirect callbacks\n isInteractionRequired: (hashOrSearch?: string) => boolean;\n isInteractionRequiredError: (error: Error) => boolean; \n handleInteractionCodeRedirect: (url: string) => Promise;\n isEmailVerifyCallback: (search: string) => boolean;\n parseEmailVerifyCallback: (search: string) => EmailVerifyCallbackResponse;\n handleEmailVerifyCallback: (search: string) => Promise;\n isEmailVerifyCallbackError: (error: Error) => boolean;\n\n // transaction meta\n getSavedTransactionMeta: (options?: IdxTransactionMetaOptions) => IdxTransactionMeta | undefined;\n createTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n getTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n saveTransactionMeta: (meta: unknown) => void;\n clearTransactionMeta: () => void;\n isTransactionMetaValid: (meta: unknown) => boolean;\n}\n\nexport interface IdxTransactionManagerInterface extends TransactionManagerInterface {\n saveIdxResponse(data: SavedIdxResponse): void;\n loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null;\n clearIdxResponse(): void;\n}\n\nexport type IdxTransactionManagerConstructor = TransactionManagerConstructor;\n\nexport interface OktaAuthIdxInterface\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>\n extends OktaAuthOAuthInterface\n{\n idx: IdxAPI;\n}\n","/* eslint-disable no-use-before-define */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Input } from './api';\n\n\n// TODO: remove when idx-js provides type information\n\nexport interface ChallengeData {\n challenge: string; \n userVerification: string; \n extensions?: {\n appid: string;\n };\n}\nexport interface ActivationData {\n challenge: string;\n rp: {\n name: string;\n };\n user: {\n id: string;\n name: string;\n displayName: string;\n };\n pubKeyCredParams: {\n type: string;\n alg: number;\n }[];\n attestation?: string;\n authenticatorSelection?: {\n userVerification?: string;\n authenticatorAttachment?: string;\n requireResidentKey?: boolean;\n residentKey?: string;\n };\n excludeCredentials?: {\n id: string;\n type: string;\n }[];\n}\nexport interface IdxAuthenticatorMethod {\n type: string;\n}\nexport interface IdxAuthenticator {\n displayName: string;\n id: string;\n key: string;\n methods: IdxAuthenticatorMethod[];\n type: string;\n settings?: {\n complexity?: unknown;\n age?: unknown;\n };\n contextualData?: {\n enrolledQuestion?: {\n question: string;\n questionKey: string;\n };\n qrcode?: { \n href: string; \n method: string; \n type: string; \n };\n sharedSecret?: string;\n questions?: {\n questionKey: string;\n question: string;\n }[];\n questionKeys?: string[];\n selectedChannel?: string;\n activationData?: ActivationData;\n challengeData?: ChallengeData;\n };\n credentialId?: string;\n enrollmentId?: string;\n profile?: Record;\n resend?: Record;\n poll?: Record;\n recover?: Record;\n}\n\nexport interface IdxForm {\n value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n value: string | {form: IdxForm} | Input[];\n label: string;\n relatesTo?: IdxAuthenticator;\n}\n\nexport interface IdpConfig {\n id: string;\n name: string;\n}\n\nexport interface IdxRemediationValueForm {\n form: IdxForm;\n}\n\nexport interface IdxRemediationValue {\n name: string;\n type?: string;\n required?: boolean;\n secret?: boolean;\n visible?: boolean;\n mutable?: boolean;\n value?: string | IdxRemediationValueForm;\n label?: string;\n form?: IdxForm;\n options?: IdxOption[];\n messages?: IdxMessages;\n minLength?: number;\n maxLength?: number;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n}\n\nexport interface IdxRemediation {\n name: string;\n label?: string;\n value?: IdxRemediationValue[];\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n idp?: IdpConfig;\n href?: string;\n method?: string;\n type?: string;\n accepts?: string;\n produces?: string;\n refresh?: number;\n rel?: string[];\n action?: (payload?: IdxActionParams) => Promise;\n}\n\nexport interface IdxContext {\n version: string;\n stateHandle: string;\n expiresAt: string;\n intent: string;\n currentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n authenticators: {\n type: string;\n value: IdxAuthenticator[];\n };\n authenticatorEnrollments: {\n type: string;\n value: IdxAuthenticator[];\n };\n enrollmentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n user?: {\n type: string;\n value: Record;\n };\n app: {\n type: string;\n value: Record;\n };\n messages?: IdxMessages;\n success?: IdxRemediation;\n failure?: IdxRemediation;\n}\n\nexport interface IdxMessage {\n message: string;\n class: string;\n i18n: {\n key: string;\n params?: unknown[];\n };\n}\n\nexport interface IdxMessages {\n type: 'array';\n value: IdxMessage[];\n}\n\n// JSON response from the server\nexport interface RawIdxResponse {\n version: string;\n stateHandle: string;\n intent?: string;\n expiresAt?: string;\n remediation?: {\n type: 'array';\n value: IdxRemediation[];\n };\n messages?: IdxMessages;\n success?: boolean;\n successWithInteractionCode?: IdxRemediation;\n currentAuthenticator?: {\n type: string;\n value: IdxAuthenticator;\n };\n currentAuthenticatorEnrollment?: {\n type: string;\n value: IdxAuthenticator;\n };\n}\n\nexport function isRawIdxResponse(obj: any): obj is RawIdxResponse {\n return obj && obj.version;\n}\n\nexport interface IdxActionParams {\n [key: string]: string | boolean | number | object;\n}\n\nexport interface IdxActions {\n [key: string]: (params?: IdxActionParams) => Promise;\n}\n\nexport interface IdxToPersist {\n interactionHandle?: string;\n withCredentials?: boolean;\n}\n\nexport interface IdxActionFunction {\n (params: IdxActionParams): Promise;\n neededParams?: Array>;\n}\n\nexport interface IdxResponse {\n proceed: (remediationName: string, params: unknown) => Promise;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n toPersist: IdxToPersist;\n context?: IdxContext;\n requestDidSucceed?: boolean;\n stepUp?: boolean;\n}\n\nexport function isIdxResponse(obj: any): obj is IdxResponse {\n return obj && isRawIdxResponse(obj.rawIdxState);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n OktaAuthIdxInterface, \n AccountUnlockOptions, \n IdxTransaction,\n IdxFeature,\n} from './types';\n\nexport async function unlockAccount(\n authClient: OktaAuthIdxInterface, options: AccountUnlockOptions = {}\n): Promise {\n options.flow = 'unlockAccount';\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures } = await startTransaction(authClient, { ...options, autoRemediate: false });\n if (enabledFeatures && !enabledFeatures.includes(IdxFeature.ACCOUNT_UNLOCK)) {\n throw new AuthSdkError(\n 'Self Service Account Unlock is not supported based on your current org configuration.'\n );\n }\n }\n\n return run(authClient, { ...options });\n}\n","import { sendRequest } from './request';\nimport { \n IAPIFunction,\n ProfileTransaction,\n ProfileSchemaTransaction\n} from './types';\n\n/**\n * @scope: okta.myaccount.profile.read\n */\nexport const getProfile: IAPIFunction = async (oktaAuth, options?) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile',\n method: 'GET',\n accessToken: options?.accessToken,\n transactionClassName: 'ProfileTransaction'\n }) as ProfileTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.profile.manage\n */\nexport const updateProfile: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile',\n method: 'PUT',\n payload,\n accessToken,\n transactionClassName: 'ProfileTransaction'\n }) as ProfileTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.profile.read\n */\nexport const getProfileSchema: IAPIFunction = async (\n oktaAuth, \n options?\n): Promise => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile/schema',\n method: 'GET',\n accessToken: options?.accessToken,\n transactionClassName: 'ProfileSchemaTransaction'\n }) as ProfileSchemaTransaction;\n return transaction;\n};\n","import { sendRequest } from './request';\nimport { \n IAPIFunction, \n BaseTransaction, \n EmailTransaction, \n EmailChallengeTransaction \n} from './types';\n\n/**\n * @scope: okta.myaccount.email.read\n */\nexport const getEmails: IAPIFunction = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'GET',\n accessToken: options?.accessToken,\n transactionClassName: 'EmailTransaction'\n }) as EmailTransaction[];\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.read\n */\nexport const getEmail: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'GET',\n accessToken,\n transactionClassName: 'EmailTransaction'\n }) as EmailTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.manage\n */\nexport const addEmail: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'POST',\n payload,\n accessToken,\n transactionClassName: 'EmailTransaction'\n }) as EmailTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.manage\n */\nexport const deleteEmail: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'DELETE',\n accessToken\n }) as BaseTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.read\n */\nexport const sendEmailChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}/challenge`,\n method: 'POST',\n accessToken,\n transactionClassName: 'EmailChallengeTransaction'\n }) as EmailChallengeTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.read\n */\nexport const getEmailChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { emailId, challengeId, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n method: 'POST',\n accessToken,\n transactionClassName: 'EmailChallengeTransaction'\n }) as EmailChallengeTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.email.manage\n */\nexport const verifyEmailChallenge: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { emailId, challengeId, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n method: 'POST',\n payload,\n accessToken\n }) as BaseTransaction;\n return transaction;\n};\n","import { sendRequest } from './request';\nimport { \n IAPIFunction,\n BaseTransaction, \n PhoneTransaction\n} from './types';\n\n/**\n * @scope: okta.myaccount.phone.read\n */\nexport const getPhones: IAPIFunction = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'GET',\n accessToken: options?.accessToken,\n transactionClassName: 'PhoneTransaction'\n }) as PhoneTransaction[];\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.phone.read\n */\nexport const getPhone: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { accessToken, id } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'GET',\n accessToken,\n transactionClassName: 'PhoneTransaction'\n }) as PhoneTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.phone.manage\n */\nexport const addPhone: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'POST',\n payload,\n accessToken,\n transactionClassName: 'PhoneTransaction'\n }) as PhoneTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.phone.manage\n */\nexport const deletePhone: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'DELETE',\n accessToken,\n }) as BaseTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.phone.manage\n */\nexport const sendPhoneChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { accessToken, id, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/challenge`,\n method: 'POST',\n payload,\n accessToken\n }) as BaseTransaction;\n return transaction;\n};\n\n/**\n * @scope: okta.myaccount.phone.manage\n */\nexport const verifyPhoneChallenge: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { id, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/verify`,\n method: 'POST',\n payload,\n accessToken\n }) as BaseTransaction;\n return transaction;\n};\n","import { StorageManagerConstructor } from '../storage/types';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../base/types';\nimport {\n OAuthStorageManagerInterface,\n PKCETransactionMeta,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../oidc/types';\nimport { createOktaAuthCore } from '../core/factory';\nimport { OktaAuthCoreOptions } from '../core/types';\nimport { mixinMyAccount } from './mixin';\nimport { OktaAuthMyAccountInterface } from './types';\n\nexport function createOktaAuthMyAccount\n<\n M extends PKCETransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface\n>\n(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManager: TransactionManagerConstructor\n)\n: OktaAuthConstructor>\n{\n const Core = createOktaAuthCore(StorageManagerConstructor, OptionsConstructor, TransactionManager);\n const WithMyAccount = mixinMyAccount(Core);\n return WithMyAccount;\n}\n","import {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PKCETransactionMeta\n} from '../oidc/types';\n\nexport { \n EmailTransaction, \n EmailStatusTransaction,\n EmailChallengeTransaction,\n PhoneTransaction,\n ProfileTransaction,\n ProfileSchemaTransaction,\n BaseTransaction\n} from './transactions';\n\nexport enum EmailRole {\n PRIMARY = 'PRIMARY',\n SECONDARY = 'SECONDARY'\n}\n\nexport enum Status {\n VERIFIED = 'VERIFIED',\n UNVERIFIED = 'UNVERIFIED'\n}\n\nexport type EmailProfile = {\n email: string;\n}\n\nexport type AddEmailPayload = {\n profile: {\n email: string;\n };\n sendEmail: boolean;\n role: EmailRole;\n}\n\nexport type PhoneProfile = {\n profile: {\n phoneNumber: string;\n };\n}\n\nexport type AddPhonePayload = {\n profile: {\n phoneNumber: string;\n };\n sendCode: boolean;\n method: string;\n};\n\nexport type ChallengePhonePayload = {\n method: string;\n}\n\nexport type VerificationPayload = {\n verificationCode: string;\n};\n\nexport type UpdateProfilePayload = {\n profile: {\n firstName?: string;\n lastName?: string;\n email?: string;\n login?: string;\n [property: string]: any;\n };\n};\n\nexport type MyAccountRequestOptions = {\n id?: string;\n emailId?: string;\n challengeId?: string;\n payload?: AddEmailPayload \n | AddPhonePayload \n | ChallengePhonePayload\n | VerificationPayload \n | UpdateProfilePayload;\n accessToken?: string;\n}\n\nexport type IAPIFunction = (\n oktaAuth: OktaAuthOAuthInterface, \n options?: MyAccountRequestOptions\n) => Promise;\n\nexport interface OktaAuthMyAccountInterface\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions\n> \n extends OktaAuthOAuthInterface\n{\n myaccount;\n}\n","import { OktaAuthConstructor } from '../base/types';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PKCETransactionMeta,\n} from '../oidc/types';\nimport { OktaAuthMyAccountInterface } from './types';\n\nimport * as MyAccountMethods from './api';\n\nexport function mixinMyAccount\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthMyAccount extends Base implements OktaAuthMyAccountInterface\n {\n myaccount: any;\n \n constructor(...args: any[]) {\n super(...args);\n\n this.myaccount = Object.entries(MyAccountMethods)\n .filter(([ name ]) => name !== 'default')\n .reduce((acc, [name, fn]) => {\n acc[name] = (fn as any).bind(null, this);\n return acc;\n }, {});\n }\n };\n}\n","import { \n BaseTransaction,\n EmailTransaction,\n EmailStatusTransaction,\n EmailChallengeTransaction,\n ProfileTransaction,\n ProfileSchemaTransaction,\n PhoneTransaction\n} from './transactions';\nimport { httpRequest } from '../http';\nimport { AuthApiError, AuthSdkError } from '../errors';\nimport { MyAccountRequestOptions as RequestOptions } from './types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\n\nexport type TransactionLink = {\n href: string;\n hints?: {\n allow?: string[];\n };\n}\n\ntype TransactionLinks = {\n self: TransactionLink;\n [property: string]: TransactionLink;\n}\n\ntype SendRequestOptions = RequestOptions & {\n url: string;\n method: string;\n transactionClassName?: string;\n}\n\ntype InsufficientAuthenticationError = {\n error: string;\n // eslint-disable-next-line camelcase\n error_description: string;\n // eslint-disable-next-line camelcase\n max_age: string;\n}\n\nconst parseInsufficientAuthenticationError = (\n header: string\n): InsufficientAuthenticationError => {\n if (!header) {\n throw new AuthSdkError('Missing header string');\n }\n\n return header\n .split(',')\n .map(part => part.trim())\n .map(part => part.split('='))\n .reduce((acc, curr) => {\n // unwrap quotes from value\n acc[curr[0]] = curr[1].replace(/^\"(.*)\"$/, '$1');\n return acc;\n }, {}) as InsufficientAuthenticationError;\n};\n\n/* eslint-disable complexity */\nexport async function sendRequest (\n oktaAuth: OktaAuthOAuthInterface, \n options: SendRequestOptions\n): Promise {\n const { \n accessToken: accessTokenObj,\n idToken: idTokenObj \n } = oktaAuth.tokenManager.getTokensSync();\n \n const idToken = idTokenObj?.idToken;\n const accessToken = options.accessToken || accessTokenObj?.accessToken;\n const { issuer } = oktaAuth.options;\n const { url, method, payload } = options;\n const requestUrl = url.startsWith(issuer!) ? url : `${issuer}${url}`;\n\n if (!accessToken) {\n throw new AuthSdkError('AccessToken is required to request MyAccount API endpoints.');\n }\n \n let res;\n try {\n res = await httpRequest(oktaAuth, {\n headers: { 'Accept': '*/*;okta-version=1.0.0' },\n accessToken,\n url: requestUrl,\n method,\n ...(payload && { args: payload })\n });\n } catch (err) {\n const errorResp = (err as AuthApiError).xhr;\n if (idToken && errorResp?.status === 403 && !!errorResp?.headers?.['www-authenticate']) {\n const { \n error, \n // eslint-disable-next-line camelcase\n error_description,\n // eslint-disable-next-line camelcase\n max_age \n } = parseInsufficientAuthenticationError(errorResp?.headers?.['www-authenticate']);\n if (error === 'insufficient_authentication_context') {\n const insufficientAuthenticationError = new AuthApiError(\n { \n errorSummary: error,\n // eslint-disable-next-line camelcase\n errorCauses: [{ errorSummary: error_description }]\n }, \n errorResp, \n // eslint-disable-next-line camelcase\n { max_age: +max_age }\n );\n throw insufficientAuthenticationError;\n } else {\n throw err;\n }\n } else {\n throw err;\n }\n }\n\n const map = {\n EmailTransaction,\n EmailStatusTransaction,\n EmailChallengeTransaction,\n ProfileTransaction,\n ProfileSchemaTransaction,\n PhoneTransaction\n };\n const TransactionClass = map[options.transactionClassName!] || BaseTransaction;\n\n if (Array.isArray(res)) {\n return res.map(item => new TransactionClass(oktaAuth, { \n res: item, \n accessToken\n }));\n }\n\n return new TransactionClass(oktaAuth, { \n res, \n accessToken\n });\n}\n/* eslint-enable complexity */\n\nexport type GenerateRequestFnFromLinksOptions = {\n oktaAuth: OktaAuthOAuthInterface;\n accessToken: string;\n methodName: string;\n links: TransactionLinks;\n transactionClassName?: string;\n}\n\ntype IRequestFnFromLinks = (payload?) => Promise;\n\nexport function generateRequestFnFromLinks ({\n oktaAuth, \n accessToken,\n methodName,\n links,\n transactionClassName\n}: GenerateRequestFnFromLinksOptions): IRequestFnFromLinks {\n for (const method of ['GET', 'POST', 'PUT', 'DELETE']) {\n if (method.toLowerCase() === methodName) {\n const link = links.self;\n return (async (payload?) => sendRequest(oktaAuth, {\n accessToken,\n url: link.href,\n method,\n payload,\n transactionClassName\n }));\n }\n }\n \n const link = links[methodName];\n if (!link) {\n throw new AuthSdkError(`No link is found with methodName: ${methodName}`);\n }\n\n return (async (payload?) => sendRequest(oktaAuth, {\n accessToken,\n url: link.href,\n method: link.hints!.allow![0],\n payload,\n transactionClassName\n }));\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { TransactionLink } from '../request';\n\ntype TransactionOptions = {\n // TODO: move res type to http module\n res: {\n headers: Record;\n _links?: Record;\n [property: string]: unknown;\n };\n accessToken: string;\n};\nexport default class BaseTransaction {\n // Deprecated\n headers?: Record;\n\n constructor(oktaAuth: OktaAuthHttpInterface, options: TransactionOptions) {\n const { res } = options;\n const { headers, ...rest } = res;\n \n // assign required fields from res\n if (headers) {\n this.headers = headers;\n }\n\n // add all rest fields from res\n Object.keys(rest).forEach(key => {\n if (key === '_links') {\n return;\n }\n this[key] = rest[key];\n });\n }\n}\n","import EmailStatusTransaction from './EmailStatusTransaction';\nimport { \n EmailProfile, \n Status,\n VerificationPayload, \n} from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailChallengeTransaction extends BaseTransaction {\n id: string;\n expiresAt: string;\n profile: EmailProfile;\n status: Status;\n\n poll: () => Promise;\n // eslint-disable-next-line no-use-before-define\n verify: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { accessToken, res } = options;\n // assign required fields from res\n const { id, expiresAt, profile, status, _links } = res;\n this.id = id;\n this.expiresAt = expiresAt;\n this.profile = profile;\n this.status = status;\n\n // assign transformed fns to transaction\n this.poll = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'poll', \n links: _links,\n transactionClassName: 'EmailStatusTransaction'\n });\n return await fn() as EmailStatusTransaction;\n };\n this.verify = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links,\n });\n return await fn(payload) as EmailChallengeTransaction;\n };\n }\n}\n","import { EmailProfile, Status } from '../types';\nimport BaseTransaction from './Base';\n\nexport default class EmailStatusTransaction extends BaseTransaction {\n id: string;\n expiresAt: string;\n profile: EmailProfile;\n status: Status;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { res } = options;\n // assign required fields from res\n const { id, profile, expiresAt, status } = res;\n this.id = id;\n this.expiresAt = expiresAt;\n this.profile = profile;\n this.status = status;\n }\n}\n","import { EmailChallengeTransaction, EmailStatusTransaction } from '.';\nimport { EmailProfile, EmailRole, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailTransaction extends BaseTransaction {\n id: string;\n profile: EmailProfile;\n roles: EmailRole[];\n status: Status;\n\n // eslint-disable-next-line no-use-before-define\n get: () => Promise;\n delete: () => Promise;\n challenge: () => Promise;\n poll?: () => Promise;\n verify?: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { accessToken, res } = options;\n // assign required fields from res\n const { id, profile, roles, status, _links } = res;\n this.id = id;\n this.profile = profile;\n this.roles = roles;\n this.status = status;\n\n // assign transformed fns to transaction\n this.get = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'get', \n links: _links,\n transactionClassName: 'EmailTransaction'\n });\n return await fn() as EmailTransaction;\n };\n this.delete = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'delete', \n links: _links \n });\n return await fn() as BaseTransaction;\n };\n this.challenge = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'challenge', \n links: _links,\n transactionClassName: 'EmailChallengeTransaction'\n });\n return await fn() as EmailChallengeTransaction;\n };\n if (_links.poll) {\n this.poll = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'poll', \n links: _links,\n transactionClassName: 'EmailStatusTransaction'\n });\n return await fn() as EmailStatusTransaction;\n };\n }\n if (_links.verify) {\n this.verify = async (payload: VerificationPayload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links,\n });\n return await fn(payload) as BaseTransaction;\n };\n }\n }\n}\n","import { ChallengePhonePayload, PhoneProfile, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class PhoneTransaction extends BaseTransaction {\n id: string;\n profile: PhoneProfile;\n status: Status;\n\n // eslint-disable-next-line no-use-before-define\n get: () => Promise;\n delete: () => Promise;\n challenge: (payload: ChallengePhonePayload) => Promise;\n verify?: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { res, accessToken } = options;\n // assign required fields from res\n const { id, profile, status, _links } = res;\n this.id = id;\n this.profile = profile;\n this.status = status;\n\n // assign transformed fns to transaction\n this.get = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'get', \n links: _links,\n transactionClassName: 'PhoneTransaction'\n });\n return await fn() as PhoneTransaction;\n };\n this.delete = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'delete', \n links: _links \n });\n return await fn() as BaseTransaction;\n };\n this.challenge = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'challenge', \n links: _links \n });\n return await fn(payload) as BaseTransaction;\n };\n if (_links.verify) {\n this.verify = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links \n });\n return await fn(payload) as BaseTransaction;\n } ;\n }\n }\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileSchemaTransaction extends BaseTransaction {\n properties: Record;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n this.properties = options.res.properties;\n }\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileTransaction extends BaseTransaction {\n createdAt: string;\n modifiedAt: string;\n profile: Record;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { createdAt, modifiedAt, profile } = options.res;\n this.createdAt = createdAt;\n this.modifiedAt = modifiedAt;\n this.profile = profile;\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default class SdkClock {\n localOffset: number;\n\n constructor(localOffset) {\n // Calculated local clock offset from server time (in milliseconds). Can be positive or negative.\n this.localOffset = parseInt(localOffset || 0);\n }\n\n // factory method. Create an instance of a clock from current context.\n static create(/* sdk, options */): SdkClock {\n // TODO: calculate localOffset\n var localOffset = 0;\n return new SdkClock(localOffset);\n }\n\n // Return the current time (in seconds)\n now() {\n var now = (Date.now() + this.localOffset) / 1000;\n return now;\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n TokenManagerErrorEventHandler,\n TokenManagerSetStorageEventHandler,\n TokenManagerRenewEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback,\n EVENT_RENEWED,\n EVENT_ADDED,\n EVENT_ERROR,\n EVENT_EXPIRED,\n EVENT_REMOVED,\n EVENT_SET_STORAGE,\n TokenManagerAnyEventHandler,\n TokenManagerAnyEvent,\n OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n // TODO: remove in next major version - OKTA-473815\n autoRenew: true,\n autoRemove: true,\n syncStorage: true,\n // --- //\n clearPendingRemoveTokens: true,\n storage: undefined, // will use value from storageManager config\n expireEarlySeconds: 30,\n storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n expireTimeouts: Record;\n renewPromise: Promise | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthOAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler: TokenManagerEventHandler, context?: object): void;\n on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n if (context) {\n this.emitter.on(event, handler, context);\n } else {\n this.emitter.on(event, handler);\n }\n }\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler?: TokenManagerEventHandler): void;\n off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n if (handler) {\n this.emitter.off(event, handler);\n } else {\n this.emitter.off(event);\n }\n }\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n this.sdk = sdk;\n this.emitter = (sdk as any).emitter;\n if (!this.emitter) {\n throw new AuthSdkError('Emitter should be initialized before TokenManager');\n }\n \n options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n if (!isLocalhost()) {\n options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n }\n\n this.options = options;\n\n const storageOptions: StorageOptions = removeNils({\n storageKey: options.storageKey,\n secure: options.secure,\n });\n if (typeof options.storage === 'object') {\n // A custom storage provider must implement getItem(key) and setItem(key, val)\n storageOptions.storageProvider = options.storage;\n } else if (options.storage) {\n storageOptions.storageType = options.storage as StorageType;\n }\n\n this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n this.clock = SdkClock.create(/* sdk, options */);\n this.state = defaultState();\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n clearExpireEventTimeout(key) {\n clearTimeout(this.state.expireTimeouts[key] as any);\n delete this.state.expireTimeouts[key];\n \n // Remove the renew promise (if it exists)\n this.state.renewPromise = null;\n }\n \n clearExpireEventTimeoutAll() {\n var expireTimeouts = this.state.expireTimeouts;\n for (var key in expireTimeouts) {\n if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n continue;\n }\n this.clearExpireEventTimeout(key);\n }\n }\n \n setExpireEventTimeout(key, token) {\n if (isRefreshToken(token)) {\n return;\n }\n\n var expireTime = this.getExpireTime(token);\n var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n \n // Clear any existing timeout\n this.clearExpireEventTimeout(key);\n \n var expireEventTimeout = setTimeout(() => {\n this.emitExpired(key, token);\n }, expireEventWait);\n \n // Add a new timeout\n this.state.expireTimeouts[key] = expireEventTimeout;\n }\n \n setExpireEventTimeoutAll() {\n var tokenStorage = this.storage.getStorage();\n for(var key in tokenStorage) {\n if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n continue;\n }\n var token = tokenStorage[key];\n this.setExpireEventTimeout(key, token);\n }\n }\n \n // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n resetExpireEventTimeoutAll() {\n this.clearExpireEventTimeoutAll();\n this.setExpireEventTimeoutAll();\n }\n \n add(key, token: Token) {\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key): Token {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise {\n return this.getSync(key);\n }\n \n getTokensSync(): Tokens {\n const tokens = {} as Tokens;\n const tokenStorage = this.storage.getStorage();\n Object.keys(tokenStorage).forEach(key => {\n const token = tokenStorage[key];\n if (isAccessToken(token)) {\n tokens.accessToken = token;\n } else if (isIDToken(token)) {\n tokens.idToken = token;\n } else if (isRefreshToken(token)) { \n tokens.refreshToken = token;\n }\n });\n return tokens;\n }\n \n async getTokens(): Promise {\n return this.getTokensSync();\n }\n\n getStorageKeyByType(type: TokenType): string {\n const tokenStorage = this.storage.getStorage();\n const key = Object.keys(tokenStorage).filter(key => {\n const token = tokenStorage[key];\n return (isAccessToken(token) && type === 'accessToken') \n || (isIDToken(token) && type === 'idToken')\n || (isRefreshToken(token) && type === 'refreshToken');\n })[0];\n return key;\n }\n\n private getTokenType(token: Token): TokenType {\n if (isAccessToken(token)) {\n return 'accessToken';\n }\n if (isIDToken(token)) {\n return 'idToken';\n }\n if(isRefreshToken(token)) {\n return 'refreshToken';\n }\n throw new AuthSdkError('Unknown token type');\n }\n\n // for synchronization of LocalStorage cross tabs for IE11\n private emitSetStorageEvent() {\n if (isIE11OrLess()) {\n const storage = this.storage.getStorage();\n this.emitter.emit(EVENT_SET_STORAGE, storage);\n }\n }\n\n // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n public getStorage() {\n return this.storage;\n }\n\n setTokens(\n tokens: Tokens,\n // TODO: callbacks can be removed in the next major version OKTA-407224\n accessTokenCb?: AccessTokenCallback, \n idTokenCb?: IDTokenCallback,\n refreshTokenCb?: RefreshTokenCallback\n ): void {\n const handleTokenCallback = (key, token) => {\n const type = this.getTokenType(token);\n if (type === 'accessToken') {\n accessTokenCb && accessTokenCb(key, token);\n } else if (type === 'idToken') {\n idTokenCb && idTokenCb(key, token);\n } else if (type === 'refreshToken') {\n refreshTokenCb && refreshTokenCb(key, token);\n }\n };\n const handleAdded = (key, token) => {\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRenewed = (key, token, oldToken) => {\n this.emitRenewed(key, token, oldToken);\n this.clearExpireEventTimeout(key);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRemoved = (key, token) => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, token);\n handleTokenCallback(key, token);\n };\n \n const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n const existingTokens = this.getTokensSync();\n\n // valid tokens\n types.forEach((type) => {\n const token = tokens[type];\n if (token) {\n validateToken(token, type);\n }\n });\n \n // add token to storage\n const storage = types.reduce((storage, type) => {\n const token = tokens[type];\n if (token) {\n const storageKey = this.getStorageKeyByType(type) || type;\n storage[storageKey] = token;\n }\n return storage;\n }, {});\n this.storage.setStorage(storage);\n this.emitSetStorageEvent();\n\n // emit event and start expiration timer\n types.forEach(type => {\n const newToken = tokens[type];\n const existingToken = existingTokens[type];\n const storageKey = this.getStorageKeyByType(type) || type;\n if (newToken && existingToken) { // renew\n // call handleRemoved first, since it clears timers\n handleRemoved(storageKey, existingToken);\n handleAdded(storageKey, newToken);\n handleRenewed(storageKey, newToken, existingToken);\n } else if (newToken) { // add\n handleAdded(storageKey, newToken);\n } else if (existingToken) { //remove\n handleRemoved(storageKey, existingToken);\n }\n });\n }\n \n remove(key) {\n // Clear any listener for this token\n this.clearExpireEventTimeout(key);\n \n var tokenStorage = this.storage.getStorage();\n var removedToken = tokenStorage[key];\n delete tokenStorage[key];\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n \n this.emitRemoved(key, removedToken);\n }\n \n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n async renewToken(token) {\n return this.sdk.token?.renew(token);\n }\n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n validateToken(token: Token) {\n return validateToken(token);\n }\n\n // TODO: renew method should take no param, change in the next major version OKTA-407224\n renew(key): Promise {\n // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n if (this.state.renewPromise) {\n return this.state.renewPromise;\n }\n \n try {\n var token = this.getSync(key);\n if (!token) {\n throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n .then(tokens => {\n this.setTokens(tokens);\n\n // resolve token based on the key\n const tokenType = this.getTokenType(token);\n return tokens[tokenType];\n })\n .catch(err => {\n // If renew fails, remove token from storage and emit error\n this.remove(key);\n err.tokenKey = key;\n this.emitError(err);\n throw err;\n })\n .finally(() => {\n // Remove existing promise key\n this.state.renewPromise = null;\n });\n \n return renewPromise;\n }\n \n clear() {\n const tokens = this.getTokensSync();\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n this.emitSetStorageEvent();\n\n Object.keys(tokens).forEach(key => {\n this.emitRemoved(key, tokens[key]);\n });\n }\n\n clearPendingRemoveTokens() {\n const tokenStorage = this.storage.getStorage();\n const removedTokens = {};\n Object.keys(tokenStorage).forEach(key => {\n if (tokenStorage[key].pendingRemove) {\n removedTokens[key] = tokenStorage[key];\n delete tokenStorage[key];\n }\n });\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n Object.keys(removedTokens).forEach(key => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, removedTokens[key]);\n });\n }\n\n updateRefreshToken(token: RefreshToken) {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n // do not emit any event\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n }\n\n removeRefreshToken () {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n this.remove(key);\n }\n\n addPendingRemoveFlags() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n tokens[key].pendingRemove = true;\n });\n this.setTokens(tokens);\n }\n \n}\n","import { OAuthStorageManagerInterface, OAuthTransactionMeta, isTransactionMeta } from '../types';\n\nconst MAX_ENTRY_LIFETIME = 30 * 60 * 1000; // 30 minutes\n\nexport function pruneSharedStorage(storageManager: OAuthStorageManagerInterface) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n Object.keys(entries).forEach(state => {\n const entry = entries[state];\n const age = Date.now() - entry.dateCreated;\n if (age > MAX_ENTRY_LIFETIME) {\n delete entries[state];\n }\n });\n sharedStorage.setStorage(entries);\n}\n\nexport function saveTransactionToSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string, meta: M\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n entries[state] = {\n dateCreated: Date.now(),\n transaction: meta\n };\n sharedStorage.setStorage(entries);\n}\n\n\nexport function loadTransactionFromSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n const entry = entries[state];\n if (entry && entry.transaction && isTransactionMeta(entry.transaction)) {\n return entry.transaction;\n }\n return null;\n}\n\nexport function clearTransactionFromSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n delete entries[state];\n sharedStorage.setStorage(entries);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { StorageProvider } from '../storage/types';\nimport {\n TransactionMeta,\n isTransactionMeta,\n TransactionMetaOptions,\n TransactionManagerOptions,\n OAuthTransactionMeta,\n OAuthStorageManagerInterface,\n ClearTransactionMetaOptions,\n TransactionManagerInterface,\n PKCETransactionMeta\n} from './types';\nimport { warn } from '../util';\nimport {\n clearTransactionFromSharedStorage,\n loadTransactionFromSharedStorage,\n pruneSharedStorage,\n saveTransactionToSharedStorage\n} from './util/sharedStorage';\n\n\nexport function createTransactionManager\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface\n>\n()\n{\n return class TransactionManager implements TransactionManagerInterface\n {\n options: TransactionManagerOptions;\n storageManager: S;\n enableSharedStorage: boolean;\n saveLastResponse: boolean;\n\n constructor(options: TransactionManagerOptions) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.storageManager = options.storageManager! as S;\n this.enableSharedStorage = options.enableSharedStorage === false ? false : true;\n this.saveLastResponse = options.saveLastResponse === false ? false : true;\n this.options = options;\n }\n\n // eslint-disable-next-line complexity\n clear(options: ClearTransactionMetaOptions = {}) {\n const transactionStorage: StorageProvider = this.storageManager.getTransactionStorage();\n const meta = transactionStorage.getStorage();\n\n // Clear primary storage (by default, sessionStorage on browser)\n transactionStorage.clearStorage();\n\n // Usually we want to also clear shared storage unless another tab may need it to continue/complete a flow\n if (this.enableSharedStorage && options.clearSharedStorage !== false) {\n const state = options.state || meta?.state;\n if (state) {\n clearTransactionFromSharedStorage(this.storageManager, state);\n }\n }\n }\n\n // eslint-disable-next-line complexity\n save(meta: M, options: TransactionMetaOptions = {}) {\n // There must be only one transaction executing at a time.\n // Before saving, check to see if a transaction is already stored.\n // An existing transaction indicates a concurrency/race/overlap condition\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n const obj = storage.getStorage();\n // oie process may need to update transaction in the middle of process for tracking purpose\n // false alarm might be caused \n // TODO: revisit for a better solution, https://oktainc.atlassian.net/browse/OKTA-430919\n if (isTransactionMeta(obj) && !options.muteWarning) {\n // eslint-disable-next-line max-len\n warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n }\n\n storage.setStorage(meta);\n\n // Shared storage allows continuation of transaction in another tab\n if (this.enableSharedStorage && meta.state) {\n saveTransactionToSharedStorage(this.storageManager, meta.state, meta);\n }\n }\n\n exists(options: TransactionMetaOptions = {}): boolean {\n try {\n const meta = this.load(options);\n return !!meta;\n } catch {\n return false;\n }\n }\n\n // load transaction meta from storage\n // eslint-disable-next-line complexity,max-statements\n load(options: TransactionMetaOptions = {}): TransactionMeta | null {\n\n let meta: TransactionMeta;\n\n // If state was passed, try loading transaction data from shared storage\n if (this.enableSharedStorage && options.state) {\n pruneSharedStorage(this.storageManager); // prune before load\n meta = loadTransactionFromSharedStorage(this.storageManager, options.state);\n if (isTransactionMeta(meta)) {\n return meta;\n }\n }\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n meta = storage.getStorage();\n if (isTransactionMeta(meta)) {\n // if we have meta in the new location, there is no need to go further\n return meta;\n }\n\n return null;\n }\n\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { JWTObject } from './types';\nimport { base64UrlToString } from '../crypto';\n\nexport function decodeToken(token: string): JWTObject {\n var jwt = token.split('.');\n var decodedToken: JWTObject;\n\n try {\n decodedToken = {\n header: JSON.parse(base64UrlToString(jwt[0])),\n payload: JSON.parse(base64UrlToString(jwt[1])),\n signature: jwt[2]\n };\n } catch (e) {\n throw new AuthSdkError('Malformed token');\n }\n\n return decodedToken;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { isString, removeNils, toQueryString } from '../../util';\nimport { AuthSdkError } from '../../errors';\nimport { OAuthParams, TokenParams } from '../types';\n\nexport function convertTokenParamsToOAuthParams(tokenParams: TokenParams) {\n // Quick validation\n if (!tokenParams.clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n }\n\n if (isString(tokenParams.responseType) && tokenParams.responseType.indexOf(' ') !== -1) {\n throw new AuthSdkError('Multiple OAuth responseTypes must be defined as an array');\n }\n\n // Convert our params to their actual OAuth equivalents\n var oauthParams: OAuthParams = {\n 'client_id': tokenParams.clientId,\n 'code_challenge': tokenParams.codeChallenge,\n 'code_challenge_method': tokenParams.codeChallengeMethod,\n 'display': tokenParams.display,\n 'idp': tokenParams.idp,\n 'idp_scope': tokenParams.idpScope,\n 'login_hint': tokenParams.loginHint,\n 'max_age': tokenParams.maxAge,\n 'nonce': tokenParams.nonce,\n 'prompt': tokenParams.prompt,\n 'redirect_uri': tokenParams.redirectUri,\n 'response_mode': tokenParams.responseMode,\n 'response_type': tokenParams.responseType,\n 'sessionToken': tokenParams.sessionToken,\n 'state': tokenParams.state,\n };\n oauthParams = removeNils(oauthParams) as OAuthParams;\n\n ['idp_scope', 'response_type'].forEach(function (mayBeArray) {\n if (Array.isArray(oauthParams[mayBeArray])) {\n oauthParams[mayBeArray] = oauthParams[mayBeArray].join(' ');\n }\n });\n\n if (tokenParams.responseType!.indexOf('id_token') !== -1 &&\n tokenParams.scopes!.indexOf('openid') === -1) {\n throw new AuthSdkError('openid scope must be specified in the scopes argument when requesting an id_token');\n } else {\n oauthParams.scope = tokenParams.scopes!.join(' ');\n }\n\n return oauthParams;\n}\n\nexport function buildAuthorizeParams(tokenParams: TokenParams) {\n var oauthQueryParams = convertTokenParamsToOAuthParams(tokenParams);\n return toQueryString({ \n ...oauthQueryParams, \n ...(tokenParams.extraParams && { ...tokenParams.extraParams })\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../../errors';\nimport { CustomUrls, OAuthParams, OAuthResponse, RefreshToken, TokenParams } from '../types';\nimport { removeNils, toQueryString } from '../../util';\nimport { httpRequest, OktaAuthHttpInterface } from '../../http';\n\nfunction validateOptions(options: TokenParams) {\n // Quick validation\n if (!options.clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n }\n\n if (!options.redirectUri) {\n throw new AuthSdkError('The redirectUri passed to /authorize must also be passed to /token');\n }\n\n if (!options.authorizationCode && !options.interactionCode) {\n throw new AuthSdkError('An authorization code (returned from /authorize) must be passed to /token');\n }\n\n if (!options.codeVerifier) {\n throw new AuthSdkError('The \"codeVerifier\" (generated and saved by your app) must be passed to /token');\n }\n}\n\nfunction getPostData(sdk, options: TokenParams): string {\n // Convert Token params to OAuth params, sent to the /token endpoint\n var params: OAuthParams = removeNils({\n 'client_id': options.clientId,\n 'redirect_uri': options.redirectUri,\n 'grant_type': options.interactionCode ? 'interaction_code' : 'authorization_code',\n 'code_verifier': options.codeVerifier\n });\n\n if (options.interactionCode) {\n params['interaction_code'] = options.interactionCode;\n } else if (options.authorizationCode) {\n params.code = options.authorizationCode;\n }\n\n const { clientSecret } = sdk.options;\n if (clientSecret) {\n params['client_secret'] = clientSecret;\n }\n\n // Encode as URL string\n return toQueryString(params).slice(1);\n}\n\n// exchange authorization code for an access token\nexport function postToTokenEndpoint(sdk, options: TokenParams, urls: CustomUrls): Promise {\n validateOptions(options);\n var data = getPostData(sdk, options);\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n return httpRequest(sdk, {\n url: urls.tokenUrl,\n method: 'POST',\n args: data,\n headers\n });\n}\n\nexport function postRefreshToken(\n sdk: OktaAuthHttpInterface,\n options: TokenParams,\n refreshToken: RefreshToken\n): Promise {\n return httpRequest(sdk, {\n url: refreshToken.tokenUrl,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n\n args: Object.entries({\n client_id: options.clientId, // eslint-disable-line camelcase\n grant_type: 'refresh_token', // eslint-disable-line camelcase\n scope: refreshToken.scopes.join(' '),\n refresh_token: refreshToken.refreshToken, // eslint-disable-line camelcase\n }).map(function ([name, value]) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return name + '=' + encodeURIComponent(value!);\n }).join('&'),\n });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { get } from '../../http';\nimport { find } from '../../util';\nimport { OktaAuthOAuthInterface, WellKnownResponse } from '../types';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nexport function getWellKnown(sdk: OktaAuthOAuthInterface, issuer?: string): Promise {\n var authServerUri = (issuer || sdk.options.issuer);\n return get(sdk, authServerUri + '/.well-known/openid-configuration', {\n cacheResponse: true\n });\n}\n\nexport function getKey(sdk: OktaAuthOAuthInterface, issuer: string, kid: string): Promise {\n var httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n return getWellKnown(sdk, issuer)\n .then(function(wellKnown) {\n var jwksUri = wellKnown['jwks_uri'];\n\n // Check our kid against the cached version (if it exists and isn't expired)\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[jwksUri];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n var cachedKey = find(cachedResponse.response.keys, {\n kid: kid\n });\n\n if (cachedKey) {\n return cachedKey;\n }\n }\n\n // Remove cache for the key\n httpCache.clearStorage(jwksUri);\n\n // Pull the latest keys if the key wasn't in the cache\n return get(sdk, jwksUri, {\n cacheResponse: true\n })\n .then(function(res) {\n var key = find(res.keys, {\n kid: kid\n });\n\n if (key) {\n return key;\n }\n\n throw new AuthSdkError('The key id, ' + kid + ', was not found in the server\\'s keys');\n });\n });\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable max-len */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { CustomUrls, OAuthResponse, OAuthResponseType, OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { getOAuthUrls, getDefaultTokenParams } from './util';\nimport { clone } from '../util';\nimport { postToTokenEndpoint } from './endpoints/token';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\n// codeVerifier is required. May pass either an authorizationCode or interactionCode\nexport function exchangeCodeForTokens(sdk: OktaAuthOAuthInterface, tokenParams: TokenParams, urls?: CustomUrls): Promise {\n urls = urls || getOAuthUrls(sdk, tokenParams);\n // build params using defaults + options\n tokenParams = Object.assign({}, getDefaultTokenParams(sdk), clone(tokenParams));\n\n const {\n authorizationCode,\n interactionCode,\n codeVerifier,\n clientId,\n redirectUri,\n scopes,\n ignoreSignature,\n state\n } = tokenParams;\n\n var getTokenOptions = {\n clientId,\n redirectUri,\n authorizationCode,\n interactionCode,\n codeVerifier,\n };\n\n return postToTokenEndpoint(sdk, getTokenOptions, urls)\n .then((response: OAuthResponse) => {\n\n // `handleOAuthResponse` hanadles responses from both `/authorize` and `/token` endpoints\n // Here we modify the response from `/token` so that it more closely matches a response from `/authorize`\n // `responseType` is used to validate that the expected tokens were returned\n const responseType: OAuthResponseType[] = ['token']; // an accessToken will always be returned\n if (scopes!.indexOf('openid') !== -1) {\n responseType.push('id_token'); // an idToken will be returned if \"openid\" is in the scopes\n }\n const handleResponseOptions: TokenParams = {\n clientId,\n redirectUri,\n scopes,\n responseType,\n ignoreSignature,\n };\n return handleOAuthResponse(sdk, handleResponseOptions, response, urls!)\n .then((response: TokenResponse) => {\n // For compatibility, \"code\" is returned in the TokenResponse. OKTA-326091\n response.code = authorizationCode;\n response.state = state!;\n return response;\n });\n })\n .finally(() => {\n sdk.transactionManager.clear();\n });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { PromiseQueue } from '../../util';\nimport { decodeToken } from '../decodeToken';\nimport { exchangeCodeForTokens } from '../exchangeCodeForTokens';\nimport { getUserInfo } from '../getUserInfo';\nimport { getWithoutPrompt } from '../getWithoutPrompt';\nimport { getWithPopup } from '../getWithPopup';\nimport { getWithRedirect } from '../getWithRedirect';\nimport { parseFromUrl } from '../parseFromUrl';\nimport { renewToken } from '../renewToken';\nimport { renewTokens } from '../renewTokens';\nimport { renewTokensWithRefresh } from '../renewTokensWithRefresh';\nimport { revokeToken } from '../revokeToken';\nimport {\n AccessToken,\n CustomUserClaims,\n GetWithRedirectAPI,\n GetWithRedirectFunction,\n IDToken,\n OktaAuthOAuthInterface,\n ParseFromUrlInterface,\n TokenAPI,\n UserClaims\n} from '../types';\nimport { isLoginRedirect, prepareTokenParams } from '../util';\nimport { verifyToken } from '../verifyToken';\n\n// Factory\nexport function createTokenAPI(sdk: OktaAuthOAuthInterface, queue: PromiseQueue): TokenAPI {\n const useQueue = (method) => {\n return PromiseQueue.prototype.push.bind(queue, method, null);\n };\n\n const getWithRedirectFn = useQueue(getWithRedirect.bind(null, sdk)) as GetWithRedirectFunction;\n const getWithRedirectApi: GetWithRedirectAPI = Object.assign(getWithRedirectFn, {\n // This is exposed so we can set window.location in our tests\n _setLocation: (url) => {\n if (sdk.options.setLocation) {\n sdk.options.setLocation(url);\n } else {\n window.location = url;\n }\n }\n });\n // eslint-disable-next-line max-len\n const parseFromUrlFn = useQueue(parseFromUrl.bind(null, sdk)) as ParseFromUrlInterface;\n const parseFromUrlApi: ParseFromUrlInterface = Object.assign(parseFromUrlFn, {\n // This is exposed so we can mock getting window.history in our tests\n _getHistory: function() {\n return window.history;\n },\n\n // This is exposed so we can mock getting window.location in our tests\n _getLocation: function() {\n return window.location;\n },\n\n // This is exposed so we can mock getting window.document in our tests\n _getDocument: function() {\n return window.document;\n }\n });\n\n const token: TokenAPI ={\n prepareTokenParams: prepareTokenParams.bind(null, sdk),\n exchangeCodeForTokens: exchangeCodeForTokens.bind(null, sdk),\n getWithoutPrompt: getWithoutPrompt.bind(null, sdk),\n getWithPopup: getWithPopup.bind(null, sdk),\n getWithRedirect: getWithRedirectApi,\n parseFromUrl: parseFromUrlApi,\n decode: decodeToken,\n revoke: revokeToken.bind(null, sdk),\n renew: renewToken.bind(null, sdk),\n renewTokensWithRefresh: renewTokensWithRefresh.bind(null, sdk),\n renewTokens: renewTokens.bind(null, sdk),\n getUserInfo: (\n accessTokenObject: AccessToken,\n idTokenObject: IDToken\n ): Promise> => {\n return getUserInfo(sdk, accessTokenObject, idTokenObject);\n },\n verify: verifyToken.bind(null, sdk),\n isLoginRedirect: isLoginRedirect.bind(null, sdk)\n };\n\n // Wrap certain async token API methods using PromiseQueue to avoid issues with concurrency\n // 'getWithRedirect' and 'parseFromUrl' are already wrapped\n const toWrap = [\n 'getWithoutPrompt',\n 'getWithPopup',\n 'revoke',\n 'renew',\n 'renewTokensWithRefresh',\n 'renewTokens'\n ];\n toWrap.forEach(key => {\n token[key] = useQueue(token[key]);\n });\n\n return token;\n}\n","import { StorageManagerConstructor } from '../../storage/types';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../../base/types';\n\nimport { createOktaAuthBase } from '../../base';\nimport { mixinStorage } from '../../storage/mixin';\nimport { mixinSession } from '../../session/mixin';\nimport { mixinHttp } from '../../http/mixin';\nimport { mixinOAuth } from '../mixin';\nimport {\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n OAuthStorageManagerInterface,\n PKCETransactionMeta,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../types';\n\nexport function createOktaAuthOAuth\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface\n>\n(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManagerConstructor: TransactionManagerConstructor\n): OktaAuthConstructor>\n{\n const Base = createOktaAuthBase(OptionsConstructor);\n const WithStorage = mixinStorage(Base, StorageManagerConstructor);\n const WithHttp = mixinHttp(WithStorage);\n const WithSession = mixinSession(WithHttp);\n const WithOAuth = mixinOAuth(WithSession, TransactionManagerConstructor);\n return WithOAuth;\n}\n","\n/* global document */\n/* eslint-disable complexity, max-statements */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport {\n getOAuthUrls,\n loadFrame,\n addPostMessageListener\n} from './util';\n\nimport AuthSdkError from '../errors/AuthSdkError';\n\nimport {\n OktaAuthOAuthInterface,\n TokenParams,\n PopupParams,\n OAuthResponse,\n} from './types';\n\nimport { prepareTokenParams } from './util/prepareTokenParams';\nimport { buildAuthorizeParams } from './endpoints/authorize';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n/*\n * Retrieve an idToken from an Okta or a third party idp\n *\n * Two main flows:\n *\n * 1) Exchange a sessionToken for a token\n *\n * Required:\n * clientId: passed via the OktaAuth constructor or into getToken\n * sessionToken: 'yourtoken'\n *\n * Optional:\n * redirectUri: defaults to window.location.href\n * scopes: defaults to ['openid', 'email']\n *\n * Forced:\n * prompt: 'none'\n * responseMode: 'okta_post_message'\n * display: undefined\n *\n * 2) Get a token from an idp\n *\n * Required:\n * clientId: passed via the OktaAuth constructor or into getToken\n *\n * Optional:\n * redirectUri: defaults to window.location.href\n * scopes: defaults to ['openid', 'email']\n * idp: defaults to Okta as an idp\n * prompt: no default. Pass 'none' to throw an error if user is not signed in\n *\n * Forced:\n * display: 'popup'\n *\n * Only common optional params shown. Any OAuth parameters not explicitly forced are available to override\n *\n * @param {Object} oauthOptions\n * @param {String} [oauthOptions.clientId] ID of this client\n * @param {String} [oauthOptions.redirectUri] URI that the iframe or popup will go to once authenticated\n * @param {String[]} [oauthOptions.scopes] OAuth 2.0 scopes to request (openid must be specified)\n * @param {String} [oauthOptions.idp] ID of an external IdP to use for user authentication\n * @param {String} [oauthOptions.sessionToken] Bootstrap Session Token returned by the Okta Authentication API\n * @param {String} [oauthOptions.prompt] Determines whether the Okta login will be displayed on failure.\n * Use 'none' to prevent this behavior\n *\n * @param {Object} options\n * @param {Integer} [options.timeout] Time in ms before the flow is automatically terminated. Defaults to 120000\n * @param {String} [options.popupTitle] Title dispayed in the popup.\n * Defaults to 'External Identity Provider User Authentication'\n */\nexport function getToken(sdk: OktaAuthOAuthInterface, options: TokenParams & PopupParams) {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getToken\" takes only a single set of options'));\n }\n\n options = options || {};\n\n // window object cannot be serialized, save for later use\n // TODO: move popup related params into a separate options object\n const popupWindow = options.popupWindow;\n options.popupWindow = undefined;\n\n return prepareTokenParams(sdk, options)\n .then(function (tokenParams: TokenParams) {\n\n // Start overriding any options that don't make sense\n var sessionTokenOverrides = {\n prompt: 'none',\n responseMode: 'okta_post_message',\n display: null\n };\n\n var idpOverrides = {\n display: 'popup'\n };\n\n if (options.sessionToken) {\n Object.assign(tokenParams, sessionTokenOverrides);\n } else if (options.idp) {\n Object.assign(tokenParams, idpOverrides);\n }\n\n // Use the query params to build the authorize url\n var requestUrl,\n endpoint,\n urls;\n\n // Get authorizeUrl and issuer\n urls = getOAuthUrls(sdk, tokenParams);\n endpoint = options.codeVerifier ? urls.tokenUrl : urls.authorizeUrl;\n requestUrl = endpoint + buildAuthorizeParams(tokenParams);\n\n // Determine the flow type\n var flowType;\n if (tokenParams.sessionToken || tokenParams.display === null) {\n flowType = 'IFRAME';\n } else if (tokenParams.display === 'popup') {\n flowType = 'POPUP';\n } else {\n flowType = 'IMPLICIT';\n }\n\n // Execute the flow type\n switch (flowType) {\n case 'IFRAME':\n var iframePromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n var iframeEl = loadFrame(requestUrl);\n return iframePromise\n .then(function (res) {\n return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n })\n .finally(function () {\n if (document.body.contains(iframeEl)) {\n iframeEl.parentElement?.removeChild(iframeEl);\n }\n });\n\n case 'POPUP':\n var oauthPromise; // resolves with OAuth response\n\n // Add listener on postMessage before window creation, so\n // postMessage isn't triggered before we're listening\n if (tokenParams.responseMode === 'okta_post_message') {\n if (!sdk.features.isPopupPostMessageSupported()) {\n throw new AuthSdkError('This browser doesn\\'t have full postMessage support');\n }\n oauthPromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n }\n\n // Redirect for authorization\n // popupWindown can be null when popup is blocked\n if (popupWindow) { \n popupWindow.location.assign(requestUrl);\n }\n\n // The popup may be closed without receiving an OAuth response. Setup a poller to monitor the window.\n var popupPromise = new Promise(function (resolve, reject) {\n var closePoller = setInterval(function () {\n if (!popupWindow || popupWindow.closed) {\n clearInterval(closePoller);\n reject(new AuthSdkError('Unable to parse OAuth flow response'));\n }\n }, 100);\n\n // Proxy the OAuth promise results\n oauthPromise\n .then(function (res) {\n clearInterval(closePoller);\n resolve(res);\n })\n .catch(function (err) {\n clearInterval(closePoller);\n reject(err);\n });\n });\n\n return popupPromise\n .then(function (res) {\n return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n })\n .finally(function () {\n if (popupWindow && !popupWindow.closed) {\n popupWindow.close();\n }\n });\n\n default:\n throw new AuthSdkError('The full page redirect flow is not supported');\n }\n });\n}","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { isFunction } from '../util';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { httpRequest } from '../http';\nimport { AccessToken, IDToken, UserClaims, isAccessToken, isIDToken, CustomUserClaims } from './types';\n\nexport async function getUserInfo(\n sdk, accessTokenObject: AccessToken,\n idTokenObject: IDToken\n): Promise> {\n // If token objects were not passed, attempt to read from the TokenManager\n if (!accessTokenObject) {\n accessTokenObject = (await sdk.tokenManager.getTokens()).accessToken as AccessToken;\n }\n if (!idTokenObject) {\n idTokenObject = (await sdk.tokenManager.getTokens()).idToken as IDToken;\n }\n\n if (!accessTokenObject || !isAccessToken(accessTokenObject)) {\n return Promise.reject(new AuthSdkError('getUserInfo requires an access token object'));\n }\n\n if (!idTokenObject || !isIDToken(idTokenObject)) {\n return Promise.reject(new AuthSdkError('getUserInfo requires an ID token object'));\n }\n\n return httpRequest(sdk, {\n url: accessTokenObject.userinfoUrl,\n method: 'GET',\n accessToken: accessTokenObject.accessToken\n })\n .then(userInfo => {\n // Only return the userinfo response if subjects match to mitigate token substitution attacks\n if (userInfo.sub === idTokenObject.claims.sub) {\n return userInfo;\n }\n return Promise.reject(new AuthSdkError('getUserInfo request was rejected due to token mismatch'));\n })\n .catch(function (err) {\n if (err.xhr && (err.xhr.status === 401 || err.xhr.status === 403)) {\n var authenticateHeader;\n if (err.xhr.headers && isFunction(err.xhr.headers.get) && err.xhr.headers.get('WWW-Authenticate')) {\n authenticateHeader = err.xhr.headers.get('WWW-Authenticate');\n } else if (isFunction(err.xhr.getResponseHeader)) {\n authenticateHeader = err.xhr.getResponseHeader('WWW-Authenticate');\n }\n if (authenticateHeader) {\n var errorMatches = authenticateHeader.match(/error=\"(.*?)\"/) || [];\n var errorDescriptionMatches = authenticateHeader.match(/error_description=\"(.*?)\"/) || [];\n var error = errorMatches[1];\n var errorDescription = errorDescriptionMatches[1];\n if (error && errorDescription) {\n err = new OAuthError(error, errorDescription);\n }\n }\n }\n throw err;\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\nimport { loadPopup } from './util';\n\nexport function getWithPopup(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithPopup\" takes only a single set of options'));\n }\n\n // some browsers (safari, firefox) block popup if it's initialed from an async process\n // here we create the popup window immediately after user interaction\n // then redirect to the /authorize endpoint when the requestUrl is available\n const popupWindow = loadPopup('/', options);\n options = clone(options) || {};\n Object.assign(options, {\n display: 'popup',\n responseMode: 'okta_post_message',\n popupWindow\n });\n return getToken(sdk, options);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from './types';\nimport { clone } from '../util';\nimport { prepareTokenParams, createOAuthMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport async function getWithRedirect(sdk: OktaAuthOAuthInterface, options?: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithRedirect\" takes only a single set of options'));\n }\n\n options = clone(options) || {};\n\n const tokenParams = await prepareTokenParams(sdk, options);\n const meta = createOAuthMeta(sdk, tokenParams);\n const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(tokenParams);\n sdk.transactionManager.save(meta);\n sdk.token.getWithRedirect._setLocation(requestUrl);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\n\nexport function getWithoutPrompt(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithoutPrompt\" takes only a single set of options'));\n }\n \n options = clone(options) || {};\n Object.assign(options, {\n prompt: 'none',\n responseMode: 'okta_post_message',\n display: null\n });\n return getToken(sdk, options);\n}\n\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\n/* eslint-disable complexity, max-statements */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { clone } from '../util';\nimport {\n getOAuthUrls,\n} from './util/oauth';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport {\n OktaAuthOAuthInterface,\n TokenVerifyParams,\n IDToken,\n OAuthResponse,\n TokenParams,\n TokenResponse,\n CustomUrls,\n Tokens,\n} from './types';\nimport { verifyToken } from './verifyToken';\nimport { getDefaultTokenParams } from './util';\n\nfunction validateResponse(res: OAuthResponse, oauthParams: TokenParams) {\n if (res['error'] && res['error_description']) {\n throw new OAuthError(res['error'], res['error_description']);\n }\n\n if (res.state !== oauthParams.state) {\n throw new AuthSdkError('OAuth flow response state doesn\\'t match request state');\n }\n}\n\nexport async function handleOAuthResponse(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams,\n res: OAuthResponse,\n urls?: CustomUrls\n): Promise {\n var pkce = sdk.options.pkce !== false;\n\n // The result contains an authorization_code and PKCE is enabled \n // `exchangeCodeForTokens` will call /token then call `handleOauthResponse` recursively with the result\n if (pkce && (res.code || res.interaction_code)) {\n return sdk.token.exchangeCodeForTokens(Object.assign({}, tokenParams, {\n authorizationCode: res.code,\n interactionCode: res.interaction_code\n }), urls);\n }\n\n tokenParams = tokenParams || getDefaultTokenParams(sdk);\n urls = urls || getOAuthUrls(sdk, tokenParams);\n\n var responseType = tokenParams.responseType || [];\n if (!Array.isArray(responseType)) {\n responseType = [responseType];\n }\n\n var scopes;\n if (res.scope) {\n scopes = res.scope.split(' ');\n } else {\n scopes = clone(tokenParams.scopes);\n }\n var clientId = tokenParams.clientId || sdk.options.clientId;\n\n // Handling the result from implicit flow or PKCE token exchange\n validateResponse(res, tokenParams);\n\n var tokenDict = {} as Tokens;\n var expiresIn = res.expires_in;\n var tokenType = res.token_type;\n var accessToken = res.access_token;\n var idToken = res.id_token;\n var refreshToken = res.refresh_token;\n var now = Math.floor(Date.now()/1000);\n\n if (accessToken) {\n var accessJwt = sdk.token.decode(accessToken);\n tokenDict.accessToken = {\n accessToken: accessToken,\n claims: accessJwt.payload,\n expiresAt: Number(expiresIn) + now,\n tokenType: tokenType!,\n scopes: scopes,\n authorizeUrl: urls.authorizeUrl!,\n userinfoUrl: urls.userinfoUrl!\n };\n }\n\n if (refreshToken) {\n tokenDict.refreshToken = {\n refreshToken: refreshToken,\n // should not be used, this is the accessToken expire time\n // TODO: remove \"expiresAt\" in the next major version OKTA-407224\n expiresAt: Number(expiresIn) + now, \n scopes: scopes,\n tokenUrl: urls.tokenUrl!,\n authorizeUrl: urls.authorizeUrl!,\n issuer: urls.issuer!,\n };\n }\n\n if (idToken) {\n var idJwt = sdk.token.decode(idToken);\n var idTokenObj: IDToken = {\n idToken: idToken,\n claims: idJwt.payload,\n expiresAt: idJwt.payload.exp! - idJwt.payload.iat! + now, // adjusting expiresAt to be in local time\n scopes: scopes,\n authorizeUrl: urls.authorizeUrl!,\n issuer: urls.issuer!,\n clientId: clientId!\n };\n\n var validationParams: TokenVerifyParams = {\n clientId: clientId!,\n issuer: urls.issuer!,\n nonce: tokenParams.nonce,\n accessToken: accessToken\n };\n\n if (tokenParams.ignoreSignature !== undefined) {\n validationParams.ignoreSignature = tokenParams.ignoreSignature;\n }\n\n await verifyToken(sdk, idTokenObj, validationParams);\n tokenDict.idToken = idTokenObj;\n }\n\n // Validate received tokens against requested response types \n if (responseType.indexOf('token') !== -1 && !tokenDict.accessToken) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Unable to parse OAuth flow response: response type \"token\" was requested but \"access_token\" was not returned.');\n }\n if (responseType.indexOf('id_token') !== -1 && !tokenDict.idToken) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Unable to parse OAuth flow response: response type \"id_token\" was requested but \"id_token\" was not returned.');\n }\n\n return {\n tokens: tokenDict,\n state: res.state!,\n code: res.code\n };\n \n}","import { httpRequest, RequestOptions } from '../../http';\nimport { OktaAuthConstructor } from '../../base/types';\nimport { \n PromiseQueue,\n} from '../../util';\nimport { CryptoAPI } from '../../crypto/types';\nimport * as crypto from '../../crypto';\nimport {\n AccessToken,\n CustomUserClaims,\n IDToken,\n IsAuthenticatedOptions,\n OAuthResponseType,\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PkceAPI,\n PKCETransactionMeta,\n RefreshToken,\n SigninWithRedirectOptions,\n SignoutOptions,\n SignoutRedirectUrlOptions,\n TokenAPI,\n TransactionManagerInterface,\n TransactionManagerConstructor,\n UserClaims,\n} from '../types';\nimport PKCE from '../util/pkce';\nimport { createTokenAPI } from '../factory';\nimport { TokenManager } from '../TokenManager';\nimport { getOAuthUrls, isLoginRedirect } from '../util';\n\nimport { OktaAuthSessionInterface } from '../../session/types';\nimport { provideOriginalUri } from './node';\nexport function mixinOAuth\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(\n Base: TBase,\n TransactionManagerConstructor: TransactionManagerConstructor,\n): TBase & OktaAuthConstructor>\n{\n const WithOriginalUri = provideOriginalUri(Base);\n return class OktaAuthOAuth extends WithOriginalUri\n implements OktaAuthOAuthInterface\n {\n static crypto: CryptoAPI = crypto;\n token: TokenAPI;\n tokenManager: TokenManager;\n transactionManager: TM;\n pkce: PkceAPI;\n\n _pending: { handleLogin: boolean };\n _tokenQueue: PromiseQueue;\n \n constructor(...args: any[]) {\n super(...args);\n\n this.transactionManager = new TransactionManagerConstructor(Object.assign({\n storageManager: this.storageManager,\n }, this.options.transactionManager));\n \n this.pkce = {\n DEFAULT_CODE_CHALLENGE_METHOD: PKCE.DEFAULT_CODE_CHALLENGE_METHOD,\n generateVerifier: PKCE.generateVerifier,\n computeChallenge: PKCE.computeChallenge\n };\n \n this._pending = { handleLogin: false };\n\n this._tokenQueue = new PromiseQueue();\n\n this.token = createTokenAPI(this, this._tokenQueue);\n\n // TokenManager\n this.tokenManager = new TokenManager(this, this.options.tokenManager);\n }\n\n // inherited from subclass\n clearStorage(): void {\n super.clearStorage();\n \n // Clear all local tokens\n this.tokenManager.clear();\n }\n\n // Returns true if both accessToken and idToken are not expired\n // If `autoRenew` option is set, will attempt to renew expired tokens before returning.\n // eslint-disable-next-line complexity\n async isAuthenticated(options: IsAuthenticatedOptions = {}): Promise {\n // TODO: remove dependency on tokenManager options in next major version - OKTA-473815\n const { autoRenew, autoRemove } = this.tokenManager.getOptions();\n\n const shouldRenew = options.onExpiredToken ? options.onExpiredToken === 'renew' : autoRenew;\n const shouldRemove = options.onExpiredToken ? options.onExpiredToken === 'remove' : autoRemove;\n\n let { accessToken } = this.tokenManager.getTokensSync();\n if (accessToken && this.tokenManager.hasExpired(accessToken)) {\n accessToken = undefined;\n if (shouldRenew) {\n try {\n accessToken = await this.tokenManager.renew('accessToken') as AccessToken;\n } catch {\n // Renew errors will emit an \"error\" event \n }\n } else if (shouldRemove) {\n this.tokenManager.remove('accessToken');\n }\n }\n\n let { idToken } = this.tokenManager.getTokensSync();\n if (idToken && this.tokenManager.hasExpired(idToken)) {\n idToken = undefined;\n if (shouldRenew) {\n try {\n idToken = await this.tokenManager.renew('idToken') as IDToken;\n } catch {\n // Renew errors will emit an \"error\" event \n }\n } else if (shouldRemove) {\n this.tokenManager.remove('idToken');\n }\n }\n\n return !!(accessToken && idToken);\n }\n\n\n async signInWithRedirect(opts: SigninWithRedirectOptions = {}) {\n const { originalUri, ...additionalParams } = opts;\n if(this._pending.handleLogin) { \n // Don't trigger second round\n return;\n }\n\n this._pending.handleLogin = true;\n try {\n // Trigger default signIn redirect flow\n if (originalUri) {\n this.setOriginalUri(originalUri);\n }\n const params = Object.assign({\n // TODO: remove this line when default scopes are changed OKTA-343294\n scopes: this.options.scopes || ['openid', 'email', 'profile']\n }, additionalParams);\n await this.token.getWithRedirect(params);\n } finally {\n this._pending.handleLogin = false;\n }\n }\n\n async getUser(): Promise> {\n const { idToken, accessToken } = this.tokenManager.getTokensSync();\n return this.token.getUserInfo(accessToken, idToken);\n }\n \n getIdToken(): string | undefined {\n const { idToken } = this.tokenManager.getTokensSync();\n return idToken ? idToken.idToken : undefined;\n }\n \n getAccessToken(): string | undefined {\n const { accessToken } = this.tokenManager.getTokensSync();\n return accessToken ? accessToken.accessToken : undefined;\n }\n \n getRefreshToken(): string | undefined {\n const { refreshToken } = this.tokenManager.getTokensSync();\n return refreshToken ? refreshToken.refreshToken : undefined;\n }\n \n /**\n * Store parsed tokens from redirect url\n */\n async storeTokensFromRedirect(): Promise {\n const { tokens } = await this.token.parseFromUrl();\n this.tokenManager.setTokens(tokens);\n }\n \n isLoginRedirect(): boolean {\n return isLoginRedirect(this);\n }\n\n \n isPKCE(): boolean {\n return !!this.options.pkce;\n }\n \n hasResponseType(responseType: OAuthResponseType): boolean {\n let hasResponseType = false;\n if (Array.isArray(this.options.responseType) && this.options.responseType.length) {\n hasResponseType = this.options.responseType.indexOf(responseType) >= 0;\n } else {\n hasResponseType = this.options.responseType === responseType;\n }\n return hasResponseType;\n }\n \n isAuthorizationCodeFlow(): boolean {\n return this.hasResponseType('code');\n }\n\n // Escape hatch method to make arbitrary OKTA API call\n async invokeApiMethod(options: RequestOptions): Promise {\n if (!options.accessToken) {\n const accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n options.accessToken = accessToken?.accessToken;\n }\n return httpRequest(this, options);\n }\n \n // Revokes the access token for the application session\n async revokeAccessToken(accessToken?: AccessToken): Promise {\n if (!accessToken) {\n accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n const accessTokenKey = this.tokenManager.getStorageKeyByType('accessToken');\n this.tokenManager.remove(accessTokenKey);\n }\n // Access token may have been removed. In this case, we will silently succeed.\n if (!accessToken) {\n return Promise.resolve(null);\n }\n return this.token.revoke(accessToken);\n }\n\n // Revokes the refresh token for the application session\n async revokeRefreshToken(refreshToken?: RefreshToken): Promise {\n if (!refreshToken) {\n refreshToken = (await this.tokenManager.getTokens()).refreshToken as RefreshToken;\n const refreshTokenKey = this.tokenManager.getStorageKeyByType('refreshToken');\n this.tokenManager.remove(refreshTokenKey);\n }\n // Refresh token may have been removed. In this case, we will silently succeed.\n if (!refreshToken) {\n return Promise.resolve(null);\n }\n return this.token.revoke(refreshToken);\n }\n\n getSignOutRedirectUrl(options: SignoutRedirectUrlOptions = {}) {\n let {\n idToken,\n postLogoutRedirectUri,\n state,\n } = options;\n if (!idToken) {\n idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n }\n if (!idToken) {\n return '';\n }\n if (!postLogoutRedirectUri) {\n postLogoutRedirectUri = this.options.postLogoutRedirectUri;\n }\n\n const logoutUrl = getOAuthUrls(this).logoutUrl;\n const idTokenHint = idToken.idToken; // a string\n let logoutUri = logoutUrl + '?id_token_hint=' + encodeURIComponent(idTokenHint);\n if (postLogoutRedirectUri) {\n logoutUri += '&post_logout_redirect_uri=' + encodeURIComponent(postLogoutRedirectUri);\n } \n // State allows option parameters to be passed to logout redirect uri\n if (state) {\n logoutUri += '&state=' + encodeURIComponent(state);\n }\n\n return logoutUri;\n }\n\n // Revokes refreshToken or accessToken, clears all local tokens, then redirects to Okta to end the SSO session.\n // eslint-disable-next-line complexity\n async signOut(options?: SignoutOptions): Promise {\n options = Object.assign({}, options);\n \n // postLogoutRedirectUri must be whitelisted in Okta Admin UI\n var defaultUri = window.location.origin;\n var currentUri = window.location.href;\n var postLogoutRedirectUri = options.postLogoutRedirectUri\n || this.options.postLogoutRedirectUri\n || defaultUri;\n \n var accessToken = options.accessToken;\n var refreshToken = options.refreshToken;\n var revokeAccessToken = options.revokeAccessToken !== false;\n var revokeRefreshToken = options.revokeRefreshToken !== false;\n \n if (revokeRefreshToken && typeof refreshToken === 'undefined') {\n refreshToken = this.tokenManager.getTokensSync().refreshToken as RefreshToken;\n }\n\n if (revokeAccessToken && typeof accessToken === 'undefined') {\n accessToken = this.tokenManager.getTokensSync().accessToken as AccessToken;\n }\n \n if (!options.idToken) {\n options.idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n }\n\n if (revokeRefreshToken && refreshToken) {\n await this.revokeRefreshToken(refreshToken);\n }\n\n if (revokeAccessToken && accessToken) {\n await this.revokeAccessToken(accessToken);\n }\n\n const logoutUri = this.getSignOutRedirectUrl({ ...options, postLogoutRedirectUri });\n // No logoutUri? This can happen if the storage was cleared.\n // Fallback to XHR signOut, then simulate a redirect to the post logout uri\n if (!logoutUri) {\n // local tokens are cleared once session is closed\n return this.closeSession() // can throw if the user cannot be signed out\n .then(function() {\n if (postLogoutRedirectUri === currentUri) {\n window.location.reload(); // force a hard reload if URI is not changing\n } else {\n window.location.assign(postLogoutRedirectUri);\n }\n });\n } else {\n if (options.clearTokensBeforeRedirect) {\n // Clear all local tokens\n this.tokenManager.clear();\n } else {\n this.tokenManager.addPendingRemoveFlags();\n }\n // Flow ends with logout redirect\n window.location.assign(logoutUri);\n }\n }\n\n };\n\n}\n","import { REFERRER_PATH_STORAGE_KEY } from '../../constants';\nimport browserStorage from '../../browser/browserStorage';\nimport { OktaAuthStorageInterface } from '../../storage';\nimport { OktaAuthConstructor } from '../../base';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthOptions,\n OriginalUriApi,\n PKCETransactionMeta,\n} from '../types';\n\nexport function provideOriginalUri\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor> \n>\n(BaseClass: TBase) {\n return class WithOriginalUri extends BaseClass implements OriginalUriApi {\n setOriginalUri(originalUri: string, state?: string): void {\n // always store in session storage\n const sessionStorage = browserStorage.getSessionStorage();\n sessionStorage.setItem(REFERRER_PATH_STORAGE_KEY, originalUri);\n \n // to support multi-tab flows, set a state in constructor or pass as param\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n sharedStorage.setItem(state, originalUri);\n }\n }\n \n getOriginalUri(state?: string): string | undefined {\n // Prefer shared storage (if state is available)\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n const originalUri = sharedStorage.getItem(state);\n if (originalUri) {\n return originalUri;\n }\n }\n \n // Try to load from session storage\n const storage = browserStorage.getSessionStorage();\n return storage ? storage.getItem(REFERRER_PATH_STORAGE_KEY) || undefined : undefined;\n }\n \n removeOriginalUri(state?: string): void {\n // Remove from sessionStorage\n const storage = browserStorage.getSessionStorage();\n storage.removeItem(REFERRER_PATH_STORAGE_KEY);\n \n // Also remove from shared storage\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n sharedStorage.removeItem && sharedStorage.removeItem(state);\n }\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { DEFAULT_MAX_CLOCK_SKEW } from '../../constants';\nimport { removeTrailingSlash, toAbsoluteUrl } from '../../util/url';\nimport { isBrowser } from '../../features';\nimport { createHttpOptionsConstructor } from '../../http/options';\nimport {\n OAuthResponseMode,\n OAuthResponseType,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n SetLocationFunction,\n TokenManagerOptions,\n TransactionManagerOptions\n} from '../types';\nimport { enableSharedStorage } from './node';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nfunction assertValidConfig(args) {\n args = args || {};\n\n var scopes = args.scopes;\n if (scopes && !Array.isArray(scopes)) {\n throw new AuthSdkError('scopes must be a array of strings. ' +\n 'Required usage: new OktaAuth({scopes: [\"openid\", \"email\"]})');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var issuer = args.issuer!;\n if (!issuer) {\n throw new AuthSdkError('No issuer passed to constructor. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n var isUrlRegex = new RegExp('^http?s?://.+');\n if (!isUrlRegex.test(issuer)) {\n throw new AuthSdkError('Issuer must be a valid URL. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n if (issuer.indexOf('-admin.') !== -1) {\n throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n }\n}\n\nexport function createOAuthOptionsConstructor() {\n const HttpOptionsConstructor = createHttpOptionsConstructor();\n return class OAuthOptionsConstructor\n extends HttpOptionsConstructor\n implements Required\n {\n // CustomUrls\n issuer: string;\n authorizeUrl: string;\n userinfoUrl: string;\n tokenUrl: string;\n revokeUrl: string;\n logoutUrl: string;\n \n // TokenParams\n pkce: boolean;\n clientId: string;\n redirectUri: string;\n responseType: OAuthResponseType | OAuthResponseType[];\n responseMode: OAuthResponseMode;\n state: string;\n scopes: string[];\n ignoreSignature: boolean;\n codeChallenge: string;\n codeChallengeMethod: string;\n\n // Additional options\n tokenManager: TokenManagerOptions;\n postLogoutRedirectUri: string;\n restoreOriginalUri: (oktaAuth: OktaAuthOAuthInterface, originalUri?: string) => Promise;\n transactionManager: TransactionManagerOptions;\n\n // For server-side web applications ONLY!\n clientSecret: string;\n setLocation: SetLocationFunction;\n\n // Workaround for bad client time/clock\n ignoreLifetime: boolean;\n maxClockSkew: number;\n\n\n // eslint-disable-next-line max-statements\n constructor(options: any) {\n super(options);\n \n assertValidConfig(options);\n \n this.issuer = removeTrailingSlash(options.issuer);\n this.tokenUrl = removeTrailingSlash(options.tokenUrl);\n this.authorizeUrl = removeTrailingSlash(options.authorizeUrl);\n this.userinfoUrl = removeTrailingSlash(options.userinfoUrl);\n this.revokeUrl = removeTrailingSlash(options.revokeUrl);\n this.logoutUrl = removeTrailingSlash(options.logoutUrl);\n\n this.pkce = options.pkce === false ? false : true; // PKCE defaults to true\n this.clientId = options.clientId;\n this.redirectUri = options.redirectUri;\n if (isBrowser()) {\n this.redirectUri = toAbsoluteUrl(options.redirectUri, window.location.origin); // allow relative URIs\n }\n this.responseType = options.responseType;\n this.responseMode = options.responseMode;\n this.state = options.state;\n this.scopes = options.scopes;\n // Give the developer the ability to disable token signature validation.\n this.ignoreSignature = !!options.ignoreSignature;\n this.codeChallenge = options.codeChallenge;\n this.codeChallengeMethod = options.codeChallengeMethod;\n\n this.tokenManager = options.tokenManager;\n this.postLogoutRedirectUri = options.postLogoutRedirectUri;\n this.restoreOriginalUri = options.restoreOriginalUri;\n this.transactionManager = { enableSharedStorage, ...options.transactionManager };\n \n this.clientSecret = options.clientSecret;\n this.setLocation = options.setLocation;\n \n // As some end user's devices can have their date \n // and time incorrectly set, allow for the disabling\n // of the jwt liftetime validation\n this.ignoreLifetime = !!options.ignoreLifetime;\n\n // Digital clocks will drift over time, so the server\n // can misalign with the time reported by the browser.\n // The maxClockSkew allows relaxing the time-based\n // validation of tokens (in seconds, not milliseconds).\n // It currently defaults to 300, because 5 min is the\n // default maximum tolerance allowed by Kerberos.\n // (https://technet.microsoft.com/en-us/library/cc976357.aspx)\n if (!options.maxClockSkew && options.maxClockSkew !== 0) {\n this.maxClockSkew = DEFAULT_MAX_CLOCK_SKEW;\n } else {\n this.maxClockSkew = options.maxClockSkew;\n }\n\n }\n };\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { isInteractionRequiredError, urlParamsToObject } from './util';\nimport {\n ParseFromUrlOptions,\n TokenResponse,\n CustomUrls,\n TransactionMeta,\n OAuthResponse\n} from './types';\nimport { isString } from '../util';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\nfunction removeHash(sdk) {\n var nativeHistory = sdk.token.parseFromUrl._getHistory();\n var nativeDoc = sdk.token.parseFromUrl._getDocument();\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n if (nativeHistory && nativeHistory.replaceState) {\n nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.search);\n } else {\n nativeLoc.hash = '';\n }\n}\n\nfunction removeSearch(sdk) {\n var nativeHistory = sdk.token.parseFromUrl._getHistory();\n var nativeDoc = sdk.token.parseFromUrl._getDocument();\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n if (nativeHistory && nativeHistory.replaceState) {\n nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.hash);\n } else {\n nativeLoc.search = '';\n }\n}\n\nexport function getResponseMode(sdk): 'query' | 'fragment' {\n // https://openid.net/specs/openid-connect-core-1_0.html#Authentication\n var defaultResponseMode = sdk.options.pkce ? 'query' : 'fragment';\n var responseMode = sdk.options.responseMode || defaultResponseMode;\n return responseMode;\n}\n\nexport function parseOAuthResponseFromUrl(sdk, options: string | ParseFromUrlOptions): OAuthResponse {\n options = options || {};\n if (isString(options)) {\n options = { url: options } as ParseFromUrlOptions;\n } else {\n options = options as ParseFromUrlOptions;\n }\n\n var url = options.url;\n var responseMode = options.responseMode || getResponseMode(sdk);\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n var paramStr;\n\n if (responseMode === 'query') {\n paramStr = url ? url.substring(url.indexOf('?')) : nativeLoc.search;\n } else {\n paramStr = url ? url.substring(url.indexOf('#')) : nativeLoc.hash;\n }\n\n if (!paramStr) {\n throw new AuthSdkError('Unable to parse a token from the url');\n }\n\n return urlParamsToObject(paramStr);\n}\n\nexport function cleanOAuthResponseFromUrl(sdk, options: ParseFromUrlOptions) {\n // Clean hash or search from the url\n const responseMode = options.responseMode || getResponseMode(sdk);\n responseMode === 'query' ? removeSearch(sdk) : removeHash(sdk);\n}\n\nexport async function parseFromUrl(sdk, options?: string | ParseFromUrlOptions): Promise {\n options = options || {};\n if (isString(options)) {\n options = { url: options } as ParseFromUrlOptions;\n } else {\n options = options as ParseFromUrlOptions;\n }\n\n const res: OAuthResponse = parseOAuthResponseFromUrl(sdk, options);\n const state = res.state;\n const oauthParams: TransactionMeta = sdk.transactionManager.load({\n state\n });\n if (!oauthParams) {\n if (sdk.options.pkce) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', undefined);\n }\n throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n }\n const urls: CustomUrls = oauthParams.urls as CustomUrls;\n delete oauthParams.urls;\n\n if (!options.url) {\n // Clean hash or search from the url\n cleanOAuthResponseFromUrl(sdk, options);\n }\n\n return handleOAuthResponse(sdk, oauthParams, res, urls)\n .catch(err => {\n if (!isInteractionRequiredError(err)) {\n sdk.transactionManager.clear({\n state\n });\n }\n throw err;\n })\n .then(res => {\n sdk.transactionManager.clear({\n state\n });\n return res;\n });\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, Token, Tokens, isAccessToken, AccessToken, IDToken, isIDToken } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\n\nfunction throwInvalidTokenError() {\n throw new AuthSdkError(\n 'Renew must be passed a token with an array of scopes and an accessToken or idToken'\n );\n}\n\n// Multiple tokens may have come back. Return only the token which was requested.\nfunction getSingleToken(originalToken: Token, tokens: Tokens) {\n if (isIDToken(originalToken)) {\n return tokens.idToken;\n }\n if (isAccessToken(originalToken)) {\n return tokens.accessToken;\n }\n throwInvalidTokenError();\n}\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\nexport async function renewToken(sdk: OktaAuthOAuthInterface, token: Token): Promise {\n if (!isIDToken(token) && !isAccessToken(token)) {\n throwInvalidTokenError();\n }\n\n let tokens = sdk.tokenManager.getTokensSync();\n if (tokens.refreshToken) {\n tokens = await renewTokensWithRefresh(sdk, {\n scopes: token.scopes,\n }, tokens.refreshToken);\n return getSingleToken(token, tokens);\n }\n\n var responseType;\n if (sdk.options.pkce) {\n responseType = 'code';\n } else if (isAccessToken(token)) {\n responseType = 'token';\n } else {\n responseType = 'id_token';\n }\n\n const { scopes, authorizeUrl, userinfoUrl, issuer } = token as (AccessToken & IDToken);\n return getWithoutPrompt(sdk, {\n responseType,\n scopes,\n authorizeUrl,\n userinfoUrl,\n issuer\n })\n .then(function (res) {\n return getSingleToken(token, res.tokens);\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { TokenParams, Tokens } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\nimport { getDefaultTokenParams } from './util';\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\n// eslint-disable-next-line complexity\nexport async function renewTokens(sdk, options?: TokenParams): Promise {\n const tokens = sdk.tokenManager.getTokensSync();\n if (tokens.refreshToken) {\n return renewTokensWithRefresh(sdk, options || {}, tokens.refreshToken);\n }\n\n if (!tokens.accessToken && !tokens.idToken) {\n throw new AuthSdkError('renewTokens() was called but there is no existing token');\n }\n\n const accessToken = tokens.accessToken || {};\n const idToken = tokens.idToken || {};\n const scopes = accessToken.scopes || idToken.scopes;\n if (!scopes) {\n throw new AuthSdkError('renewTokens: invalid tokens: could not read scopes');\n }\n const authorizeUrl = accessToken.authorizeUrl || idToken.authorizeUrl;\n if (!authorizeUrl) {\n throw new AuthSdkError('renewTokens: invalid tokens: could not read authorizeUrl');\n }\n const userinfoUrl = accessToken.userinfoUrl || sdk.options.userinfoUrl;\n const issuer = idToken.issuer || sdk.options.issuer;\n\n // Get tokens using the SSO cookie\n options = Object.assign({\n scopes,\n authorizeUrl,\n userinfoUrl,\n issuer\n }, options);\n\n if (sdk.options.pkce) {\n options.responseType = 'code';\n } else {\n const { responseType } = getDefaultTokenParams(sdk);\n options.responseType = responseType;\n }\n\n return getWithoutPrompt(sdk, options)\n .then(res => res.tokens);\n \n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { AuthSdkError } from '../errors';\nimport { getOAuthUrls } from './util/oauth';\nimport { isSameRefreshToken } from './util/refreshToken';\nimport { OktaAuthOAuthInterface, TokenParams, RefreshToken, Tokens } from './types';\nimport { handleOAuthResponse } from './handleOAuthResponse';\nimport { postRefreshToken } from './endpoints/token';\nimport { isRefreshTokenInvalidError } from './util/errors';\n\nexport async function renewTokensWithRefresh(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams,\n refreshTokenObject: RefreshToken\n): Promise {\n const { clientId } = sdk.options;\n if (!clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to renew tokens');\n }\n\n try {\n const renewTokenParams: TokenParams = Object.assign({}, tokenParams, {\n clientId,\n });\n const tokenResponse = await postRefreshToken(sdk, renewTokenParams, refreshTokenObject);\n const urls = getOAuthUrls(sdk, tokenParams);\n const { tokens } = await handleOAuthResponse(sdk, renewTokenParams, tokenResponse, urls);\n\n // Support rotating refresh tokens\n const { refreshToken } = tokens;\n if (refreshToken && !isSameRefreshToken(refreshToken, refreshTokenObject)) {\n sdk.tokenManager.updateRefreshToken(refreshToken);\n }\n\n return tokens;\n }\n catch (err) {\n if (isRefreshTokenInvalidError(err)) {\n // if the refresh token is invalid, remove it from storage\n sdk.tokenManager.removeRefreshToken();\n }\n throw err;\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint complexity:[0,8] */\nimport { post } from '../http';\nimport { toQueryString } from '../util';\nimport {\n getOAuthUrls,\n} from './util/oauth';\nimport { btoa } from '../crypto';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n OktaAuthOAuthInterface,\n RevocableToken,\n AccessToken,\n RefreshToken\n} from './types';\n\n// refresh tokens have precedence to be revoked if no token is specified\nexport async function revokeToken(sdk: OktaAuthOAuthInterface, token: RevocableToken): Promise {\n let accessToken = '';\n let refreshToken = '';\n if (token) { \n accessToken = (token as AccessToken).accessToken;\n refreshToken = (token as RefreshToken).refreshToken; \n }\n if(!accessToken && !refreshToken) { \n throw new AuthSdkError('A valid access or refresh token object is required');\n }\n var clientId = sdk.options.clientId;\n var clientSecret = sdk.options.clientSecret;\n if (!clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to revoke a token');\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var revokeUrl = getOAuthUrls(sdk).revokeUrl!;\n var args = toQueryString({\n // eslint-disable-next-line camelcase\n token_type_hint: refreshToken ? 'refresh_token' : 'access_token', \n token: refreshToken || accessToken,\n }).slice(1);\n var creds = clientSecret ? btoa(`${clientId}:${clientSecret}`) : btoa(clientId);\n return post(sdk, revokeUrl, args, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Authorization': 'Basic ' + creds\n }\n });\n}\n","import {\n CookieOptions,\n StorageManagerOptions,\n StorageOptions,\n StorageUtil\n} from '../storage/types';\nimport { BaseStorageManager, logServerSideMemoryStorageWarning } from '../storage/BaseStorageManager';\nimport { TransactionStorage, OAuthTransactionMeta, OAuthStorageManagerInterface, PKCETransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { ORIGINAL_URI_STORAGE_NAME, SHARED_TRANSACTION_STORAGE_NAME, TRANSACTION_STORAGE_NAME } from '../constants';\n\n\nexport function createOAuthStorageManager()\n{\n return class OAuthStorageManager\n extends BaseStorageManager\n implements OAuthStorageManagerInterface\n {\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n super(storageManagerOptions, cookieOptions, storageUtil);\n }\n\n getTransactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getSharedTansactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('shared-transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getOriginalUriStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('original-uri', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n };\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { UserClaims } from './UserClaims';\n\nexport interface AbstractToken {\n expiresAt: number;\n authorizeUrl: string;\n scopes: string[];\n pendingRemove?: boolean;\n}\n\nexport interface AccessToken extends AbstractToken {\n accessToken: string;\n claims: UserClaims;\n tokenType: string;\n userinfoUrl: string;\n}\n\nexport interface RefreshToken extends AbstractToken {\n refreshToken: string;\n tokenUrl: string;\n issuer: string;\n}\n\nexport interface IDToken extends AbstractToken {\n idToken: string;\n claims: UserClaims;\n issuer: string;\n clientId: string;\n}\n\nexport type Token = AccessToken | IDToken | RefreshToken;\nexport type RevocableToken = AccessToken | RefreshToken;\n\nexport type TokenType = 'accessToken' | 'idToken' | 'refreshToken';\n\nexport function isToken(obj: any): obj is Token {\n if (obj &&\n (obj.accessToken || obj.idToken || obj.refreshToken) &&\n Array.isArray(obj.scopes)) {\n return true;\n }\n return false;\n}\n\nexport function isAccessToken(obj: any): obj is AccessToken {\n return obj && obj.accessToken;\n}\n\nexport function isIDToken(obj: any): obj is IDToken {\n return obj && obj.idToken;\n}\n\nexport function isRefreshToken(obj: any): obj is RefreshToken {\n return obj && obj.refreshToken;\n}\n\nexport interface Tokens {\n accessToken?: AccessToken;\n idToken?: IDToken;\n refreshToken?: RefreshToken;\n}\n","/* eslint-disable max-len */\nimport { StorageProvider } from '../../storage/types';\nimport { TokenManagerOptions } from './options';\nimport { AccessToken, IDToken, RefreshToken, Token, Tokens, TokenType } from './Token';\n\nexport interface TokenManagerError {\n errorSummary: string;\n errorCode: string;\n message: string;\n name: string;\n tokenKey: string;\n}\n\nexport declare type AccessTokenCallback = (key: string, token: AccessToken) => void;\nexport declare type IDTokenCallback = (key: string, token: IDToken) => void;\nexport declare type RefreshTokenCallback = (key: string, token: RefreshToken) => void;\n\nexport const EVENT_EXPIRED = 'expired';\nexport const EVENT_RENEWED = 'renewed';\nexport const EVENT_ADDED = 'added';\nexport const EVENT_REMOVED = 'removed';\nexport const EVENT_ERROR = 'error';\nexport const EVENT_SET_STORAGE = 'set_storage';\n\nexport declare type TokenManagerErrorEventHandler = (error: TokenManagerError) => void;\nexport declare type TokenManagerEventHandler = (key: string, token: Token) => void;\nexport declare type TokenManagerRenewEventHandler = (key: string, token: Token, oldtoken: Token) => void;\nexport declare type TokenManagerSetStorageEventHandler = (storage: Tokens) => void;\n\nexport declare type TokenManagerAnyEventHandler = TokenManagerErrorEventHandler | TokenManagerRenewEventHandler | TokenManagerSetStorageEventHandler | TokenManagerEventHandler;\nexport declare type TokenManagerAnyEvent = typeof EVENT_RENEWED | typeof EVENT_ERROR | typeof EVENT_SET_STORAGE | typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED;\n\n// only add methods needed internally\nexport interface TokenManagerInterface {\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, handler: TokenManagerEventHandler, context?: object): void;\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, handler?: TokenManagerEventHandler): void;\n\n clear(): void;\n setExpireEventTimeout(key: string, token: Token): void;\n clearExpireEventTimeout(key: string): void;\n clearExpireEventTimeoutAll(): void;\n emitAdded(key: string, token: Token): void;\n emitError(error: Error): void;\n emitRemoved(key: string, token: Token): void;\n emitRenewed(key: string, token: Token, oldToken?: Token): void;\n renew(key: string): Promise;\n remove(key: string): void;\n hasExpired(token: Token): boolean;\n getExpireTime(token: Token): number;\n\n get(key): Promise;\n getSync(key): Token;\n getTokens(): Promise;\n getTokensSync(): Tokens;\n setTokens({ accessToken, idToken, refreshToken }: Tokens, accessTokenCb?: AccessTokenCallback, idTokenCb?: IDTokenCallback, refreshTokenCb?: RefreshTokenCallback): void;\n getStorageKeyByType(type: TokenType): string;\n add(key: any, token: Token): void;\n updateRefreshToken(token: RefreshToken);\n removeRefreshToken(): void;\n clearPendingRemoveTokens(): void;\n\n getOptions(): TokenManagerOptions;\n getStorage(): StorageProvider;\n\n start();\n stop();\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxTransactionMeta } from '../../idx/types/meta';\nimport { OAuthTransactionMeta, PKCETransactionMeta } from './meta';\nimport { OAuthStorageManagerInterface } from './storage';\n\nexport interface TransactionManagerOptions\n{\n storageManager?: OAuthStorageManagerInterface;\n enableSharedStorage?: boolean; // default true\n saveNonceCookie?: boolean; // default true\n saveStateCookie?: boolean; // default true\n saveParamsCookie?: boolean; // default true\n saveLastResponse?: boolean; // default true\n}\n\n\nexport type CustomAuthTransactionMeta = Record;\n\nexport type TransactionMeta =\n IdxTransactionMeta |\n PKCETransactionMeta |\n OAuthTransactionMeta |\n CustomAuthTransactionMeta;\n\n\nfunction isObjectWithProperties(obj) {\n if (!obj || typeof obj !== 'object' || Object.values(obj).length === 0) {\n return false;\n }\n return true;\n}\n\nexport function isOAuthTransactionMeta(obj: any): obj is OAuthTransactionMeta {\n if (!isObjectWithProperties(obj)) {\n return false;\n }\n return !!obj.redirectUri || !!obj.responseType;\n}\n\nexport function isPKCETransactionMeta(obj: any): obj is PKCETransactionMeta {\n if (!isOAuthTransactionMeta(obj)) {\n return false;\n }\n return !!(obj as any).codeVerifier;\n}\n\nexport function isIdxTransactionMeta(obj: any): obj is IdxTransactionMeta {\n if (!isPKCETransactionMeta(obj)) {\n return false;\n }\n return !!(obj as any).interactionHandle;\n}\n\nexport function isCustomAuthTransactionMeta(obj: any): obj is CustomAuthTransactionMeta {\n if (!isObjectWithProperties(obj)) {\n return false;\n }\n const isAllStringValues = Object.values(obj).find((value) => (typeof value !== 'string')) === undefined;\n return isAllStringValues;\n}\n\nexport function isTransactionMeta(obj: any): obj is TransactionMeta {\n if (isOAuthTransactionMeta(obj) || isCustomAuthTransactionMeta(obj)) {\n return true;\n }\n return false;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window, document */\n/* eslint-disable complexity, max-statements */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface } from '../types';\n\nexport function addListener(eventTarget, name, fn) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(name, fn);\n } else {\n eventTarget.attachEvent('on' + name, fn);\n }\n}\n\nexport function removeListener(eventTarget, name, fn) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(name, fn);\n } else {\n eventTarget.detachEvent('on' + name, fn);\n }\n}\n\nexport function loadFrame(src) {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = src;\n\n return document.body.appendChild(iframe);\n}\n\nexport function loadPopup(src, options) {\n var title = options.popupTitle || 'External Identity Provider User Authentication';\n var appearance = 'toolbar=no, scrollbars=yes, resizable=yes, ' +\n 'top=100, left=500, width=600, height=600';\n return window.open(src, title, appearance);\n}\n\nexport function addPostMessageListener(sdk: OktaAuthOAuthInterface, timeout, state) {\n var responseHandler;\n var timeoutId;\n var msgReceivedOrTimeout = new Promise(function (resolve, reject) {\n\n responseHandler = function responseHandler(e) {\n if (!e.data || e.data.state !== state) {\n // A message not meant for us\n return;\n }\n\n // Configuration mismatch between saved token and current app instance\n // This may happen if apps with different issuers are running on the same host url\n // If they share the same storage key, they may read and write tokens in the same location.\n // Common when developing against http://localhost\n if (e.origin !== sdk.getIssuerOrigin()) {\n return reject(new AuthSdkError('The request does not match client configuration'));\n }\n resolve(e.data);\n };\n\n addListener(window, 'message', responseHandler);\n\n timeoutId = setTimeout(function () {\n reject(new AuthSdkError('OAuth flow timed out'));\n }, timeout || 120000);\n });\n\n return msgReceivedOrTimeout\n .finally(function () {\n clearTimeout(timeoutId);\n removeListener(window, 'message', responseHandler);\n });\n}\n","\n/* global window */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { generateNonce, generateState } from './oauth';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultTokenParams(sdk: OktaAuthOAuthInterface): TokenParams {\n const {\n pkce,\n clientId,\n redirectUri,\n responseType,\n responseMode,\n scopes,\n state,\n ignoreSignature\n } = sdk.options;\n const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n return removeNils({\n pkce,\n clientId,\n redirectUri: redirectUri || defaultRedirectUri,\n responseType: responseType || ['token', 'id_token'],\n responseMode,\n state: state || generateState(),\n nonce: generateNonce(),\n scopes: scopes || ['openid', 'email'],\n ignoreSignature\n });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { OktaAuthOAuthInterface } from '../types';\nimport { OAuthError, AuthApiError, isOAuthError } from '../../errors';\n\nexport function isInteractionRequiredError(error: Error) {\n if (error.name !== 'OAuthError') {\n return false;\n }\n const oauthError = error as OAuthError;\n return (oauthError.errorCode === 'interaction_required');\n}\n\nexport function isAuthorizationCodeError(sdk: OktaAuthOAuthInterface, error: Error) {\n if (error.name !== 'AuthApiError') {\n return false;\n }\n const authApiError = error as AuthApiError;\n // xhr property doesn't seem to match XMLHttpRequest type\n const errorResponse = authApiError.xhr as unknown as Record;\n const responseJSON = errorResponse?.responseJSON as Record;\n return sdk.options.pkce && (responseJSON?.error as string === 'invalid_grant');\n}\n\nexport function isRefreshTokenInvalidError(error: unknown): boolean {\n // error: {\"error\":\"invalid_grant\",\"error_description\":\"The refresh token is invalid or expired.\"}\n return isOAuthError(error) &&\n error.errorCode === 'invalid_grant' &&\n error.errorSummary === 'The refresh token is invalid or expired.';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window */\n/* eslint-disable complexity, max-statements */\nimport { OktaAuthOAuthOptions, OktaAuthOAuthInterface } from '../types';\n\nexport function hasTokensInHash(hash: string): boolean {\n return /((id|access)_token=)/i.test(hash);\n}\n\n// authorization_code\nexport function hasAuthorizationCode(hashOrSearch: string): boolean {\n return /(code=)/i.test(hashOrSearch);\n}\n\n// interaction_code\nexport function hasInteractionCode(hashOrSearch: string): boolean {\n return /(interaction_code=)/i.test(hashOrSearch);\n}\n\nexport function hasErrorInUrl(hashOrSearch: string): boolean {\n return /(error=)/i.test(hashOrSearch) || /(error_description)/i.test(hashOrSearch);\n}\n\nexport function isRedirectUri(uri: string, sdk: OktaAuthOAuthInterface): boolean {\n var authParams = sdk.options;\n if (!uri || !authParams.redirectUri) {\n return false;\n }\n return uri.indexOf(authParams.redirectUri) === 0;\n}\n\nexport function isCodeFlow(options: OktaAuthOAuthOptions) {\n return options.pkce || options.responseType === 'code' || options.responseMode === 'query';\n}\n\nexport function getHashOrSearch(options: OktaAuthOAuthOptions) {\n var codeFlow = isCodeFlow(options);\n var useQuery = codeFlow && options.responseMode !== 'fragment';\n return useQuery ? window.location.search : window.location.hash;\n}\n\n/**\n * Check if tokens or a code have been passed back into the url, which happens in\n * the OIDC (including social auth IDP) redirect flow.\n */\nexport function isLoginRedirect (sdk: OktaAuthOAuthInterface) {\n // First check, is this a redirect URI?\n if (!isRedirectUri(window.location.href, sdk)){\n return false;\n }\n\n // The location contains either a code, token, or an error + error_description\n var codeFlow = isCodeFlow(sdk.options);\n var hashOrSearch = getHashOrSearch(sdk.options);\n\n if (hasErrorInUrl(hashOrSearch)) {\n return true;\n }\n\n if (codeFlow) {\n var hasCode = hasAuthorizationCode(hashOrSearch) || hasInteractionCode(hashOrSearch);\n return hasCode;\n }\n\n // implicit flow, will always be hash fragment\n return hasTokensInHash(window.location.hash);\n}\n\n/**\n * Check if error=interaction_required has been passed back in the url, which happens in\n * the social auth IDP redirect flow.\n */\nexport function isInteractionRequired (sdk: OktaAuthOAuthInterface, hashOrSearch?: string) {\n if (!hashOrSearch) { // web only\n // First check, is this a redirect URI?\n if (!isLoginRedirect(sdk)){\n return false;\n }\n \n hashOrSearch = getHashOrSearch(sdk.options);\n }\n return /(error=interaction_required)/i.test(hashOrSearch);\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\nimport { genRandomString, removeTrailingSlash } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, CustomUrls } from '../types';\n\nexport function generateState() {\n return genRandomString(64);\n}\n\nexport function generateNonce() {\n return genRandomString(64);\n}\n\nfunction getIssuer(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = removeTrailingSlash(options.issuer) || sdk.options.issuer;\n return issuer;\n}\n\nexport function getOAuthBaseUrl(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = getIssuer(sdk, options);\n const baseUrl = issuer.indexOf('/oauth2') > 0 ? issuer : issuer + '/oauth2';\n return baseUrl;\n}\n\nexport function getOAuthDomain(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = getIssuer(sdk, options);\n const domain = issuer.split('/oauth2')[0];\n return domain;\n}\n\nexport function getOAuthUrls(sdk: OktaAuthOAuthInterface, options?: CustomUrls): CustomUrls {\n if (arguments.length > 2) {\n throw new AuthSdkError('As of version 3.0, \"getOAuthUrls\" takes only a single set of options');\n }\n options = options || {};\n\n // Get user-supplied arguments\n var authorizeUrl = removeTrailingSlash(options.authorizeUrl) || sdk.options.authorizeUrl;\n var issuer = getIssuer(sdk, options);\n var userinfoUrl = removeTrailingSlash(options.userinfoUrl) || sdk.options.userinfoUrl;\n var tokenUrl = removeTrailingSlash(options.tokenUrl) || sdk.options.tokenUrl;\n var logoutUrl = removeTrailingSlash(options.logoutUrl) || sdk.options.logoutUrl;\n var revokeUrl = removeTrailingSlash(options.revokeUrl) || sdk.options.revokeUrl;\n\n var baseUrl = getOAuthBaseUrl(sdk, options);\n\n authorizeUrl = authorizeUrl || baseUrl + '/v1/authorize';\n userinfoUrl = userinfoUrl || baseUrl + '/v1/userinfo';\n tokenUrl = tokenUrl || baseUrl + '/v1/token';\n revokeUrl = revokeUrl || baseUrl + '/v1/revoke';\n logoutUrl = logoutUrl || baseUrl + '/v1/logout';\n\n return {\n issuer: issuer,\n authorizeUrl: authorizeUrl,\n userinfoUrl: userinfoUrl,\n tokenUrl: tokenUrl,\n revokeUrl: revokeUrl,\n logoutUrl: logoutUrl\n };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthOAuthInterface, PKCETransactionMeta, TokenParams } from '../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createOAuthMeta(\n sdk: OktaAuthOAuthInterface, \n tokenParams: TokenParams\n): OAuthTransactionMeta | PKCETransactionMeta {\n const issuer = sdk.options.issuer!;\n const urls = getOAuthUrls(sdk, tokenParams);\n const oauthMeta: OAuthTransactionMeta = {\n issuer,\n urls,\n clientId: tokenParams.clientId!,\n redirectUri: tokenParams.redirectUri!,\n responseType: tokenParams.responseType!,\n responseMode: tokenParams.responseMode!,\n scopes: tokenParams.scopes!,\n state: tokenParams.state!,\n nonce: tokenParams.nonce!,\n ignoreSignature: tokenParams.ignoreSignature!,\n };\n\n if (tokenParams.pkce === false) {\n // Implicit flow or authorization_code without PKCE\n return oauthMeta;\n }\n\n const pkceMeta: PKCETransactionMeta = {\n ...oauthMeta,\n codeVerifier: tokenParams.codeVerifier!,\n codeChallengeMethod: tokenParams.codeChallengeMethod!,\n codeChallenge: tokenParams.codeChallenge!,\n };\n\n return pkceMeta;\n}\n","/*!\n * Copyright (c) 2019-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n /* eslint-disable complexity, max-statements */\nimport { stringToBase64Url, webcrypto } from '../../crypto';\nimport { MIN_VERIFIER_LENGTH, MAX_VERIFIER_LENGTH, DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\n\nfunction dec2hex (dec) {\n return ('0' + dec.toString(16)).substr(-2);\n}\n\nfunction getRandomString(length) {\n var a = new Uint8Array(Math.ceil(length / 2));\n webcrypto.getRandomValues(a);\n var str = Array.from(a, dec2hex).join('');\n return str.slice(0, length);\n}\n\nfunction generateVerifier(prefix?: string): string {\n var verifier = prefix || '';\n if (verifier.length < MIN_VERIFIER_LENGTH) {\n verifier = verifier + getRandomString(MIN_VERIFIER_LENGTH - verifier.length);\n }\n return encodeURIComponent(verifier).slice(0, MAX_VERIFIER_LENGTH);\n}\n\nfunction computeChallenge(str: string): PromiseLike { \n var buffer = new TextEncoder().encode(str);\n return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n var hash = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer) as unknown as number[]);\n var b64u = stringToBase64Url(hash); // url-safe base64 variant\n return b64u;\n });\n}\n\nexport default {\n DEFAULT_CODE_CHALLENGE_METHOD,\n generateVerifier,\n computeChallenge\n};\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { getWellKnown } from '../endpoints/well-known';\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { getDefaultTokenParams } from './defaultTokenParams';\nimport { DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\nimport PKCE from './pkce';\nimport { OktaAuthBaseInterface } from '../../base/types';\n\nexport function assertPKCESupport(sdk: OktaAuthBaseInterface) {\n if (!sdk.features.isPKCESupported()) {\n var errorMessage = 'PKCE requires a modern browser with encryption support running in a secure context.';\n if (!sdk.features.isHTTPS()) {\n // eslint-disable-next-line max-len\n errorMessage += '\\nThe current page is not being served with HTTPS protocol. PKCE requires secure HTTPS protocol.';\n }\n if (!sdk.features.hasTextEncoder()) {\n // eslint-disable-next-line max-len\n errorMessage += '\\n\"TextEncoder\" is not defined. To use PKCE, you may need to include a polyfill/shim for this browser.';\n }\n throw new AuthSdkError(errorMessage);\n }\n}\n\nexport async function validateCodeChallengeMethod(sdk: OktaAuthOAuthInterface, codeChallengeMethod?: string) {\n // set default code challenge method, if none provided\n codeChallengeMethod = codeChallengeMethod || sdk.options.codeChallengeMethod || DEFAULT_CODE_CHALLENGE_METHOD;\n\n // validate against .well-known/openid-configuration\n const wellKnownResponse = await getWellKnown(sdk);\n var methods = wellKnownResponse['code_challenge_methods_supported'] || [];\n if (methods.indexOf(codeChallengeMethod) === -1) {\n throw new AuthSdkError('Invalid code_challenge_method');\n }\n return codeChallengeMethod;\n}\n\nexport async function preparePKCE(\n sdk: OktaAuthOAuthInterface, \n tokenParams: TokenParams\n): Promise {\n let {\n codeVerifier,\n codeChallenge,\n codeChallengeMethod\n } = tokenParams;\n\n // PKCE calculations can be avoided by passing a codeChallenge\n codeChallenge = codeChallenge || sdk.options.codeChallenge;\n if (!codeChallenge) {\n assertPKCESupport(sdk);\n codeVerifier = codeVerifier || PKCE.generateVerifier();\n codeChallenge = await PKCE.computeChallenge(codeVerifier);\n }\n codeChallengeMethod = await validateCodeChallengeMethod(sdk, codeChallengeMethod);\n\n // Clone/copy the params. Set PKCE values\n tokenParams = {\n ...tokenParams,\n responseType: 'code', // responseType is forced\n codeVerifier,\n codeChallenge,\n codeChallengeMethod\n };\n\n return tokenParams;\n}\n\n// Prepares params for a call to /authorize or /token\nexport async function prepareTokenParams(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams = {}\n): Promise {\n // build params using defaults + options\n const defaults = getDefaultTokenParams(sdk);\n tokenParams = { ...defaults, ...tokenParams };\n\n if (tokenParams.pkce === false) {\n // Implicit flow or authorization_code without PKCE\n return tokenParams;\n }\n\n return preparePKCE(sdk, tokenParams);\n}","import { RefreshToken } from '../types';\nimport { isAuthApiError } from '../../errors';\n\nexport function isSameRefreshToken(a: RefreshToken, b: RefreshToken) {\n return (a.refreshToken === b.refreshToken);\n}\n\nexport function isRefreshTokenError(err: Error) {\n if (!isAuthApiError(err)) {\n return false;\n }\n\n if (!err.xhr || !err.xhr.responseJSON) {\n return false;\n }\n\n const { responseJSON } = err.xhr;\n if (responseJSON.error === 'invalid_grant') {\n return true;\n }\n\n return false;\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\n\nexport function urlParamsToObject(hashOrSearch: string) {\n // Predefine regexs for parsing hash\n var plus2space = /\\+/g;\n var paramSplit = /([^&=]+)=?([^&]*)/g;\n var fragment = hashOrSearch || '';\n\n // Some hash based routers will automatically add a / character after the hash\n if (fragment.charAt(0) === '#' && fragment.charAt(1) === '/') {\n fragment = fragment.substring(2);\n }\n\n // Remove the leading # or ?\n if (fragment.charAt(0) === '#' || fragment.charAt(0) === '?') {\n fragment = fragment.substring(1);\n }\n\n\n var obj = {};\n\n // Loop until we have no more params\n var param;\n while (true) { // eslint-disable-line no-constant-condition\n param = paramSplit.exec(fragment);\n if (!param) { break; }\n\n var key = param[1];\n var value = param[2];\n\n // id_token should remain base64url encoded\n if (key === 'id_token' || key === 'access_token' || key === 'code') {\n obj[key] = value;\n } else {\n obj[key] = decodeURIComponent(value.replace(plus2space, ' '));\n }\n }\n return obj;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* eslint-disable complexity, max-statements */\n\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, TokenVerifyParams, UserClaims } from '../../oidc/types';\n\nexport function validateClaims(sdk: OktaAuthOAuthInterface, claims: UserClaims, validationParams: TokenVerifyParams) {\n var aud = validationParams.clientId;\n var iss = validationParams.issuer;\n var nonce = validationParams.nonce;\n\n if (!claims || !iss || !aud) {\n throw new AuthSdkError('The jwt, iss, and aud arguments are all required');\n }\n\n if (nonce && claims.nonce !== nonce) {\n throw new AuthSdkError('OAuth flow response nonce doesn\\'t match request nonce');\n }\n\n var now = Math.floor(Date.now()/1000);\n\n if (claims.iss !== iss) {\n throw new AuthSdkError('The issuer [' + claims.iss + '] ' +\n 'does not match [' + iss + ']');\n }\n\n if (claims.aud !== aud) {\n throw new AuthSdkError('The audience [' + claims.aud + '] ' +\n 'does not match [' + aud + ']');\n }\n\n if (claims.iat! > claims.exp!) {\n throw new AuthSdkError('The JWT expired before it was issued');\n }\n\n if (!sdk.options.ignoreLifetime) {\n if ((now - sdk.options.maxClockSkew!) > claims.exp!) {\n throw new AuthSdkError('The JWT expired and is no longer valid');\n }\n\n if (claims.iat! > (now + sdk.options.maxClockSkew!)) {\n throw new AuthSdkError('The JWT was issued in the future');\n }\n }\n}\n","/* eslint-disable complexity */\n\nimport { AuthSdkError } from '../../errors';\nimport { isAccessToken, isIDToken, isRefreshToken, Token, TokenType } from '../../oidc/types';\n\nexport function validateToken(token: Token, type?: TokenType) {\n if (!isIDToken(token) && !isAccessToken(token) && !isRefreshToken(token)) {\n throw new AuthSdkError(\n 'Token must be an Object with scopes, expiresAt, and one of: an idToken, accessToken, or refreshToken property'\n );\n }\n \n if (type === 'accessToken' && !isAccessToken(token)) {\n throw new AuthSdkError('invalid accessToken');\n } \n if (type === 'idToken' && !isIDToken(token)) {\n throw new AuthSdkError('invalid idToken');\n }\n\n if (type === 'refreshToken' && !isRefreshToken(token)) {\n throw new AuthSdkError('invalid refreshToken');\n }\n}","/* eslint-disable max-len */\n/* eslint-disable complexity */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\nimport { getWellKnown, getKey } from './endpoints/well-known';\nimport { validateClaims } from './util';\nimport { AuthSdkError } from '../errors';\nimport { IDToken, OktaAuthOAuthInterface, TokenVerifyParams } from '../oidc/types';\nimport { decodeToken } from './decodeToken';\nimport * as sdkCrypto from '../crypto';\n\n// Verify the id token\nexport async function verifyToken(sdk: OktaAuthOAuthInterface, token: IDToken, validationParams: TokenVerifyParams): Promise {\n if (!token || !token.idToken) {\n throw new AuthSdkError('Only idTokens may be verified');\n }\n\n // Decode the Jwt object (may throw)\n var jwt = decodeToken(token.idToken);\n\n // The configured issuer may point to a frontend proxy.\n // Get the \"real\" issuer from .well-known/openid-configuration\n const configuredIssuer = validationParams?.issuer || sdk.options.issuer;\n const { issuer } = await getWellKnown(sdk, configuredIssuer);\n\n var validationOptions: TokenVerifyParams = Object.assign({\n // base options, can be overridden by params\n clientId: sdk.options.clientId,\n ignoreSignature: sdk.options.ignoreSignature\n }, validationParams, {\n // final options, cannot be overridden\n issuer\n });\n\n // Standard claim validation (may throw)\n validateClaims(sdk, jwt.payload, validationOptions);\n\n // If the browser doesn't support native crypto or we choose not\n // to verify the signature, bail early\n if (validationOptions.ignoreSignature == true || !sdk.features.isTokenVerifySupported()) {\n return token;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const key = await getKey(sdk, token.issuer, jwt.header.kid!);\n const valid = await sdkCrypto.verifyToken(token.idToken, key);\n if (!valid) {\n throw new AuthSdkError('The token signature is not valid');\n }\n if (validationParams && validationParams.accessToken && token.claims.at_hash) {\n const hash = await sdkCrypto.getOidcHash(validationParams.accessToken);\n if (hash !== token.claims.at_hash) {\n throw new AuthSdkError('Token hash verification failed');\n }\n }\n return token;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n/* global window */\nimport { omit, getLink, toQueryString } from '../util';\nimport { get, post, httpRequest } from '../http';\n\nfunction sessionExists(sdk) {\n return sdk.session.get()\n .then(function(res) {\n if (res.status === 'ACTIVE') {\n return true;\n }\n return false;\n })\n .catch(function() {\n return false;\n });\n}\n\nfunction getSession(sdk) { \n return get(sdk, '/api/v1/sessions/me', { withCredentials: true })\n .then(function(session) {\n var res = omit(session, '_links');\n\n res.refresh = function() {\n return post(sdk, getLink(session, 'refresh').href, {}, { withCredentials: true });\n };\n\n res.user = function() {\n return get(sdk, getLink(session, 'user').href, { withCredentials: true });\n };\n\n return res;\n })\n .catch(function() {\n // Return INACTIVE status on failure\n return {status: 'INACTIVE'};\n });\n}\n\nfunction closeSession(sdk) {\n return httpRequest(sdk, {\n url: sdk.getIssuerOrigin() + '/api/v1/sessions/me',\n method: 'DELETE',\n withCredentials: true\n });\n}\n\nfunction refreshSession(sdk) {\n return post(sdk, '/api/v1/sessions/me/lifecycle/refresh', {}, { withCredentials: true });\n}\n\nfunction setCookieAndRedirect(sdk, sessionToken, redirectUrl) {\n redirectUrl = redirectUrl || window.location.href;\n window.location.assign(sdk.getIssuerOrigin() + '/login/sessionCookieRedirect' +\n toQueryString({\n checkAccountSetupComplete: true,\n token: sessionToken,\n redirectUrl: redirectUrl\n }));\n}\n\nexport {\n sessionExists,\n getSession,\n closeSession,\n refreshSession,\n setCookieAndRedirect\n};\n","import { SessionAPI } from './types';\nimport { closeSession, getSession, refreshSession, sessionExists, setCookieAndRedirect } from './api';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function createSessionApi(sdk: OktaAuthBaseInterface): SessionAPI {\n const session = {\n close: closeSession.bind(null, sdk),\n exists: sessionExists.bind(null, sdk),\n get: getSession.bind(null, sdk),\n refresh: refreshSession.bind(null, sdk),\n setCookieAndRedirect: setCookieAndRedirect.bind(null, sdk)\n };\n return session;\n}\n","import { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport { createSessionApi } from './factory';\nimport {\n OktaAuthSessionInterface, SessionAPI,\n} from './types';\nimport { StorageManagerInterface } from '../storage/types';\n\nexport function mixinSession\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthSession extends Base implements OktaAuthSessionInterface\n {\n session: SessionAPI;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.session = createSessionApi(this);\n }\n\n // Ends the current Okta SSO session without redirecting to Okta.\n closeSession(): Promise {\n return this.session.close() // DELETE /api/v1/sessions/me\n .then(async () => {\n // Clear all local tokens\n this.clearStorage();\n })\n .catch(function(e) {\n if (e.name === 'AuthApiError' && e.errorCode === 'E0000007') {\n // Session does not exist or has already been closed\n return null;\n }\n throw e;\n });\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n\nimport {\n TOKEN_STORAGE_NAME,\n CACHE_STORAGE_NAME,\n} from '../constants';\nimport {\n StorageUtil,\n StorageProvider,\n StorageOptions,\n CookieOptions,\n StorageManagerOptions,\n SimpleStorage,\n StorageManagerInterface\n} from './types';\nimport { SavedObject } from './SavedObject';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\n\nexport function logServerSideMemoryStorageWarning(options: StorageOptions) {\n if (!isBrowser() && !options.storageProvider && !options.storageProvider) {\n // eslint-disable-next-line max-len\n warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n }\n}\n\n\nexport class BaseStorageManager implements StorageManagerInterface {\n storageManagerOptions: StorageManagerOptions;\n cookieOptions: CookieOptions;\n storageUtil: StorageUtil;\n\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n this.storageManagerOptions = storageManagerOptions;\n this.cookieOptions = cookieOptions;\n this.storageUtil = storageUtil;\n }\n\n // combines defaults in order\n getOptionsForSection(sectionName: string, overrideOptions?: StorageOptions) {\n return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n }\n \n // generic method to get any available storage provider\n // eslint-disable-next-line complexity\n getStorage(options: StorageOptions): SimpleStorage {\n options = Object.assign({}, this.cookieOptions, options); // set defaults\n\n if (options.storageProvider) {\n return options.storageProvider;\n }\n\n let { storageType, storageTypes } = options;\n\n if(storageType === 'sessionStorage') {\n options.sessionCookie = true;\n }\n\n // If both storageType and storageTypes are specified, then storageType will be used first\n // If storageType cannot be used but it matches an entry in storageTypes, subsequent entries may be used as fallback\n // if storageType does not match an entry in storageTypes then storageType is used with no fallback.\n if (storageType && storageTypes) {\n const idx = storageTypes.indexOf(storageType);\n if (idx >= 0) {\n storageTypes = storageTypes.slice(idx);\n storageType = undefined;\n }\n }\n\n if (!storageType) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storageType = this.storageUtil.findStorageType(storageTypes!);\n }\n return this.storageUtil.getStorageByType(storageType, options);\n }\n\n // access_token, id_token, refresh_token\n getTokenStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('token', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // caches well-known response, among others\n getHttpCache(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('cache', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { StorageProvider, SimpleStorage } from './types';\n\n// formerly known as \"storageBuilder\". Represents an object saved under a key/name.\nexport class SavedObject implements StorageProvider {\n storageProvider: SimpleStorage;\n storageName: string;\n\n constructor(storage: SimpleStorage, storageName: string) {\n if (!storage) {\n throw new AuthSdkError('\"storage\" is required');\n }\n\n if (typeof storageName !== 'string' || !storageName.length) {\n throw new AuthSdkError('\"storageName\" is required');\n }\n\n this.storageName = storageName;\n this.storageProvider = storage;\n }\n\n //\n // SimpleStorage interface\n //\n\n getItem(key: string) {\n return this.getStorage()[key];\n }\n\n setItem(key: string, value: any) {\n return this.updateStorage(key, value);\n }\n\n removeItem(key: string) {\n return this.clearStorage(key);\n }\n\n //\n // StorageProvider interface\n //\n\n getStorage() {\n var storageString = this.storageProvider.getItem(this.storageName);\n storageString = storageString || '{}';\n try {\n return JSON.parse(storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to parse storage string: ' + this.storageName);\n }\n }\n\n setStorage(obj?: any) {\n try {\n var storageString = obj ? JSON.stringify(obj) : '{}';\n this.storageProvider.setItem(this.storageName, storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to set storage: ' + this.storageName);\n }\n }\n\n clearStorage(key?: string) {\n if (!key) {\n // clear all\n if (this.storageProvider.removeItem) {\n this.storageProvider.removeItem(this.storageName);\n } else {\n this.setStorage();\n }\n return;\n }\n\n var obj = this.getStorage();\n delete obj[key];\n this.setStorage(obj);\n }\n\n updateStorage(key, value) {\n var obj = this.getStorage();\n obj[key] = value;\n this.setStorage(obj);\n }\n}\n","import { OktaAuthBaseInterface, OktaAuthConstructor } from '../base/types';\nimport {\n OktaAuthStorageInterface,\n OktaAuthStorageOptions,\n StorageManagerConstructor,\n StorageManagerInterface,\n} from './types';\n\nexport function mixinStorage\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthStorageOptions = OktaAuthStorageOptions,\n TBase extends OktaAuthConstructor> = OktaAuthConstructor>\n>\n(\n Base: TBase, StorageManager: StorageManagerConstructor\n): TBase & OktaAuthConstructor>\n{\n return class OktaAuthStorage extends Base implements OktaAuthStorageInterface\n {\n storageManager: S;\n constructor(...args: any[]) {\n super(...args);\n const { storageManager, cookies, storageUtil } = this.options;\n this.storageManager = new StorageManager(storageManager!, cookies!, storageUtil!);\n }\n clearStorage(): void {\n // override in subclass\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable complexity */\nimport { StorageManagerOptions, StorageUtil, OktaAuthStorageOptions } from '../types';\nimport { warn } from '../../util';\n\nimport { default as browserStorage } from '../../browser/browserStorage';\n\nexport function getStorage(): StorageUtil {\n const storageUtil = Object.assign({}, browserStorage, {\n inMemoryStore: {} // create unique storage for this instance\n });\n return storageUtil;\n}\n\nexport const STORAGE_MANAGER_OPTIONS: StorageManagerOptions = {\n token: {\n storageTypes: [\n 'localStorage',\n 'sessionStorage',\n 'cookie'\n ]\n },\n cache: {\n storageTypes: [\n 'localStorage',\n 'sessionStorage',\n 'cookie'\n ]\n },\n transaction: {\n storageTypes: [\n 'sessionStorage',\n 'localStorage',\n 'cookie'\n ]\n },\n 'shared-transaction': {\n storageTypes: [\n 'localStorage'\n ]\n },\n 'original-uri': {\n storageTypes: [\n 'localStorage'\n ]\n }\n};\n\nexport function getCookieSettings(args: OktaAuthStorageOptions = {}, isHTTPS: boolean) {\n // Secure cookies will be automatically used on a HTTPS connection\n // Non-secure cookies will be automatically used on a HTTP connection\n // secure option can override the automatic behavior\n var cookieSettings = args.cookies || {};\n if (typeof cookieSettings.secure === 'undefined') {\n cookieSettings.secure = isHTTPS;\n }\n if (typeof cookieSettings.sameSite === 'undefined') {\n cookieSettings.sameSite = cookieSettings.secure ? 'none' : 'lax';\n }\n\n // If secure=true, but the connection is not HTTPS, set secure=false.\n if (cookieSettings.secure && !isHTTPS) {\n // eslint-disable-next-line no-console\n warn(\n 'The current page is not being served with the HTTPS protocol.\\n' +\n 'For security reasons, we strongly recommend using HTTPS.\\n' +\n 'If you cannot use HTTPS, set \"cookies.secure\" option to false.'\n );\n cookieSettings.secure = false;\n }\n\n // Chrome >= 80 will block cookies with SameSite=None unless they are also Secure\n // If sameSite=none, but the connection is not HTTPS, set sameSite=lax.\n if (cookieSettings.sameSite === 'none' && !cookieSettings.secure) {\n cookieSettings.sameSite = 'lax';\n }\n\n return cookieSettings;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { createBaseOptionsConstructor } from '../../base';\nimport { CookieOptions, OktaAuthStorageOptions, StorageManagerOptions, StorageUtil } from '../types';\nimport { getStorage, STORAGE_MANAGER_OPTIONS, getCookieSettings } from './node';\nimport { isHTTPS } from '../../features';\n\nexport function createStorageOptionsConstructor() {\n\n const BaseOptionsConstructor = createBaseOptionsConstructor();\n return class StorageOptionsConstructor extends BaseOptionsConstructor implements Required {\n cookies: CookieOptions;\n storageUtil: StorageUtil;\n storageManager: StorageManagerOptions;\n \n constructor(args: any) {\n super(args);\n this.cookies = getCookieSettings(args, isHTTPS())!;\n this.storageUtil = args.storageUtil || getStorage();\n this.storageManager = { ...STORAGE_MANAGER_OPTIONS, ...args.storageManager };\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// Implements a queue for synchronous or asynchronous methods\n// Methods will be wrapped in a promise and execute sequentially\n// This can be used to prevent concurrent calls to a single method or a set of methods\n\nimport { isPromise } from './types';\nimport { warn } from './console';\n\ninterface QueueItem {\n method: () => void;\n thisObject: object;\n args: any[];\n resolve: (value?: unknown) => void;\n reject: (reason?: unknown) => void;\n}\n\ninterface PromiseQueueOptions {\n quiet?: boolean; // if false, concurrrency warnings will not be logged\n}\nexport class PromiseQueue {\n queue: QueueItem[];\n running: boolean;\n options: PromiseQueueOptions;\n\n constructor(options: PromiseQueueOptions = { quiet: false }) {\n this.queue = [];\n this.running = false;\n this.options = options;\n }\n\n // Returns a promise\n // If the method is synchronous, it will resolve when the method completes\n // If the method returns a promise, it will resolve (or reject) with the value from the method's promise\n push(method: (...args: any) => any, thisObject: any, ...args: any[]) {\n return new Promise((resolve, reject) => {\n if (this.queue.length > 0) {\n // There is at least one other pending call.\n // The PromiseQueue will prevent these methods from running concurrently.\n if (this.options.quiet !== false) {\n warn(\n 'Async method is being called but another async method is already running. ' +\n 'The new method will be delayed until the previous method completes.'\n );\n }\n }\n this.queue.push({\n method,\n thisObject,\n args,\n resolve,\n reject\n });\n this.run();\n });\n }\n\n run() {\n if (this.running) {\n return;\n }\n if (this.queue.length === 0) {\n return;\n }\n this.running = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var queueItem = this.queue.shift()!;\n var res = queueItem.method.apply(queueItem.thisObject, queueItem.args as never) as unknown;\n if (isPromise(res)) {\n (res as Promise).then(queueItem.resolve, queueItem.reject).finally(() => {\n this.running = false;\n this.run();\n });\n } else {\n queueItem.resolve(res);\n this.running = false;\n this.run();\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* global window */\n\nexport function getNativeConsole() {\n if (typeof window !== 'undefined') {\n return window.console;\n } else if (typeof console !== 'undefined') {\n return console;\n } else {\n return undefined;\n }\n}\n\nexport function getConsole() {\n var nativeConsole = getNativeConsole();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (nativeConsole && nativeConsole.log) {\n return nativeConsole;\n }\n return {\n log: function() {},\n warn: function() {},\n group: function() {},\n groupEnd: function() {}\n };\n}\n\nexport function warn(text) {\n /* eslint-disable no-console */\n getConsole().warn('[okta-auth-sdk] WARN: ' + text);\n /* eslint-enable */\n}\n\nexport function deprecate(text) {\n /* eslint-disable no-console */\n getConsole().warn('[okta-auth-sdk] DEPRECATION: ' + text);\n /* eslint-enable */\n}\n\nexport function deprecateWrap(text, fn) {\n return function() {\n deprecate(text);\n return fn.apply(null, arguments);\n };\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isoToUTCString(str) {\n var parts = str.match(/\\d+/g),\n isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]),\n isoDate = new Date(isoTime);\n\n return isoDate.toUTCString();\n}\n\nexport function genRandomString(length) {\n var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n var random = '';\n for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n random += randomCharset[Math.floor(Math.random() * cl)];\n }\n return random;\n}\n\nexport function delay(ms) {\n return new Promise(function(resolve) {\n setTimeout(resolve, ms);\n });\n}\n\nexport function split2(str, delim) {\n const parts = str.split(delim);\n return [\n parts[0], \n parts.splice(1, parts.length).join(delim),\n ];\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function bind(fn, ctx) {\n var additionalArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n var args = Array.prototype.slice.call(arguments);\n args = additionalArgs.concat(args);\n return fn.apply(ctx, args);\n };\n}\n\n// TODO: replace all references with `Object.assign` then remove this function\nexport function extend() {\n // First object will be modified!\n var obj1 = arguments[0];\n // Properties from other objects will be copied over\n var objArray = [].slice.call(arguments, 1);\n objArray.forEach(function(obj) {\n for (var prop in obj) {\n // copy over all properties with defined values\n if (Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined) {\n obj1[prop] = obj[prop];\n }\n }\n });\n return obj1; // return the modified object\n}\n\nexport function removeNils(obj) {\n var cleaned = {};\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n var value = obj[prop];\n if (value !== null && value !== undefined) {\n cleaned[prop] = value;\n }\n }\n }\n return cleaned;\n}\n\nexport function clone(obj) {\n if (obj) {\n var str = JSON.stringify(obj);\n if (str) {\n return JSON.parse(str);\n }\n }\n return obj;\n}\n\n// Analogous to _.omit\nexport function omit(obj, ...props: any[]) {\n // var props = Array.prototype.slice.call(arguments, 1);\n var newobj = {};\n for (var p in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, p) && props.indexOf(p) == -1) {\n newobj[p] = obj[p];\n }\n }\n return clone(newobj);\n}\n\nexport function find(collection, searchParams) {\n var c = collection.length;\n while (c--) {\n var item = collection[c];\n var found = true;\n for (var prop in searchParams) {\n if (!Object.prototype.hasOwnProperty.call(searchParams, prop)) {\n continue;\n }\n if (item[prop] !== searchParams[prop]) {\n found = false;\n break;\n }\n }\n if (found) {\n return item;\n }\n }\n}\n\nexport function getLink(obj, linkName, altName?) {\n if (!obj || !obj._links) {\n return;\n }\n\n var link = clone(obj._links[linkName]);\n\n // If a link has a name and we have an altName, return if they match\n if (link && link.name && altName) {\n if (link.name === altName) {\n return link;\n }\n } else {\n return link;\n }\n}\n\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isString(obj: any): obj is string {\n return Object.prototype.toString.call(obj) === '[object String]';\n}\n\nexport function isObject(obj: any): obj is object {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isNumber(obj: any): obj is number {\n return Object.prototype.toString.call(obj) === '[object Number]';\n}\n\nexport function isFunction(fn: any): fn is (...any: any[]) => any {\n return !!fn && {}.toString.call(fn) === '[object Function]';\n}\n\nexport function isPromise(obj) {\n return obj && obj.finally && (typeof obj.finally === 'function');\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport function isAbsoluteUrl(url) {\n return /^[a-z][a-z0-9+.-]*:/i.test(url);\n}\n\nexport function toAbsoluteUrl(url = '', baseUrl) {\n if (isAbsoluteUrl(url)) {\n return url;\n }\n baseUrl = removeTrailingSlash(baseUrl);\n return url[0] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n}\n\nexport function toRelativeUrl(url = '', baseUrl) {\n if (isAbsoluteUrl(url)) {\n url = url.substring(baseUrl.length);\n }\n\n return url[0] === '/' ? url : `/${url}`;\n}\n\nexport function toQueryString(obj) {\n var str = [];\n if (obj !== null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n obj[key] !== undefined &&\n obj[key] !== null) {\n str.push(key + '=' + encodeURIComponent(obj[key]) as never);\n }\n }\n }\n if (str.length) {\n return '?' + str.join('&');\n } else {\n return '';\n }\n}\n\nexport function removeTrailingSlash(path) {\n if (!path) {\n return;\n }\n // Remove any whitespace before or after string\n var trimmed = path.replace(/^\\s+|\\s+$/gm,'');\n // Remove trailing slash(es)\n trimmed = trimmed.replace(/\\/+$/, '');\n\n return trimmed;\n}\n","'use strict';\n\nclass CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nclass PCancelable {\n\tstatic fn(userFn) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFn(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n\nmodule.exports = PCancelable;\nmodule.exports.CancelError = CancelError;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","module.exports = false;\n\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default 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}","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\nexport default 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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default 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}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default 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}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\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 if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default 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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\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}","export default 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}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n 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}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _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 }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n OktaAuthOptionsConstructor,\n} from '../base';\n\nimport {\n IdxStorageManagerConstructor,\n IdxTransactionManagerConstructor,\n OktaAuthIdxOptions,\n createIdxTransactionManager,\n createOktaAuthIdx,\n createIdxStorageManager,\n createIdxOptionsConstructor\n} from '../idx';\n\nimport { mixinMyAccount } from '../myaccount';\nimport { mixinAuthn } from '../authn';\n\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OktaAuthOptions extends OktaAuthIdxOptions {}\n\nconst OptionsConstructor: OktaAuthOptionsConstructor = createIdxOptionsConstructor();\nconst StorageManager: IdxStorageManagerConstructor = createIdxStorageManager();\nconst TransactionManager: IdxTransactionManagerConstructor = createIdxTransactionManager();\n\n// Default bundle includes everything\nconst WithIdx = createOktaAuthIdx(StorageManager, OptionsConstructor, TransactionManager);\nconst WithMyAccount = mixinMyAccount(WithIdx);\nconst WithAuthn = mixinAuthn(WithMyAccount);\n\nclass OktaAuth extends WithAuthn {\n constructor(options: OktaAuthOptions) {\n super(options);\n }\n}\n\nexport default OktaAuth;\nexport { OktaAuth };\nexport * from './common';\nexport * from '../idx';\nexport * from '../myaccount';\nexport * from '../authn';\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['module', 'select'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('select'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.select);\n global.clipboardAction = mod.exports;\n }\n})(this, function (module, _select) {\n 'use strict';\n\n var _select2 = _interopRequireDefault(_select);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\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 var _createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n },\n get: function get() {\n return this._action;\n }\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n },\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n\n module.exports = ClipboardAction;\n});","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\n global.clipboard = mod.exports;\n }\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\n 'use strict';\n\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\n var _goodListener2 = _interopRequireDefault(_goodListener);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\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 var _createClass = function () {\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 return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\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, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n }, {\n key: 'defaultText',\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n }(_tinyEmitter2.default);\n\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n function getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n\n module.exports = Clipboard;\n});","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","var parent = require('../../stable/array/find-index');\n\nmodule.exports = parent;\n","var parent = require('../../stable/array/find');\n\nmodule.exports = parent;\n","var parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../stable/array/includes');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/entries');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/from-entries');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/set-prototype-of');\n\nmodule.exports = parent;\n","var parent = require('../../stable/object/values');\n\nmodule.exports = parent;\n","var parent = require('../../stable/string/ends-with');\n\nmodule.exports = parent;\n","var parent = require('../../stable/string/includes');\n\nmodule.exports = parent;\n","var parent = require('../../stable/string/starts-with');\n\nmodule.exports = parent;\n","var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.array.find-index');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'findIndex');\n","require('../../modules/es.array.find');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'find');\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","require('../../modules/es.array.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('Array', 'includes');\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.from-entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.fromEntries;\n","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","require('../../modules/es.string.ends-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'endsWith');\n","require('../../modules/es.string.includes');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'includes');\n","require('../../modules/es.string.starts-with');\nvar entryUnbind = require('../../internals/entry-unbind');\n\nmodule.exports = entryUnbind('String', 'startsWith');\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.typed-array.from');\nrequire('../../modules/es.typed-array.of');\nrequire('../../modules/es.typed-array.at');\nrequire('../../modules/es.typed-array.copy-within');\nrequire('../../modules/es.typed-array.every');\nrequire('../../modules/es.typed-array.fill');\nrequire('../../modules/es.typed-array.filter');\nrequire('../../modules/es.typed-array.find');\nrequire('../../modules/es.typed-array.find-index');\nrequire('../../modules/es.typed-array.find-last');\nrequire('../../modules/es.typed-array.find-last-index');\nrequire('../../modules/es.typed-array.for-each');\nrequire('../../modules/es.typed-array.includes');\nrequire('../../modules/es.typed-array.index-of');\nrequire('../../modules/es.typed-array.join');\nrequire('../../modules/es.typed-array.last-index-of');\nrequire('../../modules/es.typed-array.map');\nrequire('../../modules/es.typed-array.reduce');\nrequire('../../modules/es.typed-array.reduce-right');\nrequire('../../modules/es.typed-array.reverse');\nrequire('../../modules/es.typed-array.set');\nrequire('../../modules/es.typed-array.slice');\nrequire('../../modules/es.typed-array.some');\nrequire('../../modules/es.typed-array.sort');\nrequire('../../modules/es.typed-array.subarray');\nrequire('../../modules/es.typed-array.to-locale-string');\nrequire('../../modules/es.typed-array.to-string');\nrequire('../../modules/es.typed-array.iterator');\n","require('../../modules/es.array-buffer.constructor');\nrequire('../../modules/es.array-buffer.slice');\nrequire('../../modules/es.typed-array.uint8-array');\nrequire('./methods');\nvar global = require('../../internals/global');\n\nmodule.exports = global.Uint8Array;\n","module.exports = require('../../full/array/find-index');\n","module.exports = require('../../full/array/find');\n","module.exports = require('../../full/array/from');\n","module.exports = require('../../full/array/includes');\n","module.exports = require('../../full/object/assign');\n","module.exports = require('../../full/object/entries');\n","module.exports = require('../../full/object/from-entries');\n","module.exports = require('../../full/object/iterate-entries');\n","module.exports = require('../../full/object/iterate-keys');\n","module.exports = require('../../full/object/iterate-values');\n","module.exports = require('../../full/object/keys');\n","module.exports = require('../../full/object/set-prototype-of');\n","module.exports = require('../../full/object/values');\n","module.exports = require('../../full/string/ends-with');\n","module.exports = require('../../full/string/includes');\n","module.exports = require('../../full/string/starts-with');\n","module.exports = require('../../full/symbol/iterator');\n","var parent = require('../../actual/array/find-index');\n\nmodule.exports = parent;\n","var parent = require('../../actual/array/find');\n\nmodule.exports = parent;\n","var parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../actual/array/includes');\n\nmodule.exports = parent;\n","var parent = require('../../actual/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../actual/object/entries');\n\nmodule.exports = parent;\n","var parent = require('../../actual/object/from-entries');\n\nmodule.exports = parent;\n","require('../../modules/esnext.object.iterate-entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.iterateEntries;\n","require('../../modules/esnext.object.iterate-keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.iterateKeys;\n","require('../../modules/esnext.object.iterate-values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.iterateValues;\n","var parent = require('../../actual/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../actual/object/set-prototype-of');\n\nmodule.exports = parent;\n","var parent = require('../../actual/object/values');\n\nmodule.exports = parent;\n","var parent = require('../../actual/string/ends-with');\n\nmodule.exports = parent;\n","var parent = require('../../actual/string/includes');\n\nmodule.exports = parent;\n","var parent = require('../../actual/string/starts-with');\n\nmodule.exports = parent;\n","var parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n","var 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 $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var 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 $TypeError('Incorrect invocation');\n};\n","var 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 $TypeError($String(argument) + ' is not an object');\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\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 defineProperty = require('../internals/object-define-property').f;\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 = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.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(global.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 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 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 = global[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 = global[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 = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[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 = global[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 TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[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 (global[NAME]) setPrototypeOf(global[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 defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[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 global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE == 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var index = lengthOfArrayLike(self);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var 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","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var 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","var 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","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n","/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\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","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this-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","var 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","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var 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","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\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","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar 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","var 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 $TypeError(tryToString(argument) + ' is not iterable');\n};\n","var 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","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var 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","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// 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","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","var 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","var 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","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* 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 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 TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var classof = require('../internals/classof');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar slice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return slice(classof(it), 0, 3) === 'Big';\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\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","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var 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","var 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', condition);\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 $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","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'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","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n 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 = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var 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 $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/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","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var 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","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar InternalStateModule = require('../internals/internal-state');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar hasOwn = require('../internals/has-own-property');\nvar objectKeys = require('../internals/object-keys');\nvar toObject = require('../internals/to-object');\n\nvar OBJECT_ITERATOR = 'Object Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(OBJECT_ITERATOR);\n\nmodule.exports = createIteratorConstructor(function ObjectIterator(source, mode) {\n var object = toObject(source);\n setInternalState(this, {\n type: OBJECT_ITERATOR,\n mode: mode,\n object: object,\n keys: objectKeys(object),\n index: 0\n });\n}, 'Object', function next() {\n var state = getInternalState(this);\n var keys = state.keys;\n while (true) {\n if (keys === null || state.index >= keys.length) {\n state.object = state.keys = null;\n return createIterResultObject(undefined, true);\n }\n var key = keys[state.index++];\n var object = state.object;\n if (!hasOwn(object, key)) continue;\n switch (state.mode) {\n case 'keys': return createIterResultObject(key, false);\n case 'values': return createIterResultObject(object[key], false);\n } /* entries */ return createIterResultObject([key, object[key]], false);\n }\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var 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 $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var 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 $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.26.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\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/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n} catch (error) { /* empty */ }\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 listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.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 = listener;\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 global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var 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","var 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 $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","var 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 $RangeError('Wrong length or index');\n return length;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var 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","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var 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 $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $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 $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","/* 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","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\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 copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf($Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice && end === undefined) {\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\n } return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n if (kind == 'keys') return createIterResultObject(index, false);\n if (kind == 'values') return createIterResultObject(target[index], false);\n return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return nativeEndsWith\n ? nativeEndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return nativeStartsWith\n ? nativeStartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","var defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n && TypedArrayPrototype.values\n && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = new (aTypedArrayConstructor(this))(length);\n while (length > index) result[index] = arguments[index++];\n return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ObjectIterator = require('../internals/object-iterator');\n\n// `Object.iterateEntries` method\n// https://github.com/tc39/proposal-object-iteration\n$({ target: 'Object', stat: true, forced: true }, {\n iterateEntries: function iterateEntries(object) {\n return new ObjectIterator(object, 'entries');\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ObjectIterator = require('../internals/object-iterator');\n\n// `Object.iterateKeys` method\n// https://github.com/tc39/proposal-object-iteration\n$({ target: 'Object', stat: true, forced: true }, {\n iterateKeys: function iterateKeys(object) {\n return new ObjectIterator(object, 'keys');\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ObjectIterator = require('../internals/object-iterator');\n\n// `Object.iterateValues` method\n// https://github.com/tc39/proposal-object-iteration\n$({ target: 'Object', stat: true, forced: true }, {\n iterateValues: function iterateValues(object) {\n return new ObjectIterator(object, 'values');\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(URL.prototype.toString, this);\n }\n});\n","var parent = require('../../es/array/find-index');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/find');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","var parent = require('../../es/array/includes');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/from-entries');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/values');\n\nmodule.exports = parent;\n","var parent = require('../../es/string/ends-with');\n\nmodule.exports = parent;\n","var parent = require('../../es/string/includes');\n\nmodule.exports = parent;\n","var parent = require('../../es/string/starts-with');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../modules/web.url');\nrequire('../modules/web.url.to-json');\nrequire('../modules/web.url-search-params');\nvar path = require('../internals/path');\n\nmodule.exports = path.URL;\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","var DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n","var closest = require('./closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n","(function(scope) {'use strict';\nfunction B(r,e){var f;return r instanceof Buffer?f=r:f=Buffer.from(r.buffer,r.byteOffset,r.byteLength),f.toString(e)}var w=function(r){return Buffer.from(r)};function h(r){for(var e=0,f=Math.min(256*256,r.length+1),n=new Uint16Array(f),i=[],o=0;;){var t=e=f-1){var s=n.subarray(0,o),m=s;if(i.push(String.fromCharCode.apply(null,m)),!t)return i.join(\"\");r=r.subarray(e),e=0,o=0}var a=r[e++];if((a&128)===0)n[o++]=a;else if((a&224)===192){var d=r[e++]&63;n[o++]=(a&31)<<6|d}else if((a&240)===224){var d=r[e++]&63,l=r[e++]&63;n[o++]=(a&31)<<12|d<<6|l}else if((a&248)===240){var d=r[e++]&63,l=r[e++]&63,R=r[e++]&63,c=(a&7)<<18|d<<12|l<<6|R;c>65535&&(c-=65536,n[o++]=c>>>10&1023|55296,c=56320|c&1023),n[o++]=c}}}function F(r){for(var e=0,f=r.length,n=0,i=Math.max(32,f+(f>>>1)+7),o=new Uint8Array(i>>>3<<3);e=55296&&t<=56319){if(e=55296&&t<=56319)continue}if(n+4>o.length){i+=8,i*=1+e/r.length*2,i=i>>>3<<3;var m=new Uint8Array(i);m.set(o),o=m}if((t&4294967168)===0){o[n++]=t;continue}else if((t&4294965248)===0)o[n++]=t>>>6&31|192;else if((t&4294901760)===0)o[n++]=t>>>12&15|224,o[n++]=t>>>6&63|128;else if((t&4292870144)===0)o[n++]=t>>>18&7|240,o[n++]=t>>>12&63|128,o[n++]=t>>>6&63|128;else continue;o[n++]=t&63|128}return o.slice?o.slice(0,n):o.subarray(0,n)}var u=\"Failed to \",p=function(r,e,f){if(r)throw new Error(\"\".concat(u).concat(e,\": the '\").concat(f,\"' option is unsupported.\"))};var x=typeof Buffer==\"function\"&&Buffer.from;var A=x?w:F;function v(){this.encoding=\"utf-8\"}v.prototype.encode=function(r,e){return p(e&&e.stream,\"encode\",\"stream\"),A(r)};function U(r){var e;try{var f=new Blob([r],{type:\"text/plain;charset=UTF-8\"});e=URL.createObjectURL(f);var n=new XMLHttpRequest;return n.open(\"GET\",e,!1),n.send(),n.responseText}finally{e&&URL.revokeObjectURL(e)}}var O=!x&&typeof Blob==\"function\"&&typeof URL==\"function\"&&typeof URL.createObjectURL==\"function\",S=[\"utf-8\",\"utf8\",\"unicode-1-1-utf-8\"],T=h;x?T=B:O&&(T=function(r){try{return U(r)}catch(e){return h(r)}});var y=\"construct 'TextDecoder'\",E=\"\".concat(u,\" \").concat(y,\": the \");function g(r,e){p(e&&e.fatal,y,\"fatal\"),r=r||\"utf-8\";var f;if(x?f=Buffer.isEncoding(r):f=S.indexOf(r.toLowerCase())!==-1,!f)throw new RangeError(\"\".concat(E,\" encoding label provided ('\").concat(r,\"') is invalid.\"));this.encoding=r,this.fatal=!1,this.ignoreBOM=!1}g.prototype.decode=function(r,e){p(e&&e.stream,\"decode\",\"stream\");var f;return r instanceof Uint8Array?f=r:r.buffer instanceof ArrayBuffer?f=new Uint8Array(r.buffer):f=new Uint8Array(r),T(f,this.encoding)};scope.TextEncoder=scope.TextEncoder||v;scope.TextDecoder=scope.TextDecoder||g;\n}(typeof window !== 'undefined' ? window : (typeof global !== 'undefined' ? global : this)));\n","/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n","var is = require('./is');\nvar delegate = require('delegate');\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\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 trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-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 (trac-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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
          \" ],\n\tcol: [ 2, \"\", \"
          \" ],\n\ttr: [ 2, \"\", \"
          \" ],\n\ttd: [ 3, \"\", \"
          \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-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 (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-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\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\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 rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-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\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\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 (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\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, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\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\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 (trac-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 trac-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 (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\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// Use proper attribute retrieval (trac-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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\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\tthis.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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\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\tthis.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 classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-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 (trac-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 (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-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 (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-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 trac-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 (trac-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// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-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// trac-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 trac-8605, trac-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// trac-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( \"