{"version":3,"file":"js/app.xxxxxxxxxx.js","mappings":"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","sources":["webpack://@token-io/lib-webpack/webpack/runtime/chunk loaded","webpack://@token-io/lib-webpack/../../../src/assets/banks/ sync ^\\.\\/.*$","webpack://@token-io/lib-webpack/../../../src/config/locales/ sync ^\\.\\/.*\\.json$","webpack://@token-io/lib-webpack/../lib-web-app/lib/actions.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/util.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/components/ConnectedIntlProvider.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/components/ErrorBoundary.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/middlewares.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/app.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/exception.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/reduxService.js","webpack://@token-io/lib-webpack/../../../src/config/constants.js","webpack://@token-io/lib-webpack/../../../src/config/exceptions.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Util.js","webpack://@token-io/lib-webpack/../../../src/config/devKeys.js","webpack://@token-io/lib-webpack/../../../src/config/mandatoryFields.js","webpack://@token-io/lib-webpack/../../../src/util/localStorageWrapper.js","webpack://@token-io/lib-webpack/../../../src/util/sessionStorageWrapper.js","webpack://@token-io/lib-webpack/../../../src/util/segregateCredentials.js","webpack://@token-io/lib-webpack/../../../src/util/addRefundTextIfNotPresent.js","webpack://@token-io/lib-webpack/../../../src/util/getSupportedPaymentNetworks.js","webpack://@token-io/lib-webpack/../../../src/util/getFeatureFromTppConfig.js","webpack://@token-io/lib-webpack/../../../src/util/getInitialReduxState.js","webpack://@token-io/lib-webpack/../../../src/util/getTokenReqIdFromURL.js","webpack://@token-io/lib-webpack/../../../src/util/getInstantDevKey.js","webpack://@token-io/lib-webpack/../../../src/util/blockUserOnURLPaths.js","webpack://@token-io/lib-webpack/../../../src/util/checkMandatoryFieldsPresent.js","webpack://@token-io/lib-webpack/../../../src/util/index.js","webpack://@token-io/lib-webpack/../../../src/reducers/shared.js","webpack://@token-io/lib-webpack/../../../src/reducers/user.js","webpack://@token-io/lib-webpack/../../../src/reducers/tokenRequest.js","webpack://@token-io/lib-webpack/../../../src/reducers/token.js","webpack://@token-io/lib-webpack/../../../src/reducers/vrp.js","webpack://@token-io/lib-webpack/../../../src/reducers/index.js","webpack://@token-io/lib-webpack/../../../src/actions/shared/route.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/Api/tppIntegrationClient.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/Api/storeWebappEvent.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/Api/setTokenRequestStatus.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/Api/tokenApiClient.js","webpack://@token-io/lib-webpack/../../../src/actions/shared/api.js","webpack://@token-io/lib-webpack/../../../src/services/AccessTokenHelper.js","webpack://@token-io/lib-webpack/../../../src/actions/aisp/index.js","webpack://@token-io/lib-webpack/../../../src/actions/pisp/index.js","webpack://@token-io/lib-webpack/../../../src/util/browserNavigation.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/formatCredentials.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/getOverallTppConfigurations.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/updateCustomization.js","webpack://@token-io/lib-webpack/../../../src/actions/helpers/validateBrowserSession.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Postie.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Dom.js","webpack://@token-io/lib-webpack/../../../src/iframe/constants.js","webpack://@token-io/lib-webpack/../../../src/iframe/token/TokenOverlayController.js","webpack://@token-io/lib-webpack/../../../src/iframe/TokenPopup.js","webpack://@token-io/lib-webpack/../../../src/iframe/TokenBankPopup.js","webpack://@token-io/lib-webpack/../../../src/services/TokenCommunicator.js","webpack://@token-io/lib-webpack/../../../src/actions/shared/credentials.js","webpack://@token-io/lib-webpack/../../../src/actions/shared/index.js","webpack://@token-io/lib-webpack/../../../src/components/App/index.js","webpack://@token-io/lib-webpack/../../../src/actions/vrp/index.js","webpack://@token-io/lib-webpack/../../../src/components/WebAppConfig/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Hoc.jsx","webpack://@token-io/lib-webpack/../lib-web-components/src/config/constants.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/spinner.svg","webpack://@token-io/lib-webpack/../lib-web-components/assets/spinner-white.svg","webpack://@token-io/lib-webpack/../lib-web-components/assets/spinner-big.svg","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Spinner/index.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/icon-success.svg","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/TextInput/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/Abstract.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/Row.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/bank-default-logo.png","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/Cell.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/CellLoader.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Overlay/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Scroll/Simple.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/icon-dropdown-caret.svg","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Dropdown/Abstract.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Dropdown/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Button/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Layout/TokenContainer.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Layout/TokenTitle.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Layout/TokenButtonsContainer.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/ButtonVisibilityWrapper.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/TokenButtonsWrapper.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Data/StaticDataProvider.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/AliasInput.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/AispAliasInput.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/approval.png","webpack://@token-io/lib-webpack/../lib-web-components/assets/approval@2x.png","webpack://@token-io/lib-webpack/../lib-web-components/assets/approval@3x.png","webpack://@token-io/lib-webpack/../lib-web-components/assets/poweredByToken.png","webpack://@token-io/lib-webpack/../lib-web-components/assets/poweredByToken@2x.png","webpack://@token-io/lib-webpack/../lib-web-components/assets/poweredByToken@3x.png","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Image/TokenImage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/AppNotifier.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/AispAppNotifier.js","webpack://@token-io/lib-webpack/../../../src/assets/install.png","webpack://@token-io/lib-webpack/../../../src/assets/google-play.png","webpack://@token-io/lib-webpack/../../../src/assets/app-store.png","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/AppInstall.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/AispAppInstall.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/FlickerCode.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/FlickerClass.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/FlickerImage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/EyeIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/TextInput.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/CaptureCredentials.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Layout/TokenBackground.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/FooterText.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/Loading.js","webpack://@token-io/lib-webpack/../../../src/components/App/LanguageSwitcher.js","webpack://@token-io/lib-webpack/../../../src/components/App/EmptyBackgroundTitle.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/LeftChevron.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/HomeIconSvg.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/HomeIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/ConsentBackToTppOverlay.js","webpack://@token-io/lib-webpack/../../../src/components/App/TokenBackgroundBackButton.js","webpack://@token-io/lib-webpack/../../../src/components/App/Background.js","webpack://@token-io/lib-webpack/../../../src/assets/icon-error.svg","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/BankOutageError.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Scroll/Infinite.js","webpack://@token-io/lib-webpack/../lib-web-components/assets/icon-search.svg","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Search/Abstract.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Search/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Data/AsyncDataProvider.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Radio/index.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/List/CellRadio.js","webpack://@token-io/lib-webpack/../lib-web-components/src/Components/Radio/RadioList.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/RecentBankList.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/RightChevron.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/TopBanks.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/BankSelectorFirst.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/AispBankSelectorFirst.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/SmallSpinner.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/CheckIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/CrossIconCircle.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/FeedbackIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/InvalidIbanText.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/ValidateIban.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/MandatoryFields.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/HrefToPopup.js","webpack://@token-io/lib-webpack/../../../src/components/App/Terms/TermsLoader.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/ConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/ConfirmFundsConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/SplashScreen.js","webpack://@token-io/lib-webpack/../../../src/components/App/Aisp/index.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PispAliasInput.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PispTransferOverview.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PispAppNotifier.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PispAppInstall.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/EditIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/MandatoryFields.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/StetMandatoryFields.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PolishApiMandatoryFields.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/CopyIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/Button.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/ConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PispBankSelectorFirst.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/StandingOrderConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/BulkTransferConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/SuccessIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/FailureIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Icons/ClockIcon.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PaymentStatusTitle.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/PaymentInitStatus.js","webpack://@token-io/lib-webpack/../../../src/components/App/Pisp/index.js","webpack://@token-io/lib-webpack/../../../src/components/App/Vrp/VrpConsentBankFirstFlow.js","webpack://@token-io/lib-webpack/../../../src/components/App/Vrp/VrpBankSelectorFirst.js","webpack://@token-io/lib-webpack/../../../src/components/App/Vrp/VrpConsentInitStatusTitle.js","webpack://@token-io/lib-webpack/../../../src/components/App/Vrp/VrpConsentInitStatus.js","webpack://@token-io/lib-webpack/../../../src/components/App/Vrp/index.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/DefaultErrorPage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/GPHSBCErrorPage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/HSBCErrorPage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/ErrorPage.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/RedirectTpp.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/RedirectOptions.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/BankSpinner.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/RedirectTppSpinner.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/BankRedirect.js","webpack://@token-io/lib-webpack/../../../src/components/App/Shared/CsrfMismatch.js","webpack://@token-io/lib-webpack/../../../src/assets/favicon.png","webpack://@token-io/lib-webpack/../../../src/components/App/Terms/TermsAndCondition.js","webpack://@token-io/lib-webpack/../../../src/assets/enfucelogo.png","webpack://@token-io/lib-webpack/../../../src/components/App/Terms/EnfuseTermsAndConition.js","webpack://@token-io/lib-webpack/../../../src/components/App/Terms/GMBHTermsAndConditions.js","webpack://@token-io/lib-webpack/../../../src/components/App/Terms/index.js","webpack://@token-io/lib-webpack/../../../src/main.js","webpack://@token-io/lib-webpack/../lib-web-app/lib/publicPath.js","webpack://@token-io/lib-webpack/../../../src/assets/banks/AT/ngp-bkau/ngp-bkau.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/AT/ngp-giba/ngp-giba.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/AT/ngp-opsk/ngp-opsk.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/AT/ngp-ubswa/ngp-ubswa.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/AT/ngp-vbwi/ngp-vbwi.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BE/ngp-axab/ngp-axab.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BE/ngp-bbru/ngp-bbru.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BE/ngp-ftno/ngp-ftno.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BE/ngp-gkcc/ngp-gkcc.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BE/stet-parb/stet-parb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BG/ngp-rzbb/ngp-rzbb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BG/ngp-stsa/ngp-stsa.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/BG/ngp-uncrb/ngp-uncrb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/CZ/cobs-agba/cobs-agba.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/CZ/cobs-gibacz/cobs-gibacz.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/CZ/cobs-rzbc/cobs-rzbc.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DE/ngp-coba/ngp-coba.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DE/ngp-deutdedb/ngp-deutdedb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DE/ngp-hyve/ngp-hyve.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DE/ngp-ingdd/ngp-ingdd.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DE/ngp-ubswd/ngp-ubswd.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/DN/ngp-ndeadk/ngp-ndeadk.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/EE/ngp-eeuh/ngp-eeuh.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/EE/ngp-habaee/ngp-habaee.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/EE/ngp-lhvb/ngp-lhvb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/EE/ngp-parxee/ngp-parxee.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/ES/ngp-bcoe/ngp-bcoe.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/ES/ngp-cgdi/ngp-cgdi.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/ES/ngp-inal/ngp-inal.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/ES/ngp-ucja/ngp-ucja.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/ES/stet-cmcies/stet-cmcies.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/FI/ngp-hand/ngp-hand.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/FI/ngp-ndeafi/ngp-ndeafi.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/FR/stet-cmci/stet-cmci.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/FR/stet-nord/stet-nord.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/IT/ngp-cbi-01005/ngp-cbi-01005.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/IT/ngp-cbi-03069/ngp-cbi-03069.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/IT/ngp-cbi-03111/ngp-cbi-03111.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/IT/ngp-cbi-05034/ngp-cbi-05034.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LT/ngp-cbvi/ngp-cbvi.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LT/ngp-habalt/ngp-habalt.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LT/ngp-indu/ngp-indu.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LV/ngp-habalv/ngp-habalv.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LV/ngp-mult/ngp-mult.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LV/ngp-parx/ngp-parx.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/LV/ngp-unla/ngp-unla.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/NL/ngp-abna/ngp-abna.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/NL/ngp-ingb/ngp-ingb.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/NL/ngp-rabo/ngp-rabo.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/PT/ngp-actv/ngp-actv.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/PT/ngp-bapa/ngp-bapa.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/PT/ngp-besc/ngp-besc.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/PT/ngp-cgdipt/ngp-cgdipt.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/PT/ngp-tota/ngp-tota.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SE/ngp-handse/ngp-handse.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SE/ngp-sebbco/ngp-sebbco.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SE/ngp-sebbpr/ngp-sebbpr.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SE/ngp-swed/ngp-swed.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SI/ngp-aban/ngp-aban.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SI/ngp-bacxsl/ngp-bacxsl.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SI/ngp-haab/ngp-haab.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SI/ngp-hdel/ngp-hdel.png","webpack://@token-io/lib-webpack/../../../src/assets/banks/SI/ngp-kspk/ngp-kspk.png","webpack://@token-io/lib-webpack/../../react-intl/locale-data/ sync ^\\.\\/.*$","webpack://@token-io/lib-webpack/webpack/bootstrap","webpack://@token-io/lib-webpack/webpack/runtime/amd options","webpack://@token-io/lib-webpack/webpack/runtime/compat get default export","webpack://@token-io/lib-webpack/webpack/runtime/define property getters","webpack://@token-io/lib-webpack/webpack/runtime/global","webpack://@token-io/lib-webpack/webpack/runtime/harmony module decorator","webpack://@token-io/lib-webpack/webpack/runtime/hasOwnProperty shorthand","webpack://@token-io/lib-webpack/webpack/runtime/make namespace object","webpack://@token-io/lib-webpack/webpack/runtime/node module decorator","webpack://@token-io/lib-webpack/webpack/runtime/publicPath","webpack://@token-io/lib-webpack/webpack/runtime/jsonp chunk loading","webpack://@token-io/lib-webpack/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var map = {\n\t\"./AT/ngp-bkau/ngp-bkau.png\": 64829,\n\t\"./AT/ngp-giba/ngp-giba.png\": 64477,\n\t\"./AT/ngp-opsk/ngp-opsk.png\": 17501,\n\t\"./AT/ngp-ubswa/ngp-ubswa.png\": 1149,\n\t\"./AT/ngp-vbwi/ngp-vbwi.png\": 91507,\n\t\"./BE/ngp-axab/ngp-axab.png\": 73835,\n\t\"./BE/ngp-bbru/ngp-bbru.png\": 27833,\n\t\"./BE/ngp-ftno/ngp-ftno.png\": 22873,\n\t\"./BE/ngp-gkcc/ngp-gkcc.png\": 19139,\n\t\"./BE/stet-parb/stet-parb.png\": 91489,\n\t\"./BG/ngp-rzbb/ngp-rzbb.png\": 13069,\n\t\"./BG/ngp-stsa/ngp-stsa.png\": 45919,\n\t\"./BG/ngp-uncrb/ngp-uncrb.png\": 15895,\n\t\"./CZ/cobs-agba/cobs-agba.png\": 24533,\n\t\"./CZ/cobs-gibacz/cobs-gibacz.png\": 77217,\n\t\"./CZ/cobs-rzbc/cobs-rzbc.png\": 36037,\n\t\"./DE/ngp-coba/ngp-coba.png\": 9015,\n\t\"./DE/ngp-deutdedb/ngp-deutdedb.png\": 15271,\n\t\"./DE/ngp-hyve/ngp-hyve.png\": 23717,\n\t\"./DE/ngp-ingdd/ngp-ingdd.png\": 32623,\n\t\"./DE/ngp-ubswd/ngp-ubswd.png\": 17279,\n\t\"./DN/ngp-ndeadk/ngp-ndeadk.png\": 40312,\n\t\"./EE/ngp-eeuh/ngp-eeuh.png\": 89912,\n\t\"./EE/ngp-habaee/ngp-habaee.png\": 22622,\n\t\"./EE/ngp-lhvb/ngp-lhvb.png\": 92262,\n\t\"./EE/ngp-parxee/ngp-parxee.png\": 33552,\n\t\"./ES/ngp-bcoe/ngp-bcoe.png\": 72726,\n\t\"./ES/ngp-cgdi/ngp-cgdi.png\": 10786,\n\t\"./ES/ngp-inal/ngp-inal.png\": 77652,\n\t\"./ES/ngp-ucja/ngp-ucja.png\": 65538,\n\t\"./ES/stet-cmcies/stet-cmcies.png\": 74118,\n\t\"./FI/ngp-hand/ngp-hand.png\": 10153,\n\t\"./FI/ngp-ndeafi/ngp-ndeafi.png\": 8873,\n\t\"./FR/stet-cmci/stet-cmci.png\": 95246,\n\t\"./FR/stet-nord/stet-nord.png\": 48650,\n\t\"./IT/ngp-cbi-01005/ngp-cbi-01005.png\": 89717,\n\t\"./IT/ngp-cbi-03069/ngp-cbi-03069.png\": 32901,\n\t\"./IT/ngp-cbi-03111/ngp-cbi-03111.png\": 93845,\n\t\"./IT/ngp-cbi-05034/ngp-cbi-05034.png\": 89922,\n\t\"./LT/ngp-cbvi/ngp-cbvi.png\": 1408,\n\t\"./LT/ngp-habalt/ngp-habalt.png\": 53784,\n\t\"./LT/ngp-indu/ngp-indu.png\": 77128,\n\t\"./LV/ngp-habalv/ngp-habalv.png\": 86186,\n\t\"./LV/ngp-mult/ngp-mult.png\": 88070,\n\t\"./LV/ngp-parx/ngp-parx.png\": 65508,\n\t\"./LV/ngp-unla/ngp-unla.png\": 38550,\n\t\"./NL/ngp-abna/ngp-abna.png\": 60978,\n\t\"./NL/ngp-ingb/ngp-ingb.png\": 16006,\n\t\"./NL/ngp-rabo/ngp-rabo.png\": 9114,\n\t\"./PT/ngp-actv/ngp-actv.png\": 57684,\n\t\"./PT/ngp-bapa/ngp-bapa.png\": 93228,\n\t\"./PT/ngp-besc/ngp-besc.png\": 90474,\n\t\"./PT/ngp-cgdipt/ngp-cgdipt.png\": 84862,\n\t\"./PT/ngp-tota/ngp-tota.png\": 44792,\n\t\"./SE/ngp-handse/ngp-handse.png\": 79398,\n\t\"./SE/ngp-sebbco/ngp-sebbco.png\": 64980,\n\t\"./SE/ngp-sebbpr/ngp-sebbpr.png\": 74340,\n\t\"./SE/ngp-swed/ngp-swed.png\": 12826,\n\t\"./SI/ngp-aban/ngp-aban.png\": 35392,\n\t\"./SI/ngp-bacxsl/ngp-bacxsl.png\": 64982,\n\t\"./SI/ngp-haab/ngp-haab.png\": 99584,\n\t\"./SI/ngp-hdel/ngp-hdel.png\": 20418,\n\t\"./SI/ngp-kspk/ngp-kspk.png\": 99342\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 84640;","var map = {\n\t\"./cs.json\": 77224,\n\t\"./de.json\": 82169,\n\t\"./en.json\": 24605,\n\t\"./es.json\": 44726,\n\t\"./fr.json\": 9550,\n\t\"./hu.json\": 29365,\n\t\"./it.json\": 18711,\n\t\"./nl.json\": 61632,\n\t\"./pl.json\": 53242,\n\t\"./pt.json\": 39858,\n\t\"./ro.json\": 29417,\n\t\"./si.json\": 84482\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 73605;","/**\n * Action that adds a step in the user's navigation history,\n * which the user can manipulate using the browser back/forward buttons.\n *\n * @param step - name of the step\n * @param ignore - if true, navigation history is unaffected\n * @param replace - if true, this action replaces the previous step\n * instead of being added as a new step\n */\nexport const addStep = (step, ignore, replace) => ({\n    type: 'ADD_STEP',\n    step,\n    ignore,\n    replace,\n});\n\n/**\n * Action that goes back a step in the user's navigation history.\n * This is effectively equivalent to pressing the back button in the browser.\n */\nexport const backStep = () => ({\n    type: 'BACK_STEP',\n});\n\n/**\n * Action that replaces the entire state at the top level.\n *\n * @param state - new state object, this replaces the old state\n */\nexport const replaceState = state => ({\n    type: 'REPLACE_STATE',\n    state,\n});\n\n/**\n * Universal error action.\n * Apps should listen to this and display a universal error page.\n *\n * @param error - the error\n */\nexport const throwError = error => ({\n    type: 'THROW_ERROR',\n    error,\n});\n\nexport const terminate = error => ({\n    type: 'TERMINATE_FLOW',\n    error,\n});\n","/**\n * Utility function for creating reducers.\n */\nexport const createReducer =\n  (initialState, actionHandlers) =>\n      (state = initialState, action) => {\n          if (actionHandlers.hasOwnProperty(action.type)) {\n              return actionHandlers[action.type](state, action);\n          } else {\n              return state;\n          }\n      };\n\n/**\n * Flattens an object, making nested keys the new top-level keys.\n * {a: {b: {c: 4}}} will turn into {'a.b.c': 4}\n */\nconst flattenObject = (obj, prefix = '') =>\n    Object.keys(obj).reduce((flattened, key) => {\n        const value = obj[key];\n        const prefixedKey = prefix ? `${prefix}.${key}` : key;\n        if (typeof value === 'string') {\n            flattened[prefixedKey] = value;\n        } else {\n            Object.assign(flattened, flattenObject(value, prefixedKey));\n        }\n        return flattened;\n    }, {});\n\nconst removeKey = (key, {[key]: _, ...rest}) => rest;\n\nexport const getUpdatedMessages = (messages, customTranslations, locale) => {\n    const updatedMessages = flattenObject(messages[locale]);\n    if(customTranslations &&  Object.keys(customTranslations).length !== 0) {\n        for (const [key, value] of Object.entries(customTranslations)) {\n            const [localeKey, ...rest] = key.split(/\\.(.+)/).filter(Boolean);\n            if(localeKey === locale) {\n                updatedMessages[rest] = value;\n                if (customTranslations[rest]) {\n                    customTranslations = removeKey(rest, customTranslations);\n                }\n            } else if (localeKey?.length !== 2 && customTranslations[key]) {\n                updatedMessages[key] = value;\n            }\n        }\n    }\n    return updatedMessages;\n};\n","import React, { useEffect, useState } from 'react';\nimport {connect} from 'react-redux';\nimport { getUpdatedMessages} from '../util';\nimport {IntlProvider} from 'react-intl';\nimport PropTypes from 'prop-types';\n\nconst ConnectedIntlProvider = ({ currentLocale, updatedMessages, children }) => {\n    const [messages, setMessages] = useState(updatedMessages);\n    const [locale, setLocale] = useState(currentLocale);\n\n    useEffect(() => {\n        setMessages(updatedMessages);\n        setLocale(currentLocale);\n    }, [updatedMessages, currentLocale]);\n\n    return (\n        <IntlProvider key={locale} locale={locale} messages={messages}>\n            {React.cloneElement(children, {messages})}\n        </IntlProvider>\n    );\n};\n\nConnectedIntlProvider.propTypes = {\n    currentLocale: PropTypes.string,\n    updatedMessages: PropTypes.object,\n    children: PropTypes.node.isRequired,\n    options: PropTypes.object,\n};\n\nconst mapStateToProps = (state, {options}) => {\n    if (!options) {\n        return {\n            locale: 'en',\n            messages: {},\n        };\n    }\n    const locale = options.getLocale(state).slice(0, 2);\n    const defaultLocale = options.defaultLocale.slice(0, 2);\n    let customTranslations;\n    if (typeof options?.getCustomTranslations === 'function') {\n        customTranslations = options?.getCustomTranslations(state);\n    }\n\n    let defaultMessages;\n    if (typeof options?.getLocalesData === 'function') {\n        defaultMessages = options?.getLocalesData();\n    }\n\n    const messagesRoot = defaultMessages[locale];\n    const currentLocale = messagesRoot && locale || defaultLocale; // First check if corrsp. messages to the locale exists otherwise use default locale\n\n    const updatedMessages = getUpdatedMessages(\n        defaultMessages,\n        customTranslations,\n        currentLocale,\n    );\n\n    return {\n        currentLocale,\n        updatedMessages,\n    };\n};\n\nexport default connect(mapStateToProps)(ConnectedIntlProvider);\n","import PropTypes from 'prop-types';\nimport {Component} from 'react';\nimport {connect} from 'react-redux';\nimport {throwError} from '../actions';\n\nclass ErrorBoundary extends Component {\n    componentDidCatch(e, info) {\n        this.setState({hasError: true});\n        this.props.throwError(e, info);\n    }\n    render() {\n        return this.props.children;\n    }\n}\n\nErrorBoundary.propTypes = {\n    children: PropTypes.any,\n    throwError: PropTypes.func.isRequired,\n};\n\nconst mapDispatchToProps = {\n    throwError,\n};\n\nexport default connect(\n    null,\n    mapDispatchToProps,\n)(ErrorBoundary);\n","import {addBreadcrumb, captureException} from '@sentry/browser';\n\nexport const createThunkMiddleware = getServices => ({dispatch, getState}) => next => action => {\n    if (typeof action === 'function') {\n        return action(dispatch, getServices(getState));\n    }\n    return next(action);\n};\n\nexport const createErrorMiddleware = errorHandler => () => next => action => {\n    if (action.type === 'THROW_ERROR') {\n        console.error(action.error); // eslint-disable-line\n        errorHandler?.(action.error);\n    }\n    return next(action);\n};\n\nexport const createSentryMiddleware = stateRedactor => ({getState}) => next => action => {\n    if (action) {\n        const {type, ...data} = action;\n        if (data.redacted) {\n            data.redacted.forEach(redact => {\n                delete data[redact];\n            });\n        }\n        addBreadcrumb({\n            category: 'redux-action',\n            message: type,\n            data: data,\n        });\n        if (type === 'THROW_ERROR') {\n            captureException(action.error, {\n                extra: {\n                    reduxState: stateRedactor?.(getState) || getState(),\n                },\n            });\n        }\n    }\n    return next(action);\n};\n\nexport const createHistoryMiddleware = stateSanitizer => ({getState}) => next => action => {\n    const result = next(action);\n    if (typeof action === 'object') {\n        const state = stateSanitizer?.(getState) || getState();\n        if (action.type === 'THROW_ERROR') {\n            history.replaceState(state, null);\n        } else if (action.type === 'ADD_STEP') {\n            if (action.ignore) return result;\n            action.replace\n                ? history.replaceState(state, null, action.step)\n                : history.pushState(state, null, action.step);\n        } else if (action.type === 'BACK_STEP') {\n            history.back();\n        }\n    }\n    return result;\n};\n","import './publicPath';\nimport ConnectedIntlProvider from './components/ConnectedIntlProvider';\nimport ErrorBoundary from './components/ErrorBoundary';\nimport React from 'react';\nimport {applyMiddleware, compose, createStore} from 'redux';\nimport {\n    createErrorMiddleware,\n    createHistoryMiddleware,\n    createSentryMiddleware,\n    createThunkMiddleware,\n} from './middlewares';\nimport {init} from '@sentry/browser';\nimport {Provider} from 'react-redux';\nimport {render} from 'react-dom';\nimport {throwError} from './actions';\nimport {addLocaleData} from 'react-intl';\n\nexport class App {\n    constructor(options = {}) {\n        this.pathValue = window.location.pathname.split('/')[1];\n        this.options = options;\n        this._setUpSentry();\n        this._addLocaleData();\n        this.state = {};\n    }\n\n    _addLocaleData() {\n        this.options.i18n?.locales?.forEach(locale =>\n            addLocaleData(require(`react-intl/locale-data/${locale}`)));\n    }\n\n    /**\n     * Registers a mapping between actions and paths.\n     * Action will be dispatched when the URL path matches the store path.\n     */\n    handle(path, action, options = {}) {\n        if (!this.paths) this.paths = [];\n        this.paths.push({path, action, options});\n        return this;\n    }\n\n    /**\n     * Registers a default action in case no paths match.\n     */\n    handleDefault(action) {\n        this.defaultAction = action;\n        return this;\n    }\n\n    /**\n     * Registers a mapping between routes and components.\n     * The mapping is passed into the root component.\n     */\n    register(route, component) {\n        if (!this.routes) this.routes = {};\n        this.routes[route] = component;\n        return this;\n    }\n\n    /**\n     * Creates the Redux store,\n     * dispatches the proper action registered by handle(),\n     * and renders the root component.\n     */\n    render() {\n        this._renderApp();\n    }\n\n    _renderApp() {\n        this._handlePath();\n        this._createStore();\n        this._executePath();\n        const App = this.options.root;\n\n        return render(\n            <Provider store={this.store}>\n                <ConnectedIntlProvider options={this.options.i18n}>\n                    <ErrorBoundary>\n                        <App routes={this.routes}/>\n                    </ErrorBoundary>\n                </ConnectedIntlProvider>\n            </Provider>,\n            document.getElementById(this.options.rootId),\n        );\n    }\n\n    _setUpSentry() {\n        if (!this.options.sentry) return;\n        init({\n            dsn: this.options.sentry.dsn,\n            environment: this.options.sentry.env,\n            release: this.options.sentry.release,\n            beforeSend: event => this.options.sentry.beforeSend?.(event) || event,\n        });\n    }\n\n    _createStore() {\n        if (!this.options.store) return;\n        let composeEnhancers = compose;\n        if (this.options.store.devToolsEnabled) {\n            composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n        }\n        const persistedState = this._getPersistedState?.();\n        this.store = createStore(\n            this.options.store.reducer,\n            persistedState || this.options.store.initialState || undefined,\n            composeEnhancers(applyMiddleware(...[\n                createThunkMiddleware(this.options.store.getServices),\n                createErrorMiddleware(this.options.errorHandler),\n                this.options.history &&\n                createHistoryMiddleware(this.options.history.stateSanitizer),\n                this.options.sentry &&\n                createSentryMiddleware(this.options.sentry.stateRedactor),\n                ...(this.options.store.middlewares || []),\n            ].filter(Boolean))),\n        );\n        this.options.store.afterCreate?.(this.store);\n        window.onpopstate = e => this.options.history?.onPopState(e, this.store);\n        this.store.subscribe(() => this._saveState());\n    }\n\n    _handlePath() {\n        if (history.state || !this.paths) return;\n        for (const {path, action, options} of this.paths) {\n            if (path.test(window.location.pathname)) {\n                if (options.restoreState) {\n                    this._getPersistedState = () => {\n                        const state = this._retrieve();\n                        return options.beforeLoad?.(state) || state;\n                    };\n                }\n                this.action = action;\n                return;\n            }\n        }\n        this.action = this.defaultAction;\n    }\n\n    async _executePath() {\n        if (!this.action) return;\n        try {\n            await this.store.dispatch(this.action());\n        } catch (e) {\n            this.store.dispatch(throwError(e));\n        }\n    }\n\n    _saveState() {\n        try {\n            let state = this.store.getState();\n            state = this.options.store.beforeSave?.(state) || state;\n            const storage = this.options.store.useSessionStorage ? sessionStorage : localStorage;\n            storage.setItem('reduxState', JSON.stringify(state));\n        } catch (e) {\n            console.warn(e); // eslint-disable-line no-console\n        }\n    }\n\n    _retrieve() {\n        try {\n            const storage = this.options.store.useSessionStorage ? sessionStorage : localStorage;\n            return JSON.parse(storage.getItem('reduxState')) || undefined;\n        } catch (e) {\n            return undefined;\n        }\n    }\n}\n","/**\n * Constructor for a new TokenException.\n * Optional localization if this error code contains a localization key.\n *\n * @param code - code of the exception\n * If string, then normal exception is thrown.\n * If object containing intlKey, then localization is performed.\n * @param message - error message\n * @param intlValues (optional) - internationalization values\n */\n\nexport function TokenException(code, message, intlValues) {\n    const error = new Error(message);\n    if (code.intlKey) {\n        error.name = code.name;\n        error.intlKey = code.intlKey;\n        error.intlValues = intlValues;\n    } else {\n        error.name = code;\n    }\n    error.options = code.options;\n    return error;\n}\n","import {combineReducers, compose} from 'redux';\nimport {connect as reduxConnect} from 'react-redux';\nimport {injectIntl} from 'react-intl';\nimport {throwError} from './actions';\n\nexport class ReduxService {\n    constructor(options = {}) {\n        this.options = options;\n        if (!options.selectors)\n            throw new Error('Need to pass in selectors');\n        this.getServices = this.getServices.bind(this);\n    }\n\n    /**\n     * Gets all services from the app state.\n     */\n    getServices(getState) {\n        if (typeof getState !== 'function') {\n            const state = getState;\n            getState = () => state;\n        }\n        return this.options.selectors.reduce(\n            (acc, service) =>\n                ({\n                    ...acc,\n                    [service.name + 'Service']: service.selector(() =>\n                        getState()[service.name]),\n                }),\n            {}\n        );\n    }\n\n    /**\n     * Gets the custom connect function that wraps the default one provided by react-redux.\n     * This function has extra features such as top-level error-handling, intl-injection,\n     * and providing services instead of the state object as an argument to mapStateToProps.\n     */\n    getConnect() {\n        const wrapMapStateToProps = (getServices, mapStateToProps) =>\n            (state, ownProps) => mapStateToProps(getServices(state), ownProps);\n        return (mapStateToProps, mapDispatchToProps, mergeProps, options) => {\n            const wrapObject = (actions, dispatch, dispatched) =>\n                Object.assign({}, ...Object.keys(actions).map(k => ({\n                    [k]: async (...args) => {\n                        try {\n                            dispatched\n                                ? await actions[k](...args)\n                                : await dispatch(actions[k](...args));\n                        } catch (error) {\n                            dispatch(throwError(error));\n                        }\n                    },\n                })));\n            const wrapTryCatch = mapDispatch => (dispatch, ownProps) => {\n                const isFunction = typeof mapDispatch === 'function';\n                const actions = isFunction ? mapDispatch(dispatch, ownProps) : mapDispatch;\n                return wrapObject(actions, dispatch, isFunction);\n            };\n            const wrappedMapState = mapStateToProps\n                && wrapMapStateToProps(this.getServices, mapStateToProps);\n            const safeMapDispatch = mapDispatchToProps && wrapTryCatch(mapDispatchToProps);\n            return compose(\n                injectIntl,\n                reduxConnect(\n                    wrappedMapState,\n                    safeMapDispatch,\n                    mergeProps,\n                    options\n                )\n            );\n        };\n    }\n\n    /**\n     * Gets the root reducer from the selectors.\n     * The root reducer also handles top-level state replacement.\n     */\n    getRootReducer() {\n        return (state, action) => {\n            if (action.type === 'REPLACE_STATE') {\n                state = {...state, ...action.state};\n            }\n            const appReducer = combineReducers(this.options.selectors.reduce((acc, service) => {\n                return {...acc, [service.name]: service.reducer};\n            }, {}));\n            return appReducer(state, action);\n        };\n    }\n}\n","let browserEnv = {};\n\n// Allow configuration of environment variables through browser environment\nif (window !== undefined && window.BROWSER_ENV !== undefined) {\n    browserEnv = window.BROWSER_ENV;\n}\n\nexport const TOKEN_POPUP_NAME = 'TOKEN_FRAME';\nexport const TOKEN_WEB_APP_IFRAME_NAME = 'TOKEN_WEB_APP_IFRAME';\n\n// Config values from server\n\n// Update config for breaking changes that require flushing localStorage\nexport const LS_VERSION = browserEnv.localStorageVersion;\nexport const TOKEN_ENV = browserEnv.tokenEnv;\nexport const hotModule = browserEnv.hotModule;\nexport const gitSha = browserEnv.gitSha;\nexport const webAppUrl = browserEnv.webAppUrl;\nexport const tokenRootUrl = browserEnv.tokenRootUrl;\nexport const sdkErrorLoggingEnabled = browserEnv.sdkErrorLoggingEnabled;\nexport const sendErrorReports = browserEnv.sendErrorReports;\nexport const sendTraceSpans = browserEnv.sendTraceSpans;\nexport const appNotificationInterval =\n    browserEnv.timeouts.appNotificationInterval;\nexport const appNotificationTimeout =\n    browserEnv.timeouts.appNotificationTimeout;\nexport const decoupleAuthorizationInterval =\n    browserEnv.timeouts.decoupleAuthorizationInterval;\nexport const decoupleAuthorizationTimeout =\n    browserEnv.timeouts.decoupleAuthorizationTimeout;\nexport const tokenRequestResultInterval =\n    browserEnv.timeouts.tokenRequestResultInterval;\nexport const tokenRequestResultTimeout =\n    browserEnv.timeouts.tokenRequestResultTimeout;\nexport const defaultLocale = browserEnv.defaultLocale;\nexport const defaultColors = browserEnv.defaultColors;\nexport const defaultName = 'Token.io Ltd';\nexport const defaultAppName = 'Token.io';\n\nexport const TOKEN_PROVIDER = 'Token';\n\nexport const CUSTOM_TPP_FEATURES = {\n    SUPPORT_PSR44_FLOW: 'supportPsr44Flow',\n    ENABLE_TSP_CONFIG: 'enableTspConfig',\n    CUSTOM_WEB_APP_URL: 'customWebAppUrl',\n    DISPLAY_BENEFICARY_DETAILS: 'displayBeneficiaryDetails',\n    IS_ENFUSE: 'isEnfuse',\n    IS_ENFUSE_LICENSE_TPP: 'isEnfuseLicenseTpp',\n    SUPPORTED_COUNTRIES_WITH_BANK_IDS: 'supportedCountriesWithBankIds',\n    ENABLE_WEB_APP: 'enableWebApp',\n    SUPPORT_RECENT_BANKS: 'supportRecentBanks',\n    OVERRIDE_DEFAULT_CUSTOMIZATIONS: 'overrideDefaultCustomizations',\n    DISPLAY_LOGO_ON_BANK_REDIRECT_SCREEN: 'displayLogoOnBankRedirectScreen',\n    FOOTER_TEXT: 'footerText',\n    CATEGORY: 'category',\n    CUSTOM_PIS_CONSENT_TEXT: 'translations.pisp.consent.text',\n    CUSTOM_AIS_CONSENT_TEXT: 'translations.aisp.consent.text',\n    CUSTOM_PIS_TERMS_AND_CONDITIONS_TEXT:\n        'translations.pisp.consent.termsAndConditions.loader',\n    CUSTOM_AIS_TERMS_AND_CONDITIONS_TEXT:\n        'translations.aisp.consent.termsAndConditions.loader',\n    TRANSLATIONS: 'translations',\n    CUSTOM_COLORS: 'colors',\n    SPLASH_SCREEN: 'splashScreen',\n    SHOW_BANK_SELECTOR_TITLE: 'showBankSelectorTitle',\n    TPP_LOGO: 'tppLogo',\n    AIS_APP_NAME: 'ais.tags.businessName',\n    PIS_APP_NAME: 'pis.tags.businessName',\n    AIS_NAME: 'ais.tags.displayName',\n    PIS_NAME: 'pis.tags.displayName',\n    AISP: 'ais',\n    PISP: 'pis',\n    TAGS: 'tags',\n    DISPLAY_TOKEN_BACKGROUND_BACK_BUTTON: 'displayWebAppBackButton',\n    MODIFY_PRE_SELECTED_BANK: 'modifyPreSelectedBank',\n    WEB_APP_BUTTONS_ALIGNMENT: 'webAppButtonsAlignment',\n    RESELLER_LOGO: 'resellerLogo',\n    PRODUCT_LOGO: 'productLogo',\n    PRODUCT_NAME: 'productName',\n    TPP_LOGO_FOR_SPLASH_SCREEN: 'tppLogoSplashScreen',\n    CUSTOM_ERROR: 'displayCustomErrorPage',\n    DISPLAY_SHADOW: 'displayShadow',\n    HIDE_DEFAULT_COUNTRIES_AND_BANKS: 'hideDefaultCountriesAndBanks',\n    ENABLE_ACCEPT_BUTTON: 'enableAcceptButtonWithCustomText',\n    // Enable web-app to forward current transfer params if exists in case of error scenarios as well\n    FORWARD_CURRENT_TRANSFER_PARAMETERS: 'forwardCurrentTransferParams',\n    HIDE_PSR44_TIMER: 'hidePSR44Timer',\n    REMOVE_PSR44_TIMER: 'removePSR44Timer',\n    IS_TPP_GMBH: 'isTppGmbh',\n};\n\nexport const REQUEST_TYPE = {\n    VRP_CONSENT: 'VRP_CONSENT',\n    TOKEN_REQUEST: 'TOKEN_REQUEST',\n};\n\nexport const EXTERNAL_TOKEN_REQUEST_STATUS = {\n    UNKNOWN: 'UNKNOWN',\n    PENDING: 'PENDING', // NOT_FOUND error will be replaced with this status.\n    PROCESSED: 'PROCESSED', // This is the successful status. Token id exists.\n    REJECTED: 'REJECTED', // The request has been rejected.\n    EXPIRED: 'EXPIRED', // The token request is expired and will never be finished.\n};\n\nexport const WEB_APP_EVENTS = {\n    WEB_APP_INITIALIZED: 'WEB_APP_INITIALIZED',\n    WEB_APP_BANK_SELECTED: 'WEB_APP_BANK_SELECTED',\n    WEB_APP_CONSENT_ACCEPTED: 'WEB_APP_CONSENT_ACCEPTED',\n    WEB_APP_CONSENT_DECLINED: 'WEB_APP_CONSENT_DECLINED',\n    WEB_APP_BANK_CALLBACK: 'WEB_APP_BANK_CALLBACK',\n    WEB_APP_RETURN_TO_TPP_SUCCESS: 'WEB_APP_RETURN_TO_TPP_SUCCESS',\n    WEB_APP_RETURN_TO_TPP_FAILURE: 'WEB_APP_RETURN_TO_TPP_FAILURE',\n    WEB_APP_CREDENTIALS_REQUIRED: 'WEB_APP_CREDENTIALS_REQUIRED',\n    WEB_APP_CREDENTIALS_CAPTURED: 'WEB_APP_CREDENTIALS_CAPTURED',\n    WEB_APP_USER_REDIRECTED_TO_BANK: 'WEB_APP_USER_REDIRECTED_TO_BANK',\n    WEB_APP_PAYMENT_CONFIRMATION_DISPLAYED:\n        'WEB_APP_PAYMENT_CONFIRMATION_DISPLAYED',\n};\n\nexport const INTERNAL_TOKEN_REQUEST_STATUS = {\n    PROCESSED: 'PROCESSED',\n    REJECTED: 'REJECTED',\n    PROCESSED_NO_CALLBACK: 'PROCESSED_NO_CALLBACK',\n    PENDING_WEB_APP_INVOKED: 'PENDING_WEB_APP_INVOKED',\n    PENDING_WEB_APP_BANK_SELECTED: 'PENDING_WEB_APP_BANK_SELECTED',\n    PENDING_WEB_APP_CONSENT_ACCEPTED: 'PENDING_WEB_APP_CONSENT_ACCEPTED',\n    PENDING_WEB_APP_CONSENT_DECLINED: 'PENDING_WEB_APP_CONSENT_DECLINED',\n    PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED:\n        'PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED',\n    PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED:\n        'PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED',\n    PENDING_CONSENT_SENT_TO_BANK: 'PENDING_CONSENT_SENT_TO_BANK',\n    PROCESSING_CONSENT_ACCEPTED_BY_BANK: 'PROCESSING_CONSENT_ACCEPTED_BY_BANK',\n    PROCESSING_CALLBACK_INITIATED_BY_TPP:\n        'PROCESSING_CALLBACK_INITIATED_BY_TPP',\n    PENDING_REDIRECT_URL_SENT: 'PENDING_REDIRECT_URL_SENT',\n    PENDING_WEB_APP_SENT_USER_TO_BANK: 'PENDING_WEB_APP_SENT_USER_TO_BANK',\n    PENDING_TOKEN_CREATED_NOT_AUTHORIZED:\n        'PENDING_TOKEN_CREATED_NOT_AUTHORIZED',\n    PENDING_CREDENTIALS_REQUIRED: 'PENDING_CREDENTIALS_REQUIRED',\n    PENDING_FURTHER_CREDENTIALS_REQUIRED_1:\n        'PENDING_FURTHER_CREDENTIALS_REQUIRED_1',\n    PENDING_FURTHER_CREDENTIALS_REQUIRED_2:\n        'PENDING_FURTHER_CREDENTIALS_REQUIRED_2',\n};\n\nexport const INTERNAL_TOKEN_REQUEST_STATUS_MAP = {\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_INVOKED]:\n        WEB_APP_EVENTS.WEB_APP_INITIALIZED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_BANK_SELECTED]:\n        WEB_APP_EVENTS.WEB_APP_BANK_SELECTED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_CONSENT_ACCEPTED]:\n        WEB_APP_EVENTS.WEB_APP_CONSENT_ACCEPTED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_SENT_USER_TO_BANK]:\n        WEB_APP_EVENTS.WEB_APP_USER_REDIRECTED_TO_BANK,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED]:\n        WEB_APP_EVENTS.WEB_APP_PAYMENT_CONFIRMATION_DISPLAYED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED]:\n        WEB_APP_EVENTS.WEB_APP_PAYMENT_CONFIRMATION_DISPLAYED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_CREDENTIALS_REQUIRED]:\n        WEB_APP_EVENTS.WEB_APP_CREDENTIALS_REQUIRED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_1]:\n        WEB_APP_EVENTS.WEB_APP_CREDENTIALS_REQUIRED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_2]:\n        WEB_APP_EVENTS.WEB_APP_CREDENTIALS_REQUIRED,\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_CONSENT_DECLINED]:\n        WEB_APP_EVENTS.WEB_APP_CONSENT_DECLINED,\n};\n\nexport const INTERNAL_TOKEN_REQUEST_STATUS_REASON = {\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED]:\n        'Token request has been processed',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_NO_CALLBACK]:\n        'Token request has been processed',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_INVOKED]:\n        'TPP has successfully invoked the web-app',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_BANK_SELECTED]:\n        'Bank has been selected at web-app',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_CONSENT_ACCEPTED]:\n        'Consent accepted by PSU at web-app',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_CONSENT_DECLINED]:\n        'Consent declined by PSU at web-app',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED]:\n        'PSU was shown payment success page',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED]:\n        'PSU was shown payment error page',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_1]:\n        'Credentials are required from PSU at webapp.',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_CONSENT_SENT_TO_BANK]:\n        'Consent has been sent to the bank',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSING_CONSENT_ACCEPTED_BY_BANK]:\n        'Consent has been accepted by the bank',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PROCESSING_CALLBACK_INITIATED_BY_TPP]:\n        'Callback has initiated by the tpp',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_REDIRECT_URL_SENT]:\n        'User has been redirected to the bank',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_SENT_USER_TO_BANK]:\n        'User has been redirected to the bank',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_TOKEN_CREATED_NOT_AUTHORIZED]:\n        'Token has been created but not authorized',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_CREDENTIALS_REQUIRED]:\n        'Credentials are required from PSU at webapp.',\n    [INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_2]:\n        'Final Credentials are required from PSU',\n    [INTERNAL_TOKEN_REQUEST_STATUS.REJECTED]: 'User Cancelled',\n};\n\nexport const PENDING_TOKEN_REQUEST_STATUS = [\n    INTERNAL_TOKEN_REQUEST_STATUS.PENDING_WEB_APP_CONSENT_ACCEPTED,\n];\n\nexport const PROCESSED_TOKEN_REQUEST_STATUS = [\n    EXTERNAL_TOKEN_REQUEST_STATUS.PROCESSED,\n    INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED,\n    INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_NO_CALLBACK,\n    INTERNAL_TOKEN_REQUEST_STATUS.PENDING_TOKEN_CREATED_NOT_AUTHORIZED,\n    INTERNAL_TOKEN_REQUEST_STATUS.PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED,\n];\n\nexport const PENDING_CREDENTIALS_TOKEN_REQUEST_STATUS = [\n    INTERNAL_TOKEN_REQUEST_STATUS.PENDING_CREDENTIALS_REQUIRED,\n    INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_1,\n    INTERNAL_TOKEN_REQUEST_STATUS.PENDING_FURTHER_CREDENTIALS_REQUIRED_2,\n];\n\nexport const INIT_BANK_AUTH_STATUS = {\n    REDIRECT_URL: 'REDIRECT_URL',\n    FIELDS: 'FIELDS',\n    STATUS: 'STATUS',\n};\n\nexport const CREDENTIAL_FIELD_TYPE = {\n    PSU_MESSAGE: 'PSU_MESSAGE',\n    FLICKER: 'FLICKER',\n    IMAGE: 'IMAGE',\n    OPTIONS: 'OPTIONS',\n    PASSWORD: 'PASSWORD',\n    DECOUPLED: 'DECOUPLED',\n};\n\nexport const TPP_INTEGRATION_ADDRESS = browserEnv.tppIntegrationUrl;\nexport const TOKEN_API_ADDRESS = browserEnv.tokenApiUrl;\nexport const PATH_TO_VALIDATE_IBAN = '/validate-iban';\nexport const STORE_WEB_APP_EVENTS_PATH = '/web-app-events';\nexport const GET_TOKEN_REQUEST_RESULT_WITH_STATUS_PATH =\n    '/token-requests/{TOKEN_REQUEST_ID}/result?memberId={MEMBER_ID}';\nexport const SET_TOKEN_REQUEST_RESULT_STATUS_INTERNAL_PATH =\n    '/token-requests/{TOKEN_REQUEST_ID}/internal/status';\nexport const GET_DIRECT_BANK_AUTH_URL_PATH =\n    '/banks/{BANK_ID}/token-requests/{TOKEN_REQUEST_ID}/auth-url';\nexport const TOKEN_REQUEST_PATH = '/token-requests/{TOKEN_REQUEST_ID}';\nexport const TRIGGER_CREATE_AND_ENDORSE_TOKEN_PATH =\n    '/token-requests/{TOKEN_REQUEST_ID}/notify/create-and-endorse-token';\nexport const GET_BANK_STATUS =\n    '/banks/{BANK_ID}/outage-status?ProductType={PRODUCT_TYPE}&TokenRequestId={TOKEN_REQUEST_ID}';\nexport const VRP_REQUEST_PATH = '/vrp-consents/{VRP_ID}';\nexport const VRP_DECLINE_PATH = '/vrp-consents/{VRP_ID}/decline';\nexport const GET_TPP_CONFIGURATIONS_FOR_VRP =\n    '/vrp-consents/{VRP_CONSENT_ID}/configurations';\nexport const INITIATE_BANK_AUTH_PATH = '/initiate-bank-auth';\nexport const CREATE_TEMPORARY_MEMBER_PATH = '/members/temporary';\nexport const UPDATE_MEMBER_PATH = '/members/{MEMBER_ID}';\n\nexport const REDACTED_VALUE = '<redacted>';\nexport const SENTRY_DSN =\n    'https://b1d54746826043bc8e3defef3f5c6d8c@sentry.io/1213193';\nexport const DEV_KEY = 'd3b08f1f-83d9-4969-98f0-73c887e95a8d';\nexport const DEFAULT_DEV_KEY = 'global-test';\nexport const GEO_LOCATION_RESTRICTION = 'GEO LOCATION RESTRICTION';\n\n// App URLs\nexport const appUrlIOS =\n    'https://itunes.apple.com/us/app/token-open-banking/id1140442537';\nexport const appUrlAndroid = '#';\n\n// Access token expiry default\nexport const DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS = 90;\n\n// Number of decimals for currency\nexport const CURRENCY_PRECISION = 4;\n\n// Token Types\nexport const TOKEN_TYPE_TRANSFER = 'TOKEN_TYPE_TRANSFER';\nexport const TOKEN_TYPE_VRP = 'TOKEN_TYPE_VRP';\nexport const TOKEN_TYPE_ACCESS = 'TOKEN_TYPE_ACCESS';\nexport const TOKEN_TYPE_STANDING_ORDER = 'TOKEN_TYPE_STANDING_ORDER';\nexport const TOKEN_TYPE_BULK_TRANSFER = 'TOKEN_TYPE_BULK_TRANSFER';\n\n// Dialogs\nexport const ROUTE_NONE = 'ROUTE_NONE';\nexport const ROUTE_CONFIG = 'ROUTE_CONFIG';\nexport const ROUTE_LOADING = 'ROUTE_LOADING';\nexport const ROUTE_ERROR = 'ROUTE_ERROR';\nexport const ROUTE_AISP = 'ROUTE_AISP';\nexport const ROUTE_PISP = 'ROUTE_PISP';\nexport const ROUTE_VRP = 'ROUTE_VRP';\nexport const ROUTE_BANK_LOADING = 'ROUTE_BANK_LOADING';\nexport const ROUTE_BANK_REDIRECT = 'ROUTE_BANK_REDIRECT';\nexport const ROUTE_REDIRECT_TO_TPP = 'ROUTE_REDIRECT_TO_TPP';\nexport const ROUTE_REDIRECT_OPTIONS = 'ROUTE_REDIRECT_OPTIONS';\nexport const ROUTE_CSRF_MISMATCH = 'ROUTE_CSRF_MISMATCH';\nexport const ROUTE_SPLASH = 'ROUTE_SPLASH';\n\n// Token Popup message types\nexport const POPUP_SUCCESS = 'POPUP_SUCCESS';\nexport const POPUP_FAILURE = 'POPUP_FAILURE';\nexport const POPUP_SHOW = 'POPUP_SHOW';\nexport const POPUP_CLOSE = 'POPUP_CLOSE';\n\n// Web-app iframe messages types\nexport const WEB_APP_IFRAME_SHOW = 'WEB_APP_IFRAME_SHOW';\nexport const WEB_APP_IFRAME_SUCCESS = 'WEB_APP_IFRAME_SUCCESS';\nexport const WEB_APP_IFRAME_FAILURE = 'WEB_APP_IFRAME_FAILURE';\nexport const WEB_APP_IFRAME_LOADED = 'WEB_APP_IFRAME_LOADED';\n\n// Token bank pop up messages types\nexport const TOKEN_BANK_POPUP = 'TOKEN_BANK_POPUP';\nexport const TOKEN_BANK_POPUP_IS_OPEN = 'TOKEN_BANK_POPUP_IS_OPEN';\nexport const TOKEN_BANK_POPUP_CLOSE = 'TOKEN_BANK_POPUP_CLOSE';\n\n// AISP steps\nexport const AISP_NONE = '/app/aisp';\nexport const AISP_CONSENT_BANK_FIRST = '/app/aisp/consent-bank-first';\nexport const AISP_ENTER_ALIAS = '/app/aisp/enter-alias';\nexport const AISP_APP_INSTALL = '/app/aisp/app-install';\nexport const AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST =\n    '/app/aisp/confirm-funds-consent-bank-first';\nexport const AISP_SELECT_BANK_BANK_FIRST = '/app/aisp/select-bank-first';\nexport const AISP_CAPTURE_CREDENTIALS = '/app/aisp/capture-credentials';\n\n//Terms and Conditions\nexport const ROUTE_TERMS_CONDITIONS = 'ROUTE_TERMS_CONDITIONS';\n\n// PISP steps\nexport const PISP_NONE = '/app/pisp';\nexport const PISP_BULK_TRANSFER_CONSENT_BANK_FIRST =\n    '/app/pisp/bulk-transfer-consent-bank-first';\nexport const PISP_ENTER_ALIAS = '/app/pisp/enter-alias';\nexport const PISP_APP_INSTALL = '/app/pisp/app-install';\nexport const PISP_TRANSFER_OVERVIEW = '/app/pisp/transfer-overview';\nexport const PISP_CONSENT_BANK_FIRST = '/app/pisp/consent-bank-first';\nexport const PISP_STANDING_ORDER_CONSENT_BANK_FIRST =\n    '/app/pisp/standing-order-consent-bank-first';\nexport const PISP_SELECT_BANK_BANK_FIRST = '/app/pisp/select-bank-first';\nexport const PISP_PAYMENT_INIT_STATUS = '/app/pisp/payment-init-status';\nexport const PISP_CAPTURE_CREDENTIALS = '/app/pisp/capture-credentials';\n\n// VRP steps\nexport const VRP_CONSENT_BANK_FIRST = '/app/pisp/vrp-consent-bank-first';\nexport const VRP_SELECT_BANK_FIRST = '/app/vrp/select-bank-first';\nexport const VRP_CONSENT_INIT_STATUS = '/app/vrp/consent-init-status';\n\n// Shared steps\nexport const LOADING_STEP = 'loading';\nexport const SPLASH_STEP = 'splash';\nexport const TPP_LOADING = 'tpp-loading';\nexport const APP_APPROVAL = 'app-approval';\n\nexport const regexp = {\n    CREDITOR_ADDRESS: /(?:transferDestinations\\.customerData\\.address\\.)(.*)/,\n    CREDITOR_ADDRESS_FIELD: /(?:transferDestinations\\.customerData\\.address\\.)?(?:.*\\.)(.*)/,\n    RETURN_REFUND_CLASS: /class=\"rt-reverse-payments-support\"/,\n};\n\n// Bank Status\nexport const BANK_OUTAGE = ['COMPLETED_OUTAGE', 'COMPLETE_OUTAGE'];\n\nexport const REGEXP_BLOCK_USER_ON_PATHS = [\n    {\n        regexp: /^https?:\\/\\/.+\\/app\\/(pisp|aisp).*$/,\n        match: true, // Block user if Regexp matches\n    },\n    {\n        regexp: /^https?:\\/\\/.+\\/app\\/pisp\\/confirmation.*$/,\n        match: false, // Don't block user if Regexp matches\n    },\n];\n\nexport const REGEXP_EXTRACT_TOKEN_REQUEST_ID = /request-token\\/([a-z0-9:]+)/i;\n\nexport const REGEXP_DIRECT_CREDENTIALS_FLOW = /^https?:\\/\\/.+\\/app\\/auth\\/credentials/;\n\n// Popup steps without token logo in header\nexport const STEPS_WITHOUT_LOGO = [\n    AISP_ENTER_ALIAS,\n    PISP_ENTER_ALIAS,\n    APP_APPROVAL,\n];\n\nexport const ROUTES_WITHOUT_BACK_BUTTON = [\n    ROUTE_TERMS_CONDITIONS,\n    ROUTE_BANK_LOADING,\n    ROUTE_ERROR,\n];\n\nexport const STEPS_WITHOUT_BACK_BUTTON = [\n    PISP_PAYMENT_INIT_STATUS,\n    VRP_CONSENT_INIT_STATUS,\n];\n\n// Banks that don't support AISP\n// TODO: add backend config\nexport const AISP_GUEST_UNSUPPORTED = ['tandem'];\n\n// on alias input in PISP, banks that don't want the subtitle displayed\nexport const BANKS_WITHOUT_SUBTITLE = ['tandem'];\n\n// Languages\nexport const languages = [\n    {\n        key: 'English',\n        code: 'en',\n    },\n    {\n        key: 'Deutsch',\n        code: 'de',\n    },\n    {\n        key: 'Slovenian',\n        code: 'si',\n    },\n    {\n        key: 'Portuguese',\n        code: 'pt',\n    },\n    {\n        key: 'Italian',\n        code: 'it',\n    },\n    {\n        key: 'French',\n        code: 'fr',\n    },\n    {\n        key: 'Czech',\n        code: 'cs',\n    },\n    {\n        key: 'Polish',\n        code: 'pl',\n    },\n    {\n        key: 'Spanish',\n        code: 'es',\n    },\n    {\n        key: 'Hungarian',\n        code: 'hu',\n    },\n    {\n        key: 'Dutch',\n        code: 'nl',\n    },\n    {\n        key: 'Romanian',\n        code: 'ro',\n    },\n];\n\n// BankSelector constants\n\n// Number of banks that are loaded at once\nexport const BANK_PAGE_SIZE = 25;\n\nexport const BANK_CHUNK_SIZE = 100;\n\n// Months\nexport const months = {\n    '01': 'Jan',\n    '02': 'Feb',\n    '03': 'Mar',\n    '04': 'Apr',\n    '05': 'May',\n    '06': 'Jun',\n    '07': 'Jul',\n    '08': 'Aug',\n    '09': 'Sept',\n    10: 'Oct',\n    11: 'Nov',\n    12: 'Dec',\n};\n\nexport const TYPE_2_ALIAS = ['iostype2flow.com.noverify'];\n\nexport const banksWithBranches = {\n    Sparkasse: false,\n    Volksbank: false,\n};\n\nexport const ALIAS_COUNTRY_LIST = {\n    uitst: [\n        'DE',\n        'NO',\n        'BE',\n        'FI',\n        'PT',\n        'BG',\n        'DK',\n        'LT',\n        'LU',\n        'LV',\n        'HR',\n        'FR',\n        'HU',\n        'SE',\n        'SK',\n        'GB',\n        'IE',\n        'US',\n        'EE',\n        'IT',\n        'GR',\n        'ES',\n        'CY',\n        'CZ',\n        'PL',\n        'RO',\n        'NL',\n    ],\n};\n\nexport const REGIONS = {\n    gb: ['GB', 'US'],\n    eu: [\n        'AT',\n        'BE',\n        'BG',\n        'HR',\n        'CY',\n        'CZ',\n        'DK',\n        'EE',\n        'FI',\n        'FR',\n        'DE',\n        'HU',\n        'IE',\n        'IT',\n        'LV',\n        'LT',\n        'LU',\n        'MT',\n        'NL',\n        'PL',\n        'PT',\n        'RO',\n        'SK',\n        'SI',\n        'ES',\n        'SE',\n    ],\n};\n\nexport const schemes = {\n    sepa: ['iban', 'bic'],\n    fasterPayments: ['accountNumber', 'sortCode'],\n    elixir: ['accountNumber'],\n    swift: ['account', 'bic'],\n    sepaInstant: ['iban', 'bic'],\n    euDomesticNonEuro: ['iban', 'bic'],\n};\n\nexport const successfulVrpStatusCodes = ['AUTHORIZED'];\n\nexport const unsuccessfulVrpStatusCodes = ['REJECTED', 'FAILED', 'REVOKED'];\n\nexport const pendingVrpStatusCodes = [\n    'PENDING_REDIRECT_AUTH_VERIFICATION',\n    'PENDING',\n];\n\nexport const processedVrpStatusCodes = [\n    'AUTHORIZED',\n    'REJECTED',\n    'FAILED',\n    'REVOKED',\n];\n\nexport const unsuccessfulStatusCodes = [\n    'INSUFFICIENT_FUNDS',\n    'FAILURE_INSUFFICIENT_FUNDS',\n    'FAILURE_INVALID_CURRENCY',\n    'FAILURE_INVALID_AMOUNT',\n    'TOKEN_ERROR',\n    'FAILURE_CANCELED',\n    'FAILURE_EXPIRED',\n    'FAILURE_DECLINED',\n    'FAILURE_GENERIC',\n    'FAILURE_PERMISSION_DENIED',\n    'INVALID_STATUS',\n    'BANK_ERROR',\n    'PENDING_EXTERNAL_AUTHORIZATION',\n];\n\nexport const successfulStatusCodes = ['SUCCESS', 'SENT'];\n\nexport const submittedStatusCodes = ['INITIATED', 'PROCESSING'];\n\nexport const errorMessageKeys = {\n    DEFAULT: 'BANK_ERROR',\n    ACCESS_DENIED: 'BANK_ERROR_ACCESS_DENIED',\n    PERMISSION_DENIED: 'BANK_ERROR_ACCESS_DENIED',\n    FAILURE_GENERIC: 'FAILURE_GENERIC',\n};\n\nexport const POLISH_API_DELIVER_MODES = {\n    STANDARD_D2: 'Standard D2',\n    STANDARD_D1: 'Standard D1',\n    URGENT_D1: 'Urgent D1',\n    EXPRESS_D0: 'Express D0',\n};\n\nexport const INTERNAL_TRANSFER_STATUS_GROUPS = {\n    UNSUCCESSFUL: [\n        'FAILURE_INVALID_CURRENCY',\n        'PENDING_EXTERNAL_AUTHORIZATION',\n        'FAILURE_CANCELED',\n        'FAILURE_EXPIRED',\n        'FAILURE_DECLINED',\n        'FAILURE_GENERIC',\n        'FAILURE_PERMISSION_DENIED',\n        'INVALID_STATUS',\n    ],\n    INSUFFICIENT_FUNDS: ['INSUFFICIENT_FUNDS', 'FAILURE_INSUFFICIENT_FUNDS'],\n};\n\nexport const VRP_CONSENT_STATUS = {\n    PENDING_REDIRECT_AUTH: 'PENDING_REDIRECT_AUTH',\n    PENDING_MORE_INFO: 'PENDING_MORE_INFO',\n    AUTHORIZED: 'AUTHORIZED',\n    EXPIRED: 'EXPIRED',\n    UNSUCCESSFUL: 'UNSUCCESSFUL',\n    REJECTED: 'REJECTED', // The request has been rejected.\n};\n\nexport const PAYMENT_TYPE_GET_BANKS_OPTIONS = {\n    SUPPORTS_VRP: 'supports_variable_recurring_payment',\n    SUPPORTS_AIS: 'supports_information',\n    SUPPORTS_SCHEDULED_PAYMENTS: 'supports_scheduled_payment',\n    SUPPORTS_SEND_PAYMENT: 'supports_send_payment',\n    SUPPORTS_STANDING_ORDER: 'supports_standing_order',\n    SUPPORTS_BULK_TRANSFER: 'supports_bulk_transfer',\n};\n\n// Bank selector presets\nexport const BANK_SELECTION_PRESETS = {\n    ENABLE_ALL: 'ENABLE_ALL',\n    DISABLE_ALL: 'DISABLE_ALL',\n    CUSTOM: 'CUSTOM',\n};\n\n// Custom headers\nexport const CUSTOM_HEADERS = {\n    TRANSIENT: {\n        'token-trace-auth-issuer': 'FRONTEND',\n        'token-trace-member-type': 'TRANSIENT',\n    },\n    INITIATED_BY: {\n        'token-trace-initiated-by': 'FRONTEND',\n    },\n    MEMBER_ID: 'token-trace-member-id',\n};\n","/* eslint-disable max-len */\n// User-friendly messages\n// intlKey must correspond to a localization key in common.exception in messages.js\n// These are displayed to the user after redirection to the ErrorPage\nexport const INTL_EXCEPTION_REQUEST_FAILED = {\n    name: 'EXCEPTION_REQUEST_FAILED',\n    intlKey: 'requestFailed',\n};\nexport const INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT = {\n    name: 'EXCEPTION_APP_NOTIFICATION_TIMEOUT',\n    intlKey: 'appNotificationTimeout',\n};\nexport const INTL_EXCEPTION_INVALID_ALIAS = {\n    name: 'EXCEPTION_INVALID_ALIAS',\n    intlKey: 'invalidAlias',\n};\nexport const INTL_EXCEPTION_FAILED_NOTIFICATION = {\n    name: 'EXCEPTION_FAILED_NOTIFICATION',\n    intlKey: 'failedNotification',\n};\nexport const INTL_EXCEPTION_TRANSACTION_DENIED = {\n    name: 'EXCEPTION_TRANSACTION_DENIED',\n    intlKey: 'transactionDenied',\n};\nexport const INTL_EXCEPTION_NO_LINKED_ACCOUNTS = {\n    name: 'EXCEPTION_NO_LINKED_ACCOUNTS',\n    intlKey: 'noLinkedAccounts',\n};\nexport const INTL_EXCEPTION_WEB_CRYPTO = {\n    name: 'EXCEPTION_WEB_CRYPTO',\n    intlKey: 'webCrypto',\n};\nexport const INTL_EXCEPTION_INDEXED_DB = {\n    name: 'EXCEPTION_INDEXED_DB',\n    intlKey: 'indexedDB',\n};\nexport const INTL_EXCEPTION_LOCALSTORAGE = {\n    name: 'EXCEPTION_LOCALSTORAGE',\n    intlKey: 'localStorage',\n};\n\n//These errors are passed to TPP according to the status from retrieveTokenRequest's response.\nexport const EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL = {\n    PROCESSED: {\n        name: 'EXCEPTION_TOKEN_REQUEST_PROCESSED',\n        intlKey: 'requestProcessed',\n        message: 'This request has already been processed',\n        options: {\n            redirectBack: false,\n        },\n    },\n    REJECTED: {\n        name: 'EXCEPTION_TOKEN_REQUEST_REJECTED',\n        intlKey: 'requestRejected',\n        message: 'This request has already been rejected',\n        options: {\n            redirectBack: false,\n        },\n    },\n    EXPIRED: {\n        name: 'EXCEPTION_TOKEN_REQUEST_EXPIRED',\n        intlKey: 'requestExpired',\n        message: 'This request has been expired',\n        options: {\n            redirectBack: false,\n        },\n    },\n};\n\nexport const EXCEPTION_TOKEN_REQUEST_RESTRICTED = {\n    name: 'EXCEPTION_TOKEN_REQUEST_GEO_LOCATION_RESTRICTED',\n    intlKey: 'geoLocationRestricted',\n    message: 'This service is not available in your location',\n    options: {\n        redirectBack: false,\n        intlTitleKey: 'unavailableServiceTitle',\n    },\n};\n\nexport const EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE = {\n    name: 'EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE',\n    intlKey: 'serviceTemproarailyUnavailable',\n    message: 'This service is temporarily not available',\n    options: {\n        redirectBack: false,\n        intlTitleKey: 'unavailableServiceTitle',\n    },\n};\n\nexport const EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL = {\n    PENDING_WEB_APP_CONSENT_DECLINED: {\n        name: 'EXCEPTION_PENDING_WEB_APP_CONSENT_DECLINED',\n        intlKey: 'consentDeclined',\n        message: 'Consent declined by PSU at web-app',\n        options: {\n            redirectBack: false,\n        },\n    },\n    PENDING_CONSENT_SENT_TO_BANK: {\n        name: 'EXCEPTION_PENDING_CONSENT_SENT_TO_BANK',\n        intlKey: 'consentSentToBank',\n        message: 'Consent has been sent to the bank',\n        options: {\n            redirectBack: false,\n        },\n    },\n    PROCESSING_CONSENT_ACCEPTED_BY_BANK: {\n        name: 'EXCEPTION_PROCESSING_CONSENT_ACCEPTED_BY_BANK',\n        intlKey: 'consentAcceptedByBank',\n        message: 'Consent has been accepted by the bank',\n        options: {\n            redirectBack: false,\n        },\n    },\n    PROCESSING_CALLBACK_INITIATED_BY_TPP: {\n        name: 'EXCEPTION_PROCESSING_CALLBACK_INITIATED_BY_TPP',\n        intlKey: 'callbackInitiatedByTpp',\n        message: 'Callback has initiated by the tpp',\n        options: {\n            redirectBack: false,\n        },\n    },\n    // PENDING_REDIRECT_URL_SENT: {\n    //     name: 'EXCEPTION_PENDING_REDIRECT_URL_SENT',\n    //     intlKey: 'redirectUrlSent',\n    //     message: 'User has been redirected to the bank',\n    //     options: {\n    //         redirectBack: false,\n    //         ignoreIfSameSession: true,\n    //     },\n    // },\n    PENDING_WEB_APP_SENT_USER_TO_BANK: {\n        name: 'EXCEPTION_PENDING_WEB_APP_SENT_USER_TO_BANK',\n        intlKey: 'userSentToBank',\n        message: 'User has been redirected to the bank',\n        options: {\n            redirectBack: false,\n            ignoreIfSameSession: true,\n        },\n    },\n};\n\nexport const EXCEPTION_VRP_REQUEST = {\n    PROCESSED: {\n        error: 'EXCEPTION_VRP_REQUEST_PROCESSED',\n        message:\n            'This request has already been processed with successful status',\n    },\n    REJECTED: {\n        name: 'EXCEPTION_VRP_REQUEST_REJECTED',\n        intlKey: 'requestRejected',\n        message: 'This request has already been rejected',\n    },\n    EXPIRED: {\n        name: 'EXCEPTION_VRP_REQUEST_EXPIRED',\n        intlKey: 'requestExpired',\n        message: 'This request has been expired',\n    },\n    UNSUCCESSFUL: {\n        error: 'EXCEPTION_VRP_REQUEST_UNSUCCESSFUL',\n        message:\n            'We are unable to process your request due to some technical error.',\n    },\n};\n\n// Technical messages: values should not correspond to localization keys\n// These are logged in the console after redirection to the ErrorPage\n// while a generic error message is displayed to the user\nexport const EXCEPTION_UNSUPPORTED_MESSAGING_API =\n    'EXCEPTION_UNSUPPORTED_MESSAGING_API';\nexport const EXCEPTION_UNSUPPORTED_CONTEXT = 'EXCEPTION_UNSUPPORTED_CONTEXT';\nexport const EXCEPTION_NO_PARENT_WINDOW = 'EXCEPTION_NO_PARENT_WINDOW';\nexport const EXCEPTION_UNVERIFIED_ALIAS = 'EXCEPTION_UNVERIFIED_ALIAS';\nexport const EXCEPTION_NO_REDEEMER_ALIAS = 'EXCEPTION_NO_REDEEMER_ALIAS';\nexport const EXCEPTION_WRONG_ALIAS_TYPE = 'EXCEPTION_WRONG_ALIAS_TYPE';\nexport const EXCEPTION_NO_DESTINATION = 'EXCEPTION_NO_DESTINATION';\nexport const EXCEPTION_NO_RESOURCE = 'EXCEPTION_NO_RESOURCE';\nexport const EXCEPTION_BANK_FLOW_FAILURE = 'EXCEPTION_BANK_FLOW_FAILURE';\nexport const EXCEPTION_INVALID_TOKEN_REQUEST_URL =\n    'EXCEPTION_INVALID_TOKEN_REQUEST_URL';\nexport const EXCEPTION_INVALID_PATH = 'EXCEPTION_INVALID_PATH';\nexport const EXCEPTION_INVALID_BANK = 'EXCEPTION_INVALID_BANK';\nexport const EXCEPTION_INVALID_TRANSFER_DESTINATION_URL =\n    'EXCEPTION_INVALID_TRANSFER_DESTINATION_URL';\nexport const EXCEPTION_REQUEST_CANCELLED = 'EXCEPTION_REQUEST_CANCELLED';\nexport const EXCEPTION_TOKEN_ERROR = 'EXCEPTION_TOKEN_ERROR';\nexport const EXCEPTION_BANK_ERROR = 'EXCEPTION_BANK_ERROR';\nexport const EXCEPTION_UPDATE_VRP_CONSENT_BANK =\n    'EXCEPTION_UPDATE_VRP_CONSENT_BANK';\nexport const EXCEPTION_INITIATE_BANK_AUTH = 'EXCEPTION_INITIATE_BANK_AUTH';\nexport const EXCEPTION_INITIATE_BANK_AUTH_TIMEOUT =\n    'EXCEPTION_INITIATE_BANK_AUTH_TIMEOUT';\nexport const EXCEPTION_ACCESS_DENIED = 'EXCEPTION_ACCESS_DENIED';\n","import UAParser from 'ua-parser-js';\n\n// Simple user agent validators\nexport const isInternetExplorer = () => /Trident\\/|MSIE/.test(window.navigator.userAgent);\nexport const isMSEdge = () => /Edge/.test(window.navigator.userAgent);\nexport const isSafari = () => /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);\n\n// String utils\nexport const stringEndsWith = (str, suffix) => {\n    if (((str === null) || (str === '')) || ((suffix === null) || (suffix === ''))) {\n        return false;\n    }\n    str = str.toString();\n    suffix = suffix.toString();\n    return str.indexOf(suffix, str.length - suffix.length) !== -1;\n};\n\nexport const normalizeString = string => {\n    return string && string.toUpperCase().replace(/ /g, '');\n};\n\nexport const defaultSearch = searchTerm => {\n    const startsWithRegex = new RegExp(`^${searchTerm}`, 'i');\n    const includesRegex = new RegExp(searchTerm, 'i');\n    const startsWith = ({data, key, title}) =>\n        startsWithRegex.test(data) || startsWithRegex.test(title) ||\n        startsWithRegex.test(key);\n    const includes = ({data, key, title}) =>\n        includesRegex.test(data) || includesRegex.test(title) ||\n        includesRegex.test(key);\n    return {startsWith, includes};\n};\n\n// Data type validators\nexport const isFunction = v => (typeof v === 'function');\nexport const isUndef = v => (v == undefined);\nexport const isNull = v => (v === null);\nexport const isObject = v => (typeof v === 'object' && !(v instanceof Array) && !isNull(v));\nexport const isNumber = v => (typeof v === 'number');\n\n// Misc\nexport const generateNonce = () => {\n    return Math.random().toString(36).substring(2) + Math.random().toString(36).substring(2);\n};\n\nexport const compose = (...fns) => x => fns.reduce((v, f) => f(v), x);\n\nconst keyDefaults = {\n    fetchPagingKey: 'paging',\n    fetchDataKey: 'data',\n    idKey: 'id',\n    titleKey: 'title',\n    dataKey: 'data',\n    extraKey: 'extra',\n};\n\nexport const formatDataList = (source, {\n    fetchPagingKey, fetchDataKey, idKey, titleKey, dataKey, extraKey,\n    customFormat,\n} = keyDefaults) => {\n    const paging = source && source[fetchPagingKey] ||\n        {page: 1, perPage: 25, pageCount: 1};\n    const formatFunction = customFormat || (item => item);\n    const data = (fetchDataKey && source[fetchDataKey] || source).map(rawData => {\n        const formattedData = formatFunction(rawData);\n        return {\n            key: formattedData[idKey],\n            title: formattedData[titleKey],\n            data: formattedData[dataKey],\n            extra: formattedData[extraKey],\n            rawData,\n        };\n    });\n    return {\n        data,\n        paging,\n    };\n};\n\nexport const getUserAgent = () => {\n    const parser = new UAParser();\n    const result = parser.getResult();\n    const os = {\n        name: result.os.name,\n        version: result.os.version,\n    };\n    const browser = {\n        name: result.browser.name,\n        version: result.browser.version,\n    };\n    return {\n        os,\n        browser,\n    };\n};\n\n// Force redraw hack for safari\nexport const forceRedrawForSafari = () => {\n    const ua = getUserAgent();\n    if (ua.browser.name !== 'Safari') return;\n    setTimeout(() => {\n        const toDraw = document.getElementById('app');\n        toDraw.style.display = 'none';\n        setTimeout(function() {\n            toDraw.style.display = '';\n        }, 1);\n    }, 10);\n};\n\nexport const getAriaLabelForList = (listClass, item) => {\n    if (listClass.includes('BankSelector-country-dropdown') && item.data) {\n        return item.data.split(' ').slice(1).join(' ');\n    } else if (listClass.includes('BankSelector-banks') && item.data) {\n        return item.title + item.data;\n    } else if (item.data) {\n        return item.data;\n    } else {\n        return item.title;\n    }\n};\n","export const developerKeys = {\n    'd3b08f1f-83d9-4969-98f0-73c887e95a8d': 'token.io',\n    '63c763ed-0ae7-406a-a70c-ef4e07922459': 'tokenapp@token.io',\n    yodlee1234: 'yodlee@token.io',\n    '5qY7lqQw8NOl9gng0ZHgT4xdiDqxqoGVutuZwrUYQsI': 'tempdev@token.io',\n    icefire: 'icefire@token.io',\n    xcordis123: 'xcordis@token.io',\n    virtusa123: 'virtusa@token.io',\n    sbsi123: 'sberbank@token.io',\n    paymentworld123: 'paymentworld@token.io',\n    finacle123: 'finacle@token.io',\n    creditagricole123: 'creditagricole@token.io',\n    cardlytics123: 'cardlytics@token.io',\n    swipppay123: 'swipppay@token.io',\n    caxton123: 'caxton@token.io',\n    thehouseshop123: 'thehouseshop@token.io',\n    squirrel123: 'squirrel@token.io',\n    fairfx123: 'fairfx@token.io',\n    elephant123: 'elephant@token.io',\n    jeton9678: 'jeton@token.io',\n    aptap1432: 'aptap@token.io',\n    't0k3n!': 'internal@token.io',\n    '4qY7lqQw8NOl9gng0ZHgT4xdiDqxqoGVutuZwrUYQsI': 'ratelimited@token.io',\n    'f3982819-5d8d-4123-9601-886df2780f42': 'tests@token.io',\n    '2e67a21e-7017-4af3-a456-74cba2b1c9ed': 'mastercard@token.io',\n    mastercard: 'mastercard@token.io',\n    volantetest: 'volantetest@token.io',\n    couttstest: 'couttstest@token.io',\n    'caxton-test': 'cxep-test@token.io',\n    cma9test: 'cma9test@token.io',\n    'contis-test': 'contis-test@token.io',\n    sturents: 'sturents@token.io',\n    'unity-test': 'unity-test@token.io',\n    'avantcard-test': 'avantcard-test@token.io',\n    'leumi-test': 'leumi-test@token.io',\n    'pnbil-test': 'pnbil-test@token.io',\n    'inbank-test': 'inbank-test@token.io',\n    'germany-test': 'germany-test@token.io',\n    'french-test': 'french-test@token.io',\n    'global-test': 'global-test@token.io',\n    'sbsi-test': 'sbsi-test@token.io',\n    'fincom-test': 'fincom-test@token.io',\n    'tuba-test': 'tuba-test@token.io',\n    'talkremit-test': 'talkremit-test@token.io',\n    'gohenry-test': 'gohenry-test@token.io',\n    'bitstamp-test': 'bitstamp-test@token.io',\n    'bitstamp-dev': 'bitstamp-dev@token.io',\n    thinkmoney: 'thinkmoney@token.io',\n    'tandem-test': 'tandem-test@token.io',\n    'grpl-test': 'grpl-test@token.io',\n    centrefordentistry: 'centrefordentistry@token.io',\n    'n26-test': 'n26-test@token.io',\n    anpost: 'anpost-test@token.io',\n    sbhr: 'sbhr-test@token.io',\n    vertbase: 'vertbase@token.io',\n    saltedge: 'saltedge@token.io',\n    toshl: 'toshl@token.io',\n    blackpepper: 'blackpepper@token.io',\n    elavon: 'elavon@token.io',\n    ghana: 'ghana@token.io',\n    binarapps: 'binarapps@token.io',\n    smartym: 'smartym@token.io',\n    straal: 'straal@token.io',\n    sumup: 'sumup@token.io',\n    'jaja-test': 'jaja-test@token.io',\n    etherbank: 'etherbank@token.io',\n    infosys: 'infosys-demo@token.io',\n    'lhv-test': 'lhv-test@token.io',\n    airwallex: 'airwallex@token.io',\n    soldo: 'soldo@token.io',\n    coop: 'coop@token.io',\n    'coop-fank': 'coop-fank@token.io',\n    northmill: 'northmill@token.io',\n};\n","export const mandatoryFieldsConfig = {\n    transfer: {\n        creditorName:\n            'transfer_body.instructions.transfer_destinations.customer_data.legal_names',\n        debtorName:\n            'transfer_body.instructions.source.customer_data.legal_names',\n        debtorAccount: 'transfer_body.instructions.source.account_identifier',\n        debtorBic: 'transfer_body.instructions.source.bic',\n        creditorAddress: [\n            'transfer_body.instructions.transfer_destinations.customer_data.address.street',\n            'transfer_body.instructions.transfer_destinations.customer_data.address.house_number',\n            'transfer_body.instructions.transfer_destinations.customer_data.address.post_code',\n            'transfer_body.instructions.transfer_destinations.customer_data.address.country',\n            'transfer_body.instructions.transfer_destinations.customer_data.address.city',\n        ],\n        stet: {\n            creditorAgent:\n                'transfer_body.instructions.metadata.provider_transfer_metadata.stet_transfer_metadata.beneficiary.creditor_agent',\n        },\n        polishApi: {\n            deliveryMode:\n                'transfer_body.instructions.metadata.provider_transfer_metadata.polish_api_transfer_metadata.delivery_mode',\n        },\n        bban: 'transfer_body.instructions.source.account_identifier.bban',\n    },\n    standingOrder: {\n        creditorName:\n            'standing_order_body.instructions.transfer_destinations.customer_data.legal_names',\n        debtorName:\n            'standing_order_body.instructions.source.customer_data.legal_names',\n        debtorAccount:\n            'standing_order_body.instructions.source.account_identifier',\n        debtorBic: 'standing_order_body.instructions.source.bic',\n        stet: {\n            creditorAgent:\n                'standing_order_body.instructions.metadata.provider_standing_order_metadata.stet_standing_order_metadata.beneficiary.creditor_agent',\n        },\n        polishApi: {\n            deliveryMode:\n                'standing_order_body.instructions.metadata.provider_standing_order_metadata.polishapi_standing_order_metadata.delivery_mode',\n        },\n        bban: 'transfer_body.instructions.source.account_identifier.bban',\n    },\n    access: {\n        iban: 'access_body.resource_type_list.source.account_identifier.iban',\n        currency: 'access_body.resource_type_list.source.currency',\n    },\n};\n","const localStorageWrapper = {\n    set: (k, v) => {\n        try {\n            if (!k || !v) {\n                return;\n            }\n            if (typeof v === 'object') {\n                v = JSON.stringify(v);\n            }\n            localStorage.setItem(k, v);\n        } catch (e) {\n            // do nothing\n        }\n    },\n    get: k => {\n        let v;\n        try {\n            if (!k) {\n                return localStorage;\n            }\n            v = localStorage.getItem(k);\n            return JSON.parse(v);\n        } catch (e) {\n            return v;\n        }\n    },\n    remove: k => {\n        try {\n            if (!k) {\n                return;\n            }\n            localStorage.removeItem(k);\n        } catch (e) {\n            // do nothing\n        }\n    },\n    clear: () => {\n        try {\n            localStorage.clear();\n        } catch (e) {\n            // do nothing\n        }\n    },\n};\n\nexport default localStorageWrapper;\n","const sessionStorageWrapper = {\n    set: (k, v) => {\n        try {\n            if (!k) {\n                return;\n            }\n            if (typeof v === 'object') {\n                v = JSON.stringify(v);\n            }\n            window.sessionStorage.setItem(k, v);\n        } catch (e) {\n            // do nothing\n        }\n    },\n    get: k => {\n        let v;\n        try {\n            if (!k) {\n                return window.sessionStorage;\n            }\n            v = window.sessionStorage.getItem(k);\n            return JSON.parse(v);\n        } catch (e) {\n            return v;\n        }\n    },\n    remove: k => {\n        if (!k) {\n            return;\n        }\n        try {\n            window.sessionStorage.removeItem(k);\n        } catch (e) {\n            // do nothing\n        }\n    },\n};\n\nexport default sessionStorageWrapper;\n","import { CREDENTIAL_FIELD_TYPE as fieldType } from 'config/constants';\n\nconst segregateCredentials = overallCredentials => {\n    let flickerCode;\n    let decoupledFlow = false;\n\n    const staticImages = [];\n    const captureCredentials = [];\n    const psuMessages = [];\n\n    if (overallCredentials) {\n        overallCredentials?.map(data => {\n            switch (data.type) {\n                case fieldType.FLICKER:\n                    flickerCode = data.flickerCode;\n                    break;\n                case fieldType.IMAGE:\n                    staticImages.push(data);\n                    break;\n                case fieldType.PSU_MESSAGE:\n                    psuMessages.push(data);\n                    break;\n                case fieldType.DECOUPLED:\n                    psuMessages.push(data);\n                    decoupledFlow = true;\n                    break;\n                default:\n                    if (data.options) {\n                        data = {\n                            ...data,\n                            type: fieldType.OPTIONS,\n                        };\n                    }\n                    captureCredentials.push(data);\n            }\n        });\n    }\n\n    return {\n        psuMessages,\n        staticImages,\n        flickerCode,\n        decoupledFlow,\n        captureCredentials,\n    };\n};\n\nexport default segregateCredentials;\n","import { regexp } from 'config/constants';\n\nconst addRefundTextIfNotPresent = ({\n    customConsentText,\n    defaultRefundText,\n}) => {\n    const isRefundTextPresent = regexp.RETURN_REFUND_CLASS.test(\n        customConsentText,\n    );\n    if (!isRefundTextPresent) {\n        customConsentText += defaultRefundText;\n    }\n    return customConsentText;\n};\n\nexport default addRefundTextIfNotPresent;\n","import { schemes as schemeConfig } from 'config/constants';\nimport { camelToSnakeCase } from '../util';\n\nconst getSupportedPaymentNetworks = destinations => {\n    try {\n        const supportedPaymentNetworks = [];\n        for (const destination of destinations) {\n            const filtered = Object.keys(destination)\n                .filter(value => Object.keys(schemeConfig).includes(value))\n                .map(paymentNetwork => camelToSnakeCase(paymentNetwork));\n            supportedPaymentNetworks.push(...filtered);\n        }\n        return [...new Set(supportedPaymentNetworks)];\n    } catch (e) {\n        // do nothing\n    }\n};\n\nexport default getSupportedPaymentNetworks;\n","const getFeatureFromTppConfig = (\n    configurations,\n    featureKey,\n    defaultValue = null,\n) => {\n    if (configurations && Object.keys(configurations).length !== 0) {\n        const featureKeySplit = featureKey.split('.');\n        let configKey = featureKeySplit[0];\n        while (featureKeySplit.length > 1) {\n            featureKeySplit.shift();\n            if (\n                configurations &&\n                Object.prototype.hasOwnProperty.call(configurations, configKey)\n            ) {\n                configurations = configurations?.[configKey];\n                configKey = featureKeySplit[0];\n            } else {\n                configKey = configKey.concat('.', featureKeySplit[0]);\n            }\n        }\n        return typeof configurations?.[configKey] === 'boolean'\n            ? !!configurations?.[configKey]\n            : !isNullOrUndefined(configurations?.[configKey])\n                ? configurations?.[configKey]\n                : defaultValue;\n    }\n    return defaultValue;\n};\n\nconst isNullOrUndefined = value => {\n    if (value === null || value === undefined) {\n        return true;\n    }\n    return false;\n};\n\nexport default getFeatureFromTppConfig;\n","import {\n    getTokenReqIdFromURL,\n    blockUserOnURLPaths,\n    sessionStorageWrapper,\n} from '.';\n\nconst getInitialReduxState = () => {\n    const currentTokenReqId = getTokenReqIdFromURL();\n    const oldTokenRequestId = sessionStorageWrapper.get('token-request-id');\n    if (sessionStorageWrapper.get('blockUserToGoBack') === true) {\n        if (oldTokenRequestId) {\n            if (\n                oldTokenRequestId === currentTokenReqId ||\n                blockUserOnURLPaths()\n            ) {\n                try {\n                    return sessionStorageWrapper.get('reduxState');\n                } catch (e) {\n                    // eslint-disable-next-line no-console\n                    console.error(e);\n                }\n            }\n        }\n    }\n    if (currentTokenReqId) {\n        sessionStorageWrapper.set('blockUserToGoBack', false);\n        sessionStorageWrapper.set('token-request-id', currentTokenReqId);\n        sessionStorageWrapper.remove('tokenRequestStatus');\n    }\n    return window.history.state;\n};\n\nexport default getInitialReduxState;\n","import { REGEXP_EXTRACT_TOKEN_REQUEST_ID } from 'config/constants';\n\nconst getTokenReqIdFromURL = () => {\n    return window.location.href.match(REGEXP_EXTRACT_TOKEN_REQUEST_ID)?.[1];\n};\n\nexport default getTokenReqIdFromURL;\n","import { getURLParameter } from '.';\nimport {\n    DEV_KEY,\n    DEFAULT_DEV_KEY,\n    REGEXP_DIRECT_CREDENTIALS_FLOW,\n} from 'config/constants';\nimport getTokenReqIdFromURL from './getTokenReqIdFromURL';\nimport sessionStorageWrapper from './sessionStorageWrapper';\n\n// Dev key from session storage\nconst getDevKeyFromSession = () => {\n    const dkFromSession = sessionStorageWrapper.get('devKey');\n    if (\n        !getTokenReqIdFromURL() &&\n        dkFromSession &&\n        dkFromSession !== 'undefined'\n    ) {\n        return dkFromSession;\n    }\n    return null;\n};\n\nconst getIsDirectCredentialsFlow = () => {\n    return REGEXP_DIRECT_CREDENTIALS_FLOW.test(window.location.href);\n};\n\nconst getInstantDevKey = () => {\n    const dkFromURL = getURLParameter('dk'); // Dev key directly from initial token request webapp URL\n    const dkFromSession = getDevKeyFromSession();\n    const isDirectCredsFlow = getIsDirectCredentialsFlow();\n    if (dkFromURL) {\n        return dkFromURL;\n    } else if (isDirectCredsFlow) {\n        return DEFAULT_DEV_KEY;\n    } else if (dkFromSession) {\n        return dkFromSession;\n    } else {\n        return DEV_KEY;\n    }\n};\n\nexport default getInstantDevKey;\n","import { REGEXP_BLOCK_USER_ON_PATHS } from 'config/constants';\n\nconst blockUserOnURLPaths = () => {\n    try {\n        const REGEXPS = REGEXP_BLOCK_USER_ON_PATHS.filter(entity =>\n            entity.regexp?.test(window.location.href),\n        );\n\n        let blockUserOnPath = false;\n        if (REGEXPS?.length > 0) {\n            blockUserOnPath = REGEXPS.reduce(\n                (prev, curr) => prev && curr?.match,\n                true,\n            );\n        }\n\n        if (blockUserOnPath) {\n            return true;\n        }\n    } catch (e) {\n        // Do nothing\n        console.error(e);\n    }\n    return false;\n};\n\nexport default blockUserOnURLPaths;\n","import { mandatoryFieldsConfig as mandatoryConfig } from 'config/mandatoryFields';\n\nexport const isPropertiesNullOrEmpty = (find, attr) => {\n    if (!find) {\n        return true;\n    }\n    if (!attr) return find && Object.values(find).some(el => !el);\n    else return find && attr.some(v => !find[v]);\n};\n\nconst checkMandatoryFieldsPresent = (\n    mandatoryFields,\n    requiredMandatoryFields,\n    type = 'transfer',\n) => {\n    const creditorAcc =\n        mandatoryFields?.instructions?.transferDestinations?.[0];\n    const creditorLegalNames = creditorAcc?.customerData?.legalNames?.[0];\n    const creditorAgent =\n        mandatoryFields?.stetMetadata?.beneficiary?.creditorAgent;\n    const sourceBIC =\n        mandatoryFields?.instructions?.source?.bic ||\n        mandatoryFields?.instructions?.source?.account?.iban?.bic;\n\n    if (\n        requiredMandatoryFields?.fields?.includes(\n            mandatoryConfig[type]?.debtorName,\n        ) &&\n        !mandatoryFields?.instructions?.source?.customerData?.legalNames?.[0]\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.fields?.includes(\n            mandatoryConfig[type]?.creditorName,\n        ) &&\n        !creditorLegalNames\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.fields?.includes(\n            mandatoryConfig[type]?.debtorBic,\n        ) &&\n        !sourceBIC\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.['stetFields']?.includes(\n            mandatoryConfig[type]?.stet?.creditorAgent,\n        ) &&\n        isPropertiesNullOrEmpty(creditorAgent, ['name', 'bicFi'])\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.['polishapiFields']?.includes(\n            mandatoryConfig[type]?.polishApi?.deliveryMode,\n        ) &&\n        isPropertiesNullOrEmpty(mandatoryFields?.polishApiMetadata, [\n            'deliveryMode',\n        ])\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.fields?.includes(\n            mandatoryConfig[type]?.iban,\n        ) &&\n        isPropertiesNullOrEmpty(mandatoryFields?.source?.accountIdentifier, [\n            'iban',\n        ])\n    ) {\n        return false;\n    } else if (\n        requiredMandatoryFields?.fields?.includes(\n            mandatoryConfig[type]?.currency,\n        ) &&\n        isPropertiesNullOrEmpty(mandatoryFields?.source, ['currency'])\n    ) {\n        return false;\n    }\n    return true;\n};\n\nexport default checkMandatoryFieldsPresent;\n","import {\n    CURRENCY_PRECISION,\n    LS_VERSION,\n    months,\n    TOKEN_ENV,\n    TPP_INTEGRATION_ADDRESS,\n    TOKEN_POPUP_NAME,\n    TOKEN_WEB_APP_IFRAME_NAME,\n    INTERNAL_TRANSFER_STATUS_GROUPS as transferStatusGroups,\n    PATH_TO_VALIDATE_IBAN,\n    schemes as schemeConfig,\n    REQUEST_TYPE,\n    CUSTOM_HEADERS,\n} from 'config/constants';\nimport {\n    INTL_EXCEPTION_INDEXED_DB,\n    INTL_EXCEPTION_LOCALSTORAGE,\n    INTL_EXCEPTION_WEB_CRYPTO,\n} from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\nimport { getUserAgent } from '@token-io/lib-web-components/src/Util';\nimport msg from 'config/locales/en.json';\nimport { addBreadcrumb } from '@sentry/browser';\nimport { parse } from 'query-string';\nimport uaParser from 'ua-parser-js';\nimport axios from 'axios';\nimport { topBanksList } from './../config/topBanksList';\nimport { developerKeys } from './../config/devKeys';\nimport { mandatoryFieldsConfig as mandatoryConfig } from 'config/mandatoryFields';\nimport _ from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\nimport DOMPurify from 'dompurify';\nimport localStorageWrapper from './localStorageWrapper';\nimport sessionStorageWrapper from './sessionStorageWrapper';\n\nexport const isDesktop = !uaParser().device.type;\nexport const isMobile = !isDesktop;\n\nexport const isPopup = () =>\n    window.opener &&\n    window !== window.opener &&\n    window.name === TOKEN_POPUP_NAME;\n\nexport const isContextIframe = () =>\n    window.frames && window.frames.name === TOKEN_WEB_APP_IFRAME_NAME;\n\nexport const isAnyIframe = () => {\n    try {\n        return window.self !== window.top;\n    } catch (e) {\n        // Cross-origin access to window.top throws, which only\n        // happens when the page is embedded in a foreign frame.\n        return true;\n    }\n};\n\nexport const getWebappContext = () => {\n    let context = 'UNKNOWN';\n    if (isPopup()) {\n        context = 'POP_UP';\n    } else if (isAnyIframe()) {\n        context = 'IFRAME';\n    } else if (isMobile) {\n        context = 'REDIRECT';\n    }\n\n    // add suffix\n    if (isMobile) {\n        context = context + '_MOBILE';\n    } else {\n        context = context + '_DESKTOP';\n    }\n\n    return context;\n};\n\nexport const validateBrowserCompatibility = () => {\n    try {\n        if (!localStorageWrapper.get()) {\n            throw new TokenException(INTL_EXCEPTION_LOCALSTORAGE);\n        }\n        if (!window.crypto && !window.msCrypto) {\n            throw new TokenException(INTL_EXCEPTION_WEB_CRYPTO);\n        }\n        if (!window.indexedDB) {\n            throw new TokenException(INTL_EXCEPTION_INDEXED_DB);\n        }\n    } catch (e) {\n        // do nothing\n        console.error(e);\n    }\n};\n\nexport const getSentryInterceptor = () => ({\n    onFulfilled(res = {}) {\n        addBreadcrumb({\n            category: 'ttid',\n            message: res.headers?.['token-trace-id'],\n            data: { url: res.config?.url },\n        });\n        return res;\n    },\n    onRejected(err = {}) {\n        addBreadcrumb({\n            category: 'ttid-error',\n            message: err.response?.headers?.['token-trace-id'],\n            data: { error: err.response?.data },\n        });\n        return Promise.reject(err);\n    },\n});\n\nexport const poll = async (\n    fn,\n    interval,\n    timeout,\n    timeoutException,\n    cancelled,\n    cancelledCb,\n) => {\n    const startTime = new Date().getTime();\n    while (!cancelled()) {\n        try {\n            return await fn();\n        } catch (e) {\n            if (new Date().getTime() - startTime > timeout) {\n                cancelledCb();\n                if (timeoutException) {\n                    throw new TokenException(\n                        timeoutException,\n                        timeoutException,\n                    );\n                }\n            } else if (!cancelled()) {\n                await new Promise(resolve => setTimeout(resolve, interval));\n            }\n        }\n    }\n};\n\nexport const pollUntil = async ({\n    fn,\n    validate,\n    interval,\n    timeout,\n    cancelledCb,\n    failOnReject,\n}) => {\n    const startTime = new Date().getTime();\n\n    const executePoll = async (resolve, reject) => {\n        const currentTime = new Date().getTime();\n        try {\n            const result = await fn();\n            if (validate(result)) {\n                return resolve(result);\n            }\n        } catch (e) {\n            if (failOnReject) {\n                return reject(e);\n            } else {\n                // Do nothing\n            }\n        }\n\n        if (currentTime - startTime > timeout) {\n            cancelledCb(resolve);\n        } else {\n            setTimeout(executePoll, interval, resolve, reject);\n        }\n    };\n\n    return new Promise(executePoll);\n};\n\nexport const getUserDeviceMetadata = () => {\n    const ua = getUserAgent();\n    return {\n        application: ua.browser.name,\n        applicationVersion: ua.browser.version,\n        device: ua.os.name,\n    };\n};\n\nexport const formatCurrency = (\n    amount = 0,\n    currency = 'USD',\n    formatNumber = x => parseFloat(x).toFixed(2),\n) => {\n    return formatNumber(amount, { style: 'currency', currency });\n};\n\nexport const getCurrentDateTimeString = () => {\n    const date = new Date();\n    const day = String(date.getDate()).padStart(2, '0');\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const year = date.getFullYear();\n    const formattedDate = `${year}-${month}-${day}`;\n    return `${formatDate(\n        formattedDate,\n    )};${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;\n};\n\nexport const extractDateFromISO = isoDate => {\n    const date = new Date(isoDate);\n    const year = date.getFullYear();\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const day = String(date.getDate()).padStart(2, '0');\n    const formattedDate = `${year}-${month}-${day}`;\n    return `${formatDate(formattedDate)}`;\n};\n\nexport const formatDate = date => {\n    if (!date) return undefined;\n    date = date.replace(/-/g, '');\n    const year = date.substring(0, 4);\n    const month = date.substring(4, 6);\n    const day = date[6] === '0' ? date.substring(7) : date.substring(6);\n    let str = 'th';\n    if (day === '1') str = 'st';\n    if (day === '2') str = 'nd';\n    if (day === '3') str = 'rd';\n    return `${day}${str} ${months[month]} ${year}`;\n};\n\n// https://github.com/srcagency/country-to-emoji-flag/blob/master/index.js\nexport const flagFromCountryCode = country => {\n    const offset = 127397;\n    const A = 65;\n    const Z = 90;\n    const f = country.codePointAt(0);\n    const s = country.codePointAt(1);\n\n    if (country.length !== 2 || f > Z || f < A || s > Z || s < A)\n        throw new Error('Not an alpha2 country code');\n\n    return String.fromCodePoint(f + offset) + String.fromCodePoint(s + offset);\n};\n\nexport const formatCountries = (countries = [], formatMessage) => {\n    const map = new Map();\n    countries\n        .filter(countryCode => !!msg.common.country[countryCode])\n        .map(countryCode => {\n            const country = {\n                key: flagFromCountryCode(countryCode),\n                id: `common.country.${countryCode}`,\n                code: countryCode.toLowerCase(),\n            };\n            map[msg.common.country[countryCode]] = {\n                key: `${country.key} ${formatMessage({\n                    id: country.id,\n                    defaultMessage: msg.common.country[countryCode],\n                })}`,\n                code: country.code,\n            };\n        });\n    return Object.values(\n        Object.keys(map)\n            .sort()\n            .reduce((r, k) => ((r[k] = map[k]), r), {}),\n    );\n};\n\nexport const formatCountry = (countryCode, formatMessage) => {\n    const country = {\n        key: flagFromCountryCode(countryCode),\n        id: `common.country.${countryCode}`,\n        code: countryCode.toLowerCase(),\n    };\n    return {\n        key: `${country.key} ${formatMessage({\n            id: country.id,\n            defaultMessage: msg.common.country[countryCode],\n        })}`,\n        code: country.code,\n    };\n};\n\nexport const formatCountriesPhone = (countries = []) =>\n    countries.map(c => ({\n        key: `${flagFromCountryCode(c.iso2.toUpperCase())} + ${c.dialCode}`,\n        id: c.dialCode,\n        code: c.iso2,\n    }));\n\nexport const normalizeString = string => {\n    return string && string.toUpperCase().replace(/ /g, '');\n};\n\nexport const normalizeMoney = amount => {\n    return typeof amount === 'number'\n        ? amount.toFixed(CURRENCY_PRECISION)\n        : Number(amount).toFixed(CURRENCY_PRECISION);\n};\n\nexport const getDateTimeString = timestamp => {\n    const date = new Date(parseInt(timestamp));\n    const day = String(date.getDate()).padStart(2, '0');\n    const month = String(date.getMonth() + 1).padStart(2, '0');\n    const year = date.getFullYear();\n    const formattedDate = `${year}-${month}-${day}`;\n    const hours = String(date.getHours()).padStart(2, '0');\n    const minutes = String(date.getMinutes()).padStart(2, '0');\n    const seconds = String(date.getSeconds()).padStart(2, '0');\n    return `${formatDate(formattedDate)};${hours}:${minutes}:${seconds}`;\n};\n\nconst mapAccount = (account, formatNumber) => {\n    const a = {\n        key: account.name,\n        id: account.id,\n        value: account.balance\n            ? formatCurrency(\n                account.balance.current.value,\n                account.balance.current.currency,\n                formatNumber,\n            )\n            : '',\n    };\n    return account ? a : undefined;\n};\n\nexport const joinFields = (fields, separator = ', ') => {\n    const actualFields = [];\n    fields.map(f => {\n        if (typeof f === 'string' && f !== '') {\n            actualFields.push(f.replace(/\\|/, ',').replace(',,', ','));\n        }\n    });\n    return actualFields.join(separator);\n};\n\nexport const transformAccounts = (accounts, formatNumber) =>\n    accounts.map(o => mapAccount(o, formatNumber));\n\nexport const findId = (list, id) =>\n    list.reduce((lastVal, item) => {\n        if (item.id === id) return item;\n        return lastVal;\n    }, null);\n\nexport const getHashValue = key => parse(location.hash)[key];\n\nexport const getQueryParams = () => parse(location.search);\n\nexport const getURLParameter = name => parse(location.search)[name];\n\nexport const addCustomCss = (\n    tokenRequestId,\n    requestType = REQUEST_TYPE.TOKEN_REQUEST,\n    memberInfo = {},\n) =>\n    new Promise(resolve => {\n        if (!sessionStorageWrapper.get('reduxState')) return resolve();\n        try {\n            let el = window.document.getElementById('customStyle');\n            let queryParams = `id=${tokenRequestId}&type=${requestType}`;\n            const memberId = memberInfo.memberId;\n            const realmId = memberInfo.realmId;\n            const subTppId = memberInfo.subTppId;\n            if (memberId) {\n                queryParams += `&memberId=${memberId}`;\n            }\n            if (realmId) {\n                queryParams += `&realmId=${realmId}`;\n            }\n            if (subTppId) {\n                queryParams += `&subTppId=${subTppId}`;\n            }\n            const url = `/customize.css?${queryParams}`;\n            if (el) {\n                if (el.getAttribute('href') === url) return resolve();\n                el.remove();\n            }\n            el = window.document.createElement('link');\n            el.setAttribute('id', 'customStyle');\n            el.setAttribute('rel', 'stylesheet');\n            el.addEventListener('load', () => {\n                resolve();\n            });\n            window.document.head.append(el);\n            el.setAttribute('href', url);\n        } catch (e) {\n            return resolve();\n        }\n    });\n\nexport const removeCustomCss = () => {\n    const el = window.document.getElementById('customStyle');\n    if (el) {\n        el.remove();\n    }\n};\n\nexport const argbToRgba = argb =>\n    (argb && argb.replace(/^#?([a-fA-F\\d]{2})([a-fA-F\\d]{6})$/g, '#$2$1')) ||\n    '';\n\nexport const syncLocalStorageVersion = () => {\n    const localStorageVersion = localStorageWrapper.get('version');\n    if (\n        !localStorageVersion ||\n        localStorageVersion !== parseFloat(LS_VERSION)\n    ) {\n        localStorageWrapper.clear();\n        localStorageWrapper.set('version', LS_VERSION);\n    }\n};\n\nexport const copyToClipboard = element => {\n    // Text element has to be visible\n    element.classList.add('element--visible');\n\n    // Select the text field\n    element.select();\n\n    // Copy the text inside the text field\n    document.execCommand('copy');\n\n    // Hide element\n    element.classList.remove('element--visible');\n\n    return true;\n};\n\nexport const copyOnClipboard = refId => {\n    // Create dummy element for reference\n    const textArea = document.createElement('textarea');\n\n    // Assign value to this input\n    textArea.value = refId;\n    document.body.appendChild(textArea);\n\n    // Select the text field\n    textArea.select();\n\n    // Copy the text inside the text field\n    document.execCommand('Copy');\n    textArea.remove();\n};\n\nexport const copyOnMobileClipboard = text => {\n    const input = document.createElement('input');\n    input.setAttribute('type', 'text');\n    input.setAttribute('value', text);\n    document.body.appendChild(input);\n    input.select();\n    input.setSelectionRange(0, 99999); // For mobile devices\n    document.execCommand('copy');\n    document.body.removeChild(input);\n};\n\nexport const getFilteredBanks = (country, banks) => {\n    let filteredBanks = banks;\n    const bankIds = topBanksList[country.code.toUpperCase()];\n    if (bankIds) {\n        filteredBanks = banks.map(bank => {\n            if (!bankIds.includes(bank.key)) {\n                return bank;\n            }\n        });\n    }\n    return filteredBanks.filter(bank => typeof bank !== 'undefined');\n};\n\nexport const mergeBankList = (topBanks, banks) => {\n    return topBanks.concat(banks);\n};\n\nexport const getBankRawData = banks => {\n    return banks.map(bank => bank.rawData);\n};\n\nexport const formatBankBranchData = (banks, bankName) => {\n    const banksData = {};\n    banks.map(bank => {\n        if (bank.name === bankName) {\n            banksData[bank.identifier] = bank;\n        }\n    });\n    return banksData;\n};\n\nexport const filterDestinationAccount = destinationAccount => {\n    const accountSchemes = Object.keys(schemeConfig);\n    const filtered = Object.keys(destinationAccount)\n        .filter(key => accountSchemes.includes(key))\n        .reduce((obj, key) => {\n            obj[key] = destinationAccount[key];\n            return obj;\n        }, {});\n    const scheme = Object.keys(filtered)[0];\n    return formatAccountFields(scheme, filtered[scheme]);\n};\n\nconst formatAccountFields = (scheme, account) => {\n    if (typeof account === 'undefined') {\n        return {};\n    }\n    const filtered = {};\n    Object.values(schemeConfig[scheme])\n        .filter(value => Object.keys(account).includes(value))\n        .forEach(value => (filtered[value] = account[value]));\n    return filtered;\n};\n\nexport const buildPathReqEx = (path, flags) => {\n    return new RegExp('^' + path, flags);\n};\n\nexport const isCredentialFlow = tppRedirectUrl => {\n    if (\n        tppRedirectUrl?.includes(TPP_INTEGRATION_ADDRESS) &&\n        TOKEN_ENV !== 'prd'\n    ) {\n        return true;\n    }\n    return false;\n};\n\nexport const formatAsKeyValuePair = arr => {\n    return arr.map((v, i) => {\n        return { id: i, value: v };\n    });\n};\n\nexport const isTppGmbh = async memberId => {\n    const config = await getLocalTppConfig(memberId);\n    return config && config.isTppGmbh;\n};\n\nexport const getDestinationPaymentRail = (destination, bank) => {\n    if (!destination || !bank) {\n        return 'domestic';\n    }\n\n    const paymentMethods = Object.keys(destination);\n    const supportedTransferDestinationTypes =\n        bank.supportedTransferDestinationTypes || [];\n\n    const internationalPaymentMethods = ['sepa', 'sepaInstant'];\n    const internationalPaymentMethodsBanks = ['SEPA', 'SEPA_INSTANT'];\n\n    const hasEnoughSupportedTypes =\n        supportedTransferDestinationTypes.length >= 2;\n    const hasInternationalPaymentMethod = !supportedTransferDestinationTypes.every(\n        method => internationalPaymentMethodsBanks.includes(method),\n    );\n    const isInternationalPaymentMethodUsed = paymentMethods.some(method =>\n        internationalPaymentMethods.includes(method),\n    );\n\n    const isInternational =\n        hasEnoughSupportedTypes &&\n        isInternationalPaymentMethodUsed &&\n        hasInternationalPaymentMethod;\n\n    return isInternational ? 'international' : 'domestic';\n};\n\nexport const getBankDoesRequireDebtorAccount = (\n    bank,\n    tokenType,\n    paymentRail,\n) => {\n    const paymentCategory = getDestinationPaymentRail(paymentRail, bank);\n    if (tokenType === 'TOKEN_TYPE_STANDING_ORDER') {\n        return bank?.mandatoryFields?.standingOrder?.[\n            paymentCategory\n        ]?.fields?.some(\n            value =>\n                value === mandatoryConfig['standingOrder']?.debtorAccount,\n        );\n    } else if (tokenType === 'TOKEN_TYPE_TRANSFER') {\n        return bank?.mandatoryFields?.transfer?.[paymentCategory]?.fields?.some(\n            value => value === mandatoryConfig['transfer']?.debtorAccount,\n        );\n    } else {\n        return false;\n    }\n};\n\nexport const getButtonStatusOnCredsPage = (\n    requiredCredentials,\n    credentialsValue,\n) => {\n    if (\n        requiredCredentials &&\n        requiredCredentials?.length !== Object.keys(credentialsValue)?.length\n    ) {\n        return 'STATUS_DISABLED';\n    }\n\n    if (requiredCredentials && Object.values(credentialsValue).includes('')) {\n        return 'STATUS_DISABLED';\n    }\n\n    return 'STATUS_IDLE';\n};\n\nexport const validateInputFromTI = async (urlPath, data) => {\n    return await axios.put(`${TPP_INTEGRATION_ADDRESS + urlPath}`, {\n        ...data,\n    });\n};\n\nexport const getDeveloperId = customDevKey => {\n    if (!customDevKey) {\n        return 'global-test@token.io';\n    } else if (developerKeys?.[customDevKey]) {\n        return developerKeys[customDevKey];\n    }\n    return customDevKey + '@token.io';\n};\n\nexport const deepTrim = obj => {\n    if (!obj || (!Array.isArray(obj) && typeof obj != 'object')) return obj;\n    return Object.keys(obj).reduce(\n        (acc, key) => {\n            acc[key] =\n                typeof obj[key] == 'string'\n                    ? obj[key]?.trim()\n                    : deepTrim(obj[key]);\n            return acc;\n        },\n        Array.isArray(obj) ? [] : {},\n    );\n};\n\n// Recursive remove empty objects\nexport const removeEmpty = obj => {\n    try {\n        for (const prop in obj) {\n            if (!obj[prop]) {\n                delete obj[prop];\n            }\n\n            if (typeof obj[prop] !== 'object') {\n                continue;\n            }\n\n            removeEmpty(obj[prop]);\n            if (Object.keys(obj[prop])?.length === 0) {\n                delete obj[prop];\n            }\n        }\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n    return obj;\n};\n\nexport const validateIban = async (iban, tokenRequestId) => {\n    const data = { iban: iban, tokenRequestId: tokenRequestId };\n    return await validateInputFromTI(PATH_TO_VALIDATE_IBAN, data);\n};\n\nexport const getLocalTppConfig = async (memberId, realmId, subTppId) => {\n    try {\n        const params = {};\n        if (memberId) params.memberId = memberId;\n        if (realmId) params.realmId = realmId;\n        if (subTppId) params.subTppId = subTppId;\n\n        if (Object.keys(params).length === 0) {\n            return {};\n        }\n\n        const response = await axios.get('/api/tpp-config', {\n            params,\n            headers: CUSTOM_HEADERS.INITIATED_BY,\n        });\n        return response.data && Object.keys(response.data).length > 0\n            ? response.data\n            : {};\n    } catch (error) {\n        console.error('Failed to fetch TPP config:', error);\n        return {};\n    }\n};\n\nexport const getInternalTransferStatus = transferCode => {\n    for (const group in transferStatusGroups) {\n        if (transferStatusGroups[group].includes(transferCode)) {\n            return group;\n        }\n    }\n    return transferCode;\n};\n\nexport const toCamelCase = str => {\n    if (!str || typeof str !== 'string') return '';\n    const frags = str?.split('.');\n    const result = [];\n    for (let i = 0; i < frags.length; i++) {\n        result[i] = _.camelCase(frags[i]);\n    }\n    return result.join('.');\n};\n\nexport const deepMergeObjects = (target, source) => {\n    for (const key in source) {\n        if (source[key] instanceof Object) {\n            if (!target[key]) {\n                target[key] = {};\n            }\n            deepMergeObjects(target[key], source[key]);\n            continue;\n        }\n        target[key] = source[key];\n    }\n    return target;\n};\n\nexport const getDeviceId = () => {\n    let deviceId = localStorageWrapper.get('deviceId');\n    if (!deviceId) {\n        deviceId = uuidv4();\n        localStorageWrapper.set('deviceId', deviceId);\n    }\n    return deviceId;\n};\n\nexport const sanitizeHTML = html => {\n    const withImageTag = html\n        ?.replace(/<image>/g, '<img>')\n        ?.replace(/<\\/image>/g, '</img>');\n    return DOMPurify.sanitize(withImageTag, {\n        ALLOWED_TAGS: [\n            'h1',\n            'div',\n            'img',\n            'blockquote',\n            'p',\n            'h2',\n            'ol',\n            'ul',\n            'li',\n            'a',\n            'code',\n            'strong',\n            'u',\n            'em',\n            'span',\n            'br',\n        ],\n        ALLOWED_ATTR: [\n            'href',\n            'src',\n            'class',\n            'target',\n            'aria-label',\n            'role',\n            'id',\n        ],\n    });\n};\n\nexport const convertToReadableDate = date => {\n    const options = {\n        weekday: 'short',\n        year: 'numeric',\n        month: 'long',\n        day: 'numeric',\n    };\n    return new Date(date).toLocaleDateString(undefined, options);\n};\n\nexport const camelToSnakeCase = str => {\n    if (!str) return str;\n    return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);\n};\n\nexport const hideConsentText = customConsentText => {\n    return (\n        typeof customConsentText === 'string' &&\n        customConsentText?.trim()?.length === 0\n    );\n};\n\nexport const keyExists = obj => {\n    if (!obj || (Array.isArray(obj) && typeof obj != 'object')) {\n        return false;\n    } else {\n        return Object.keys(obj)?.length > 0;\n    }\n};\n\nexport const setHtmlLanguageAttribute = locale => {\n    if (locale) {\n        document.documentElement.setAttribute('lang', locale);\n    }\n};\n\nexport { default as segregateCredentials } from './segregateCredentials';\n\nexport { default as addRefundTextIfNotPresent } from './addRefundTextIfNotPresent';\n\nexport { default as getSupportedPaymentNetworks } from './getSupportedPaymentNetworks';\n\nexport { default as getFeatureFromTppConfig } from './getFeatureFromTppConfig';\n\nexport { default as getInitialReduxState } from './getInitialReduxState';\n\nexport { default as getTokenReqIdFromURL } from './getTokenReqIdFromURL';\n\nexport { default as getInstantDevKey } from './getInstantDevKey';\n\nexport { default as blockUserOnURLPaths } from './blockUserOnURLPaths';\n\nexport { default as checkMandatoryFieldsPresent } from './checkMandatoryFieldsPresent';\n\nexport { default as localStorageWrapper } from './localStorageWrapper';\n\nexport { default as sessionStorageWrapper } from './sessionStorageWrapper';\n","import { combineReducers } from 'redux';\nimport {\n    ROUTE_LOADING,\n    ROUTE_ERROR,\n    defaultLocale,\n    LOADING_STEP,\n    TOKEN_TYPE_TRANSFER,\n    TOKEN_TYPE_ACCESS,\n    TOKEN_TYPE_VRP,\n    banksWithBranches as defaultBanklist,\n} from 'config/constants';\nimport { getURLParameter } from 'util/index';\nimport { createReducer } from '@token-io/lib-web-app';\nimport {\n    TOKEN_TYPE_BULK_TRANSFER,\n    TOKEN_TYPE_STANDING_ORDER,\n} from '../config/constants';\n\nexport const currentLocale =\n    getURLParameter('lang') ||\n    (navigator.languages && navigator.languages[0]) ||\n    navigator.language ||\n    navigator.userLanguage ||\n    defaultLocale;\n\nexport const createRoute = (prev, next) => {\n    return {\n        previous: prev,\n        current: {\n            id: next,\n        },\n    };\n};\n\nconst tokenType = createReducer(\n    {},\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            return action.tokenType;\n        },\n    },\n);\n\nconst locale = createReducer(currentLocale, {\n    SET_LOCALE: (state, action) => {\n        return action.locale;\n    },\n});\n\nconst route = createReducer(\n    { route: createRoute(null, ROUTE_LOADING), steps: [LOADING_STEP] },\n    {\n        SET_CURRENT_ROUTE: (state, action) => {\n            const route = createRoute(state.route.current, action.route);\n            return { ...state, route };\n        },\n        THROW_ERROR: state => {\n            const route = createRoute(state.route.current, ROUTE_ERROR);\n            return { ...state, route };\n        },\n        ADD_STEP: (state, action) => {\n            state.steps.push(action.step);\n            return { ...state };\n        },\n    },\n);\n\nconst error = createReducer(\n    { isTokenError: true },\n    {\n        THROW_ERROR: (state, action) => {\n            return {\n                ...state,\n                error: {\n                    code: action.error.name,\n                    message: action.error.message,\n                    intlKey: action.error.intlKey,\n                    intlValues: action.error.intlValues,\n                    redirectBack: action.error.options?.redirectBack,\n                    intlTitleKey: action.error.options?.intlTitleKey,\n                },\n            };\n        },\n        SET_ERROR_MESSAGE: (state, action) => {\n            const errorMessage = action.message;\n            return { ...state, errorMessage };\n        },\n        CLEAR_ERROR_MESSAGE: state => {\n            return { ...state, errorMessage: undefined };\n        },\n        SET_ERROR_SOURCE: (state, action) => {\n            return {\n                ...state,\n                isTokenError: action.isTokenError,\n            };\n        },\n        TERMINATE_FLOW: (state, action) => {\n            return {\n                ...state,\n                error: {\n                    code: action.name,\n                    message: action.message,\n                },\n            };\n        },\n    },\n);\n\nconst csrfMismatch = createReducer(\n    { redirectUrl: '' },\n    {\n        SET_BROWSER_REDIRECT_URL: (state, { redirectUrl }) => {\n            return { ...state, redirectUrl };\n        },\n    },\n);\n\nconst clearSelectedBank = state => {\n    return { ...state, selectedBank: undefined, selectedBankInfo: undefined };\n};\n\nconst banks = createReducer(\n    { banks: [], banksWithBranches: defaultBanklist, recentBanks: [] },\n    {\n        SET_COUNTRIES: (state, action) => {\n            return { ...state, countries: action.countries };\n        },\n        SET_BANKS: (state, action) => {\n            return { ...state, banks: action.banks };\n        },\n        ADD_BANKS: (state, action) => {\n            return { ...state, banks: [...state.banks, ...action.banks] };\n        },\n        CLEAR_BANKS: state => {\n            return { ...clearSelectedBank(state), banks: [] };\n        },\n        SET_SELECTED_BANK: (state, action) => {\n            return { ...state, selectedBank: action.bank };\n        },\n        CLEAR_SELECTED_BANK: state => {\n            return clearSelectedBank(state);\n        },\n        SET_SELECTED_BANK_INFO: (state, action) => {\n            return { ...state, selectedBankInfo: action.bankInfo };\n        },\n        CLEAR_BANK_STATUS: state => {\n            return { ...state, bankStatus: undefined };\n        },\n        SET_BANK_STATUS: (state, action) => {\n            return {\n                ...state,\n                bankStatus: { bank: action.bankName, isLive: !!action.isLive },\n            };\n        },\n        SET_TOP_BANKS: (state, action) => {\n            return { ...state, topBanks: action.banks };\n        },\n        CLEAR_TOP_BANKS: (state, action) => {\n            return { ...state, topBanks: undefined };\n        },\n        SET_RECENT_BANKS: (state, action) => {\n            return { ...state, recentBanks: action.banks };\n        },\n        SET_BANKS_WITH_SUB_BRANCHES: (state, action) => {\n            return {\n                ...state,\n                banksWithBranches: {\n                    ...state.banksWithBranches,\n                    [action.bankName]: action.status,\n                },\n            };\n        },\n        CLEAR_BANKS_WITH_SUB_BRANCHES: state => {\n            return {\n                ...state,\n                banksWithBranches: {\n                    ...defaultBanklist,\n                },\n            };\n        },\n        SET_SUB_BRANCHES: (state, action) => {\n            return {\n                ...state,\n                banksBranchList: {\n                    ...state.banksBranchList,\n                    [action.bankName]: action.branchList,\n                },\n            };\n        },\n        ADD_SUB_BRANCHES: (state, action) => {\n            return {\n                ...state,\n                banksBranchList: {\n                    ...state.banksBranchList,\n                    [action.bankName]: {\n                        ...state[action.bankName],\n                        ...action.branchList,\n                    },\n                },\n            };\n        },\n        CLEAR_SUB_BRANCHES: (state, action) => {\n            return {\n                ...state,\n                banksBranchList: {\n                    ...state.banksBranchList,\n                    [action.bankName]: undefined,\n                },\n            };\n        },\n    },\n);\n\nconst isRedirect = createReducer(false, {\n    SET_REDIRECT: () => true,\n});\n\nconst oneStepSupport = createReducer(false, {\n    SET_ONE_STEP_SUPPORT: (state, action) => action.oneStepSupport,\n});\n\nconst defaultCountry = createReducer(null, {\n    SET_DEFAULT_COUNTRY: (state, action) => action.defaultCountry.toUpperCase(),\n});\n\nconst selectedCountry = createReducer(null, {\n    SET_SELECTED_COUNTRY: (state, action) => {\n        return action.selectedCountry?.toUpperCase() || '';\n    },\n});\n\nconst customDevKey = createReducer(null, {\n    SET_CUSTOM_DEV_KEY: (state, action) => action?.devKey?.trim() || '',\n});\n\nconst fadeOutProp = createReducer(null, {\n    SET_DISPLAY_FADE_OUT_ANIMATION: (state, action) =>\n        action?.fadeOutProp || false,\n});\n\nexport const reducer = combineReducers({\n    tokenType,\n    locale,\n    route,\n    error,\n    csrfMismatch,\n    banks,\n    isRedirect,\n    oneStepSupport,\n    defaultCountry,\n    selectedCountry,\n    customDevKey,\n    fadeOutProp,\n});\n\nexport const selector = getState => {\n    return {\n        isTransfer: () => getState().tokenType === TOKEN_TYPE_TRANSFER,\n        isAisp: () => getState().tokenType === TOKEN_TYPE_ACCESS,\n        isVrp: () => getState().tokenType === TOKEN_TYPE_VRP,\n        isStandingOrder: () =>\n            getState().tokenType === TOKEN_TYPE_STANDING_ORDER,\n        isBulkTransfer: () => getState().tokenType === TOKEN_TYPE_BULK_TRANSFER,\n        getCountries: () => getState().banks.countries,\n        getBanks: () => getState().banks.banks,\n        getIsRedirect: () => getState().isRedirect,\n        getTokenType: () => getState().tokenType,\n        getLocale: () => getState().locale,\n        getSelectedBank: () => getState().banks.selectedBank,\n        getSelectedBankId: () => getState().banks.selectedBank?.id,\n        getSelectedBankName: () => getState().banks.selectedBank?.name,\n        getSelectedCountry: () => getState().selectedCountry,\n        getSelectedBankInfo: () => getState().banks.selectedBankInfo,\n        supportsGuestCheckout: () =>\n            getState().banks.selectedBank?.supportsGuestCheckout,\n        supportsAisGuestCheckout: () =>\n            getState().banks.selectedBank?.supportsAisGuestCheckout,\n        getBankStatus: () => getState().banks.bankStatus,\n        getRoute: () => getState().route.route,\n        getCurrentRoute: () => getState().route.route.current.id,\n        getSteps: () => getState().route.steps,\n        getPreviousStep: () => getState().route.steps.slice(-2)[0],\n        getCurrentStep: () => getState().route.steps.slice(-1)[0],\n        getPreviousHistoryStep: () =>\n            getState()\n                .route.steps.filter(step => step !== LOADING_STEP)\n                .slice(-2)[0],\n        getCurrentHistoryStep: () =>\n            getState()\n                .route.steps.filter(step => step !== LOADING_STEP)\n                .slice(-1)[0],\n        getError: () => getState().error.error, // Fatal error, displays error page\n        getErrorMessage: () => getState().error.errorMessage, // Non-fatal error, displays a message on component\n        getBrowserRedirectUrl: () => getState().csrfMismatch.redirectUrl,\n        getDoesBankSupportOneStep: () => getState().oneStepSupport,\n        getTopBanks: () => getState().banks.topBanks,\n        getRecentBanks: () => getState().banks.recentBanks,\n        getDefaultCountry: () => getState().defaultCountry,\n        getCustomDevKey: () => getState().customDevKey,\n        getFadeOutProp: () => getState().fadeOutProp,\n        getBanksWithBranches: () => getState().banks.banksWithBranches,\n        getBanksBranchList: () => getState().banks.banksBranchList,\n        getErrorSource: () => getState().error.isTokenError,\n    };\n};\n\nexport const getRedactedState = getState => {\n    const state = getState();\n    // No redacted state here for now\n    return {\n        ...state,\n    };\n};\n\nexport const name = 'shared';\n","import { combineReducers } from 'redux';\nimport { REDACTED_VALUE } from 'config/constants';\nimport { findId } from 'util/index';\nimport { createReducer } from '@token-io/lib-web-app';\n\nconst members = createReducer(\n    { members: [] },\n    {\n        ADD_MEMBER: (state, action) => {\n            return { ...state, members: [...state.members, action.member] };\n        },\n        CLEAR_MEMBERS: (state, action) => {\n            return { ...state, members: [] };\n        },\n        SET_TEMP_MEMBER: (state, action) => {\n            return { ...state, tempMember: action.member };\n        },\n        SET_ALIAS: (state, action) => {\n            return { ...state, alias: action.alias };\n        },\n    },\n);\n\nconst clearAccounts = state => {\n    return { ...state, accounts: [], selectedAccountIds: [] };\n};\n\nconst accounts = createReducer(\n    { accounts: [], selectedAccountIds: [] },\n    {\n        SET_ACCOUNTS: (state, action) => {\n            const accounts = action.accounts;\n            return { ...state, accounts };\n        },\n        SET_SELECTED_ACCOUNT_IDS: (state, action) => {\n            const selectedAccountIds = action.accountIds;\n            return { ...state, selectedAccountIds };\n        },\n        ADD_SELECTED_ACCOUNT_ID: (state, action) => {\n            const selectedAccountIds = [...state.selectedAccountIds];\n            selectedAccountIds.push(action.accountId);\n            return { ...state, selectedAccountIds };\n        },\n        // clear accounts when member is switched\n        SET_TEMP_MEMBER: (state, action) => {\n            return clearAccounts(state);\n        },\n        // clear accounts when members are cleared\n        CLEAR_MEMBERS: (state, action) => {\n            return clearAccounts(state);\n        },\n    },\n);\n\nexport const reducer = combineReducers({\n    members,\n    accounts,\n});\n\nexport const selector = getState => {\n    const getPairedMembers = () => getState().members.members;\n    const getSelectedAccountIds = () => getState().accounts.selectedAccountIds;\n    const getMemberAccounts = () => getState().accounts.accounts;\n    const getTempMember = () => getState().members.tempMember;\n    const getAlias = () => getState().members.alias;\n\n    return {\n        getPairedMembers,\n        getSelectedAccountIds,\n        getMemberAccounts,\n        getTempMember,\n        getAlias,\n        hasAlias: () => !!getAlias(),\n        hasTempMember: () => !!getTempMember(),\n        hasPairedMembers: () => getPairedMembers().length > 0,\n        getFirstPairedMember: () => getPairedMembers()[0],\n        getSelectedAccounts: () =>\n            getSelectedAccountIds().map(accountId =>\n                findId(accounts, accountId),\n            ),\n        getBankMemberAccounts: bankId =>\n            getMemberAccounts().filter(account => account.bankId === bankId),\n        getFirstAccount: () => getMemberAccounts()[0],\n        getAccount: id => findId(getMemberAccounts(), id),\n    };\n};\n\nexport const getRedactedState = getState => {\n    const state = getState();\n    return {\n        ...state,\n        members: {\n            ...state.members,\n            alias: REDACTED_VALUE,\n        },\n    };\n};\n\nexport const name = 'user';\n","import { combineReducers } from 'redux';\nimport {\n    REDACTED_VALUE,\n    TYPE_2_ALIAS,\n    CUSTOM_TPP_FEATURES as featureConfig,\n    BANK_SELECTION_PRESETS,\n} from 'config/constants.js';\nimport { createReducer } from '@token-io/lib-web-app';\nimport { getFeatureFromTppConfig, keyExists } from 'util/index';\n\nconst customization = createReducer(\n    {},\n    {\n        SET_CUSTOMIZATION_ID: (state, action) => {\n            const { id } = action;\n            return {\n                ...state,\n                id,\n            };\n        },\n    },\n);\n\nconst tpp = createReducer(\n    {},\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            const alias = action.tppAlias;\n            const actingAs = action.actingAs;\n            const memberId = action.memberId;\n            return {\n                ...state,\n                alias,\n                actingAs,\n                profile: { ...state?.profile, memberId },\n            };\n        },\n        SET_PROFILE: (state, action) => {\n            const profile = action.profile;\n            return { ...state, profile };\n        },\n        SET_RESELLER_PROFILE: (state, action) => {\n            const resellerProfile = action.profile;\n            return { ...state, resellerProfile };\n        },\n        SET_HIDE_CONSENT: (state, action) => {\n            const hideConsent = action.hideConsent;\n            return { ...state, hideConsent };\n        },\n        SET_TPP_SOURCE: (state, action) => {\n            const { tppSource } = action;\n            return { ...state, tppSource };\n        },\n        SET_USE_BANK_REDIRECTION_SCREEN: (state, action) => {\n            const { useBankRedirectionScreen } = action;\n            return { ...state, useBankRedirectionScreen };\n        },\n        SET_TPP_REDIRECT_URL: (state, action) => {\n            const { redirectUrl } = action;\n            return { ...state, redirectUrl };\n        },\n        SET_TPP_CONFIGURATIONS: (state, action) => {\n            const { configurations } = action;\n            if (\n                configurations.bankSelectionPreset ===\n                BANK_SELECTION_PRESETS.ENABLE_ALL\n            ) {\n                delete configurations[\n                    featureConfig.SUPPORTED_COUNTRIES_WITH_BANK_IDS\n                ];\n            }\n            return { ...state, configurations };\n        },\n        SET_TPP_OVERALL_TRANSLATIONS: (state, action) => {\n            const { translations } = action;\n            return {\n                ...state,\n                configurations: {\n                    ...state.configurations,\n                    translations,\n                },\n            };\n        },\n        SET_TPP_RETURN_DATA: (state, action) => {\n            const { tppReturnData } = action;\n            return { ...state, tppReturnData };\n        },\n        //Sets member props after fetching from getMember api\n        SET_TPP_REQUESTED_INFO: (state, action) => {\n            const { properties } = action;\n            return { ...state, properties };\n        },\n    },\n);\n\nconst request = createReducer(\n    {},\n    {\n        SET_TOKEN_REQUEST_ID: (state, action) => {\n            const id = action.tokenRequestId;\n            return { ...state, id };\n        },\n        SET_TOKEN_REQUEST_OPTIONS: (state, action) => {\n            const options = action.tokenRequestOptions;\n            return { ...state, options };\n        },\n        SET_REDIRECT_URL: (state, action) => {\n            const redirectUrl = action.redirectUrl;\n            return { ...state, redirectUrl };\n        },\n        SET_REDIRECT_STATE: (state, action) => {\n            const redirectState = action.redirectState;\n            return { ...state, redirectState };\n        },\n        SET_TOKEN_REQUEST_SIGNATURE: (state, action) => {\n            const tokenRequestSignature = action.signature;\n            return { ...state, tokenRequestSignature };\n        },\n        SET_DESTINATION_COUNTRY: (state, action) => {\n            const destinationCountry = action.destinationCountry;\n            return { ...state, destinationCountry };\n        },\n        SET_DESCRIPTION: (state, action) => {\n            const description = action.description;\n            return { ...state, description };\n        },\n        SET_REQUEST_COUNTRIES: (state, action) => {\n            const countries = action.countries;\n            return { ...state, countries };\n        },\n        SET_TOKEN_EXPIRATION: (state, action) => {\n            const tokenExpiration = action.tokenExpiration;\n            return { ...state, tokenExpiration };\n        },\n        SET_LINKING_REQUEST_ID: (state, action) => {\n            const linkingRequestId = action.linkingRequestId;\n            return { ...state, linkingRequestId };\n        },\n        SET_AUTH_REQUEST_ID: (state, action) => {\n            const authRequestId = action.authRequestId;\n            return { ...state, authRequestId };\n        },\n        SET_USE_CREDENTIAL_FLOW: (state, action) => {\n            const useCredentialFlow = action.useCredentialFlow;\n            return { ...state, useCredentialFlow };\n        },\n        // TODO: deprecated\n        SET_TOKEN_PAYLOAD: (state, action) => {\n            const payload = action.tokenPayload;\n            return { ...state, payload };\n        },\n    },\n);\n\nconst defaults = createReducer(\n    {},\n    {\n        SET_DEFAULT_BANK_ID: (state, action) => {\n            const bankId = action.defaultBankId;\n            return { ...state, bankId };\n        },\n        SET_DEFAULT_ALIAS: (state, action) => {\n            const alias = action.defaultAlias;\n            return { ...state, alias };\n        },\n    },\n);\n\nexport const reducer = combineReducers({\n    customization,\n    tpp,\n    request,\n    defaults,\n});\n\nexport const selector = getState => {\n    const tppRealmId = () =>\n        getState().tpp.properties?.realmId || getState().tpp.alias?.realmId;\n    const tppMemberId = () =>\n        getState().tpp.properties?.memberId ||\n        getState().tpp?.profile?.memberId;\n    return {\n        getRequestPayload: () => getState().request.payload, // TODO: deprecated\n        getRequestId: () => getState().request.id,\n        getRequestOptions: () => getState().request.options,\n        getUseCredentialFlow: () => getState().request.useCredentialFlow,\n        getRequestRedirectUrl: () => getState().request.redirectUrl,\n        getRequestRedirectState: () => getState().request.redirectState,\n        getDestinationCountry: () => getState().request.destinationCountry,\n        getDescription: () => getState().request.description,\n        getRequestCountries: () => getState().request.countries,\n        getTokenExpiration: () => getState().request.tokenExpiration,\n        getLinkingRequestId: () => getState().request.linkingRequestId,\n        hasCustomization: () => !!getState().customization.id,\n        hasCustomColors: () =>\n            !!keyExists(\n                getFeatureFromTppConfig(\n                    getState().tpp.configurations,\n                    featureConfig.CUSTOM_COLORS,\n                ),\n            ),\n        getTppAlias: () => getState().tpp.alias,\n        getTppProfile: () => getState().tpp.profile,\n        getTppActingAs: () => getState().tpp.actingAs,\n        getRealmIdFromMemberInfo: () =>\n            getState().tpp.properties?.realmId || '',\n        getTppMemberAndRealmId: () => {\n            const realmId = tppRealmId();\n            const memberId = tppMemberId();\n            if (realmId || memberId) {\n                return { realmId, memberId };\n            } else return null;\n        },\n        isSourceApp: () => getState().tpp.tppSource === 'app',\n        isSourceWebapp: () =>\n            !getState().tpp.tppSource || getState().tpp.tppSource === 'webapp',\n        getTppRedirectUrl: () => getState().tpp.redirectUrl,\n        isTppRedirectError: () =>\n            Boolean(getState().tpp.redirectUrl?.includes('error=')),\n        getHideConsent: () => getState().tpp.hideConsent,\n        getDefaultBankId: () => getState().defaults.bankId,\n        getDefaultAlias: () => getState().defaults.alias,\n        useBankRedirectionScreen: () =>\n            getState().tpp.useBankRedirectionScreen &&\n            getState().tpp.useBankRedirectionScreen === 'true',\n        isIOSType2Flow: () => TYPE_2_ALIAS.includes(getState().tpp.alias.value),\n        getTppReturnData: () => getState().tpp.tppReturnData,\n        getAuthRequestId: () => getState().request.authRequestId,\n        getTokenRequestSignature: () =>\n            getState().request.tokenRequestSignature,\n        getTppConfigurations: () => getState().tpp.configurations,\n        getOverallRegionalConfigurations: () =>\n            getState().tpp.configurations?.regionalConfigurations,\n        getTppFeature: (feature, defaultValue) =>\n            getFeatureFromTppConfig(\n                getState().tpp.configurations,\n                feature,\n                defaultValue,\n            ),\n        hasTppFeatures: () => !!keyExists(getState().tpp.configurations),\n        getResellerName: () => getState().tpp.resellerProfile?.tppName,\n        isSubTpp: () => !!getState().tpp.properties?.subTppRefId,\n    };\n};\n\nexport const getRedactedState = getState => {\n    const state = getState();\n    return {\n        ...state,\n        defaults: {\n            ...state.defaults,\n            email: REDACTED_VALUE,\n        },\n    };\n};\n\nexport const name = 'tokenRequest';\n","import { combineReducers } from 'redux';\nimport {\n    REDACTED_VALUE,\n    TOKEN_TYPE_BULK_TRANSFER,\n    TOKEN_TYPE_VRP,\n    TOKEN_TYPE_STANDING_ORDER,\n    TOKEN_TYPE_TRANSFER,\n} from 'config/constants';\nimport {\n    normalizeMoney,\n    deepTrim,\n    removeEmpty,\n    getSupportedPaymentNetworks,\n} from 'util/index';\nimport { createReducer } from '@token-io/lib-web-app';\n\nconst transfer = createReducer(\n    {},\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            const amount = normalizeMoney(action.amount);\n            const currency = action.currency;\n            const destinations = action.destinations;\n            const instructions = action.instructions;\n            const executionDate = action.executionDate;\n            const setTransferDestinationsUrl =\n                action.setTransferDestinationsUrl;\n            const remittanceReference = action.remittanceReference;\n            const confirmFunds = action.confirmFunds;\n            const returnRefundAccount = action.returnRefundAccount;\n            return {\n                ...state,\n                amount,\n                currency,\n                destinations,\n                instructions,\n                executionDate,\n                setTransferDestinationsUrl,\n                remittanceReference,\n                confirmFunds,\n                returnRefundAccount,\n            };\n        },\n        SET_DESTINATION_ACCOUNT: (state, action) => {\n            const destinations = action.destinations;\n            return { ...state, destinations };\n        },\n        SET_PAYMENT_ACCOUNT: (state, action) => {\n            const sourceAccountId = action.accountId;\n            return { ...state, sourceAccountId };\n        },\n        CLEAR_PAYMENT_ACCOUNT: (state, action) => {\n            return { ...state, sourceAccountId: undefined };\n        },\n        SET_ACCOUNTS: (state, action) => {\n            const sourceAccountId =\n                state.sourceAccountId ||\n                (action.accounts.length && action.accounts[0].id);\n            return { ...state, sourceAccountId };\n        },\n        SET_RECEIPT_EMAIL: (state, action) => {\n            const receiptEmail = action.email;\n            return { ...state, receiptEmail };\n        },\n        CLEAR_INSTRUCTIONS_SOURCE: (state, action) => {\n            return {\n                ...state,\n                instructions: {\n                    ...state.instructions,\n                    source: undefined,\n                },\n            };\n        },\n        SET_INSTRUCTIONS_SOURCE_IBAN: (state, action) => {\n            const ibanValue = action?.source?.iban?.trim();\n            const bicValue = action?.source?.bic?.trim();\n            return {\n                ...state,\n                instructions: {\n                    ...state.instructions,\n                    source: {\n                        ...state.instructions?.source,\n                        account: ibanValue\n                            ? {\n                                iban: {\n                                    iban: ibanValue,\n                                    bic: bicValue,\n                                },\n                            }\n                            : undefined,\n                        accountIdentifier: ibanValue\n                            ? {\n                                iban: {\n                                    iban: ibanValue,\n                                },\n                            }\n                            : undefined,\n                        bic: bicValue,\n                    },\n                },\n            };\n        },\n        SET_MANDATORY_TRANSFER_FIELDS: (state, action) => {\n            const debtorLegalNames = deepTrim(\n                action?.transfer?.instructions?.source?.customerData\n                    ?.legalNames,\n            );\n            const beneficiaryLegalNames = deepTrim(\n                action?.transfer?.instructions?.transferDestinations?.[0]\n                    ?.customerData?.legalNames,\n            );\n            const beneficiaryAddress = deepTrim(\n                action?.transfer?.instructions?.transferDestinations?.[0]\n                    ?.customerData?.address,\n            );\n            const debtorBic = action?.transfer?.instructions?.source?.bic?.trim();\n            const accountIdentifier =\n                action?.transfer?.instructions?.source?.accountIdentifier;\n            return removeEmpty({\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    source: {\n                        ...state?.instructions?.source,\n                        customerData: {\n                            ...state?.instructions?.source?.customerData,\n                            legalNames: debtorLegalNames,\n                        },\n                        bic: debtorBic\n                            ? debtorBic\n                            : state?.instructions?.source?.bic,\n                        ...(accountIdentifier && {\n                            accountIdentifier: accountIdentifier\n                                ? accountIdentifier\n                                : state?.instructions?.source\n                                    ?.accountIdentifier,\n                        }),\n                    },\n                    transferDestinations: [\n                        {\n                            ...state?.instructions?.transferDestinations?.[0],\n                            customerData: {\n                                ...state?.instructions\n                                    ?.transferDestinations?.[0]?.customerData,\n                                legalNames: beneficiaryLegalNames,\n                                address: beneficiaryAddress,\n                            },\n                        },\n                        ...state?.instructions?.transferDestinations?.slice(1),\n                    ],\n                },\n                destinations: [\n                    {\n                        ...state?.destinations?.[0],\n                        customerData: {\n                            ...state?.destinations?.[0]?.customerData,\n                            legalNames: beneficiaryLegalNames,\n                            address: beneficiaryAddress,\n                        },\n                    },\n                    ...state?.destinations?.slice(1),\n                ],\n            });\n        },\n        SET_MANDATORY_STET_TRANSFER_METADATA: (state, action) => {\n            const stetTransferMetadata = deepTrim(action?.stetTransferMetadata);\n            return {\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    metadata: {\n                        ...state?.instructions?.metadata,\n                        providerTransferMetadata: {\n                            ...state?.instructions?.metadata\n                                ?.providerTransferMetadata,\n                            stetTransferMetadata,\n                        },\n                    },\n                },\n            };\n        },\n        SET_MANDATORY_POLISH_API_TRANSFER_METADATA: (state, action) => {\n            const polishApiTransferMetadata = deepTrim(\n                action?.polishApiTransferMetadata,\n            );\n            return {\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    metadata: {\n                        ...state?.instructions?.metadata,\n                        providerTransferMetadata: {\n                            ...state?.instructions?.metadata\n                                ?.providerTransferMetadata,\n                            polishApiTransferMetadata,\n                        },\n                    },\n                },\n            };\n        },\n    },\n);\n\nconst access = createReducer(\n    { resources: [] },\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            const resources = action.resources;\n            const source = action.source;\n            return { ...state, resources, source };\n        },\n        SET_MANDATORY_ACCESS_FIELDS: (state, action) => {\n            const mandatoryFields = action.mandatoryFields;\n            return { ...state, source: mandatoryFields?.source };\n        },\n        CLEAR_INSTRUCTIONS_SOURCE: (state, action) => {\n            return { ...state, source: undefined };\n        },\n    },\n);\n\nconst standingOrder = createReducer(\n    {},\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            const amount = normalizeMoney(action.amount);\n            const currency = action.currency;\n            const destinations = action.destinations;\n            const instructions = action.instructions;\n            const frequency = action.frequency;\n            const startDate = action.startDate;\n            const endDate = action.endDate;\n            const remittanceReference = action.remittanceReference;\n            const returnRefundAccount = action.returnRefundAccount;\n            return {\n                ...state,\n                amount,\n                currency,\n                destinations,\n                instructions,\n                frequency,\n                startDate,\n                endDate,\n                remittanceReference,\n                returnRefundAccount,\n            };\n        },\n        SET_PAYMENT_ACCOUNT: (state, action) => {\n            const sourceAccountId = action.accountId;\n            return { ...state, sourceAccountId };\n        },\n        CLEAR_PAYMENT_ACCOUNT: (state, action) => {\n            return { ...state, sourceAccountId: undefined };\n        },\n        SET_ACCOUNTS: (state, action) => {\n            const sourceAccountId =\n                state.sourceAccountId ||\n                (action.accounts.length && action.accounts[0].id);\n            return { ...state, sourceAccountId };\n        },\n        SET_RECEIPT_EMAIL: (state, action) => {\n            const receiptEmail = action.email;\n            return { ...state, receiptEmail };\n        },\n        CLEAR_INSTRUCTIONS_SOURCE: (state, action) => {\n            return {\n                ...state,\n                instructions: {\n                    ...state.instructions,\n                    source: undefined,\n                },\n            };\n        },\n        SET_INSTRUCTIONS_SOURCE_IBAN: (state, action) => {\n            const ibanValue = action?.source?.iban?.trim();\n            const bicValue = action?.source?.bic?.trim();\n            return {\n                ...state,\n                instructions: {\n                    ...state.instructions,\n                    source: {\n                        ...state.instructions?.source,\n                        account: ibanValue\n                            ? {\n                                iban: {\n                                    iban: ibanValue,\n                                    bic: bicValue,\n                                },\n                            }\n                            : undefined,\n                        accountIdentifier: ibanValue\n                            ? {\n                                iban: {\n                                    iban: ibanValue,\n                                },\n                            }\n                            : undefined,\n                        bic: bicValue,\n                    },\n                },\n            };\n        },\n        SET_MANDATORY_STANDING_ORDER_FIELDS: (state, action) => {\n            const debtorLegalNames = deepTrim(\n                action?.transfer?.instructions?.source?.customerData\n                    ?.legalNames,\n            );\n            const beneficiaryLegalNames = deepTrim(\n                action?.transfer?.instructions?.transferDestinations?.[0]\n                    ?.customerData?.legalNames,\n            );\n            const debtorBic = action?.transfer?.instructions?.source?.bic?.trim();\n            const beneficiaryAddress = deepTrim(\n                action?.transfer?.instructions?.transferDestinations?.[0]\n                    ?.customerData?.address,\n            );\n\n            return removeEmpty({\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    source: {\n                        ...state?.instructions?.source,\n                        customerData: {\n                            ...state?.instructions?.source?.customerData,\n                            legalNames: debtorLegalNames,\n                        },\n                        bic: debtorBic\n                            ? debtorBic\n                            : state?.instructions?.source?.bic,\n                    },\n                    transferDestinations: [\n                        {\n                            ...state?.instructions?.transferDestinations?.[0],\n                            customerData: {\n                                ...state?.instructions\n                                    ?.transferDestinations?.[0]?.customerData,\n                                legalNames: beneficiaryLegalNames,\n                                address: beneficiaryAddress,\n                            },\n                        },\n                        ...state?.instructions?.transferDestinations?.slice(1),\n                    ],\n                },\n                destinations: [\n                    {\n                        ...state?.destinations?.[0],\n                        customerData: {\n                            ...state?.destinations?.[0]?.customerData,\n                            legalNames: beneficiaryLegalNames,\n                            address: beneficiaryAddress,\n                        },\n                    },\n                    ...state?.destinations?.slice(1),\n                ],\n            });\n        },\n        SET_MANDATORY_STET_STANDING_ORDER_METADATA: (state, action) => {\n            const stetStandingOrderMetadata = deepTrim(\n                action?.stetTransferMetadata,\n            );\n            return {\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    metadata: {\n                        ...state?.instructions?.metadata,\n                        providerStandingOrderMetadata: {\n                            ...state?.instructions?.metadata\n                                ?.providerStandingOrderMetadata,\n                            stetStandingOrderMetadata,\n                        },\n                    },\n                },\n            };\n        },\n        SET_MANDATORY_POLISH_API_STANDING_ORDER_METADATA: (state, action) => {\n            const polishApiStandingOrderMetaData = deepTrim(\n                action?.polishApiTransferMetadata,\n            );\n            return {\n                ...state,\n                instructions: {\n                    ...state?.instructions,\n                    metadata: {\n                        ...state?.instructions?.metadata,\n                        providerStandingOrderMetadata: {\n                            ...state?.instructions?.metadata\n                                ?.providerStandingOrderMetadata,\n                            polishApiStandingOrderMetaData,\n                        },\n                    },\n                },\n            };\n        },\n    },\n);\n\nconst bulkTransfer = createReducer(\n    {},\n    {\n        SET_TOKEN_TYPE: (state, action) => {\n            const totalAmount = normalizeMoney(action.amount);\n            const transfers = action.transfers;\n            const source = action.source;\n            return {\n                ...state,\n                totalAmount,\n                transfers,\n                source,\n            };\n        },\n        SET_PAYMENT_ACCOUNT: (state, action) => {\n            const sourceAccountId = action.accountId;\n            return { ...state, sourceAccountId };\n        },\n        CLEAR_PAYMENT_ACCOUNT: (state, action) => {\n            return { ...state, sourceAccountId: undefined };\n        },\n        SET_ACCOUNTS: (state, action) => {\n            const sourceAccountId =\n                state.sourceAccountId ||\n                (action.accounts.length && action.accounts[0].id);\n            return { ...state, sourceAccountId };\n        },\n        SET_RECEIPT_EMAIL: (state, action) => {\n            const receiptEmail = action.email;\n            return { ...state, receiptEmail };\n        },\n        CLEAR_INSTRUCTIONS_SOURCE: (state, action) => {\n            return {\n                ...state,\n                instructions: {\n                    ...state.instructions,\n                    source: undefined,\n                },\n            };\n        },\n        SET_INSTRUCTIONS_SOURCE_IBAN: (state, action) => {\n            const ibanValue = action.source?.iban?.trim();\n            const bicValue =\n                action.source?.bic && action.source.bic !== ''\n                    ? action.source.bic.trim()\n                    : undefined;\n            return {\n                ...state,\n                source: {\n                    ...state.source,\n                    account: {\n                        iban: {\n                            iban: ibanValue,\n                            bic: bicValue,\n                        },\n                    },\n                    accountIdentifier: {\n                        iban: {\n                            iban: ibanValue,\n                        },\n                    },\n                },\n            };\n        },\n    },\n);\n\nconst vrp = createReducer(\n    {},\n    {\n        SET_VRP_LOCAL_INSTRUMENT: (state, action) => {\n            const localInstrument = action.localInstrument;\n            return { ...state, localInstrument };\n        },\n    },\n);\n\nconst token = createReducer(\n    {},\n    {\n        SET_REF_ID: (state, action) => {\n            const refId = action.refId;\n            return { ...state, refId };\n        },\n        SET_RESOLVED_PAYLOAD: (state, action) => {\n            const resolvedPayload = action.resolvedPayload;\n            return { ...state, resolvedPayload };\n        },\n        SET_BANK_REDIRECT_URL: (state, action) => {\n            const bankRedirectUrl = action.bankRedirectUrl;\n            return { ...state, bankRedirectUrl };\n        },\n        SET_TOKEN_ID: (state, action) => {\n            const tokenId = action.tokenId;\n            return { ...state, tokenId };\n        },\n        SET_CREDENTIALS: (state, action) => {\n            const credentials = action.credentials;\n            return { ...state, credentials };\n        },\n        SET_INIT_BANK_AUTH_STATUS: (state, action) => {\n            const status = action.status;\n            return { ...state, initiateBankAuthStatus: status };\n        },\n        SET_TOKEN_TRACE_ID: (state, action) => {\n            const traceId = action.traceId;\n            return { ...state, traceId };\n        },\n    },\n);\n\nexport const reducer = combineReducers({\n    token,\n    transfer,\n    access,\n    standingOrder,\n    bulkTransfer,\n    vrp,\n});\n\nexport const selector = getState => {\n    return {\n        getRefId: () => getState().token.refId,\n        getTokenId: () => getState().token.tokenId,\n        getResolvedPayload: () => getState().token.resolvedPayload,\n        getBankRedirectUrl: () => getState().token.bankRedirectUrl,\n        getSourceAccountId: () => getState().transfer.sourceAccountId,\n        getAmount: () => getState().transfer.amount,\n        getCurrency: () => getState().transfer.currency,\n        getRemittanceReference: () => getState().transfer.remittanceReference,\n        getReturnRefundAccountFlag: () =>\n            getState().transfer.returnRefundAccount,\n        getDestinations: () => getState().transfer.destinations,\n        getTransferTypeDestinations: tokenType => {\n            let destinations = [];\n            switch (tokenType) {\n                case TOKEN_TYPE_TRANSFER:\n                    destinations = getSupportedPaymentNetworks(\n                        getState().transfer.destinations,\n                    );\n                    break;\n                case TOKEN_TYPE_STANDING_ORDER:\n                    destinations = getSupportedPaymentNetworks(\n                        getState().standingOrder.destinations,\n                    );\n                    break;\n                case TOKEN_TYPE_BULK_TRANSFER:\n                    destinations = getSupportedPaymentNetworks(\n                        getState().bulkTransfer.transfers.map(\n                            transfer => transfer.destination,\n                        ),\n                    );\n                    break;\n                case TOKEN_TYPE_VRP:\n                    destinations = [getState().vrp.localInstrument];\n                    break;\n            }\n            return destinations;\n        },\n        getInstructions: () => getState().transfer.instructions,\n        getCafFlag: () => getState().transfer.confirmFunds,\n        getDefaultIban: () =>\n            getState().transfer.instructions.source.account.iban.iban,\n        receiptRequested: () => !!getState().transfer.receiptEmail,\n        getReceiptEmail: () => getState().transfer.receiptEmail,\n        getExecutionDate: () => getState().transfer.executionDate,\n        getSetTransferDestinationsUrl: () =>\n            getState().transfer.setTransferDestinationsUrl,\n        getResources: () => getState().access.resources,\n        getResourceTypeList: () => getState().access,\n        getStandingOrderAmount: () => getState().standingOrder.amount,\n        getStandingOrderCurrency: () => getState().standingOrder.currency,\n        getStandingOrderFrequency: () => getState().standingOrder.frequency,\n        getStandingOrderStartDate: () => getState().standingOrder.startDate,\n        getStandingOrderEndDate: () => getState().standingOrder.endDate,\n        getStandingOrderRemittanceReference: () =>\n            getState().standingOrder.remittanceReference,\n        getStandingOrderReturnRefundAccountFlag: () =>\n            getState().standingOrder.returnRefundAccount,\n        getStandingOrderDestinations: () =>\n            getState().standingOrder.destinations,\n        getStandingOrderInstructions: () =>\n            getState().standingOrder.instructions,\n        getAccountNumber: () => getState().consent.accountNumber,\n        getBulkTransferAmount: () => getState().bulkTransfer.totalAmount,\n        getBulkTransferCurrency: () =>\n            getState().bulkTransfer.transfers.length > 0 &&\n            getState().bulkTransfer.transfers[0].currency,\n        getBulkTransferSource: () => getState().bulkTransfer.source,\n        getBulkTransfers: () => getState().bulkTransfer.transfers,\n        getCredentials: () => getState().token.credentials,\n        getBankAuthStatus: () => getState().token.initiateBankAuthStatus,\n        getTraceId: () => getState().token.traceId,\n    };\n};\n\nexport const getRedactedState = getState => {\n    const state = getState();\n    return {\n        ...state,\n        transfer: {\n            ...state.transfer,\n            receiptEmail: REDACTED_VALUE,\n        },\n    };\n};\n\nexport const name = 'token';\n","import { combineReducers } from 'redux';\nimport { createReducer } from '@token-io/lib-web-app';\n\nconst request = createReducer(\n    {},\n    {\n        SET_VRP_ID: (state, action) => {\n            return { ...state, vrpId: action.vrpId };\n        },\n        SET_VRP_REF_ID: (state, action) => {\n            return { ...state, vrpRefId: action.vrpRefId };\n        },\n        SET_VRP_LOCAL_INSTRUMENT: (state, action) => {\n            const localInstrument = action.localInstrument;\n            return { ...state, localInstrument };\n        },\n    },\n);\n\nconst consentDetails = createReducer(\n    {},\n    {\n        SET_VRP_CURRENCY: (state, action) => {\n            return { ...state, currency: action.currency };\n        },\n        SET_VRP_STATUS: (state, action) => {\n            return { ...state, status: action.status };\n        },\n        SET_VRP_DEBTOR_INFO: (state, action) => {\n            return { ...state, debtorInfo: action.debtorInfo };\n        },\n        SET_VRP_CREDITOR_INFO: (state, action) => {\n            return { ...state, creditorInfo: action.creditorInfo };\n        },\n        SET_VRP_PERIODIC_LIMITS: (state, action) => {\n            return { ...state, periodicLimits: action.periodicLimits };\n        },\n        SET_VRP_EXPIRATION_DATE: (state, action) => {\n            return { ...state, expirationDate: action.expirationDate };\n        },\n        SET_PISP_CONSENT_ACCEPTED: (state, action) => {\n            const flag = action?.pispConsentAccepted || false;\n            return {\n                ...state,\n                pispConsentAccepted: flag,\n            };\n        },\n        SET_VRP_DESCRIPTION: (state, action) => {\n            return { ...state, description: action.description };\n        },\n        SET_MAX_AMOUNT: (state, action) => {\n            return {\n                ...state,\n                maxIndividualAmount: action.maxIndividualAmount,\n            };\n        },\n    },\n);\n\nexport const reducer = combineReducers({\n    request,\n    consentDetails,\n});\n\nexport const selector = getState => {\n    return {\n        getVrpRequestId: () => getState().request.vrpId,\n        getVrpRefId: () => getState().request.vrpRefId,\n        getStatus: () => getState().consentDetails.status,\n        getPeriodicLimits: () => getState().consentDetails.periodicLimits,\n        getMaxIndividualAmount: () =>\n            getState().consentDetails.maxIndividualAmount,\n        getCreditorBankName: () =>\n            getState().consentDetails.creditorInfo.bankName,\n        getDescription: () => getState().consentDetails.description,\n        getDebtorInfo: () => getState().consentDetails.debtorInfo,\n        getCreditorInfo: () => getState().consentDetails.creditorInfo,\n        getLocalInstrument: () => getState().request.localInstrument,\n        getExpirationDate: () => getState().consentDetails.expirationDate,\n        getVrpCurrency: () => getState().consentDetails.currency,\n        getPispConsentAccepted: () =>\n            getState().consentDetails.pispConsentAccepted,\n    };\n};\n\nexport const getRedactedState = getState => {\n    const state = getState();\n    // No redacted state here for now\n    return {\n        ...state,\n    };\n};\n\nexport const name = 'vrp';\n","import * as shared from 'reducers/shared';\nimport * as user from 'reducers/user';\nimport * as tokenRequest from 'reducers/tokenRequest';\nimport * as token from 'reducers/token';\nimport * as vrp from 'reducers/vrp';\nimport { ReduxService } from '@token-io/lib-web-app';\n\nconst selectors = [shared, user, tokenRequest, token, vrp];\nconst reduxService = new ReduxService({ selectors });\n\nconst reducer = reduxService.getRootReducer();\nconst connect = reduxService.getConnect();\n\nconst getServices = reduxService.getServices;\n\nconst getRedactedState = getState => {\n    if (typeof getState !== 'function') {\n        const state = getState;\n        getState = () => state;\n    }\n    return selectors.reduce(\n        (acc, service) => ({\n            ...acc,\n            [service.name]: service.getRedactedState(\n                () => getState()[service.name],\n            ),\n        }),\n        {},\n    );\n};\n\nconst getSanitizedState = getState => {\n    if (typeof getState !== 'function') {\n        const state = getState;\n        getState = () => state;\n    }\n    const state = { ...getState() };\n    delete state.user;\n    return state;\n};\n\nexport {\n    reducer as default,\n    connect,\n    getServices,\n    getRedactedState,\n    getSanitizedState,\n};\n","import { APP_APPROVAL, LOADING_STEP, SPLASH_STEP } from 'config/constants';\nimport { addStep, backStep } from '@token-io/lib-web-app';\n\nexport const changeRoute = route => ({\n    type: 'SET_CURRENT_ROUTE',\n    route: route,\n});\n\nexport const setStep = (nextStep, replace) => (dispatch, { sharedService }) => {\n    const currentStep = sharedService.getCurrentStep();\n    if (\n        nextStep !== currentStep &&\n        !(currentStep === SPLASH_STEP && nextStep === LOADING_STEP)\n    ) {\n        const ignore = nextStep === LOADING_STEP || nextStep === SPLASH_STEP;\n        const replaceStepsCurrent = [APP_APPROVAL];\n        replace = replace || replaceStepsCurrent.includes(currentStep);\n        dispatch(addStep(nextStep, ignore, replace));\n    }\n};\n\nexport const backOrGoTo = (step, replace) => (dispatch, { sharedService }) => {\n    if (step === sharedService.getPreviousHistoryStep()) {\n        dispatch(backStep());\n    } else {\n        dispatch(setStep(step, replace));\n    }\n};\n\nexport { backStep };\n","import { TPP_INTEGRATION_ADDRESS, CUSTOM_HEADERS } from 'config/constants';\nimport axios from 'axios';\n\nconst TppIntegrationClient = axios.create({\n    baseURL: TPP_INTEGRATION_ADDRESS,\n    headers: {\n        ...CUSTOM_HEADERS.INITIATED_BY,\n        get: {\n            'Cache-Control': 'no-cache',\n            Pragma: 'no-cache',\n            Expires: '0',\n        },\n    },\n});\n\nexport default TppIntegrationClient;\n","import {\n    INTERNAL_TOKEN_REQUEST_STATUS,\n    INTERNAL_TOKEN_REQUEST_STATUS_MAP,\n    STORE_WEB_APP_EVENTS_PATH,\n    WEB_APP_EVENTS,\n} from 'config/constants';\nimport TppIntegrationClient from './tppIntegrationClient';\n\nconst storeWebappEvent = ({ event, payload }) => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    try {\n        let _event;\n\n        const tokenRequestId = tokenRequestService.getRequestId();\n        const memberId = tokenRequestService.getTppMemberAndRealmId()?.memberId;\n\n        switch (event) {\n            case INTERNAL_TOKEN_REQUEST_STATUS[event]:\n                if (INTERNAL_TOKEN_REQUEST_STATUS_MAP[event]) {\n                    _event = INTERNAL_TOKEN_REQUEST_STATUS_MAP[event];\n                    break;\n                }\n            /* falls through */\n            default:\n                _event = WEB_APP_EVENTS[event];\n        }\n\n        if (!_event) return;\n\n        await TppIntegrationClient({\n            method: 'post',\n            url: STORE_WEB_APP_EVENTS_PATH,\n            data: {\n                memberId,\n                resourceId: tokenRequestId,\n                eventType: _event,\n                data:\n                    payload && payload instanceof String\n                        ? payload\n                        : JSON.stringify(payload),\n            },\n        });\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n};\n\nexport default storeWebappEvent;\n","import {\n    INTERNAL_TOKEN_REQUEST_STATUS_REASON,\n    SET_TOKEN_REQUEST_RESULT_STATUS_INTERNAL_PATH,\n} from 'config/constants';\nimport storeWebappEvent from './storeWebappEvent';\nimport TppIntegrationClient from './tppIntegrationClient';\n\nconst setTokenRequestStatus = (internalStatus, extraData) => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    const isTokenRequest = !sharedService.isVrp();\n    try {\n        // Independent Promises to resolve parallelly\n        const promises = new Array(\n            dispatch(\n                storeWebappEvent({ event: internalStatus, payload: extraData }),\n            ),\n        );\n        if (isTokenRequest) {\n            const tokenRequestId = tokenRequestService.getRequestId();\n            const params = {\n                TOKEN_REQUEST_ID: tokenRequestId,\n            };\n            const payload = {\n                status: internalStatus,\n                statusReasonInformation:\n                    INTERNAL_TOKEN_REQUEST_STATUS_REASON[internalStatus],\n            };\n\n            promises.push(\n                TppIntegrationClient({\n                    method: 'post',\n                    url: SET_TOKEN_REQUEST_RESULT_STATUS_INTERNAL_PATH.replace(\n                        /{([\\w]+)}/g,\n                        (match, group) => params[group],\n                    ),\n                    data: {\n                        ...payload,\n                    },\n                }),\n            );\n        }\n        await Promise.all(promises);\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n};\n\nexport default setTokenRequestStatus;\n","import { TOKEN_API_ADDRESS, CUSTOM_HEADERS } from 'config/constants';\nimport axios from 'axios';\n\nconst TokenApiClient = axios.create({\n    baseURL: TOKEN_API_ADDRESS,\n    headers: {\n        ...CUSTOM_HEADERS.INITIATED_BY,\n        get: {\n            'Cache-Control': 'no-cache',\n            Pragma: 'no-cache',\n            Expires: '0',\n        },\n    },\n});\n\nexport default TokenApiClient;\n","import {\n    TOKEN_ENV,\n    INITIATE_BANK_AUTH_PATH,\n    appNotificationInterval,\n    TOKEN_REQUEST_PATH,\n    TRIGGER_CREATE_AND_ENDORSE_TOKEN_PATH,\n    GET_BANK_STATUS,\n    VRP_REQUEST_PATH,\n    VRP_DECLINE_PATH,\n    GET_TPP_CONFIGURATIONS_FOR_VRP,\n    appNotificationTimeout,\n    sdkErrorLoggingEnabled,\n    sendErrorReports,\n    tokenRootUrl,\n    WEB_APP_EVENTS,\n    GET_TOKEN_REQUEST_RESULT_WITH_STATUS_PATH,\n    GET_DIRECT_BANK_AUTH_URL_PATH,\n    CREATE_TEMPORARY_MEMBER_PATH,\n    UPDATE_MEMBER_PATH,\n    webAppUrl,\n    CUSTOM_TPP_FEATURES as featureConfig,\n    CUSTOM_HEADERS,\n} from 'config/constants';\nimport {\n    poll,\n    getSentryInterceptor,\n    getDeviceId,\n    getDeveloperId,\n    getInstantDevKey,\n    localStorageWrapper,\n} from 'util/index';\nimport {\n    clearMembers,\n    logoutFromLocalStorage,\n    terminateFlow,\n} from 'actions/shared/index';\nimport {\n    INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT,\n    INTL_EXCEPTION_NO_LINKED_ACCOUNTS,\n    EXCEPTION_INITIATE_BANK_AUTH,\n    EXCEPTION_UPDATE_VRP_CONSENT_BANK,\n    INTL_EXCEPTION_REQUEST_FAILED,\n} from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\nimport { TokenClient } from '@token-io/app';\nimport { TppIntegrationClient, storeWebappEvent } from 'actions/helpers/Api';\nimport axios from 'axios';\n\nlet TOKEN, appNotificationId, cancelTokenRequest, invalidateNotificationRequest;\n\nconst webAppClient = axios.create({\n    baseURL: window.location.origin,\n});\n\nexport const setTempMember = member => ({\n    type: 'SET_TEMP_MEMBER',\n    member,\n});\n\nexport const getTokenClient = () => {\n    if (!TOKEN) {\n        TOKEN = new TokenClient({\n            env: TOKEN_ENV,\n            developerKey: getInstantDevKey(),\n            loggingEnabled: sdkErrorLoggingEnabled,\n            customResponseInterceptor:\n                sendErrorReports && getSentryInterceptor(),\n        });\n\n        TOKEN.setCustomHeaders(CUSTOM_HEADERS.INITIATED_BY);\n    }\n\n    return TOKEN;\n};\n\nconst Token = getTokenClient();\n\n// Token API calls\nexport const enableIframePassthrough = () => {\n    if (document.domain.endsWith(tokenRootUrl)) {\n        document.domain = tokenRootUrl.substring(1);\n        Token.Util.enableIframePassthrough(TOKEN_ENV);\n    }\n};\n\nexport const saveBankToLocalStorage = bank => {\n    localStorageWrapper.set('bank', bank);\n};\n\nexport const getBankFromLocalStorage = () => {\n    return localStorageWrapper.get('bank');\n};\n\nexport const getTppConfigurationsForVrp = async vrpConsentId => {\n    try {\n        const response = await TppIntegrationClient({\n            method: 'get',\n            url: GET_TPP_CONFIGURATIONS_FOR_VRP.replace(\n                /{[\\w]+}/g,\n                vrpConsentId,\n            ),\n        });\n        const {\n            configurations,\n            bankSelectionPreset,\n            aliases,\n            realm,\n            hideConsent,\n        } = response.data || {};\n        const result = {\n            tppConfigurations: configurations,\n            bankSelectionPreset,\n            realm,\n            hideConsent,\n        };\n\n        const _aliases = aliases?.verified || aliases?.unverified;\n        const realmId = realm?.id;\n\n        if (_aliases?.length > 0) {\n            result.alias = realmId\n                ? _aliases.filter(val => val?.realmId === realmId)?.[0] ||\n                  _aliases[0]\n                : _aliases[0];\n        }\n\n        return result;\n    } catch (e) {\n        console.log(e); // eslint-disable-line\n        throw new TokenException(INTL_EXCEPTION_REQUEST_FAILED, e.message);\n    }\n};\n\nexport const declineVrpConsent = async vrpId => {\n    if (!vrpId) return;\n    try {\n        await TppIntegrationClient({\n            method: 'post',\n            url: VRP_DECLINE_PATH.replace(/{[\\w]+}/g, vrpId),\n        });\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n};\n\nexport const updateVrpRequest = async (vrpId, updateOptions) => {\n    if (!vrpId) return;\n    try {\n        const { bankId, pispConsentAccepted } = updateOptions;\n        const response = await TppIntegrationClient({\n            method: 'put',\n            url: VRP_REQUEST_PATH.replace(/{[\\w]+}/g, vrpId),\n            data: {\n                ...(bankId && {\n                    bank_id: bankId,\n                }),\n                vrp_consent_id: vrpId,\n                ...(pispConsentAccepted && {\n                    pisp_consent_accepted: pispConsentAccepted,\n                }),\n            },\n        });\n        if (response.status === 200) {\n            return response.data && response.data.vrpConsent;\n        } else {\n            throw new TokenException(\n                EXCEPTION_UPDATE_VRP_CONSENT_BANK,\n                'Error in updating the bank in vrp consent from TI',\n            );\n        }\n    } catch (e) {\n        console.log(e); // eslint-disable-line\n        throw new TokenException(\n            EXCEPTION_UPDATE_VRP_CONSENT_BANK,\n            (e.response && e.response.data) || e.message,\n        );\n    }\n};\n\nexport const getBankStatus = async (bankId, productType, tokenRequestId) => {\n    if (!bankId) return;\n    productType = productType === 'AIS' ? productType : 'SIP';\n    const resp = await TppIntegrationClient({\n        method: 'get',\n        url: GET_BANK_STATUS.replaceAll('{BANK_ID}', bankId)\n            .replaceAll('{PRODUCT_TYPE}', productType)\n            .replaceAll('{TOKEN_REQUEST_ID}', tokenRequestId),\n    });\n    return resp.data.status;\n};\n\nexport const fetchVrpConsent = async vrpId => {\n    if (!vrpId) return;\n    const resp = await TppIntegrationClient({\n        method: 'get',\n        url: VRP_REQUEST_PATH.replace(/{[\\w]+}/g, vrpId),\n    });\n    return resp.data;\n};\n\nexport const fetchTokenRequest = async tokenRequestId => {\n    const resp = await TppIntegrationClient({\n        method: 'get',\n        url: TOKEN_REQUEST_PATH.replaceAll(/{\\w+}/g, tokenRequestId),\n    });\n    return resp.data;\n};\n\nexport const fetchProfilePicture = async (member, memberId) => {\n    let profilePicture;\n    try {\n        const imgData = await member.getProfilePicture(memberId, 'ORIGINAL');\n        profilePicture = imgData.payload;\n    } catch (e) {\n        profilePicture = null;\n    }\n    return profilePicture;\n};\n\nexport const setMemberReceiptEmail = async (member, email) => {\n    await member.setReceiptContact('EMAIL', email);\n};\n\nexport const getMemberProfileById = async (memberId, utilMember) => {\n    if (!utilMember) return {};\n    const tppName = await utilMember.getProfileName(memberId);\n    const profilePicture = await fetchProfilePicture(utilMember, memberId);\n\n    return {\n        memberId,\n        tppName,\n        profilePicture,\n    };\n};\n\nexport const replaceExistingAccessToken = async (\n    member,\n    aispAlias,\n    resources,\n) => {\n    const aispMember = await Token.resolveAlias(aispAlias);\n    const existingToken = await member.getActiveAccessToken(aispMember.id);\n    const { token } = await member.replaceAccessToken(existingToken, resources);\n    return token;\n};\n\nexport const pollForTokenRequestResult = async (\n    tokenRequestId,\n    notificationId,\n    tppMemberId,\n) => {\n    if (!notificationId) return;\n    appNotificationId = notificationId;\n    try {\n        await addInvalidateNotificationOnClose(notificationId);\n        return (\n            (await poll(\n                async () => {\n                    const result = await fetchTokenRequestResultWithStatus(\n                        tokenRequestId,\n                        tppMemberId,\n                    );\n                    // poll retries until this stops throwing\n                    if (!result?.tokenId || !result?.signature) {\n                        throw new Error('Token request result not ready');\n                    }\n                    return result;\n                },\n                appNotificationInterval,\n                appNotificationTimeout,\n                INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT,\n                () => !appNotificationId,\n                () =>\n                    invalidateNotificationRequest() &&\n                    removeInvalidateNotificationOnClose(),\n            )) || {}\n        );\n    } finally {\n        removeInvalidateNotificationOnClose();\n    }\n};\n\nexport const cancelPollForTokenRequestResult = async () => {\n    if (appNotificationId) {\n        await Token.invalidateNotification(appNotificationId);\n        appNotificationId = null;\n        removeInvalidateNotificationOnClose();\n    }\n};\n\nexport const addInvalidateNotificationOnClose = async notificationId => {\n    if (!notificationId) return;\n    // Setup blocking invalidate notification function\n    const invalidateNotification = await Token.getBlockingInvalidateNotificationFunction(\n        notificationId,\n    );\n    invalidateNotificationRequest = () => {\n        invalidateNotification();\n        return true;\n    };\n    window.addEventListener('beforeunload', invalidateNotificationRequest);\n};\n\nexport const removeInvalidateNotificationOnClose = () => {\n    appNotificationId = null;\n    if (typeof invalidateNotificationRequest !== 'function') return true;\n    window.removeEventListener('beforeunload', invalidateNotificationRequest);\n    invalidateNotificationRequest = null;\n    return true;\n};\n\nexport const addCancelTokenOnClose = async (clientMember, tokenId) => {\n    if (!tokenId) return;\n    // Setup blocking cancel token function\n    const cancelToken = await clientMember.getBlockingCancelTokenFunction(\n        tokenId,\n    );\n    // Cancel Token before unload\n    cancelTokenRequest = () => {\n        cancelToken();\n    };\n    window.addEventListener('beforeunload', cancelTokenRequest);\n};\n\nexport const removeCancelTokenOnClose = () => {\n    if (typeof cancelTokenRequest !== 'function') return;\n    window.removeEventListener('beforeunload', cancelTokenRequest);\n    cancelTokenRequest = null;\n};\n\nconst createTemporaryMember = async tokenRequestId => {\n    const response = await TppIntegrationClient({\n        method: 'post',\n        url: CREATE_TEMPORARY_MEMBER_PATH,\n        data: { tokenRequestId },\n    });\n    return response.data.memberId;\n};\n\nconst updateMember = async (memberId, keys, cryptoEngine) => {\n    const update = {\n        memberId,\n        operations: keys.map(key => ({\n            addKey: {\n                key: {\n                    id: key.id,\n                    publicKey: Token.Util.strKey(key.publicKey),\n                    level: key.level,\n                    algorithm: key.algorithm,\n                    ...(key.expiresAtMs && { expiresAtMs: key.expiresAtMs }),\n                },\n            },\n        })),\n    };\n    const signer = await cryptoEngine.createSigner('PRIVILEGED');\n    const updateSignature = {\n        memberId,\n        keyId: signer.getKeyId(),\n        signature: await signer.signJson(update),\n    };\n\n    await TppIntegrationClient({\n        method: 'put',\n        url: UPDATE_MEMBER_PATH.replace('{MEMBER_ID}', memberId),\n        data: { update, updateSignature },\n    });\n};\n\nconst createTempMember = async (cryptoEngine, dispatch, tokenRequestId) => {\n    const memberId = await createTemporaryMember(tokenRequestId);\n    const engine = new cryptoEngine(memberId);\n    const keys = [\n        await engine.generateKey('PRIVILEGED'),\n        await engine.generateKey('STANDARD'),\n        await engine.generateKey('LOW'),\n    ];\n\n    await updateMember(memberId, keys, engine);\n\n    const tempMember = Token.getMember(cryptoEngine, memberId);\n    tempMember.setMiscHeaders({\n        ...CUSTOM_HEADERS.INITIATED_BY,\n        ...CUSTOM_HEADERS.TRANSIENT,\n    });\n    dispatch(setTempMember(tempMember));\n\n    return tempMember;\n};\n\nexport const getTempMember = () => async (\n    dispatch,\n    { userService, tokenRequestService },\n) => {\n    if (userService.hasTempMember()) {\n        return userService.getTempMember();\n    }\n\n    return createTempMember(\n        Token.MemoryCryptoEngine,\n        dispatch,\n        tokenRequestService.getRequestId(),\n    );\n};\n\nexport const getTempMemberLS = () => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    return createTempMember(\n        Token.BrowserCryptoEngine,\n        dispatch,\n        tokenRequestService.getRequestId(),\n    );\n};\n\nexport const getAndValidateAccounts = (member, bank, withBalance) => async dispatch => {\n    try {\n        let accounts = await member.getAccounts();\n        if (bank) {\n            accounts = accounts.filter(acc => {\n                return acc.bankId() === bank.id;\n            });\n\n            if (!accounts.length) {\n                dispatch(clearMembers());\n                await logoutFromLocalStorage();\n                throw new TokenException(\n                    INTL_EXCEPTION_NO_LINKED_ACCOUNTS,\n                    'No linked accounts',\n                    { BANK_NAME: bank.name },\n                );\n            }\n        }\n        if (withBalance) {\n            accounts = await Promise.all(\n                accounts.map(async acc => ({\n                    id: acc.id(),\n                    name: acc.name(),\n                    bankId: acc.bankId(),\n                    balance: await acc.getBalance(),\n                })),\n            );\n        }\n        return accounts;\n    } catch (e) {\n        dispatch(clearMembers());\n        await logoutFromLocalStorage();\n        throw e;\n    }\n};\n\nexport const fetchCustomerTrackingMetadata = async () => {\n    let ipAddress;\n    try {\n        ipAddress = await webAppClient({\n            method: 'get',\n            url: '/fetch-ip-address',\n        });\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n    return {\n        ...(ipAddress && { ipAddress: ipAddress?.data }),\n        userAgent: window.navigator.userAgent,\n        deviceId: getDeviceId(),\n    };\n};\n\nexport const fetchTokenRequestResultWithStatus = async (\n    tokenRequestId,\n    memberId,\n) => {\n    const params = {\n        TOKEN_REQUEST_ID: tokenRequestId,\n        MEMBER_ID: memberId,\n    };\n    try {\n        const response = await TppIntegrationClient({\n            method: 'get',\n            url: GET_TOKEN_REQUEST_RESULT_WITH_STATUS_PATH.replace(\n                /{([\\w]+)}/g,\n                function (match, group) {\n                    return params[group];\n                },\n            ),\n        });\n        return response.data;\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n        return null;\n    }\n};\n\nexport const getDirectBankAuthUrl = async (bankId, tokenRequestId) => {\n    const params = {\n        BANK_ID: bankId,\n        TOKEN_REQUEST_ID: tokenRequestId,\n    };\n    const response = await TppIntegrationClient({\n        method: 'get',\n        url: GET_DIRECT_BANK_AUTH_URL_PATH.replace(\n            /{([\\w]+)}/g,\n            function (match, group) {\n                return params[group];\n            },\n        ),\n    });\n    return response.data.url;\n};\n\nexport const updateTokenRequest = async (\n    tokenRequestId,\n    { bankId, from } = {},\n) => {\n    const data = {};\n    if (bankId) {\n        data.bankId = bankId;\n    }\n    if (from?.id) {\n        data.fromMemberId = from.id;\n    }\n    await TppIntegrationClient({\n        method: 'put',\n        url: TOKEN_REQUEST_PATH.replaceAll(/{\\w+}/g, tokenRequestId),\n        data,\n    });\n};\n\nexport const triggerCreateAndEndorseTokenNotification = async (\n    tokenRequestId,\n    keys,\n    deviceMetadata,\n    receiptContact,\n) => {\n    const response = await TppIntegrationClient({\n        method: 'post',\n        url: TRIGGER_CREATE_AND_ENDORSE_TOKEN_PATH.replace(\n            '{TOKEN_REQUEST_ID}',\n            tokenRequestId,\n        ),\n        data: {\n            addKey: {\n                keys,\n                deviceMetadata,\n            },\n            contact: receiptContact,\n        },\n    });\n    return response.data;\n};\n\nexport const initBankAuth = async initBankAuthRequest => {\n    try {\n        const response = await TppIntegrationClient({\n            method: 'post',\n            url: INITIATE_BANK_AUTH_PATH,\n            data: initBankAuthRequest,\n        });\n        if (response.status === 200) {\n            return response.data;\n        } else {\n            throw new TokenException(\n                EXCEPTION_INITIATE_BANK_AUTH,\n                'Error in initiate bank auth from TI',\n            );\n        }\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n        throw e;\n    }\n};\n\nexport const initiateBankAuthorization = request => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    const requestId = tokenRequestService.getRequestId();\n    const useCredentialFlow = tokenRequestService.getUseCredentialFlow();\n    const customDevKey = sharedService.getCustomDevKey();\n    const developerId = getDeveloperId(customDevKey);\n    const bankId = sharedService.getSelectedBankId();\n\n    let tokenRedirectUrl;\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    if (customRedirectURL) {\n        tokenRedirectUrl = `${customRedirectURL}/app/auth/callback`;\n    } else {\n        tokenRedirectUrl = `${webAppUrl}/app/auth/callback`;\n    }\n\n    let initBankAuthRequest = {\n        requestId,\n        useCredentialFlow,\n        developerId,\n    };\n\n    if (request?.credentials) {\n        initBankAuthRequest = {\n            ...request,\n            ...initBankAuthRequest,\n        };\n        // Store webapp event of this moment\n        await dispatch(\n            storeWebappEvent({\n                event: WEB_APP_EVENTS.WEB_APP_CREDENTIALS_CAPTURED,\n            }),\n        );\n    } else {\n        initBankAuthRequest = {\n            ...request,\n            ...initBankAuthRequest,\n            bankId,\n            tokenRedirectUrl,\n        };\n    }\n\n    try {\n        return await initBankAuth(initBankAuthRequest);\n    } catch (e) {\n        await dispatch(\n            terminateFlow({\n                error: EXCEPTION_INITIATE_BANK_AUTH,\n                message: e.response?.data,\n            }),\n        );\n    }\n};\n\nexport * from 'actions/helpers/Api/index.js';\n","const AccessTokenHelper = {\n    formatResources: async (resourceList, member, bankId) => {\n        const accounts = await member.getAccounts();\n        const filtered = bankId\n            ? accounts.filter(acc => acc.bankId() === bankId)\n            : accounts;\n        const accountIds = filtered.map(acc => acc.id());\n        if (typeof resourceList[0] === 'string') {\n            const unflattened = resourceList.map(res => {\n                if (res === 'ACCOUNTS' || res['allAccounts']) {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'account',\n                    );\n                } else if (res === 'BALANCES' || res['allBalances']) {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'balance',\n                    );\n                } else if (res === 'TRANSACTIONS' || res['allTransactions']) {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'transactions',\n                    );\n                } else if (res === 'TRANSFER_DESTINATIONS') {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'transferDestinations',\n                    );\n                } else if (res === 'FUNDS_CONFIRMATIONS') {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'fundsConfirmation',\n                    );\n                } else if (res === 'STANDING_ORDERS') {\n                    return AccessTokenHelper.unpackResources(\n                        accountIds,\n                        'standingOrders',\n                    );\n                }\n                return {};\n            });\n            return [].concat(...unflattened);\n        } else {\n            if (resourceList[0].type === 'ACCOUNT_FUNDS_CONFIRMATION') {\n                return [\n                    {\n                        fundsConfirmation: {\n                            accountId: accountIds[0],\n                        },\n                    },\n                ];\n            }\n        }\n    },\n    unpackResources: (accountIds, type) => {\n        return accountIds.map(accountId => ({ [type]: { accountId } }));\n    },\n    setResources: (builder, resourceList) => {\n        resourceList.forEach(res => {\n            if (res.account) {\n                builder.forAccount(res.account.accountId);\n            } else if (res.balance) {\n                builder.forAccountBalance(res.balance.accountId);\n            } else if (res.transactions) {\n                builder.forAccountTransactions(res.transactions.accountId);\n            } else if (res.transferDestinations) {\n                builder.forAccountTransferDestinations(\n                    res.transferDestinations.accountId,\n                );\n            } else if (res.fundsConfirmation) {\n                builder.forAccountFundsConfirmation(\n                    res.fundsConfirmation.accountId,\n                );\n            } else if (res.standingOrders) {\n                builder.forAccountStandingOrders(res.standingOrders.accountId);\n            }\n        });\n    },\n};\n\nexport default AccessTokenHelper;\n","import {\n    clearBank,\n    clearMembers,\n    completeFlow,\n    completeFlowFromApp,\n    redirectToBankV2,\n    loginFromLocalStorage,\n    logoutFromLocalStorage,\n    setBank,\n    yieldBanks,\n    setBankInfo,\n    setLinkingRequestId,\n    setRecentBank,\n    setupBankRedirectUrl,\n    showBankRedirectionScreen,\n    terminateFlow,\n    validateAlias,\n    setCountriesList,\n    clearInstructionsSource,\n    initiateBankAuthFlow,\n    setOneStepSupport,\n    isBankLive,\n    setBankStatus,\n} from 'actions/shared';\nimport { backOrGoTo, changeRoute, setStep } from 'actions/shared/route';\nimport {\n    addCancelTokenOnClose,\n    getAndValidateAccounts,\n    getBankFromLocalStorage,\n    getTempMemberLS,\n    getTokenClient,\n    setTokenRequestStatus,\n    replaceExistingAccessToken,\n    fetchCustomerTrackingMetadata,\n    updateTokenRequest,\n} from 'actions/shared/api';\nimport AccessTokenHelper from 'services/AccessTokenHelper';\nimport {\n    AISP_APP_INSTALL,\n    AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST,\n    AISP_CONSENT_BANK_FIRST,\n    AISP_ENTER_ALIAS,\n    AISP_SELECT_BANK_BANK_FIRST,\n    LOADING_STEP,\n    ROUTE_AISP,\n    TOKEN_TYPE_ACCESS,\n    TOKEN_PROVIDER,\n    webAppUrl,\n    INTERNAL_TOKEN_REQUEST_STATUS as requestStatus,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { EXCEPTION_NO_RESOURCE } from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\n\nconst Token = getTokenClient();\n\nexport const setAispTokenType = ({\n    tppAlias,\n    resources,\n    actingAs,\n    memberId,\n    source,\n}) => ({\n    type: 'SET_TOKEN_TYPE',\n    tokenType: TOKEN_TYPE_ACCESS,\n    tppAlias,\n    resources,\n    actingAs,\n    memberId,\n    source,\n});\n\n// Sets the Iban if present\nexport const setInstructionsSourceIban = source => ({\n    type: 'SET_INSTRUCTIONS_SOURCE_IBAN',\n    source,\n});\n\nexport const setMandatoryAccessFields = mandatoryFields => ({\n    type: 'SET_MANDATORY_ACCESS_FIELDS',\n    mandatoryFields,\n});\n\n// thunks\n\nexport const initiateAispFlow = resources => async dispatch => {\n    dispatch(changeRoute(ROUTE_AISP));\n    if (!resources?.length) {\n        throw new TokenException(\n            EXCEPTION_NO_RESOURCE,\n            'Access token must have a resource',\n        );\n    }\n\n    await dispatch(loginFromLocalStorage());\n\n    await dispatch(setCountriesList());\n\n    dispatch(acceptTermsBankFirstFlow());\n};\n\nexport const acceptTermsBankFirstFlow = () => async (\n    dispatch,\n    { userService, tokenRequestService, tokenService },\n) => {\n    const defaultBankId = tokenRequestService.getDefaultBankId();\n    const isDefaultBank = !!defaultBankId;\n    const bank = getBankFromLocalStorage();\n    if (defaultBankId) {\n        const { banks } = await dispatch(\n            yieldBanks({ ids: [defaultBankId], isDefaultBank }),\n        );\n        let defaultBank = banks?.[0];\n        defaultBank = {\n            ...defaultBank,\n            selectedCountry: defaultBank.countries[0],\n        };\n        await dispatch(setBankAndProceedToConsent(defaultBank));\n    } else if (userService.hasPairedMembers() && bank) {\n        dispatch(setBank(bank));\n        if (tokenRequestService.getHideConsent()) {\n            await dispatch(requestAccess(bank));\n        } else {\n            dispatch(changeRoute(ROUTE_AISP));\n            typeof tokenService.getResources()[0] === 'string'\n                ? dispatch(setStep(AISP_CONSENT_BANK_FIRST))\n                : dispatch(setStep(AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST));\n        }\n    } else {\n        dispatch(setStep(AISP_SELECT_BANK_BANK_FIRST));\n    }\n};\n\nexport const setBankAndProceed = bank => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    await dispatch(setRecentBank(bank));\n    dispatch(setBank(bank));\n    if (bank.supportsCheckoutFlowV2) {\n        // Only for direct bank backword compatibility\n        await dispatch(redirectToBankV2());\n    } else {\n        const defaultAlias = tokenRequestService.getDefaultAlias();\n        const guest = await dispatch(getTempMemberLS());\n        dispatch(setBankInfo(await guest.getBankInfo(bank.id)));\n        const requestId = await tokenRequestService.getRequestId();\n        const customRedirectURL = tokenRequestService.getTppFeature(\n            featureConfig.CUSTOM_WEB_APP_URL,\n        );\n        if (customRedirectURL) {\n            dispatch(\n                setLinkingRequestId(\n                    await guest.storeLinkingRequest(\n                        `${customRedirectURL}/app/auth/callback`,\n                        requestId,\n                    ),\n                ),\n            );\n        } else {\n            dispatch(\n                setLinkingRequestId(\n                    await guest.storeLinkingRequest(\n                        `${webAppUrl}/app/auth/callback`,\n                        requestId,\n                    ),\n                ),\n            );\n        }\n        if (bank.supportsAppless) {\n            await dispatch(redirectToBank());\n        } else if (defaultAlias) {\n            const defaultAliasValue =\n                typeof defaultAlias === 'object' && defaultAlias.value\n                    ? defaultAlias.value\n                    : defaultAlias;\n            await dispatch(validateAlias(defaultAliasValue, 'EMAIL'));\n        } else {\n            dispatch(setStep(AISP_ENTER_ALIAS));\n        }\n    }\n};\n\nexport const setBankAndProceedToConsent = bank => async (\n    dispatch,\n    { tokenRequestService, tokenService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    const isSelectedBankLive = await dispatch(isBankLive(bank.id));\n    if (!isSelectedBankLive) {\n        await dispatch(setBankStatus(bank.name, isSelectedBankLive));\n        await dispatch(backToBankSelector());\n        return;\n    }\n\n    // Set token request result internal status\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_BANK_SELECTED),\n    );\n\n    await dispatch(setRecentBank(bank));\n    dispatch(setBank(bank));\n\n    // Since one step support is now decided through mandatory fields\n    // And mandatory fields does not have provision for AIS flow\n    dispatch(setOneStepSupport(false));\n\n    if (tokenRequestService.getHideConsent()) {\n        dispatch(proceedToBank());\n    } else {\n        if (typeof tokenService.getResources()[0] === 'string') {\n            dispatch(setStep(AISP_CONSENT_BANK_FIRST));\n        } else {\n            dispatch(setStep(AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST));\n        }\n    }\n};\n\nexport const noApp = () => async (dispatch, { sharedService }) => {\n    const bank = sharedService.getSelectedBank();\n    if (bank.supportsCheckoutFlowV2) {\n        await dispatch(redirectToBankV2());\n    } else if (bank && bank.supportsAppless) {\n        await dispatch(redirectToBank());\n    } else {\n        dispatch(setStep(AISP_APP_INSTALL));\n    }\n};\n\nexport const backToBankSelector = () => dispatch => {\n    dispatch(clearBank());\n    dispatch(clearInstructionsSource());\n    dispatch(setStep(AISP_SELECT_BANK_BANK_FIRST));\n};\n\nexport const proceedToBank = () => async (\n    dispatch,\n    { tokenRequestService, sharedService, userService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n\n    // Set token request result internal status\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_CONSENT_ACCEPTED),\n    );\n\n    const bank = sharedService.getSelectedBank();\n    const localStorageBank = getBankFromLocalStorage();\n\n    await updateTokenRequest(tokenRequestService.getRequestId(), {\n        bankId: sharedService.getSelectedBankId(),\n    });\n\n    const defaultBankId = tokenRequestService.getDefaultBankId() || '';\n\n    if (\n        userService.hasPairedMembers() &&\n        localStorageBank &&\n        defaultBankId === ''\n    ) {\n        await dispatch(requestAccess(localStorageBank));\n    } else if (bank.provider !== TOKEN_PROVIDER) {\n        dispatch(initiateBankAuthFlow());\n    } else {\n        if (bank.supportsCheckoutFlowV2) {\n            // Only for direct bank backword compatibility\n            await dispatch(redirectToBankV2());\n        } else {\n            const defaultAlias = tokenRequestService.getDefaultAlias();\n            const guest = await dispatch(getTempMemberLS());\n            dispatch(setBankInfo(await guest.getBankInfo(bank.id)));\n            const requestId = await tokenRequestService.getRequestId();\n            const customRedirectURL = tokenRequestService.getTppFeature(\n                featureConfig.CUSTOM_WEB_APP_URL,\n            );\n            if (customRedirectURL) {\n                dispatch(\n                    setLinkingRequestId(\n                        await guest.storeLinkingRequest(\n                            `${customRedirectURL}/app/auth/callback`,\n                            requestId,\n                        ),\n                    ),\n                );\n            } else {\n                dispatch(\n                    setLinkingRequestId(\n                        await guest.storeLinkingRequest(\n                            `${webAppUrl}/app/auth/callback`,\n                            requestId,\n                        ),\n                    ),\n                );\n            }\n            if (bank.supportsAppless) {\n                await dispatch(redirectToBank());\n            } else if (defaultAlias) {\n                const defaultAliasValue =\n                    typeof defaultAlias === 'object' && defaultAlias.value\n                        ? defaultAlias.value\n                        : defaultAlias;\n                await dispatch(validateAlias(defaultAliasValue, 'EMAIL'));\n            } else {\n                dispatch(setStep(AISP_ENTER_ALIAS));\n            }\n        }\n    }\n};\n\nexport const clearBankAndBack = () => async (\n    dispatch,\n    { tokenService, tokenRequestService, sharedService },\n) => {\n    await logoutFromLocalStorage();\n    dispatch(clearMembers());\n    const hasDefaultBankId = tokenRequestService.getDefaultBankId();\n    if (hasDefaultBankId) {\n        return dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: 'Token window was cancelled',\n            }),\n        );\n    }\n    if (typeof tokenService.getResources()[0] === 'string') {\n        dispatch(backOrGoTo(AISP_CONSENT_BANK_FIRST, true));\n    } else {\n        dispatch(backOrGoTo(AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST, true));\n    }\n};\n\nexport const requestAccess = bank => async (\n    dispatch,\n    { userService, tokenService, tokenRequestService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    await dispatch(setRecentBank(bank));\n    dispatch(setBank(bank));\n    const aispAlias = tokenRequestService.getTppAlias();\n    const member = userService.getFirstPairedMember();\n    const resources = await AccessTokenHelper.formatResources(\n        tokenService.getResources(),\n        member,\n        bank.id,\n    );\n    dispatch(setBankInfo(await member.getBankInfo(bank.id)));\n    await dispatch(getAndValidateAccounts(member, bank));\n    let token;\n    const accessTokenBuilder = await dispatch(\n        createAccessTokenBuilderFromTokenRequest(member),\n    );\n    try {\n        token = await accessTokenBuilder.execute();\n    } catch (e) {\n        if (e.message.indexOf('ALREADY_EXISTS') !== -1) {\n            token = await replaceExistingAccessToken(\n                member,\n                aispAlias,\n                resources,\n            );\n        } else {\n            throw e;\n        }\n    }\n    await addCancelTokenOnClose(member, token.id);\n    const { status } = await member.endorseToken(token.id);\n    if (status === 'SUCCESS') {\n        await dispatch(\n            completeFlow(tokenRequestService.getRequestId(), token.id, member),\n        );\n    } else {\n        await member.cancelToken(token.id);\n        await dispatch(completeFlowFromApp(await member.firstAlias()));\n    }\n};\n\n// This gets called when we want to redirect to the bank, in the appless flow. The redux state\n// that we need is stored in localStorage, and an appless member is created and stored. Finally.\n// the browser is redirected to the bank's website\nexport const redirectToBank = () => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    dispatch(showBankRedirectionScreen());\n    const bankInfo = sharedService.getSelectedBankInfo();\n    const requestId = await tokenRequestService.getRequestId();\n    const linkingRequestId = tokenRequestService.getLinkingRequestId();\n    let redirectUrl;\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    if (customRedirectURL) {\n        redirectUrl = `${\n            bankInfo.bankLinkingUri\n        }&redirect-uri=${encodeURIComponent(\n            `${customRedirectURL}/app/auth/callback`,\n        )}&request-id=${requestId}&linking-request-id=${linkingRequestId}`;\n    } else {\n        redirectUrl = `${\n            bankInfo.bankLinkingUri\n        }&redirect-uri=${encodeURIComponent(\n            `${webAppUrl}/app/auth/callback`,\n        )}&request-id=${requestId}&linking-request-id=${linkingRequestId}`;\n    }\n    await dispatch(setupBankRedirectUrl(redirectUrl));\n};\n\nexport const applessAisp = accessToken => async (\n    dispatch,\n    { sharedService },\n) => {\n    const guest = Token.getMember(Token.BrowserCryptoEngine);\n    const customerTrackingMetadata = await fetchCustomerTrackingMetadata();\n    guest.addCustomerTrackingMetadata(customerTrackingMetadata);\n    const bank = sharedService.getSelectedBank();\n    await guest.linkAccounts({ bankId: bank.id, accessToken });\n    const accessTokenBuilder = await dispatch(\n        createAccessTokenBuilderFromTokenRequest(guest),\n    );\n    const token = await accessTokenBuilder.execute();\n    await addCancelTokenOnClose(guest, token.id);\n    await guest.endorseToken(token.id);\n    await dispatch(completeFlow(token.tokenRequestId, token.id, guest));\n};\n\nexport const createAccessTokenBuilderFromTokenRequest = member => async (\n    dispatch,\n    { tokenService, sharedService, tokenRequestService },\n) => {\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const aispAlias = tokenRequestService.getTppAlias();\n    const bank = sharedService.getSelectedBank();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const description = tokenRequestService.getDescription();\n    const tokenExpiration = tokenRequestService.getTokenExpiration();\n    const builder = member\n        .createAccessTokenBuilder()\n        .setTokenRequestId(tokenRequestId)\n        .setToAlias(aispAlias);\n    const resources = await AccessTokenHelper.formatResources(\n        tokenService.getResources(),\n        member,\n        bank.id,\n    );\n    AccessTokenHelper.setResources(builder, resources);\n    actingAs && builder.setActingAs(actingAs);\n    description && builder.setDescription(description);\n    tokenExpiration && builder.setExpiresAtMs(tokenExpiration);\n    return builder;\n};\n","import {\n    PISP_APP_INSTALL,\n    PISP_ENTER_ALIAS,\n    PISP_TRANSFER_OVERVIEW,\n    ROUTE_PISP,\n    LOADING_STEP,\n    TOKEN_TYPE_BULK_TRANSFER,\n    TOKEN_TYPE_TRANSFER,\n    webAppUrl,\n    TOKEN_TYPE_STANDING_ORDER,\n    PISP_STANDING_ORDER_CONSENT_BANK_FIRST,\n    PISP_CONSENT_BANK_FIRST,\n    banksWithBranches,\n    TOKEN_PROVIDER,\n    INTERNAL_TOKEN_REQUEST_STATUS as requestStatus,\n} from 'config/constants';\nimport {\n    redirectToBankV2,\n    completeFlow,\n    loginFromLocalStorage,\n    logoutFromLocalStorage,\n    setBank,\n    setBankInfo,\n    validateAlias,\n    completeFlowFromApp,\n    clearMembers,\n    setRecentBank,\n    setResolvedPayload,\n    setupBankRedirectUrl,\n    setTokenId,\n    showBankRedirectionScreen,\n    terminateFlow,\n    clearBank,\n    yieldBanks,\n    setAuthRequestId,\n    clearInstructionsSource,\n    getTokenRequest,\n} from 'actions/shared';\nimport { backOrGoTo, changeRoute, setStep } from 'actions/shared/route';\nimport {\n    getAndValidateAccounts,\n    getBankFromLocalStorage,\n    getTempMember,\n    getTempMemberLS,\n    getTokenClient,\n    setMemberReceiptEmail,\n    setTokenRequestStatus,\n    updateTokenRequest,\n} from 'actions/shared/api';\nimport { EXCEPTION_NO_DESTINATION } from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\nimport {\n    PISP_SELECT_BANK_BANK_FIRST,\n    PISP_BULK_TRANSFER_CONSENT_BANK_FIRST,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from '../../config/constants';\nimport {\n    setOneStepSupport,\n    fetchBankBranches,\n    setCountriesList,\n    getAppCallbackUrl,\n    initiateBankAuthFlow,\n    isBankLive,\n    setBankStatus,\n    removeCheckForTokenReqRejection,\n} from '../shared';\nimport { getBankDoesRequireDebtorAccount } from '../../util';\nimport queryString from 'query-string';\nimport { EXCEPTION_INVALID_TRANSFER_DESTINATION_URL } from 'config/exceptions';\nimport axios from 'axios';\n\nconst Token = getTokenClient();\n\nexport const setTransferTokenType = ({\n    tppAlias,\n    amount,\n    currency,\n    destinations,\n    instructions,\n    actingAs,\n    executionDate,\n    setTransferDestinationsUrl,\n    remittanceReference,\n    confirmFunds,\n    memberId,\n    returnRefundAccount,\n} = {}) => {\n    return {\n        type: 'SET_TOKEN_TYPE',\n        tokenType: TOKEN_TYPE_TRANSFER,\n        tppAlias,\n        amount,\n        currency,\n        destinations,\n        instructions,\n        actingAs,\n        executionDate,\n        setTransferDestinationsUrl,\n        remittanceReference,\n        confirmFunds,\n        memberId,\n        returnRefundAccount,\n    };\n};\n\nexport const setStandingOrderTokenType = ({\n    tppAlias,\n    amount,\n    currency,\n    destinations,\n    instructions,\n    actingAs,\n    frequency,\n    startDate,\n    endDate,\n    remittanceReference,\n    memberId,\n    returnRefundAccount,\n} = {}) => {\n    return {\n        type: 'SET_TOKEN_TYPE',\n        tokenType: TOKEN_TYPE_STANDING_ORDER,\n        tppAlias,\n        amount,\n        currency,\n        destinations,\n        instructions,\n        actingAs,\n        frequency,\n        startDate,\n        endDate,\n        remittanceReference,\n        memberId,\n        returnRefundAccount,\n    };\n};\n\nexport const setBulkTransferTokenType = ({\n    tppAlias,\n    amount,\n    transfers,\n    source,\n    memberId,\n} = {}) => {\n    return {\n        type: 'SET_TOKEN_TYPE',\n        tokenType: TOKEN_TYPE_BULK_TRANSFER,\n        tppAlias,\n        amount,\n        transfers,\n        source,\n        memberId,\n    };\n};\n\nexport const setDestinations = destinations => ({\n    type: 'SET_DESTINATION_ACCOUNT',\n    destinations,\n});\n\nexport const setAccounts = accounts => ({\n    type: 'SET_ACCOUNTS',\n    accounts,\n});\n\nexport const clearPaymentAccount = () => ({\n    type: 'CLEAR_PAYMENT_ACCOUNT',\n});\n\nexport const setReceiptEmail = email => ({\n    type: 'SET_RECEIPT_EMAIL',\n    email,\n    redacted: ['email'],\n});\n\n// Sets the Iban if present\nexport const setInstructionsSourceIban = source => ({\n    type: 'SET_INSTRUCTIONS_SOURCE_IBAN',\n    source,\n});\n\nexport const setMandatoryTransferFields = transfer => ({\n    type: 'SET_MANDATORY_TRANSFER_FIELDS',\n    transfer,\n});\n\nexport const setMandatoryProviderTransferMetadata = (\n    mandatoryFields,\n    requiredMandatoryFields,\n) => {\n    if (requiredMandatoryFields?.stetFields) {\n        return {\n            type: 'SET_MANDATORY_STET_TRANSFER_METADATA',\n            stetTransferMetadata: mandatoryFields?.stetMetadata,\n        };\n    } else if (requiredMandatoryFields?.polishapiFields) {\n        return {\n            type: 'SET_MANDATORY_POLISH_API_TRANSFER_METADATA',\n            polishApiTransferMetadata: mandatoryFields?.polishApiMetadata,\n        };\n    }\n};\n\nexport const setMandatoryStandingOrderFields = transfer => ({\n    type: 'SET_MANDATORY_STANDING_ORDER_FIELDS',\n    transfer,\n});\n\nexport const setMandatoryProviderStandingOrderMetadata = (\n    mandatoryFields,\n    requiredMandatoryFields,\n) => {\n    if (requiredMandatoryFields?.stetFields) {\n        return {\n            type: 'SET_MANDATORY_STET_STANDING_ORDER_METADATA',\n            stetTransferMetadata: mandatoryFields?.stetMetadata,\n        };\n    } else if (requiredMandatoryFields?.polishapiFields) {\n        return {\n            type: 'SET_MANDATORY_POLISH_API_STANDING_ORDER_METADATA',\n            polishApiTransferMetadata: mandatoryFields?.polishApiMetadata,\n        };\n    }\n};\n\nexport const setTokenRequestSignature = signature => ({\n    type: 'SET_TOKEN_REQUEST_SIGNATURE',\n    signature,\n});\n\nexport const setPaymentAccountId = accountId => ({\n    type: 'SET_PAYMENT_ACCOUNT',\n    accountId,\n});\n\n// token actions\n\n// Step 1 - show consent screen\nexport const initiatePispFlow = ({\n    destinations,\n    setTransferDestinationsUrl,\n} = {}) => async (dispatch, { sharedService }) => {\n    dispatch(changeRoute(ROUTE_PISP));\n    if (!destinations?.length && !sharedService.isBulkTransfer()) {\n        if (sharedService.isTransfer() && !setTransferDestinationsUrl) {\n            throw new TokenException(\n                EXCEPTION_NO_DESTINATION,\n                'Transfer must have a destination or specify a callback url',\n            );\n        } else if (sharedService.isStandingOrder()) {\n            throw new TokenException(\n                EXCEPTION_NO_DESTINATION,\n                'Standing Order token must have a destination',\n            );\n        }\n    }\n\n    await dispatch(setCountriesList());\n\n    await dispatch(loginFromLocalStorage());\n\n    dispatch(acceptTermsBankFirstFlow());\n};\n\nexport const fetchTransferDestinationUrl = bank => async (\n    dispatch,\n    { tokenService, tokenRequestService },\n) => {\n    const { supportedTransferDestinationTypes, name, country } = bank;\n    const url = tokenService.getSetTransferDestinationsUrl();\n    const destinationUrl = url.concat('?').concat(\n        queryString.stringify({\n            bankName: name,\n            country,\n            supportedTransferDestinationTypes,\n        }),\n    );\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    let callBacktUrl;\n    if (customRedirectURL) {\n        callBacktUrl = `${customRedirectURL}/api/crossborder-callback?destination-url=${encodeURIComponent(\n            destinationUrl,\n        )}`;\n    } else {\n        callBacktUrl = `${webAppUrl}/api/crossborder-callback?destination-url=${encodeURIComponent(\n            destinationUrl,\n        )}`;\n    }\n    try {\n        const res = await axios.get(callBacktUrl);\n        if (res.status === 200) {\n            await dispatch(setBankAndProceedToConsent(bank));\n        } else\n            throw new TokenException(\n                EXCEPTION_INVALID_TRANSFER_DESTINATION_URL,\n                'Transfer Destination URL is invalid',\n            );\n    } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error(e);\n    }\n};\n\nexport const acceptTermsBankFirstFlow = receiptEmail => async (\n    dispatch,\n    { sharedService, userService, tokenRequestService, tokenService },\n) => {\n    let defaultBankId;\n    let country;\n\n    const recentBanks = sharedService.getRecentBanks();\n\n    defaultBankId = tokenRequestService.getDefaultBankId();\n    const isDefaultBank = !!defaultBankId;\n\n    const bankName =\n        (recentBanks[0] &&\n            recentBanks[0].id[0].toUpperCase() + recentBanks[0].id.slice(1)) ||\n        '';\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    const bank = getBankFromLocalStorage();\n    let isFirstRecentBankSelected = false;\n    // Check if recent bank supports the payment mode, if present\n    if (\n        !tokenService.getSetTransferDestinationsUrl() &&\n        doesTppSupportRecentBanks &&\n        defaultBankId === undefined &&\n        recentBanks[0] &&\n        !Object.keys(banksWithBranches).includes(bankName)\n    ) {\n        const { banks } = await dispatch(\n            yieldBanks({ ids: [recentBanks[0].id] }),\n        );\n        const bankDetail = banks?.[0];\n        if (bankDetail) {\n            defaultBankId = recentBanks[0].id;\n            country = recentBanks[0].selectedCountry;\n        }\n        if (!bank) {\n            isFirstRecentBankSelected = true;\n        }\n    }\n    dispatch(setReceiptEmail(receiptEmail));\n    if (defaultBankId && !userService.hasPairedMembers() && !bank) {\n        const { banks } = await dispatch(\n            yieldBanks({\n                ids: [defaultBankId],\n                isDefaultBank,\n            }),\n        );\n        let defaultBank = banks?.[0];\n\n        // If the bank id is already provided in the token request then\n        // consider country as first element of countries array from bank config\n        if (!country) {\n            country = defaultBank?.countries[0];\n        }\n        defaultBank = { ...defaultBank, selectedCountry: country };\n\n        if (\n            tokenService.getSetTransferDestinationsUrl() &&\n            !tokenService.getDestinations()\n        ) {\n            await dispatch(fetchTransferDestinationUrl(defaultBank));\n        }\n        defaultBank.isFirstRecentBank = isFirstRecentBankSelected;\n        await dispatch(setBankAndProceedToConsent(defaultBank));\n    } else if (userService.hasPairedMembers() && bank) {\n        await dispatch(goToTransferOverview(bank)); // Skips to transfer if linked\n    } else {\n        dispatch(setStep(PISP_SELECT_BANK_BANK_FIRST));\n    }\n};\n\nexport const backToBankSelector = () => async (dispatch, { userService }) => {\n    const pispTransferOverview =\n        userService.hasPairedMembers() && getBankFromLocalStorage();\n    if (pispTransferOverview) {\n        dispatch(backOrGoTo(PISP_TRANSFER_OVERVIEW, true));\n    } else {\n        dispatch(clearBank());\n        dispatch(clearInstructionsSource());\n        dispatch(setStep(PISP_SELECT_BANK_BANK_FIRST));\n    }\n};\n\n// ** Step 2 - is bank selection, this is a shared action\n\n// Step 3 - after bank selection, verify appless support and create a temp member.\n// Otherwise ask for bank user's email.\nexport const setBankAndProceed = bank => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    await dispatch(setRecentBank(bank));\n    dispatch(setBank(bank));\n    if (bank.supportsCheckoutFlowV2) {\n        // Only for direct bank backword compatibility\n        await dispatch(redirectToBankV2());\n    } else {\n        const defaultAlias = tokenRequestService.getDefaultAlias();\n        const guest = await dispatch(getTempMember());\n        dispatch(setBankInfo(await guest.getBankInfo(bank.id)));\n        if (bank.requiresOneStepPayment) {\n            await dispatch(oneStepTransfer());\n        } else if (bank.supportsAppless) {\n            await dispatch(prepareGuestTransfer());\n        } else if (defaultAlias) {\n            const defaultAliasValue =\n                typeof defaultAlias === 'object' && defaultAlias.value\n                    ? defaultAlias.value\n                    : defaultAlias;\n            await dispatch(validateAlias(defaultAliasValue, 'EMAIL'));\n        } else {\n            dispatch(setStep(PISP_ENTER_ALIAS));\n        }\n    }\n};\n\nexport const setBankAndProceedToConsent = bank => async (\n    dispatch,\n    { tokenRequestService, sharedService, tokenService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    const isSelectedBankLive = await dispatch(isBankLive(bank.id));\n    if (!isSelectedBankLive) {\n        !bank.isFirstRecentBank &&\n            (await dispatch(\n                setBankStatus(bank.name || bank.id, isSelectedBankLive),\n            ));\n        await dispatch(backToBankSelector());\n        return;\n    }\n\n    const { tokenRequest } = await dispatch(getTokenRequest());\n\n    // Set token request result internal status\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_BANK_SELECTED),\n    );\n\n    if (\n        tokenService.getSetTransferDestinationsUrl() &&\n        !tokenService.getDestinations()\n    ) {\n        const { requestPayload } = tokenRequest;\n        if (requestPayload.transferBody) {\n            const destinations =\n                requestPayload.transferBody.destinations ||\n                requestPayload.transferBody.instructions?.transferDestinations;\n            dispatch(setDestinations(destinations));\n        }\n    }\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n\n    if (\n        doesTppSupportRecentBanks &&\n        !Object.prototype.hasOwnProperty.call(banksWithBranches, bank.name)\n    ) {\n        await dispatch(setRecentBank(bank));\n    }\n\n    dispatch(setBank(bank));\n    if (\n        getBankDoesRequireDebtorAccount(\n            bank,\n            sharedService.getTokenType(),\n            tokenService.getDestinations()?.[0],\n        ) ||\n        Object.keys(banksWithBranches).includes(bank.name)\n    ) {\n        dispatch(setOneStepSupport(true));\n    } else {\n        dispatch(setOneStepSupport(false));\n    }\n\n    if (Object.keys(banksWithBranches).includes(bank.name)) {\n        await dispatch(\n            fetchBankBranches(bank.name, bank.selectedCountry || bank.country),\n        );\n    }\n\n    if (tokenRequestService.getHideConsent()) {\n        dispatch(proceedToBank());\n    } else {\n        if (sharedService.isStandingOrder()) {\n            dispatch(setStep(PISP_STANDING_ORDER_CONSENT_BANK_FIRST));\n        } else if (sharedService.isBulkTransfer()) {\n            dispatch(setStep(PISP_BULK_TRANSFER_CONSENT_BANK_FIRST));\n        } else {\n            dispatch(setStep(PISP_CONSENT_BANK_FIRST));\n        }\n    }\n};\n\nexport const proceedToConsent = () => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    if (tokenRequestService.getHideConsent()) {\n        dispatch(requestPayment());\n    } else {\n        if (sharedService.isStandingOrder()) {\n            dispatch(setStep(PISP_STANDING_ORDER_CONSENT_BANK_FIRST));\n        } else if (sharedService.isBulkTransfer()) {\n            dispatch(setStep(PISP_BULK_TRANSFER_CONSENT_BANK_FIRST));\n        } else {\n            dispatch(setStep(PISP_CONSENT_BANK_FIRST));\n        }\n    }\n};\n\nexport const proceedToBank = receiptEmail => async (\n    dispatch,\n    { tokenRequestService, sharedService, userService },\n) => {\n    removeCheckForTokenReqRejection();\n    dispatch(setStep(LOADING_STEP));\n\n    // Set token request result internal status\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_CONSENT_ACCEPTED),\n    );\n    dispatch(setReceiptEmail(receiptEmail));\n    const bank = sharedService.getSelectedBank();\n\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    if (\n        Object.prototype.hasOwnProperty.call(banksWithBranches, bank.name) &&\n        doesTppSupportRecentBanks\n    ) {\n        await dispatch(setRecentBank(bank));\n    }\n\n    await updateTokenRequest(tokenRequestService.getRequestId(), {\n        bankId: sharedService.getSelectedBankId(),\n    });\n\n    const defaultBankId = tokenRequestService.getDefaultBankId() || '';\n\n    if (userService.hasPairedMembers() && bank && defaultBankId === '') {\n        dispatch(requestPayment());\n    } else if (bank.provider !== TOKEN_PROVIDER) {\n        dispatch(initiateBankAuthFlow());\n    } else if (bank.supportsCheckoutFlowV2) {\n        // Only for direct bank backword compatibility\n        await dispatch(redirectToBankV2());\n    } else {\n        const defaultAlias = tokenRequestService.getDefaultAlias();\n        const guest = await dispatch(getTempMember());\n        dispatch(setBankInfo(await guest.getBankInfo(bank.id)));\n        if (bank.requiresOneStepPayment) {\n            await dispatch(oneStepTransfer());\n        } else if (bank.supportsAppless) {\n            await dispatch(prepareGuestTransfer());\n        } else if (defaultAlias) {\n            const defaultAliasValue =\n                typeof defaultAlias === 'object' && defaultAlias.value\n                    ? defaultAlias.value\n                    : defaultAlias;\n            await dispatch(validateAlias(defaultAliasValue, 'EMAIL'));\n        } else {\n            dispatch(setStep(PISP_ENTER_ALIAS));\n        }\n    }\n};\n\nexport const noApp = () => async (dispatch, { sharedService }) => {\n    const bank = sharedService.getSelectedBank();\n    if (bank && bank.supportsAppless) {\n        await dispatch(prepareGuestTransfer());\n    } else {\n        dispatch(setStep(PISP_APP_INSTALL));\n    }\n};\n\nexport const clearBankAndBack = () => async (\n    dispatch,\n    { userService, tokenRequestService, sharedService },\n) => {\n    const pispTransferOverview =\n        userService.hasPairedMembers() && getBankFromLocalStorage();\n    await logoutFromLocalStorage();\n    dispatch(clearMembers());\n    const hasDefaultBankId = tokenRequestService.getDefaultBankId();\n    if (hasDefaultBankId) {\n        return dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: 'Token window was cancelled',\n            }),\n        );\n    }\n    if (pispTransferOverview) {\n        dispatch(backOrGoTo(PISP_SELECT_BANK_BANK_FIRST, true));\n    } else {\n        if (sharedService.isStandingOrder()) {\n            dispatch(backOrGoTo(PISP_STANDING_ORDER_CONSENT_BANK_FIRST, true));\n        } else if (sharedService.isBulkTransfer()) {\n            dispatch(backOrGoTo(PISP_BULK_TRANSFER_CONSENT_BANK_FIRST, true));\n        } else {\n            dispatch(backOrGoTo(PISP_CONSENT_BANK_FIRST, true));\n        }\n    }\n};\n\nexport const goToTransferOverview = bank => async (\n    dispatch,\n    { tokenRequestService, userService },\n) => {\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    if (doesTppSupportRecentBanks) {\n        await dispatch(setRecentBank(bank));\n    }\n\n    dispatch(setBank(bank));\n    const member = userService.getFirstPairedMember();\n    const accounts = await dispatch(getAndValidateAccounts(member, bank, true));\n    dispatch(setAccounts(accounts));\n    dispatch(setStep(PISP_TRANSFER_OVERVIEW));\n    dispatch(setBankInfo(await member.getBankInfo(bank.id)));\n};\n\nexport const setPaymentAccount = accountId => dispatch => {\n    dispatch(setPaymentAccountId(accountId));\n};\n\n// Step 5a - create and approve transfer token.\nexport const requestPayment = () => async (\n    dispatch,\n    { userService, tokenService, tokenRequestService },\n) => {\n    const member = userService.getFirstPairedMember();\n    const builder = await dispatch(\n        createTransferTokenBuilderFromTokenRequest(member),\n    );\n    const tokenPayload = await builder\n        .setAccountId(tokenService.getSourceAccountId())\n        .buildPayload();\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    const appCallbackUrl = getAppCallbackUrl(customRedirectURL);\n    const { policy, resolvedPayload } = await member.prepareToken(\n        tokenPayload,\n        appCallbackUrl,\n    );\n    if (policy.singleSignature?.signer?.keyLevel === 'LOW') {\n        const signature = await member.signTokenPayload(resolvedPayload, 'LOW');\n        const token = await member.createToken(\n            resolvedPayload,\n            [signature],\n            tokenRequestService.getRequestId(),\n        );\n\n        await dispatch(\n            completeFlow(tokenRequestService.getRequestId(), token.id, member),\n        );\n    } else {\n        await dispatch(\n            completeFlowFromApp(\n                await userService.getFirstPairedMember().firstAlias(),\n            ),\n        );\n    }\n};\n\nexport const prepareGuestTransfer = signature => async (\n    dispatch,\n    { tokenService, sharedService, tokenRequestService },\n) => {\n    if (!signature) {\n        dispatch(showBankRedirectionScreen());\n        let builder;\n        const member = await dispatch(getTempMemberLS());\n        const bank = sharedService.getSelectedBank();\n        if (sharedService.isStandingOrder()) {\n            builder = await dispatch(\n                createStandingOrderTokenBuilderFromTokenRequest(member, bank),\n            );\n        } else if (sharedService.isBulkTransfer()) {\n            builder = await dispatch(\n                createBulkTransferTokenBuilderFromTokenRequest(member, bank),\n            );\n        } else\n            builder = await dispatch(\n                createTransferTokenBuilderFromTokenRequest(member, bank),\n            );\n        const tokenPayload = builder.buildPayload();\n        const customRedirectURL = tokenRequestService.getTppFeature(\n            featureConfig.CUSTOM_WEB_APP_URL,\n        );\n        const appCallbackUrl = getAppCallbackUrl(customRedirectURL);\n        const { policy, resolvedPayload } = await member.prepareToken(\n            tokenPayload,\n            appCallbackUrl,\n        );\n        // set auth request id\n        const url = new URL(policy.singleSignature?.signer?.authorizationUrl);\n        const urlParams = new URLSearchParams(url.search);\n        const authRequestId = urlParams.get('auth-request-id');\n        dispatch(setAuthRequestId(authRequestId));\n        dispatch(setResolvedPayload(resolvedPayload));\n        let redirectUrl;\n        if (customRedirectURL) {\n            redirectUrl = `${\n                policy.singleSignature?.signer?.authorizationUrl\n            }&callback-url=${encodeURIComponent(\n                `${customRedirectURL}/app/auth/callback`,\n            )}`;\n            dispatch(\n                setupBankRedirectUrl(\n                    `${customRedirectURL}/api/guest-authorization?redirect-url=${encodeURIComponent(\n                        redirectUrl,\n                    )}`,\n                ),\n            );\n        } else {\n            redirectUrl = `${\n                policy.singleSignature?.signer?.authorizationUrl\n            }&callback-url=${encodeURIComponent(\n                `${webAppUrl}/app/auth/callback`,\n            )}`;\n            dispatch(\n                setupBankRedirectUrl(\n                    `${webAppUrl}/api/guest-authorization?redirect-url=${encodeURIComponent(\n                        redirectUrl,\n                    )}`,\n                ),\n            );\n        }\n    } else {\n        const member = Token.getMember(Token.BrowserCryptoEngine);\n        const tokenRequestId = tokenRequestService.getRequestId();\n        const token = await member.createToken(\n            tokenService.getResolvedPayload(),\n            [signature],\n            tokenRequestId,\n        );\n        await dispatch(completeFlow(tokenRequestId, token.id, member));\n    }\n};\n\nexport const oneStepTransfer = (transferId, transferStatus) => async (\n    dispatch,\n    { tokenService, sharedService, tokenRequestService },\n) => {\n    if (!transferId) {\n        dispatch(showBankRedirectionScreen());\n        const member = await dispatch(getTempMemberLS());\n        const bank = sharedService.getSelectedBank();\n        const tokenRequestId = tokenRequestService.getRequestId();\n        let builder;\n        if (sharedService.isStandingOrder()) {\n            builder = await dispatch(\n                createStandingOrderTokenBuilderFromTokenRequest(member, bank),\n            );\n        } else if (sharedService.isBulkTransfer()) {\n            builder = await dispatch(\n                createBulkTransferTokenBuilderFromTokenRequest(member, bank),\n            );\n        } else\n            builder = await dispatch(\n                createTransferTokenBuilderFromTokenRequest(member, bank),\n            );\n        const tokenPayload = builder.buildPayload();\n        const customRedirectURL = tokenRequestService.getTppFeature(\n            featureConfig.CUSTOM_WEB_APP_URL,\n        );\n        const appCallbackUrl = getAppCallbackUrl(customRedirectURL);\n        const { resolvedPayload } = await member.prepareToken(\n            tokenPayload,\n            appCallbackUrl,\n        );\n        dispatch(setResolvedPayload(resolvedPayload));\n        const signature = await member.signTokenPayload(resolvedPayload, 'LOW');\n        const token = await member.createToken(\n            resolvedPayload,\n            [signature],\n            tokenRequestId,\n        );\n        dispatch(setTokenId(token.id));\n        const redirectState = tokenRequestService.getRequestRedirectState();\n        const tokenRequestSignature = await member.signTokenRequestState(\n            tokenRequestService.getRequestId(),\n            token.id,\n            tokenRequestService.getRequestPayload()\n                ? encodeURIComponent(redirectState) // TODO: deprecated\n                : redirectState,\n        );\n        dispatch(setTokenRequestSignature(tokenRequestSignature));\n        try {\n            let resp;\n            if (sharedService.isStandingOrder()) {\n                resp = await member.redeemStandingOrderToken(token.id);\n            } else if (sharedService.isBulkTransfer()) {\n                resp = await member.redeemBulkTransferToken(token.id);\n            } else {\n                resp = await member.redeemToken(token);\n            }\n            if (resp) {\n                dispatch(\n                    terminateFlow({\n                        error: resp.status,\n                    }),\n                );\n            }\n        } catch (e) {\n            if (e.authorizationDetails) {\n                let redirectUrl;\n                if (customRedirectURL) {\n                    redirectUrl = `${\n                        e.authorizationDetails.authorizationUrl\n                    }&callback-url=${encodeURIComponent(\n                        `${customRedirectURL}/app/auth/callback`,\n                    )}`;\n                } else {\n                    redirectUrl = `${\n                        e.authorizationDetails.authorizationUrl\n                    }&callback-url=${encodeURIComponent(\n                        `${webAppUrl}/app/auth/callback`,\n                    )}`;\n                }\n                await dispatch(setupBankRedirectUrl(redirectUrl));\n            } else throw new Error('No authorization details found');\n        }\n    } else {\n        const member = Token.getMember(Token.BrowserCryptoEngine);\n        const tokenRequestSignature = tokenRequestService.getTokenRequestSignature();\n        await dispatch(\n            completeFlow(\n                tokenRequestService.getRequestId(),\n                tokenService.getTokenId(),\n                member,\n                tokenRequestSignature,\n                {\n                    'transfer-id': transferId,\n                    'transfer-status': transferStatus,\n                },\n            ),\n        );\n    }\n};\n\nexport const createTransferTokenBuilderFromTokenRequest = (\n    member,\n    bank,\n) => async (dispatch, { tokenService, tokenRequestService }) => {\n    const refId = tokenService.getRefId();\n    const amount = tokenService.getAmount();\n    const currency = tokenService.getCurrency();\n    const remittanceReference = tokenService.getRemittanceReference();\n    const returnRefundAccountFlag = tokenService.getReturnRefundAccountFlag();\n    const executionDate = tokenService.getExecutionDate();\n    const destinations = tokenService.getDestinations();\n    const receiptRequested = tokenService.receiptRequested();\n    receiptRequested &&\n        (await setMemberReceiptEmail(member, tokenService.getReceiptEmail()));\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const confirmFunds = tokenService.getCafFlag();\n    const pispAlias = tokenRequestService.getTppAlias();\n    const description = tokenRequestService.getDescription();\n    const providerTransferMetadata = tokenService.getInstructions()?.metadata\n        ?.providerTransferMetadata;\n    const builder = member\n        .createTransferTokenBuilder(amount, currency)\n        .setTokenRequestId(tokenRequestId)\n        .setRefId(refId)\n        .setToAlias(pispAlias)\n        .setReceiptRequested(receiptRequested);\n    if (destinations[0].account) {\n        // deprecated\n        builder.addDestinations(destinations);\n    } else {\n        builder.addTransferDestinations(destinations);\n    }\n    if (executionDate) {\n        builder.setExecutionDate(executionDate);\n    }\n    actingAs && builder.setActingAs(actingAs);\n    description && builder.setDescription(description);\n    providerTransferMetadata &&\n        builder.setProviderTransferMetadata(providerTransferMetadata);\n    confirmFunds && builder.setConfirmFunds(confirmFunds);\n    remittanceReference && builder.setRemittanceReference(remittanceReference);\n    returnRefundAccountFlag &&\n        builder.setReturnRefundAccount(returnRefundAccountFlag);\n    const source = tokenService.getInstructions()?.source;\n    if (source) {\n        // If source bank id not same as selected bank id\n        // set source with new selected bank\n        if (source.bankId && source.bankId !== bank?.id) {\n            builder.setSourceAccountGuest(bank?.id);\n        } else {\n            if (!source.bankId) {\n                source.bankId = bank?.id;\n            }\n            builder.setSource(source);\n        }\n    } else {\n        builder.setSourceAccountGuest(bank?.id);\n    }\n\n    return builder;\n};\n\nexport const createStandingOrderTokenBuilderFromTokenRequest = (\n    member,\n    bank,\n) => async (dispatch, { tokenService, tokenRequestService }) => {\n    const refId = tokenService.getRefId();\n    const amount = tokenService.getStandingOrderAmount();\n    const currency = tokenService.getStandingOrderCurrency();\n    const remittanceReference = tokenService.getStandingOrderRemittanceReference();\n    const returnRefundAccountFlag = tokenService.getStandingOrderReturnRefundAccountFlag();\n    const frequency = tokenService.getStandingOrderFrequency();\n    const destinations = tokenService.getStandingOrderDestinations();\n    const startDate = tokenService.getStandingOrderStartDate();\n    const endDate = tokenService.getStandingOrderEndDate();\n    const receiptRequested = tokenService.receiptRequested();\n    receiptRequested &&\n        (await setMemberReceiptEmail(member, tokenService.getReceiptEmail()));\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const pispAlias = tokenRequestService.getTppAlias();\n    const description = tokenRequestService.getDescription();\n    const providerStandingOrderMetadata = tokenService.getStandingOrderInstructions()\n        ?.metadata?.providerStandingOrderMetadata;\n    const builder = member\n        .createStandingOrderTokenBuilder(\n            amount,\n            currency,\n            frequency,\n            startDate,\n            endDate,\n        )\n        .setTokenRequestId(tokenRequestId)\n        .setRefId(refId)\n        .setToAlias(pispAlias)\n        .setReceiptRequested(receiptRequested)\n        .addTransferDestinations(destinations);\n    actingAs && builder.setActingAs(actingAs);\n    description && builder.setDescription(description);\n    remittanceReference && builder.setRemittanceReference(remittanceReference);\n    returnRefundAccountFlag &&\n        builder.setReturnRefundAccount(returnRefundAccountFlag);\n    providerStandingOrderMetadata &&\n        builder.setProviderMetadata(providerStandingOrderMetadata);\n    const source = tokenService.getStandingOrderInstructions()?.source;\n    if (source) {\n        if (source.bankId && source.bankId !== bank?.id) {\n            builder.setSourceAccountGuest(bank?.id);\n        } else {\n            if (!source.bankId) {\n                source.bankId = bank?.id;\n            }\n            builder.setSource(source);\n        }\n    } else {\n        builder.setSourceAccountGuest(bank?.id);\n    }\n    return builder;\n};\n\nexport const createBulkTransferTokenBuilderFromTokenRequest = (\n    member,\n    bank,\n) => async (dispatch, { tokenService, tokenRequestService }) => {\n    const refId = tokenService.getRefId();\n    const amount = tokenService.getBulkTransferAmount();\n    const transfers = tokenService.getBulkTransfers();\n    const receiptRequested = tokenService.receiptRequested();\n    receiptRequested &&\n        (await setMemberReceiptEmail(member, tokenService.getReceiptEmail()));\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const pispAlias = tokenRequestService.getTppAlias();\n    const description = tokenRequestService.getDescription();\n    const builder = member\n        .createBulkTransferTokenBuilder(transfers, amount)\n        .setTokenRequestId(tokenRequestId)\n        .setRefId(refId)\n        .setToAlias(pispAlias)\n        .setReceiptRequested(receiptRequested);\n    actingAs && builder.setActingAs(actingAs);\n    description && builder.setDescription(description);\n    const source = tokenService.getBulkTransferSource();\n    if (source) {\n        if (source.bankId && source.bankId !== bank?.id) {\n            builder.setSourceAccountGuest(bank?.id);\n        } else {\n            if (!source.bankId) {\n                source.bankId = bank?.id;\n            }\n            builder.setSource(source);\n        }\n    } else {\n        builder.setSourceAccountGuest(bank?.id);\n    }\n    return builder;\n};\n","// jsdom marks window.location as unforgeable, so tests can't stub it directly.\n// Navigation goes through this object instead, which tests can spy on.\nconst browserNavigation = {\n    assign: url => globalThis.location.assign(url),\n    replace: url => globalThis.location.replace(url),\n    reload: forceReload => globalThis.location.reload(forceReload),\n};\n\nexport default browserNavigation;\n","import { formatAsKeyValuePair } from 'util/index';\n\nconst formatCredentials = credentials => {\n    if (!credentials) {\n        return [];\n    }\n    const requiredCredentials = credentials.map(o => {\n        if (o.options) {\n            return {\n                ...o,\n                options: formatAsKeyValuePair(o.options),\n            };\n        }\n        return o;\n    });\n    return requiredCredentials;\n};\n\nexport default formatCredentials;\n","import { getLocalTppConfig, deepMergeObjects } from 'util/index';\n\n// Respect web-app local tpp configurations over config from tpp-integration sevice api\nconst getOverallTppConfigurations = async (\n    memberProps,\n    tppConfigurationsFromTI,\n) => {\n    if (memberProps) {\n        const overallLocalTppConfig = await getLocalTppConfig(\n            memberProps?.memberId,\n            memberProps?.realmId,\n            memberProps?.subTppRefId,\n        );\n\n        const regionalConfigurations = deepMergeObjects(\n            {},\n            tppConfigurationsFromTI?.regionalConfigurations,\n        );\n        if (overallLocalTppConfig?.regionalConfigurations) {\n            deepMergeObjects(\n                regionalConfigurations,\n                overallLocalTppConfig?.regionalConfigurations,\n            );\n        }\n\n        const translations = {\n            ...regionalConfigurations?.default?.translations,\n        };\n\n        const doesTranslationsExist = Object.keys(translations)?.length !== 0;\n\n        const doesRegionalConfigurationsExist =\n            Object.keys(regionalConfigurations)?.length !== 0;\n\n        return {\n            ...tppConfigurationsFromTI,\n            ...overallLocalTppConfig,\n            ...(doesRegionalConfigurationsExist && {\n                regionalConfigurations,\n            }),\n            ...(doesTranslationsExist && { translations }),\n        };\n    }\n    return tppConfigurationsFromTI;\n};\n\nexport default getOverallTppConfigurations;\n","export const updateCustomization = customization => {\n    const colors = customization?.colors;\n    if (colors) {\n        if (!colors['color-text']) {\n            colors['color-text'] = colors['color-primary'];\n        }\n        if (!colors['color-spinner']) {\n            colors['color-spinner'] = colors['color-primary'];\n        }\n        if (!colors['color-link']) {\n            colors['color-link'] = colors['color-primary'];\n        }\n        if (!colors['color-splash-header']) {\n            colors['color-splash-header'] = colors['color-primary'];\n        }\n    }\n    return customization;\n};\n\nexport default updateCustomization;\n","import {\n    blockUserOnURLPaths,\n    getTokenReqIdFromURL,\n    sessionStorageWrapper,\n} from 'util/index';\nimport { actionIfTokenReqProcessed } from 'actions/shared';\nimport {\n    ROUTE_REDIRECT_OPTIONS,\n    ROUTE_LOADING,\n    EXTERNAL_TOKEN_REQUEST_STATUS,\n} from 'config/constants';\nimport { EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL } from 'config/exceptions';\nimport { changeRoute } from 'actions/shared/route';\nimport { throwError, TokenException } from '@token-io/lib-web-app';\n\nconst noBack = oldRequestId => {\n    // Compares current token request with the one present in redux state\n    // given user has clicked browser back button\n    if (sessionStorageWrapper.get('blockUserToGoBack') === true) {\n        const currentRequestId = getTokenReqIdFromURL();\n        if (currentRequestId) {\n            if (currentRequestId === oldRequestId) {\n                return true;\n            }\n        } else if (blockUserOnURLPaths()) {\n            return true;\n        }\n    }\n    return false;\n};\n\nconst validateBrowserSession = async store => {\n    const notAllowUserToGoBack = noBack(\n        store.getState()?.tokenRequest?.request?.id,\n    );\n\n    const status = sessionStorageWrapper.get('tokenRequestStatus');\n    if (status === EXTERNAL_TOKEN_REQUEST_STATUS.REJECTED) {\n        store.dispatch(\n            throwError(\n                new TokenException(\n                    EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL.REJECTED,\n                    EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL.message,\n                ),\n            ),\n        );\n    }\n\n    if (notAllowUserToGoBack) {\n        store.getState().shared.route.route.current.id = ROUTE_LOADING;\n        try {\n            const isTokenReqProcessed = await store.dispatch(\n                actionIfTokenReqProcessed({\n                    fetchLatestTokenReq: true,\n                    sameSession: true,\n                }),\n            );\n            if (!isTokenReqProcessed) {\n                await store.dispatch(changeRoute(ROUTE_REDIRECT_OPTIONS));\n            }\n        } catch (e) {\n            // Case where token request is REJECTED or EXPIRED\n            store.dispatch(throwError(e));\n        }\n    }\n};\n\nexport default validateBrowserSession;\n","import {generateNonce} from './Util';\n\nconst REQUEST_TIMEOUT = 5000;\n\n/**\n * Class postie for postMessage bindings\n * @param       {object} options Constructor params\n * @constructor\n */\nfunction Postie(options) {\n    let _id = options.id;\n    let _source = options.source;\n    let _destination = options.destination;\n    let _origin = options.origin || '*';\n\n    // initialize message collection\n    let _messages = [];\n\n    const _self = this;\n\n    function _setId(id) {\n        _id = id;\n        return _self;\n    }\n\n    function _onReceiveMessage(e) {\n        let {data} = e;\n        if (!data) return;\n\n        try {\n            data = _decodeMessage(data);\n        } catch (e) {\n            return;\n        }\n\n        const {type} = data;\n        if (!type) return;\n\n        const m = _messages.find(m => m.type === type);\n        if (!m) return;\n\n        // is weak reference\n        if (m.weak) {\n            _id = data.popupId;\n        } else { // is strong reference\n            if (data.popupId !== _id) {\n                return;\n            }\n        }\n\n        // execute callback\n        m.callback(data);\n    }\n\n    function _bindListeners() {\n        _source.addEventListener('message', _onReceiveMessage);\n    }\n\n    function _unbindListeners() {\n        _source.removeEventListener('message', _onReceiveMessage);\n    }\n\n    function _dispatchMessage(message, destination, origin) {\n        // dispatch message to the parent\n\n        const d = destination || _destination;\n        const o = origin || _origin;\n\n        const m = _decodeMessage(message);\n\n        if (_id) {\n            m.popupId = _id;\n        }\n\n        d.postMessage(_encodeMessage(m), o);\n\n        return _self;\n    }\n\n    function _onMessage(type, callback, weak) {\n        // enable message type listener\n        if (_messages.length && _messages.find(m => m.type === type)) {\n            return;\n        }\n        const w = weak ? weak : false;\n        _messages.push({\n            type,\n            callback,\n            weak: w,\n        });\n        return _self;\n    }\n\n    function _offMessage(type) {\n        // disable message type listener\n        if (!_messages.length) {\n            return;\n        }\n        const i = _messages.findIndex(m => m.type === type);\n        if (i !== -1) {\n            _messages.splice(i, 1);\n        }\n        return _self;\n    }\n\n    function _decodeMessage(message) {\n        if (typeof message === 'object') {\n            return message;\n        }\n        if (typeof message === 'string' && message.length) {\n            try {\n                return JSON.parse(message);\n            } catch (e) {\n                return {\n                    type: message,\n                };\n            }\n        }\n        throw new Error('INVALID_MESSAGE');\n    }\n\n    function _encodeMessage(message) {\n        if (typeof message === 'string') {\n            return message;\n        }\n        if (typeof message === 'object') {\n            try {\n                return JSON.stringify(message);\n            } catch (e) {\n                throw new Error('INVALID_MESSAGE');\n            }\n        }\n        throw new Error('INVALID_MESSAGE');\n    }\n\n    function _dispatchRequest(msg, success, failure, destination, origin) {\n        const startTime = new Date().getTime();\n        // setup and dispatch request message\n        const message = _decodeMessage(msg);\n        const type = message.type;\n        const typeRes = `${type}_RES`;\n        const nonce = generateNonce();\n        let interval = null;\n        const cancelInterval = () => {\n            if (!interval) return;\n            clearInterval(interval);\n            interval = null;\n        };\n        if (_messages.find(m => m.type === typeRes)) {\n            return;\n        }\n        _onMessage(typeRes, data => {\n            if (data.nonce !== nonce) return;\n            _offMessage(typeRes);\n            cancelInterval();\n            success(data);\n        });\n        const typeReq = `${type}_REQ`;\n        const messageReq = Object.assign(message, {\n            type: typeReq,\n            nonce,\n        });\n        _dispatchMessage(messageReq, destination, origin);\n        interval = setInterval(() => {\n            // reject on timeout\n            const timePassed = new Date().getTime() - startTime;\n            if (timePassed >= REQUEST_TIMEOUT) {\n                cancelInterval();\n                _offMessage(typeRes);\n                failure(new Error('MESSAGE_REQUEST_TIMEOUT'));\n            }\n        }, 500);\n        return _self;\n    }\n\n    function _setupResponse(type, callback, destination, origin) {\n        // setup response message\n        const typeReq = `${type}_REQ`;\n        if (_messages.find(m => m.type === typeReq)) {\n            return;\n        }\n        _onMessage(typeReq, data => {\n            const typeRes = `${type}_RES`;\n            callback(\n                data.payload,\n                response => {\n                    const messageRes = Object.assign({}, data, {\n                        type: typeRes,\n                        payload: response,\n                    });\n                    _dispatchMessage(messageRes, destination, origin);\n                }\n            );\n        });\n        return _self;\n    }\n\n    function _proxyRequest(type, destination, origin) {\n        // setup proxy request (both ways)\n        if (!(type && destination)) return;\n        const o = origin || '*';\n        const typeReq = `${type}_REQ`;\n        const typeRes = `${type}_RES`;\n        // request listener\n        _onMessage(typeReq, data => {\n            const message = _encodeMessage(data);\n            destination.postMessage(message, o);\n        });\n        // response listener\n        _onMessage(typeRes, data => {\n            const message = _encodeMessage(data);\n            _destination.postMessage(message, _origin);\n        });\n        return _self;\n    }\n\n    function _proxyMessage(type, destination, origin) {\n        // setup proxy message (one way)\n        if (!type) return;\n        const d = destination || _destination;\n        const o = origin || _origin;\n        _onMessage(type, data => {\n            const message = _encodeMessage(data);\n            d.postMessage(message, o);\n        });\n        return _self;\n    }\n\n    function _destroy() {\n        _unbindListeners();\n        _destination = null;\n        _source = null;\n        _origin = '*';\n        _messages = [];\n        return _self;\n    }\n\n    // bind public methods\n    _self.setId = _setId.bind(_self);\n    _self.dispatchMessage = _dispatchMessage.bind(_self);\n    _self.onMessage = _onMessage.bind(_self);\n    _self.offMessage = _offMessage.bind(_self);\n    _self.dispatchRequest = _dispatchRequest.bind(_self);\n    _self.setupResponse = _setupResponse.bind(_self);\n    _self.proxyRequest = _proxyRequest.bind(_self);\n    _self.proxyMessage = _proxyMessage.bind(_self);\n    _self.destroy = _destroy.bind(_self);\n\n    // bind listeners\n    if (_source) {\n        _bindListeners();\n    }\n}\n\nexport default Postie;\n","const Dom = {\n    applyStyle: (el, style) => {\n        for (const key in style) {\n            if (Object.prototype.hasOwnProperty.call(style, key)) {\n                const value = style[key];\n                if (value instanceof Array) {\n                    for (let i = 0; i < value.length; i++) {\n                        el.style[key] = value[i];\n                    }\n                } else {\n                    el.style[key] = value;\n                }\n            }\n        }\n        return el;\n    },\n\n    applyAttrs: (el, attrs, curr) => {\n        if (el.location) {\n            return Dom.applyWindowAttrs(el, attrs, curr);\n        }\n        for (const key in attrs) {\n            if (Object.prototype.hasOwnProperty.call(attrs, key)) {\n                switch (key) {\n                case 'style':\n                    Dom.applyStyle(el, attrs.style);\n                    break;\n                case 'className':\n                    if (el.classList.contains(attrs.className)) break;\n                    el.classList.add(attrs.className);\n                    break;\n                default:\n                    el.setAttribute(key, attrs[key]);\n                }\n            }\n        }\n        return true;\n    },\n\n    applyWindowAttrs: (w, attrs, curr) => {\n        const availTop = screen.availTop;\n        const availLeft = screen.availLeft;\n        const availWidth = screen.availWidth;\n        const availHeight = screen.availHeight;\n        const width = Math.round(attrs.width || curr.width);\n        const height = Math.round(attrs.height || curr.height);\n\n        let left = Math.round(attrs.left || curr.left);\n        let top = Math.round(attrs.top || curr.top);\n\n        const center = attrs.center ? attrs.center : false;\n        if (center) {\n            left = Math.round((curr.left + curr.width / 2) - width / 2);\n            top = Math.round((curr.top + curr.height / 2) - height / 2);\n        }\n\n        if (\n            (curr.left === left || curr.left === availLeft) &&\n            (curr.top === top || curr.top === availTop) &&\n            (curr.width === width || curr.width === availWidth) &&\n            (curr.height === height || curr.height === availHeight)\n        ) {\n            return true;\n        }\n\n        if (curr.left !== left || curr.top !== top) {\n            w.moveTo(left, top);\n        }\n\n        if (curr.width !== width || curr.height !== height) {\n            w.resizeTo(width, height);\n        }\n\n        return false;\n    },\n\n    createElement: (type, attrs) => {\n        const el = window.document.createElement(type);\n        Dom.applyAttrs(el, attrs);\n\n        el.html = data => {\n            if (typeof data === 'string') {\n                el.innerHTML = data;\n                return el;\n            }\n            if (data instanceof HTMLElement) {\n                el.appendChild(data);\n                return el;\n            }\n            if (data instanceof Array) {\n                el.innerHTML = '';\n                for (let i = 0; i < data.length; i++) {\n                    el.appendChild(data[i]);\n                }\n                return el;\n            }\n            return el;\n        };\n        el.text = data => {\n            el.textContent = data;\n            return el;\n        };\n        return el;\n    },\n\n    isAChildOf: (_parent, _child) => {\n        if (_parent === _child) {\n            return false;\n        }\n        while (_child && _child !== _parent) {\n            _child = _child.parentNode;\n        }\n        return _child === _parent;\n    },\n};\n\nexport default Dom;\n","export const popupInitTimeout = 5000;\nexport const bindButtonTimeout = 20000; // 20s\n\nexport const REDIRECT = 'REDIRECT';\nexport const POPUP = 'POPUP';\nexport const IFRAME = 'IFRAME';\n\nexport const TOKEN_POPUP_NAME = 'TOKEN_FRAME';\nexport const TOKEN_WEB_APP_IFRAME_NAME = 'TOKEN_WEB_APP_IFRAME';\n\nexport const TOKEN_BANK_POPUP = 'TOKEN_BANK_POPUP';\n\nexport const POPUP_CLOSE = 'POPUP_CLOSE';\nexport const POPUP_SUCCESS = 'POPUP_SUCCESS';\nexport const POPUP_FAILURE = 'POPUP_FAILURE';\nexport const POPUP_VISIBILITY_CHANGE = 'POPUP_VISIBILITY_CHANGE';\nexport const GET_TOKEN_REQUEST_URL = 'GET_TOKEN_REQUEST_URL';\nexport const POPUP_SHOW = 'POPUP_SHOW';\nexport const POPUP_INIT = 'POPUP_INIT';\nexport const POPUP_ACTION = 'POPUP_ACTION';\nexport const POPUP_IS_LOADED = 'POPUP_IS_LOADED';\nexport const POPUP_KEEPALIVE = 'POPUP_KEEPALIVE';\nexport const POPUP_INITIAL_WIDTH = 450;\nexport const POPUP_INITIAL_HEIGHT = 789;\n\nexport const BUTTON_STYLE = 'BUTTON_STYLE';\nexport const BUTTON_CLICK = 'BUTTON_CLICK';\nexport const BUTTON_SET_ENABLED = 'BUTTON_SET_ENABLED';\nexport const BUTTON_BIND_PAY = 'BUTTON_BIND_PAY';\nexport const BUTTON_BIND_ACCESS = 'BUTTON_BIND_ACCESS';\nexport const BUTTON_SET_TYPE = 'BUTTON_SET_TYPE';\nexport const BUTTON_TYPE_POPUP = 'BUTTON_TYPE_POPUP';\nexport const BUTTON_TYPE_REDIRECT = 'BUTTON_TYPE_REDIRECT';\nexport const BUTTON_TYPE_IFRAME = 'BUTTON_TYPE_IFRAME';\n\nexport const WEB_APP_IFRAME_STYLE = 'WEB_APP_IFRAME_STYLE';\nexport const WEB_APP_IFRAME_SHOW = 'WEB_APP_IFRAME_SHOW';\nexport const WEB_APP_IFRAME_IS_LOADED = 'WEB_APP_IFRAME_IS_LOADED';\nexport const WEB_APP_IFRAME_CLOSE = 'WEB_APP_IFRAME_CLOSE';\nexport const WEB_APP_IFRAME_VISIBILITY_CHANGE =\n    'WEB_APP_IFRAME_VISIBILITY_CHANGE';\nexport const WEB_APP_IFRAME_SUCCESS = 'WEB_APP_IFRAME_SUCCESS';\nexport const WEB_APP_IFRAME_FAILURE = 'WEB_APP_IFRAME_FAILURE';\nexport const WEB_APP_IFRAME_IS_OPEN = 'WEB_APP_IFRAME_IS_OPEN';\n\nexport const TOKEN_BANK_POPUP_CLOSE = 'TOKEN_BANK_POPUP_CLOSE';\nexport const TOKEN_BANK_POPUP_IS_OPEN = 'TOKEN_BANK_POPUP_IS_OPEN';\n\nexport const OVERLAY_INIT = 'OVERLAY_INIT';\nexport const OVERLAY_HIDE = 'OVERLAY_HIDE';\nexport const OVERLAY_IS_LOADED = 'OVERLAY_IS_LOADED';\nexport const OVERLAY_CLOSE_ACTION = 'OVERLAY_CLOSE_ACTION';\n\n// Resource types for access token;\nexport const RESOURCE_TYPE_ALL_ADDRESSES = 1;\nexport const RESOURCE_TYPE_ALL_ACCOUNTS = 2;\nexport const RESOURCE_TYPE_ALL_TRANSACTIONS = 3;\nexport const RESOURCE_TYPE_ALL_BALANCES = 4;\nexport const RESOURCE_TYPE_ADDRESS = 5;\nexport const RESOURCE_TYPE_ACCOUNT = 6;\nexport const RESOURCE_TYPE_TRANSACTIONS = 7;\nexport const RESOURCE_TYPE_BALANCE = 8;\n\n// User agent\nexport const FIREFOX = 'Firefox';\n\nlet browserEnv = {};\n\n// Allow configuration of environment variables through browser environment\nif (window !== undefined && window.BROWSER_ENV !== undefined) {\n    browserEnv = window.BROWSER_ENV;\n}\n\nexport const webAppUrl = browserEnv.webAppUrl;\n","import Dom from '@token-io/lib-web-components/src/Dom';\nimport {\n    OVERLAY_IS_LOADED,\n    OVERLAY_CLOSE_ACTION,\n    OVERLAY_INIT,\n} from 'iframe/constants';\nimport Postie from '@token-io/lib-web-components/src/Postie';\nimport {\n    generateNonce,\n    isFunction,\n} from '@token-io/lib-web-components/src/Util';\n\n// View which loads the page with the token overlay\nfunction TokenOverlayController({ url }) {\n    const _self = this;\n    const _element = window.document.body;\n    const _id = generateNonce();\n\n    let onload;\n    let _overlayIframe = null;\n    let _postie = null;\n    let _frameLoaded = false;\n    let _onOverlayLoaded = null;\n    let _overlayCloseAction = null;\n\n    const _attrs = {\n        name: 'token-overlay-iframe',\n        frameBorder: 0,\n        style: {\n            position: 'static',\n            display: 'inline',\n            width: '0',\n            height: '0',\n            zIndex: '9999',\n        },\n    };\n\n    const popupFrameAttrs = {\n        src: url + '/overlay',\n    };\n\n    function _updateToFrameOverlay() {\n        Dom.applyAttrs(_overlayIframe, popupFrameAttrs);\n    }\n\n    function _updateStyles() {\n        Dom.applyStyle(_overlayIframe, _attrs.style);\n    }\n\n    function _overlayIframeLoaded() {\n        return _overlayIframe instanceof window.Node;\n    }\n\n    function _isVisible() {\n        return window.getComputedStyle(_overlayIframe)['display'] !== 'none';\n    }\n\n    function _hide() {\n        if (!_isVisible()) return;\n        _attrs.style.position = 'static';\n        _attrs.style.display = 'inline';\n        _attrs.style.width = '0';\n        _attrs.style.height = '0';\n        _updateStyles();\n        _destroy();\n    }\n\n    function _show() {\n        _attrs.style.position = 'fixed';\n        _attrs.style.display = 'block';\n        _attrs.style.width = '100%';\n        _attrs.style.height = '100%';\n        _attrs.style.top = '0';\n        _attrs.style.right = '0';\n        _attrs.style.bottom = '0';\n        _attrs.style.left = '0';\n        _updateStyles();\n    }\n\n    function _isLoaded() {\n        return _frameLoaded === true;\n    }\n\n    function _destroy() {\n        _unbindListeners();\n        _frameLoaded = false;\n        _element.removeChild(_overlayIframe);\n        _overlayIframe = null;\n        onload = null;\n    }\n\n    function _onLoad() {\n        if (onload) {\n            onload();\n        }\n    }\n\n    function _setupMessages(postie) {\n        postie\n            .onMessage(OVERLAY_IS_LOADED, () => {\n                if (!_onOverlayLoaded) return;\n                _onOverlayLoaded(_self);\n            })\n            .onMessage(OVERLAY_CLOSE_ACTION, () => {\n                if (isFunction(_overlayCloseAction)) _overlayCloseAction();\n            });\n    }\n\n    function _bindListeners() {\n        if (!_overlayIframeLoaded()) return;\n        _overlayIframe.addEventListener('load', _onLoad);\n        _postie = new Postie({\n            id: _id,\n            source: window,\n            destination: _overlayIframe.contentWindow,\n            origin: url,\n        });\n        _setupMessages(_postie);\n    }\n\n    function _unbindListeners() {\n        _overlayIframe.removeEventListener('load', _onLoad);\n        _postie.destroy();\n        _postie = null;\n    }\n\n    function _init() {\n        onload = () => {\n            _postie.dispatchMessage({\n                type: OVERLAY_INIT,\n            });\n        };\n\n        if (_overlayIframeLoaded()) {\n            onload();\n            return;\n        }\n\n        _frameLoaded = true;\n        _overlayIframe = Dom.createElement('iframe', _attrs);\n        _updateToFrameOverlay();\n        _element.appendChild(_overlayIframe);\n        _bindListeners();\n    }\n\n    _self.show = () => {\n        _show();\n    };\n\n    _self.hide = () => {\n        _hide();\n    };\n\n    _self.isVisible = () => {\n        return _isVisible();\n    };\n\n    _self.isLoaded = () => {\n        return _isLoaded();\n    };\n\n    _self.destroy = () => {\n        _destroy();\n        return _self;\n    };\n\n    _self.onLoad = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _onOverlayLoaded = fn;\n    };\n\n    _self.onCloseAction = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _overlayCloseAction = fn;\n    };\n\n    _self.bindOverlayCloseAction = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _overlayCloseAction = () => {\n            fn();\n        };\n    };\n\n    _init();\n}\n\nexport default TokenOverlayController;\n","import {\n    TOKEN_POPUP_NAME,\n    TOKEN_BANK_POPUP,\n    popupInitTimeout,\n    POPUP_INITIAL_WIDTH,\n    POPUP_INITIAL_HEIGHT,\n} from 'iframe/constants';\nimport Postie from '@token-io/lib-web-components/src/Postie';\nimport {\n    isInternetExplorer,\n    isSafari,\n    isMSEdge,\n    isFunction,\n} from '@token-io/lib-web-components/src/Util';\n\n// Pop up controller\nfunction TokenPopup({ url, popupName }) {\n    const _self = this;\n    let _popup = null;\n    let _postie = null;\n    let _isVisible = false;\n    let _onLoadCallback = null;\n    let _onVisibilityChange = null;\n    const _popupName = popupName || TOKEN_POPUP_NAME;\n    let _keepalive = 0;\n\n    function _popupExists() {\n        if (!_popup) return false;\n        return !_popup.closed;\n    }\n\n    function _hide() {\n        if (!_isVisible) return;\n        _popup.close();\n        _popup = null;\n    }\n\n    function _setupKeepAlive() {\n        _keepalive = setInterval(() => {\n            const visible = _isOpen();\n            if (visible === _isVisible) return;\n            _dispatchKeepAlive(visible);\n            if (!visible) {\n                _unbindListeners();\n                clearInterval(_keepalive);\n                _keepalive = 0;\n            }\n        }, 500);\n    }\n\n    function _dispatchKeepAlive(visible) {\n        if (!isFunction(_onVisibilityChange)) return;\n        _onVisibilityChange(visible);\n        _isVisible = visible;\n    }\n\n    function _waitUntilPopupIsInitialized() {\n        let _popupInit = false;\n        const startTime = new Date().getTime();\n        let timePassed;\n        while (!_popupInit) {\n            if (_popup && isFunction(_popup.addEventListener)) {\n                _popupInit = true;\n            }\n            timePassed = new Date().getTime() - startTime;\n            if (timePassed >= popupInitTimeout) {\n                throw new Error('Popup initialization timeout');\n            }\n        }\n    }\n\n    function _show() {\n        const isIE = isInternetExplorer();\n        const isEdge = isMSEdge();\n        const isSaf = isSafari();\n        const width = POPUP_INITIAL_WIDTH;\n        const height =\n            (screen.availHeight > POPUP_INITIAL_HEIGHT\n                ? POPUP_INITIAL_HEIGHT\n                : screen.availHeight) + (isSaf ? 23 : isEdge ? -130 : 0);\n\n        const screenLeft =\n            !isIE && !isEdge && window.screenLeft\n                ? window.screenLeft\n                : window.screenX;\n        const screenTop =\n            !isIE && !isEdge && window.screenTop\n                ? window.screenTop\n                : window.screenY;\n\n        const center = {\n            left: screenLeft + window.outerWidth / 2,\n            top: screenTop + window.outerHeight / 2,\n        };\n\n        const left =\n            screen.availWidth > width ? Math.floor(center.left - width / 2) : 0;\n        const top =\n            screen.availHeight > height\n                ? Math.floor(center.top - height / 2)\n                : 0;\n\n        let props = 'location=yes,clearcache=yes';\n        if (_popupName !== TOKEN_BANK_POPUP) {\n            props =\n                props +\n                `,width=${width},height=${height},left=${left},top=${top},`;\n        }\n\n        _popup = window.open(url, _popupName, props);\n\n        _waitUntilPopupIsInitialized();\n    }\n\n    function _isOpen() {\n        return _popupExists();\n    }\n\n    function _destroy() {\n        _hide();\n    }\n\n    function _setupMessages(postie) {\n        postie.onMessage(\n            'POPUP_IS_OPEN',\n            function (data) {\n                if (isFunction(_onLoadCallback)) _onLoadCallback();\n            },\n            true,\n        );\n    }\n\n    function _onLoad() {\n        _postie = new Postie({\n            source: window,\n            destination: _popup,\n            origin: url,\n        });\n        _setupMessages(_postie);\n    }\n\n    function _bindListeners() {\n        _onLoad();\n        _setupKeepAlive();\n    }\n\n    function _unbindListeners() {\n        if (_postie) _postie.destroy();\n        _popup = null;\n        _postie = null;\n        _onLoadCallback = null;\n        _onVisibilityChange = null;\n        _keepalive = 0;\n    }\n\n    function _init() {\n        _show();\n        _bindListeners();\n    }\n\n    _self.isVisible = () => {\n        return _isVisible();\n    };\n\n    _self.showPopup = () => {\n        _show();\n    };\n\n    _self.hidePopup = () => {\n        _hide();\n    };\n\n    _self.isOpen = () => {\n        return _isOpen();\n    };\n\n    _self.onLoad = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _onLoadCallback = fn;\n    };\n\n    _self.onVisibilityChange = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _onVisibilityChange = fn;\n    };\n\n    _self.destroy = () => {\n        _destroy();\n        return _self;\n    };\n\n    _self.getPopup = () => _popup;\n\n    _init();\n}\n\nexport default TokenPopup;\n","import {\n    TOKEN_BANK_POPUP,\n    POPUP_SHOW,\n    POPUP_FAILURE,\n    POPUP_SUCCESS,\n    POPUP_IS_LOADED,\n    POPUP_VISIBILITY_CHANGE,\n} from 'iframe/constants';\nimport Postie from '@token-io/lib-web-components/src/Postie';\nimport {\n    generateNonce,\n    isFunction,\n} from '@token-io/lib-web-components/src/Util';\nimport TokenPopup from 'iframe/TokenPopup';\n\n// Bank pop up controller\nfunction TokenBankPopup({ url }) {\n    const _self = this;\n    let _popup = null;\n    let _postie = null;\n    let _onVisibilityChangeCallback = null;\n\n    function _show() {\n        _popup = new TokenPopup({\n            url: url,\n            popupName: TOKEN_BANK_POPUP,\n        });\n\n        _postie = new Postie({\n            source: window,\n            destination: _popup.getPopup(),\n            origin: url,\n            id: generateNonce(),\n        });\n\n        _setupBankPopupMessages(_postie, window.parent[0], '*');\n    }\n\n    function _setupBankPopupMessages(postie, destination, origin) {\n        const requestMessages = [POPUP_SHOW];\n        const returnMessages = [POPUP_SUCCESS, POPUP_FAILURE];\n\n        // proxy messages from the parent to the popup\n        requestMessages.forEach(function (msg) {\n            postie.proxyMessage(msg);\n        });\n\n        // proxy messages from the popup to the parent\n        returnMessages.forEach(function (msg) {\n            postie.proxyMessage(msg, destination, origin);\n        });\n\n        // tell the parent that the popup is loaded\n        _popup.onLoad(function () {\n            postie.dispatchMessage(\n                {\n                    type: POPUP_IS_LOADED,\n                },\n                destination,\n                origin,\n            );\n        });\n\n        // setup bank popup visibility change messages\n        const dispatchBankPopupVisibility = visible => {\n            if (isFunction(_onVisibilityChangeCallback)) {\n                _onVisibilityChangeCallback(visible);\n            }\n\n            postie.dispatchMessage(\n                {\n                    type: POPUP_VISIBILITY_CHANGE,\n                    visible,\n                },\n                destination,\n                origin,\n            );\n        };\n\n        // keep the parent notified about the change of visibility of the bank popup\n        _popup.onVisibilityChange(dispatchBankPopupVisibility);\n\n        // bank popup is now visible, so tell the parent\n        dispatchBankPopupVisibility(true);\n    }\n\n    function _init() {\n        _show();\n    }\n\n    _self.getPopup = () => _popup;\n\n    _self.onVisibilityChange = fn => {\n        if (!isFunction(fn)) throw new Error('Function expected');\n        _onVisibilityChangeCallback = fn;\n    };\n\n    _init();\n}\n\nexport default TokenBankPopup;\n","import {\n    POPUP_SHOW,\n    POPUP_CLOSE,\n    TOKEN_BANK_POPUP_IS_OPEN,\n    TOKEN_BANK_POPUP_CLOSE,\n    webAppUrl,\n    ROUTE_REDIRECT_OPTIONS,\n} from 'config/constants';\nimport { initiatePopupFlow } from 'actions/shared';\nimport Postie from '@token-io/lib-web-components/src/Postie';\nimport { localStorageWrapper } from 'util';\nimport { EXCEPTION_NO_PARENT_WINDOW } from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\nimport TokenOverlayController from 'iframe/token/TokenOverlayController';\nimport TokenBankPopup from 'iframe/TokenBankPopup';\nimport { POPUP_VISIBILITY_CHANGE } from 'iframe/constants';\nimport { changeRoute } from 'actions/shared/route';\n\nlet _postie, _keepalive, _overlay, _bankPopup, _isBankCallback;\n\nconst onBankPopupClose = () => {\n    hideOverlay();\n    if (_bankPopup) {\n        _bankPopup.hidePopup();\n    }\n    if (!_postie) return;\n    _postie.dispatchMessage({\n        type: POPUP_CLOSE,\n    });\n};\n\nconst hideOverlay = () => {\n    if (!_overlay) return;\n    _overlay.hide();\n    _overlay = null;\n};\n\nconst verifyOpener = () => {\n    if (\n        !(window && window.opener && window !== window.opener) &&\n        !window.frames\n    ) {\n        throw new TokenException(\n            EXCEPTION_NO_PARENT_WINDOW,\n            'No parent window',\n        );\n    }\n};\n\nconst TokenCommunicator = {\n    setupMessages(postie) {\n        postie.onMessage(\n            POPUP_SHOW,\n            data => {\n                TokenCommunicator.dispatch(initiatePopupFlow(data));\n            },\n            true,\n        );\n    },\n    setupKeepAlive(parent) {\n        _keepalive = setInterval(() => {\n            const linked = !!parent || !!window.opener;\n            if (!linked) {\n                clearInterval(_keepalive);\n                _keepalive = 0;\n                window.close();\n            }\n        }, 500);\n    },\n    setup(dispatch, target) {\n        verifyOpener();\n        TokenCommunicator.dispatch = dispatch;\n        const id = localStorageWrapper.get('popup_id');\n        _postie = new Postie({\n            id,\n            source: window,\n            destination: target || window.opener,\n        });\n        TokenCommunicator.setupMessages(_postie);\n        TokenCommunicator.setupKeepAlive(target);\n    },\n    setupIframe(dispatch) {\n        TokenCommunicator.setup(dispatch, window.parent);\n    },\n    setupBankPopup(dispatch) {\n        TokenCommunicator.setup(dispatch, window.parent[0]);\n        _postie.onMessage(\n            TOKEN_BANK_POPUP_CLOSE,\n            function (payload) {\n                _isBankCallback = true;\n                if (_overlay) _overlay.hide();\n                _overlay = null;\n                const url = payload.payload;\n                window.document.location.assign(url);\n            },\n            true,\n        );\n        _postie.onMessage(\n            TOKEN_BANK_POPUP_IS_OPEN,\n            function (payload) {\n                const bankUrl = payload?.payload;\n                if (!_overlay) {\n                    _overlay = new TokenOverlayController({ url: webAppUrl });\n                    _overlay.show();\n                    _overlay.bindOverlayCloseAction(onBankPopupClose);\n                }\n\n                const bankPopup = new TokenBankPopup({\n                    url: bankUrl,\n                });\n\n                _bankPopup = bankPopup.getPopup();\n            },\n            true,\n        );\n        _postie.onMessage(\n            POPUP_VISIBILITY_CHANGE,\n            function (data) {\n                if (!data.visible) {\n                    if (_overlay) _overlay.hide();\n                    _overlay = null;\n                    if (!_isBankCallback) {\n                        TokenCommunicator.dispatch(\n                            changeRoute(ROUTE_REDIRECT_OPTIONS),\n                        );\n                    }\n                }\n            },\n            true,\n        );\n    },\n    async sendMessage(type, payload) {\n        verifyOpener();\n        return new Promise((resolve, reject) => {\n            _postie.dispatchRequest(\n                {\n                    type,\n                    payload,\n                },\n                resolve,\n                reject,\n            );\n        });\n    },\n    dispatchMessage(type, payload) {\n        verifyOpener();\n        _postie.dispatchMessage({\n            type,\n            payload,\n        });\n    },\n};\n\nexport default TokenCommunicator;\n","import {\n    AISP_CAPTURE_CREDENTIALS,\n    PISP_CAPTURE_CREDENTIALS,\n    ROUTE_PISP,\n    ROUTE_AISP,\n    DEFAULT_DEV_KEY,\n    INTERNAL_TOKEN_REQUEST_STATUS as requestStatus,\n    INIT_BANK_AUTH_STATUS as bankAuthStatus,\n} from 'config/constants';\nimport { getURLParameter } from 'util/index';\nimport { formatCredentials } from '../helpers';\nimport {\n    EXCEPTION_INITIATE_BANK_AUTH,\n    INTL_EXCEPTION_REQUEST_FAILED,\n} from '../../config/exceptions';\nimport { changeRoute, setStep } from 'actions/shared/route';\nimport { TokenException } from '@token-io/lib-web-app';\nimport {\n    initiateBankAuthorization,\n    setTokenRequestStatus,\n} from 'actions/shared/api';\nimport {\n    getTokenRequest,\n    fetchTokenRequestData,\n    showBankRedirectionScreen,\n    setupBankRedirectUrl,\n    completeFlowV2,\n    setTokenRequestId,\n    setCustomDevKey,\n    setBank,\n    yieldBanks,\n    blockUserToGoBack,\n} from 'actions/shared';\n\n// Actions\nexport const setCredentials = credentials => ({\n    type: 'SET_CREDENTIALS',\n    credentials,\n});\n\nexport const setInitBankAuthStatus = status => ({\n    type: 'SET_INIT_BANK_AUTH_STATUS',\n    status,\n});\n\n// Thunks for credentials\nexport const captureCredentials = (requiredCredentials, failureCb) => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    dispatch(setInitBankAuthStatus(bankAuthStatus.FIELDS));\n    if (requiredCredentials && requiredCredentials?.length !== 0) {\n        await dispatch(\n            setTokenRequestStatus(\n                requestStatus.PENDING_FURTHER_CREDENTIALS_REQUIRED_1,\n            ),\n        );\n\n        const selectedBank = sharedService.getSelectedBank();\n        const defaultBankId = tokenRequestService.getDefaultBankId();\n\n        if (!selectedBank && defaultBankId) {\n            const { banks } = await dispatch(\n                yieldBanks({ ids: [defaultBankId], isDefaultBank: true }),\n            );\n            const bank = banks?.[0];\n            dispatch(setBank(bank));\n        }\n\n        dispatch(setCredentials(requiredCredentials));\n        if (sharedService.isAisp()) {\n            dispatch(setStep(AISP_CAPTURE_CREDENTIALS));\n            dispatch(changeRoute(ROUTE_AISP));\n        } else {\n            dispatch(setStep(PISP_CAPTURE_CREDENTIALS));\n            dispatch(changeRoute(ROUTE_PISP));\n        }\n    } else {\n        if (typeof failureCb === 'function') {\n            failureCb();\n        } else {\n            throw new TokenException(\n                INTL_EXCEPTION_REQUEST_FAILED,\n                'Error: failure occured in capturing credentials',\n            );\n        }\n    }\n};\n\nexport const handleFinalScaStatus = scaStatus => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const tokenRequestId = tokenRequestService.getRequestId();\n    dispatch(setInitBankAuthStatus(bankAuthStatus.STATUS));\n    if (scaStatus === 'AUTHENTICATED') {\n        blockUserToGoBack();\n        await dispatch(completeFlowV2(tokenRequestId));\n    } else {\n        throw new TokenException(\n            EXCEPTION_INITIATE_BANK_AUTH,\n            'Bank Authentication has failed',\n        );\n    }\n};\n\nexport const initiateCredentialsCallback = response => async dispatch => {\n    if (response?.redirectUrl) {\n        dispatch(showBankRedirectionScreen());\n        dispatch(setInitBankAuthStatus(bankAuthStatus.REDIRECT_URL));\n        await dispatch(setupBankRedirectUrl(response.redirectUrl));\n    } else if (\n        response?.credentialFields?.fields &&\n        response?.credentialFields?.fields?.length > 0\n    ) {\n        const credentials = response.credentialFields.fields;\n        const requiredCredentials = formatCredentials(credentials);\n        dispatch(\n            captureCredentials(requiredCredentials, () => {\n                throw new TokenException(\n                    EXCEPTION_INITIATE_BANK_AUTH,\n                    'Error in initiate bank auth response from TI for credentials',\n                );\n            }),\n        );\n    } else if (response?.status) {\n        dispatch(handleFinalScaStatus(response.status));\n    } else {\n        throw new TokenException(\n            EXCEPTION_INITIATE_BANK_AUTH,\n            'Unknown error in initiate bank auth call',\n        );\n    }\n};\n\nexport const initiateBankAuthFlow = (credentialValues, options) => async (\n    dispatch,\n    { tokenService, sharedService },\n) => {\n    const prevAuthStatus = tokenService.getBankAuthStatus();\n    const { tokenRequest } = await dispatch(getTokenRequest(!!prevAuthStatus));\n\n    const dontUseWebApp = options?.dontUseWebApp;\n    const bank = sharedService.getSelectedBank();\n\n    let request;\n    if (credentialValues) {\n        request = {\n            credentials: credentialValues,\n        };\n    } else {\n        let requestPayload;\n        if (bank?.mandatoryFields) {\n            if (!sharedService.isBulkTransfer()) {\n                requestPayload = tokenRequest?.requestPayload;\n                if (sharedService.isStandingOrder()) {\n                    requestPayload.standingOrderBody.instructions = tokenService.getStandingOrderInstructions();\n                } else if (sharedService.isTransfer()) {\n                    requestPayload.transferBody.instructions = tokenService.getInstructions();\n                } else if (sharedService.isAisp()) {\n                    requestPayload.accessBody.resourceTypeList = tokenService.getResourceTypeList();\n                }\n            }\n        }\n\n        request = {\n            ...(!dontUseWebApp && { requestPayload }),\n        };\n    }\n\n    const res = await dispatch(initiateBankAuthorization(request));\n    res && dispatch(initiateCredentialsCallback(res));\n};\n\nexport const initiateCredentialsFlow = () => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const requestId = getURLParameter('request-id');\n    const devKey = getURLParameter('dk') || DEFAULT_DEV_KEY;\n    dispatch(setCustomDevKey(devKey));\n    await dispatch(setTokenRequestId(requestId));\n    await dispatch(fetchTokenRequestData());\n    const defaultBankId = tokenRequestService.getDefaultBankId();\n    const isDefaultBank = !!defaultBankId;\n    const { banks } = await dispatch(\n        yieldBanks({ ids: [defaultBankId], isDefaultBank }),\n    );\n    const bank = banks?.[0];\n    dispatch(setBank(bank));\n    dispatch(initiateBankAuthFlow(null, { dontUseWebApp: true }));\n};\n","import { parseUrl, stringify } from 'query-string';\nimport base64url from 'base64url';\nimport { formatDataList } from '@token-io/lib-web-components/src/Util';\nimport {\n    applessAisp,\n    initiateAispFlow,\n    noApp as aispNoApp,\n    setAispTokenType,\n    redirectToBank,\n} from 'actions/aisp';\nimport {\n    initiatePispFlow,\n    noApp as pispNoApp,\n    setTransferTokenType,\n    setStandingOrderTokenType,\n    prepareGuestTransfer,\n    oneStepTransfer,\n    setBulkTransferTokenType,\n} from 'actions/pisp';\nimport {\n    backOrGoTo,\n    backStep,\n    changeRoute,\n    setStep,\n} from 'actions/shared/route';\nimport {\n    cancelPollForTokenRequestResult,\n    fetchTokenRequest,\n    getBankFromLocalStorage,\n    getTokenClient,\n    pollForTokenRequestResult,\n    removeCancelTokenOnClose,\n    saveBankToLocalStorage,\n    fetchTokenRequestResultWithStatus,\n    getDirectBankAuthUrl,\n    updateTokenRequest,\n    triggerCreateAndEndorseTokenNotification,\n    getMemberProfileById,\n    getTempMember,\n    setTokenRequestStatus,\n    getBankStatus,\n} from 'actions/shared/api';\nimport {\n    APP_APPROVAL,\n    AISP_ENTER_ALIAS,\n    BANK_PAGE_SIZE,\n    LOADING_STEP,\n    PISP_ENTER_ALIAS,\n    POPUP_FAILURE,\n    POPUP_SUCCESS,\n    ROUTE_LOADING,\n    ROUTE_BANK_LOADING,\n    ROUTE_REDIRECT_TO_TPP,\n    TOKEN_TYPE_VRP,\n    TOKEN_TYPE_ACCESS,\n    TOKEN_TYPE_TRANSFER,\n    TOKEN_TYPE_BULK_TRANSFER,\n    TOKEN_TYPE_STANDING_ORDER,\n    webAppUrl,\n    banksWithBranches,\n    ROUTE_BANK_REDIRECT,\n    ROUTE_CSRF_MISMATCH,\n    ALIAS_COUNTRY_LIST,\n    PISP_PAYMENT_INIT_STATUS,\n    ROUTE_PISP,\n    TPP_LOADING,\n    WEB_APP_EVENTS,\n    GEO_LOCATION_RESTRICTION,\n    CUSTOM_TPP_FEATURES as featureConfig,\n    EXTERNAL_TOKEN_REQUEST_STATUS as externalRequestStatus,\n    INTERNAL_TOKEN_REQUEST_STATUS as requestStatus,\n    TOKEN_WEB_APP_IFRAME_NAME,\n    TOKEN_BANK_POPUP_IS_OPEN,\n    PENDING_CREDENTIALS_TOKEN_REQUEST_STATUS,\n    REGIONS,\n    tokenRequestResultTimeout,\n    tokenRequestResultInterval,\n    BANK_OUTAGE,\n    PAYMENT_TYPE_GET_BANKS_OPTIONS as paymentTypeOptions,\n    BANK_SELECTION_PRESETS,\n    BANK_CHUNK_SIZE,\n} from 'config/constants';\nimport {\n    getHashValue,\n    isContextIframe,\n    getURLParameter,\n    getUserDeviceMetadata,\n    isPopup,\n    localStorageWrapper,\n    validateBrowserCompatibility,\n    addCustomCss,\n    removeCustomCss,\n    formatBankBranchData,\n    sessionStorageWrapper,\n    keyExists,\n    pollUntil,\n    getWebappContext,\n} from 'util/index';\nimport browserNavigation from 'util/browserNavigation';\nimport {\n    EXCEPTION_UNSUPPORTED_CONTEXT,\n    EXCEPTION_BANK_FLOW_FAILURE,\n    EXCEPTION_INVALID_TOKEN_REQUEST_URL,\n    EXCEPTION_NO_REDEEMER_ALIAS,\n    EXCEPTION_REQUEST_CANCELLED,\n    INTL_EXCEPTION_REQUEST_FAILED,\n    INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT,\n    EXCEPTION_TOKEN_ERROR,\n    EXCEPTION_ACCESS_DENIED,\n    EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL,\n    EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL,\n    EXCEPTION_TOKEN_REQUEST_RESTRICTED,\n    EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE,\n} from 'config/exceptions';\nimport {\n    replaceState,\n    throwError,\n    TokenException,\n    terminate,\n} from '@token-io/lib-web-app';\nimport {\n    formatCredentials,\n    updateCustomization,\n    getOverallTppConfigurations,\n} from '../helpers';\nimport TokenCommunicator from 'services/TokenCommunicator';\nimport { captureCredentials, initiateBankAuthFlow } from './credentials';\nimport { storeWebappEvent } from '../helpers/Api';\nimport { EXTERNAL_TOKEN_REQUEST_STATUS } from 'config/constants';\n\nconst Token = getTokenClient();\n\nlet GLOBAL_TOKEN_REQUEST;\n\n// Used only for testing purpose.\n// This is to clear/reset GLOBAL_TOKEN_REQUEST\nexport const resetGlobalTokenReq = () => {\n    GLOBAL_TOKEN_REQUEST = null;\n};\n\nexport const getTokenRequest = isBankCallback => async dispatch => {\n    if (!GLOBAL_TOKEN_REQUEST) {\n        GLOBAL_TOKEN_REQUEST = await dispatch(\n            fetchTokenRequestInfo(isBankCallback),\n        );\n    }\n    return GLOBAL_TOKEN_REQUEST;\n};\n\nexport const setErrorSource = isTokenError => ({\n    type: 'SET_ERROR_SOURCE',\n    isTokenError,\n});\n\nexport const setRedirect = () => ({\n    type: 'SET_REDIRECT',\n});\n\nexport const setLocale = locale => ({\n    type: 'SET_LOCALE',\n    locale,\n});\n\nexport const setRefId = refId => ({\n    type: 'SET_REF_ID',\n    refId,\n});\n\nexport const setCountries = countries => ({\n    type: 'SET_COUNTRIES',\n    countries,\n});\n\nexport const setBanks = banks => ({\n    type: 'SET_BANKS',\n    banks,\n});\n\nexport const saveRecentBanks = banks => ({\n    type: 'SET_RECENT_BANKS',\n    banks,\n});\n\nexport const addBanks = banks => ({\n    type: 'ADD_BANKS',\n    banks,\n});\n\nexport const clearBanks = () => ({\n    type: 'CLEAR_BANKS',\n});\n\nexport const setTppReturnData = tppReturnData => ({\n    type: 'SET_TPP_RETURN_DATA',\n    tppReturnData,\n});\n\nexport const setSelectedBank = bank => ({\n    type: 'SET_SELECTED_BANK',\n    bank,\n});\n\nexport const clearBank = () => ({\n    type: 'CLEAR_SELECTED_BANK',\n});\n\nexport const setBankInfo = bankInfo => ({\n    type: 'SET_SELECTED_BANK_INFO',\n    bankInfo,\n});\n\nexport const setBankStatus = (bankName, isLive) => ({\n    type: 'SET_BANK_STATUS',\n    bankName,\n    isLive,\n});\n\nexport const clearBankStatus = () => ({\n    type: 'CLEAR_BANK_STATUS',\n});\n\nexport const setSelectedCountry = selectedCountry => ({\n    type: 'SET_SELECTED_COUNTRY',\n    selectedCountry,\n});\n\nexport const addMember = member => ({\n    type: 'ADD_MEMBER',\n    member,\n});\n\nexport const setAlias = alias => ({\n    type: 'SET_ALIAS',\n    alias,\n    redacted: ['alias'],\n});\n\nexport const clearMembers = () => ({\n    type: 'CLEAR_MEMBERS',\n});\n\nexport const setErrorMessage = message => ({\n    type: 'SET_ERROR_MESSAGE',\n    message,\n});\n\nexport const clearErrorMessage = () => ({\n    type: 'CLEAR_ERROR_MESSAGE',\n});\n\nexport const setTokenRequestId = tokenRequestId => ({\n    type: 'SET_TOKEN_REQUEST_ID',\n    tokenRequestId,\n});\n\nexport const setTppSource = tppSource => ({\n    type: 'SET_TPP_SOURCE',\n    tppSource,\n});\n\nexport const setMemberProperties = properties => ({\n    type: 'SET_TPP_REQUESTED_INFO',\n    properties,\n});\n\nexport const setCustomizationId = id => ({\n    type: 'SET_CUSTOMIZATION_ID',\n    id,\n});\n\nexport const setUseBankRedirectionScreen = useBankRedirectionScreen => ({\n    type: 'SET_USE_BANK_REDIRECTION_SCREEN',\n    useBankRedirectionScreen,\n});\n\nexport const setTppRedirectUrl = redirectUrl => ({\n    type: 'SET_TPP_REDIRECT_URL',\n    redirectUrl,\n});\n\nexport const setTokenRequestOptions = (tokenRequestOptions = {}) => ({\n    type: 'SET_TOKEN_REQUEST_OPTIONS',\n    tokenRequestOptions,\n});\n\nexport const setRedirectState = redirectState => ({\n    type: 'SET_REDIRECT_STATE',\n    redirectState,\n});\n\nexport const setRedirectUrl = redirectUrl => ({\n    type: 'SET_REDIRECT_URL',\n    redirectUrl,\n});\n\nexport const setDefaultBankId = defaultBankId => ({\n    type: 'SET_DEFAULT_BANK_ID',\n    defaultBankId,\n});\n\nexport const setTokenTraceId = traceId => ({\n    type: 'SET_TOKEN_TRACE_ID',\n    traceId,\n});\n\nexport const setDefaultAlias = defaultAlias => ({\n    type: 'SET_DEFAULT_ALIAS',\n    defaultAlias,\n    redacted: ['defaultAlias'],\n});\n\nexport const setDestinationCountry = destinationCountry => ({\n    type: 'SET_DESTINATION_COUNTRY',\n    destinationCountry,\n});\n\nexport const setDescription = description => ({\n    type: 'SET_DESCRIPTION',\n    description,\n});\n\nexport const setRequestCountries = countries => ({\n    type: 'SET_REQUEST_COUNTRIES',\n    countries,\n});\n\nexport const setTokenExpiration = tokenExpiration => ({\n    type: 'SET_TOKEN_EXPIRATION',\n    tokenExpiration,\n});\n\nexport const setLinkingRequestId = linkingRequestId => ({\n    type: 'SET_LINKING_REQUEST_ID',\n    linkingRequestId,\n});\n\nexport const setAuthRequestId = authRequestId => ({\n    type: 'SET_AUTH_REQUEST_ID',\n    authRequestId,\n});\n\nexport const setTokenId = tokenId => ({\n    type: 'SET_TOKEN_ID',\n    tokenId,\n});\n\nexport const setOneStepSupport = oneStepSupport => ({\n    type: 'SET_ONE_STEP_SUPPORT',\n    oneStepSupport,\n});\n\nexport const setTopBanks = banks => ({\n    type: 'SET_TOP_BANKS',\n    banks,\n});\n\nexport const clearTopBanks = () => ({\n    type: 'CLEAR_TOP_BANKS',\n});\n\nexport const setResolvedPayload = resolvedPayload => ({\n    type: 'SET_RESOLVED_PAYLOAD',\n    resolvedPayload,\n});\n\nexport const setBankRedirectUrl = bankRedirectUrl => ({\n    type: 'SET_BANK_REDIRECT_URL',\n    bankRedirectUrl,\n});\n\nexport const clearBankRedirectUrl = () => ({\n    type: 'SET_BANK_REDIRECT_URL',\n    bankRedirectUrl: '',\n});\n\nexport const setHideConsent = hideConsent => ({\n    type: 'SET_HIDE_CONSENT',\n    hideConsent,\n});\n\nexport const setBrowserRedirectUrl = redirectUrl => ({\n    type: 'SET_BROWSER_REDIRECT_URL',\n    redirectUrl,\n});\n\nexport const setDefaultCountry = defaultCountry => ({\n    type: 'SET_DEFAULT_COUNTRY',\n    defaultCountry,\n});\n\nexport const setDevKey = devKey => ({\n    type: 'SET_CUSTOM_DEV_KEY',\n    devKey,\n});\n\nexport const setFadeOutProp = fadeOutProp => ({\n    type: 'SET_DISPLAY_FADE_OUT_ANIMATION',\n    fadeOutProp,\n});\n\nexport const setBankBranchList = (bankName, branchList) => ({\n    type: 'SET_SUB_BRANCHES',\n    bankName,\n    branchList,\n});\n\nexport const addBankBranchList = (bankName, branchList) => ({\n    type: 'ADD_SUB_BRANCHES',\n    bankName,\n    branchList,\n});\n\nexport const clearBankBranchList = bankName => ({\n    type: 'CLEAR_SUB_BRANCHES',\n    bankName,\n});\n\nexport const setBankWithSubBranches = (bankName, status) => ({\n    type: 'SET_BANKS_WITH_SUB_BRANCHES',\n    bankName,\n    status,\n});\n\nexport const clearBankWithSubBranches = () => ({\n    type: 'CLEAR_BANKS_WITH_SUB_BRANCHES',\n});\n\n// make sure that bankSelectionPreset is present in configurations\nexport const setTppConfigurations = configurations => {\n    return {\n        type: 'SET_TPP_CONFIGURATIONS',\n        configurations,\n    };\n};\n\nexport const setTppOverallTranslations = translations => {\n    return {\n        type: 'SET_TPP_OVERALL_TRANSLATIONS',\n        translations,\n    };\n};\n\nexport const setResellerProfile = profile => ({\n    type: 'SET_RESELLER_PROFILE',\n    profile,\n});\n\n// Clears Instructions source\nexport const clearInstructionsSource = () => ({\n    type: 'CLEAR_INSTRUCTIONS_SOURCE',\n});\n\n// TODO: deprecated\nexport const setTokenPayload = tokenPayload => ({\n    type: 'SET_TOKEN_PAYLOAD',\n    tokenPayload,\n});\n\nexport const setUseCredentialFlow = useCredentialFlow => ({\n    type: 'SET_USE_CREDENTIAL_FLOW',\n    useCredentialFlow,\n});\n\nexport const setTppProfile = profile => ({\n    type: 'SET_PROFILE',\n    profile,\n});\n\n// thunks\n\nexport const validateContext = () => dispatch => {\n    allowUserToGoBack();\n    const isPopupOrIframe = isPopup() || isContextIframe();\n    if (!isPopupOrIframe) {\n        dispatch(\n            throwError(\n                new TokenException(\n                    EXCEPTION_UNSUPPORTED_CONTEXT,\n                    'Web-app must be launched in redirect or popup context',\n                ),\n            ),\n        );\n    }\n};\n\nexport const setCustomDevKey = devKey => async dispatch => {\n    if (devKey) {\n        sessionStorageWrapper.set('devKey', devKey);\n    } else {\n        sessionStorageWrapper.remove('devKey');\n    }\n    dispatch(setDevKey(devKey));\n};\n\nexport const setBank = bank => async dispatch => {\n    dispatch(setSelectedBank(bank));\n    dispatch(setCountry(bank?.selectedCountry));\n};\n\nexport const setCountry = countryCode => async dispatch => {\n    dispatch(setSelectedCountry(countryCode));\n    dispatch(setTranslations());\n};\n\nexport const actionIfTokenReqProcessed = (options = {}) => async dispatch => {\n    let result;\n    if (options?.fetchLatestTokenReq) {\n        // Fetch latest token request response\n        result = await dispatch(fetchTokenRequestInfo(true));\n    } else {\n        result = await dispatch(getTokenRequest(true));\n    }\n    const tokenRequest = result?.tokenRequest;\n    const externalStatus = tokenRequest?.status;\n    const statusReasonInformation = tokenRequest?.statusReasonInformation;\n    const { internalStatus } = result;\n\n    const transfer = await dispatch(getTransferDetails());\n    if (transfer) {\n        await dispatch(returnTransferData(transfer));\n        return true;\n    }\n    // Throws exception if token request status is REJECTED because of GEO LOCATION RESTRICTION\n    if (\n        externalStatus === externalRequestStatus.REJECTED &&\n        statusReasonInformation === GEO_LOCATION_RESTRICTION\n    ) {\n        dispatch(\n            throwError(\n                new TokenException(\n                    EXCEPTION_TOKEN_REQUEST_RESTRICTED,\n                    EXCEPTION_TOKEN_REQUEST_RESTRICTED.message,\n                ),\n            ),\n        );\n        return true;\n    }\n\n    validateTokenRequestExternalStatus(externalStatus);\n\n    if (internalStatus) {\n        // Directly initiate credentials flow if token request internal status is among PENDING_CREDENTIALS_TOKEN_REQUEST_STATUS\n        if (PENDING_CREDENTIALS_TOKEN_REQUEST_STATUS.includes(internalStatus)) {\n            await dispatch(initiateBankAuthFlow());\n            return true;\n        }\n\n        // Do not display consent page if PSU already accepted the consent\n        if (internalStatus === requestStatus.PENDING_WEB_APP_CONSENT_ACCEPTED) {\n            await dispatch(setHideConsent(true));\n            return false;\n        }\n\n        if (EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL?.[internalStatus]) {\n            if (\n                !EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL?.[internalStatus]\n                    ?.options?.ignoreIfSameSession ||\n                !options?.sameSession\n            ) {\n                throw new TokenException(\n                    EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL?.[internalStatus],\n                    EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL?.[\n                        internalStatus\n                    ]?.message,\n                );\n            }\n        }\n    }\n\n    return false;\n};\n\nconst validateTokenRequestExternalStatus = status => {\n    // Throws exception if token request is EXPIRED or REJECTED\n    if (EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status]) {\n        throw new TokenException(\n            EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status],\n            EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status]?.message,\n        );\n    }\n};\n\nconst validateTokenRequestExpiredStatus = status => {\n    // Throws exception if token request is EXPIRED only\n    if (\n        status === 'EXPIRED' &&\n        EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status]\n    ) {\n        throw new TokenException(\n            EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status],\n            EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL?.[status]?.message,\n        );\n    }\n};\n\nconst handleDeprecatedTokenRequest = tokenRequest => async dispatch => {\n    const { payload, options } = tokenRequest;\n    if (!payload.to.alias) {\n        throw new TokenException(\n            EXCEPTION_NO_REDEEMER_ALIAS,\n            'Redeemer alias must be set',\n        );\n    }\n    dispatch(setRefId(payload.refId || Token.Util.generateNonce()));\n    if (options?.redirectUrl) {\n        dispatch(setRedirectUrl(options.redirectUrl));\n    }\n\n    if (options?.bankId) {\n        dispatch(setDefaultBankId(options.bankId));\n    }\n\n    if (options?.email) {\n        dispatch(setDefaultAlias(options.email));\n    }\n\n    if (options?.destinationCountry) {\n        dispatch(setDestinationCountry(options.destinationCountry));\n    }\n};\n\n// Fetches token request info, and saves properties to redux store\nexport const fetchTokenRequestInfo = bankCallback => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const tokenRequestId = tokenRequestService.getRequestId();\n    let result;\n\n    try {\n        result = await fetchTokenRequest(tokenRequestId);\n        GLOBAL_TOKEN_REQUEST = result;\n    } catch (e) {\n        throw new TokenException(INTL_EXCEPTION_REQUEST_FAILED, e.message);\n    }\n\n    const { tokenRequest } = result;\n    validateTokenRequestExpiredStatus(tokenRequest?.status);\n    await dispatch(setTokenRequestDetails(result));\n\n    if (tokenRequest.requestPayload) {\n        if (!bankCallback) {\n            const isProcessed = await dispatch(actionIfTokenReqProcessed());\n            if (isProcessed) {\n                return null;\n            }\n        }\n    } else {\n        await dispatch(handleDeprecatedTokenRequest(tokenRequest));\n    }\n\n    await dispatch(storeRecentBanks());\n    return result;\n};\n\n// This is called when the page redirects back from the bank, to the web-app. This function loads\n// the state from localstorage, for aisp or pisp, gets the access token from the hash params\n// and then finishes the appless checkout flow.\nexport const initiateBankCallbackFlow = () => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    const requestId = getURLParameter('request-id');\n    const authRequestId = getURLParameter('auth-request-id');\n    const error = getURLParameter('message');\n\n    if (requestId) {\n        await dispatch(setTokenRequestId(requestId));\n        await dispatch(getTokenRequest(true));\n    }\n\n    // Store webapp event of this moment\n    await dispatch(\n        storeWebappEvent({\n            event: WEB_APP_EVENTS.WEB_APP_BANK_CALLBACK,\n            payload: {\n                requestId,\n                error,\n                authRequestId,\n            },\n        }),\n    );\n\n    if (error) {\n        dispatch(handleError(decodeURIComponent(error)));\n    } else {\n        if (\n            authRequestId &&\n            authRequestId !== tokenRequestService.getAuthRequestId()\n        ) {\n            dispatch(\n                terminateFlow({\n                    error: 'INVALID_SESSION',\n                    message: `Session for : ${\n                        requestId || authRequestId\n                    } is invalid`,\n                }),\n            );\n        }\n        if (requestId) {\n            const b64Credentials = getURLParameter('credential-fields');\n            if (b64Credentials) {\n                // handle extra credentials post bank\n                const credentials = JSON.parse(\n                    base64url.decode(b64Credentials.replace('\\\\n|\\\\', '')),\n                );\n                const requiredCredentials = formatCredentials(\n                    credentials?.fields,\n                );\n                dispatch(\n                    captureCredentials(requiredCredentials, () => {\n                        throw new TokenException(\n                            EXCEPTION_BANK_FLOW_FAILURE,\n                            'Error in capturing credentials post bank',\n                        );\n                    }),\n                );\n            } else {\n                // checkout flow v2\n                await dispatch(completeFlowV2(requestId));\n            }\n        } else if (getURLParameter('signature')) {\n            // new guest flows\n            const signature = JSON.parse(\n                base64url.decode(getURLParameter('signature')),\n            );\n            if (sharedService.isAisp()) {\n                // ignore for now, only PISP\n            } else if (\n                sharedService.isTransfer() ||\n                sharedService.isStandingOrder() ||\n                sharedService.isBulkTransfer()\n            ) {\n                await dispatch(prepareGuestTransfer(signature));\n            }\n        } else if (\n            getHashValue('access-token') ||\n            getHashValue('access_token')\n        ) {\n            // deprecated guest flows\n            const accessToken =\n                getHashValue('access-token') || getHashValue('access_token');\n            if (sharedService.isAisp()) {\n                await dispatch(applessAisp(accessToken));\n            }\n        } else if (getURLParameter('transfer-id')) {\n            // one-step payment\n            await dispatch(\n                oneStepTransfer(\n                    getURLParameter('transfer-id'),\n                    getURLParameter('transfer-status'),\n                ),\n            );\n        } else {\n            // falls back on the error if all else doesn't exist\n            dispatch(handleError(decodeURIComponent(error)));\n        }\n    }\n};\n\nexport const handleError = error => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const displayCustomErrorPage = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_ERROR,\n    );\n    const redirectUrl =\n        (getURLParameter('redirect_url') &&\n            decodeURIComponent(getURLParameter('redirect_url'))) ||\n        (getURLParameter('redirect-url') &&\n            decodeURIComponent(getURLParameter('redirect-url')));\n    if (error === 'csrf_mismatch' && redirectUrl) {\n        dispatch(setBrowserRedirectUrl(redirectUrl));\n        dispatch(changeRoute(ROUTE_CSRF_MISMATCH));\n    } else {\n        const traceId =\n            (getURLParameter('trace-id') &&\n                decodeURIComponent(getURLParameter('trace-id'))) ||\n            (getURLParameter('token-trace-id') &&\n                decodeURIComponent(getURLParameter('token-trace-id')));\n        const errorCode = decodeURIComponent(getURLParameter('error'));\n        if (displayCustomErrorPage) {\n            dispatch(setErrorSource(false));\n            dispatch(throwError(new TokenException(errorCode, error)));\n        } else {\n            dispatch(\n                terminateFlow({\n                    message: decodeURIComponent(\n                        error || EXCEPTION_BANK_FLOW_FAILURE,\n                    ),\n                    error: errorCode,\n                    'trace-id': traceId,\n                }),\n            );\n        }\n    }\n};\n\nexport const initiatePaymentInitStatus = () => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const requestId = getURLParameter('request-id');\n    await dispatch(setTokenRequestId(requestId));\n    const tokenRequest = await dispatch(fetchTokenRequestData(true));\n    const customErrorTextHtml = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_ERROR,\n    );\n\n    const error =\n        getURLParameter('message') &&\n        decodeURIComponent(getURLParameter('message'));\n    if (error) {\n        // Set token request result internal status\n        await dispatch(\n            setTokenRequestStatus(\n                requestStatus.PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED,\n            ),\n        );\n\n        if (customErrorTextHtml) {\n            dispatch(setErrorSource(true));\n            // Throw custom exception for ex: HSBC only have EXCEPTION_TOKEN_ERROR\n            // or EXCEPTION_BANK_ERROR\n            dispatch(\n                throwError(new TokenException(EXCEPTION_TOKEN_ERROR, error)),\n            );\n        } else {\n            const errorCode = decodeURIComponent(getURLParameter('error'));\n            dispatch(throwError(new TokenException(errorCode, error))); // Throw normal exception\n        }\n    } else {\n        // Set token request result internal status\n        await dispatch(\n            setTokenRequestStatus(\n                requestStatus.PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED,\n            ),\n        );\n\n        const { tppName, bankName, transferStatus } = JSON.parse(\n            base64url.decode(getURLParameter('state')),\n        );\n        const result = await fetchTokenRequestResultWithStatus(\n            requestId,\n            tokenRequest?.requestPayload?.to?.id,\n        );\n        if (!result?.tokenId) {\n            throw new TokenException(\n                INTL_EXCEPTION_REQUEST_FAILED,\n                'No token request result found',\n            );\n        }\n        const redirectState = tokenRequestService.getRequestRedirectState();\n\n        dispatch(\n            setTppReturnData({\n                popupStatus: POPUP_SUCCESS,\n                payload: {\n                    tokenId: result.tokenId,\n                    signature: JSON.stringify(result.signature),\n                    state: redirectState,\n                    'transfer-id': result.transferId,\n                    'transfer-status': transferStatus,\n                    'tpp-name': tppName,\n                    'bank-name': bankName,\n                    'request-id': requestId,\n                },\n            }),\n        );\n        dispatch(setStep(PISP_PAYMENT_INIT_STATUS));\n        dispatch(changeRoute(ROUTE_PISP));\n    }\n};\n\nexport const setTokenRequestDetails = tokenRequestResponse => async dispatch => {\n    if (!tokenRequestResponse) return;\n    const {\n        tokenRequest,\n        hideConsent,\n        tppConfigurations,\n        bankSelectionPreset,\n    } = tokenRequestResponse;\n    const { requestPayload, requestOptions } = tokenRequest;\n\n    if (bankSelectionPreset === BANK_SELECTION_PRESETS.DISABLE_ALL) {\n        throw new TokenException(\n            EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE,\n            EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE.message,\n        );\n    }\n    dispatch(setHideConsent(hideConsent));\n    const subTppRefId = requestPayload?.actingAs?.refId;\n    const payloadMember = requestPayload?.to;\n    const realmId = payloadMember.alias?.realmId;\n    let memberProperties = {\n        realmId,\n        memberId: payloadMember.id,\n    };\n    if (subTppRefId) {\n        memberProperties = {\n            ...memberProperties,\n            subTppRefId: subTppRefId,\n        };\n    }\n    dispatch(setMemberProperties(memberProperties));\n\n    const guest = await dispatch(getTempMember());\n    if (realmId) {\n        const resellerProfile = await getMemberProfileById(realmId, guest);\n        dispatch(setResellerProfile(resellerProfile));\n    }\n    const tppProfile = await getMemberProfileById(payloadMember.id, guest);\n    dispatch(setTppProfile(tppProfile));\n    const overallTppConfigs = {\n        ...tppConfigurations,\n        bankSelectionPreset,\n    };\n    const tppConfigs = await getOverallTppConfigurations(\n        memberProperties,\n        updateCustomization(overallTppConfigs),\n    );\n    dispatch(setTppConfigurations(tppConfigs));\n    if (requestPayload) {\n        const {\n            customizationId,\n            refId,\n            callbackState,\n            redirectUrl,\n            destinationCountry,\n            description,\n            countries,\n            tokenExpiration,\n            transferBody,\n            useCredentialFlow = false,\n        } = requestPayload;\n        const { bankId, from } = requestOptions;\n\n        dispatch(setUseCredentialFlow(useCredentialFlow));\n        customizationId && dispatch(setCustomizationId(customizationId));\n        dispatch(setTokenRequestOptions(requestOptions));\n        refId && dispatch(setRefId(refId));\n        callbackState && dispatch(setRedirectState(callbackState));\n        redirectUrl && dispatch(setRedirectUrl(redirectUrl));\n        destinationCountry &&\n            dispatch(setDestinationCountry(destinationCountry));\n        description && dispatch(setDescription(description));\n        countries &&\n            countries.length !== 0 &&\n            dispatch(setRequestCountries(countries));\n        tokenExpiration && dispatch(setTokenExpiration(tokenExpiration));\n        bankId && dispatch(setDefaultBankId(bankId));\n        transferBody?.instructions?.source?.bankId &&\n            dispatch(setDefaultBankId(transferBody.instructions.source.bankId));\n        from?.alias && dispatch(setDefaultAlias(from.alias));\n    }\n\n    // Set Token Type, for example: ACCESS, TRANSFER, STANDING_ORDER, BULK_TRANSFER ... etc\n    if (requestPayload.accessBody) {\n        dispatch(\n            setAispTokenType({\n                tppAlias: requestPayload.to.alias,\n                resources:\n                    requestPayload.accessBody.accountResourceList?.resources ||\n                    requestPayload.accessBody.resourceTypeList?.resources ||\n                    requestPayload.accessBody.type,\n                actingAs: requestPayload.actingAs,\n                memberId: requestPayload.to.id,\n                source: requestPayload.accessBody.resourceTypeList?.source,\n            }),\n        );\n    } else if (requestPayload.transferBody) {\n        const destinations =\n            requestPayload.transferBody.destinations ||\n            requestPayload.transferBody.instructions?.transferDestinations;\n        const setTransferDestinationsUrl =\n            requestPayload.transferBody.setTransferDestinationsUrl || '';\n        dispatch(\n            setTransferTokenType({\n                tppAlias: requestPayload.to.alias,\n                amount: requestPayload.transferBody.lifetimeAmount,\n                currency: requestPayload.transferBody.currency,\n                destinations,\n                instructions: requestPayload.transferBody.instructions,\n                actingAs: requestPayload.actingAs,\n                executionDate: requestPayload.transferBody.executionDate,\n                setTransferDestinationsUrl,\n                remittanceReference:\n                    requestPayload.transferBody.remittanceReference,\n                confirmFunds: requestPayload.transferBody.confirmFunds,\n                memberId: requestPayload.to.id,\n                returnRefundAccount:\n                    requestPayload.transferBody.returnRefundAccount,\n            }),\n        );\n    } else if (requestPayload.standingOrderBody) {\n        const destinations =\n            requestPayload.standingOrderBody.instructions.transferDestinations;\n        dispatch(\n            setStandingOrderTokenType({\n                tppAlias: requestPayload.to.alias,\n                amount: requestPayload.standingOrderBody.amount,\n                currency: requestPayload.standingOrderBody.currency,\n                destinations,\n                instructions: requestPayload.standingOrderBody.instructions,\n                actingAs: requestPayload.actingAs,\n                frequency: requestPayload.standingOrderBody.frequency,\n                startDate: requestPayload.standingOrderBody.startDate,\n                endDate: requestPayload.standingOrderBody.endDate,\n                remittanceReference:\n                    requestPayload.standingOrderBody.remittanceReference,\n                memberId: requestPayload.to.id,\n                returnRefundAccount:\n                    requestPayload.standingOrderBody.returnRefundAccount,\n            }),\n        );\n    } else if (requestPayload.bulkTransferBody) {\n        const transfers = requestPayload.bulkTransferBody.transfers;\n        dispatch(\n            setBulkTransferTokenType({\n                tppAlias: requestPayload.to.alias,\n                amount: requestPayload.bulkTransferBody.totalAmount,\n                transfers,\n                source: requestPayload.bulkTransferBody.source,\n                memberId: requestPayload.to.id,\n            }),\n        );\n    }\n};\n\n// Initiates the redirect flow. This is called as soon as the TPP redirects to the web-app\nexport const initiateRedirectFlow = () => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    if (sessionStorageWrapper.get('blockUserToGoBack') === true) {\n        return null;\n    }\n    allowUserToGoBack();\n    dispatch(setRedirect());\n    const tokenRequestId = decodeURIComponent(\n        window.location.pathname.split('/')[3],\n    );\n\n    dispatch(setTokenRequestId(tokenRequestId));\n    dispatch(setTppSource(getURLParameter('source')));\n    dispatch(setCustomDevKey(getURLParameter('dk')));\n    const defaultCountry = await getCountry();\n    dispatch(setDefaultCountry(defaultCountry));\n    dispatch(\n        setUseBankRedirectionScreen(\n            getURLParameter('use-bank-redirection-screen'),\n        ),\n    );\n\n    const result = await dispatch(fetchTokenRequestInfo());\n    const tokenRequest = result?.tokenRequest;\n\n    // Set token request result internal status\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_INVOKED, {\n            Context: getWebappContext(),\n        }),\n    );\n\n    if (tokenRequestService.hasCustomColors()) {\n        await addCustomCss(tokenRequestId);\n    } else {\n        removeCustomCss();\n    }\n    validateBrowserCompatibility();\n    const requestPayload = tokenRequest?.requestPayload;\n    await dispatch(fetchCountries(requestPayload?.to?.id));\n\n    if (requestPayload) {\n        if (requestPayload.accessBody) {\n            await dispatch(\n                initiateAispFlow(\n                    requestPayload.accessBody.accountResourceList?.resources ||\n                        requestPayload.accessBody.resourceTypeList?.resources ||\n                        requestPayload.accessBody.type,\n                ),\n            );\n        } else if (requestPayload.transferBody) {\n            const destinations =\n                requestPayload.transferBody.destinations ||\n                requestPayload.transferBody.instructions?.transferDestinations;\n            const setTransferDestinationsUrl =\n                requestPayload.transferBody.setTransferDestinationsUrl || '';\n            await dispatch(\n                initiatePispFlow({\n                    destinations,\n                    setTransferDestinationsUrl,\n                }),\n            );\n        } else if (requestPayload.standingOrderBody) {\n            const destinations =\n                requestPayload.standingOrderBody.instructions\n                    .transferDestinations;\n            await dispatch(\n                initiatePispFlow({\n                    destinations,\n                }),\n            );\n        } else if (requestPayload.bulkTransferBody) {\n            await dispatch(initiatePispFlow({}));\n        }\n    }\n};\n\n// Initiates the popup flow\nexport const initiatePopupFlow = ({ tokenRequestUrl, popupId }) => async () => {\n    if (!tokenRequestUrl) return;\n    // Saves the popup id to localStorage, so we can retrieve it after we redirect to/from the bank\n    if (popupId && localStorageWrapper.get()) {\n        localStorageWrapper.set('popup_id', popupId);\n    } else {\n        localStorageWrapper.remove('popup_id');\n    }\n    if (typeof tokenRequestUrl !== 'string') {\n        throw new TokenException(EXCEPTION_INVALID_TOKEN_REQUEST_URL);\n    }\n\n    if (isContextIframe()) {\n        window.document.getElementById(\n            TOKEN_WEB_APP_IFRAME_NAME,\n        ).src = tokenRequestUrl;\n    }\n\n    // Token Request API\n    browserNavigation.replace(tokenRequestUrl);\n};\n\n// This gets called when we want to redirect to the bank with the checkout flow v2.\nexport const redirectToBankV2 = () => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    dispatch(showBankRedirectionScreen());\n    const bank = sharedService.getSelectedBank();\n    const requestId = await tokenRequestService.getRequestId();\n    let bankAuthUrl;\n    try {\n        bankAuthUrl = await getDirectBankAuthUrl(bank.id, requestId);\n    } catch (e) {\n        return dispatch(\n            terminateFlow({\n                error: EXCEPTION_BANK_FLOW_FAILURE,\n                message: e.message,\n            }),\n        );\n    }\n    let redirectUrl;\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    if (customRedirectURL) {\n        redirectUrl = `${bankAuthUrl}&callback-url=${encodeURIComponent(\n            `${customRedirectURL}/app/auth/callback`,\n        )}`;\n    } else {\n        redirectUrl = `${bankAuthUrl}&callback-url=${encodeURIComponent(\n            `${webAppUrl}/app/auth/callback`,\n        )}`;\n    }\n    await dispatch(setupBankRedirectUrl(redirectUrl));\n};\n\n// Throws appropriate error and terminates the flow in case of invalid bank id\nexport const handleInvalidBankId = bankOptions => async dispatch => {\n    const { country, ...restProps } = bankOptions;\n    const options = country\n        ? { ...restProps, countries: [country] }\n        : { ...restProps };\n    let excMessage = `Bank ID : ${options.ids?.[0]} is invalid`;\n\n    if (options.ids?.length <= 0) {\n        excMessage = `Merchant ${options.merchantName} has restricted the permission to access ${options.defaultBankId} Bank`;\n        await dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: excMessage,\n            }),\n        );\n        throw new TokenException(EXCEPTION_ACCESS_DENIED, excMessage);\n    }\n    const paymentRail = options.supportedPaymentNetworks;\n    options.supportedPaymentNetworks = [];\n    const resp = await Token.getBanks(options);\n    const banks = resp?.banks;\n\n    if (banks && banks.length > 0) {\n        excMessage = `Selected payment scheme: ${paymentRail[0]?.toUpperCase()} is not supported by ${\n            options.ids[0]\n        } Bank.`;\n        await dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: excMessage,\n            }),\n        );\n        throw new TokenException(EXCEPTION_ACCESS_DENIED, excMessage);\n    }\n    delete options.memberId;\n    const response = await Token.getBanks(options);\n    const rawBanksData = response?.banks;\n\n    if (rawBanksData && rawBanksData.length > 0) {\n        excMessage = `Merchant ${options.merchantName} is not set up to connect to ${options.ids[0]} Bank`;\n        await dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: excMessage,\n            }),\n        );\n        throw new TokenException(EXCEPTION_ACCESS_DENIED, excMessage);\n    }\n    await dispatch(\n        terminateFlow({ error: 'access_denied', message: excMessage }),\n    );\n    throw new TokenException(EXCEPTION_ACCESS_DENIED, excMessage);\n};\n\nexport const fetchTopBanks = country => async dispatch => {\n    // Get first five banks as top banks sorted by Rank\n    const PAGE = 1;\n    const PER_PAGE = 5;\n\n    const banksResponse = await dispatch(\n        yieldBanks({\n            country: country.code,\n            page: PAGE,\n            perPage: PER_PAGE,\n        }),\n    );\n    const { data: banks } = formatDataList(banksResponse, {\n        fetchDataKey: 'banks',\n        fetchPagingKey: 'paging',\n        idKey: 'id',\n        titleKey: 'name',\n        dataKey: 'identifier',\n    });\n\n    findBankLogoData(banks);\n    dispatch(setTopBanks(banks));\n};\n\nexport const setTranslations = () => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    const regionalConfigurations = tokenRequestService.getOverallRegionalConfigurations();\n    const selectedCountry = sharedService.getSelectedCountry();\n\n    let selectedRegion;\n    for (const region in REGIONS) {\n        if (REGIONS[region].includes(selectedCountry)) {\n            selectedRegion = region;\n            break;\n        }\n    }\n    const translations = {\n        ...regionalConfigurations?.default?.translations,\n        ...regionalConfigurations?.[selectedRegion]?.translations,\n    };\n    if (keyExists(translations)) {\n        dispatch(setTppOverallTranslations(translations));\n    }\n};\n\n// Filters the banks according to it's payment type\nexport const getFilteredBanks = (banks, bankOptions) => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const options = Object.assign({}, bankOptions);\n    const supportedCountriesWithBanksByTpp = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORTED_COUNTRIES_WITH_BANK_IDS,\n    );\n    const hideDefaultCountriesAndBanks = tokenRequestService.getTppFeature(\n        featureConfig.HIDE_DEFAULT_COUNTRIES_AND_BANKS,\n    );\n    const tppMember = tokenRequestService.getTppProfile();\n    let filteredBanks = banks?.filter(b => {\n        b.selectedCountry = options?.country && options.country?.toUpperCase();\n        return b;\n    });\n\n    // Verifying if the default bank id passed is configured by the merchant\n    if (options.isDefaultBank) {\n        options.country = filteredBanks?.[0]?.country;\n        options.defaultBankId = options.ids[0];\n        options.ids = await dispatch(getFilteredBankIds(options));\n    }\n    if (\n        !banks ||\n        (hideDefaultCountriesAndBanks && !supportedCountriesWithBanksByTpp) ||\n        (options.isDefaultBank && options.ids?.length <= 0)\n    ) {\n        filteredBanks = [];\n    }\n    if (\n        (!filteredBanks || filteredBanks?.length <= 0) &&\n        options.isDefaultBank\n    ) {\n        await dispatch(\n            handleInvalidBankId({\n                ...options,\n                merchantName: tppMember.tppName,\n            }),\n        );\n    }\n    return filteredBanks;\n};\n\n// Returns the bankIds that are configured for a country by the merchant\nexport const getFilteredBankIds = bankOptions => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const options = Object.assign({}, bankOptions);\n    if (options.country) {\n        const supportedCountriesWithBanksByTpp = tokenRequestService.getTppFeature(\n            featureConfig.SUPPORTED_COUNTRIES_WITH_BANK_IDS,\n        );\n        const allowedBankIds =\n            supportedCountriesWithBanksByTpp?.[options.country.toUpperCase()]\n                ?.bankIds;\n        if (allowedBankIds && allowedBankIds.length > 0) {\n            options.ids = options.ids\n                ? options.ids.filter(value => allowedBankIds.includes(value))\n                : allowedBankIds;\n        }\n        if (options.ids && options.ids.length === 0) {\n            options.ids = [];\n        }\n    }\n    return options.ids;\n};\n\nexport const getBankFeaturePaymentType = () => async (\n    dispatch,\n    { sharedService, tokenService },\n) => {\n    const tokenType = sharedService.getTokenType();\n    if (tokenType === TOKEN_TYPE_VRP) {\n        return paymentTypeOptions.SUPPORTS_VRP;\n    } else if (tokenType === TOKEN_TYPE_ACCESS) {\n        return paymentTypeOptions.SUPPORTS_AIS;\n    } else if (tokenType === TOKEN_TYPE_TRANSFER) {\n        if (tokenService.getExecutionDate()) {\n            return paymentTypeOptions.SUPPORTS_SCHEDULED_PAYMENTS;\n        } else {\n            return paymentTypeOptions.SUPPORTS_SEND_PAYMENT;\n        }\n    } else if (tokenType === TOKEN_TYPE_STANDING_ORDER) {\n        return paymentTypeOptions.SUPPORTS_STANDING_ORDER;\n    } else if (tokenType === TOKEN_TYPE_BULK_TRANSFER) {\n        return paymentTypeOptions.SUPPORTS_BULK_TRANSFER;\n    } else return '';\n};\n\nconst getBanksByChunks = async options => {\n    const chunkSize = BANK_CHUNK_SIZE;\n    const totalIds = options.ids?.length;\n\n    // Split ids into chunks\n    const chunks = [];\n    for (let i = 0; i < totalIds; i += chunkSize) {\n        chunks.push(options.ids.slice(i, i + chunkSize));\n    }\n\n    if (options.perPage < BANK_PAGE_SIZE) {\n        const optionsWithIds = {\n            ...options,\n            ids: chunks[0],\n            perPage: options.perPage,\n        };\n        const { banks, ...rest } = await Token.getBanks(optionsWithIds);\n        return { banks, ...rest };\n    }\n\n    // Fetch banks for each chunk in parallel\n    const bankPromises = chunks.map(async chunk => {\n        const optionsWithIds = { ...options, ids: chunk, perPage: chunkSize };\n        const { banks } = await Token.getBanks(optionsWithIds);\n        return banks;\n    });\n\n    // Wait for all promises to resolve and combine the results\n    const bankChunks = await Promise.all(bankPromises);\n    const banks = bankChunks.flat();\n\n    return {\n        banks,\n        paging: {\n            page: 1,\n            perPage: banks.length,\n            pageCount: 1,\n        },\n    };\n};\n\n// Get the banks' details\nexport const yieldBanks = (options = {}) => async (\n    dispatch,\n    { sharedService, tokenRequestService, tokenService },\n) => {\n    const SORTING = 'rank';\n    const tokenType = sharedService.getTokenType();\n    options.supportedPaymentNetworks = tokenService.getTransferTypeDestinations(\n        tokenType,\n    );\n    const tppMember = tokenRequestService.getTppProfile();\n    options.perPage = options.perPage ?? BANK_PAGE_SIZE;\n    options.sort = options.sort ?? SORTING;\n    options.memberId = tppMember.memberId;\n    if (tokenRequestService.getDestinationCountry()) {\n        options.destinationCountry = tokenRequestService.getDestinationCountry();\n    }\n    // getting the bankIds that are configured by the merchant for the selected country (if any)\n    const tppConfiguredBankIds = await dispatch(getFilteredBankIds(options));\n    if (tppConfiguredBankIds) {\n        options.ids = tppConfiguredBankIds;\n    }\n    const paymentTypeOption = await dispatch(getBankFeaturePaymentType());\n    options.bankFeatures = paymentTypeOption && { [paymentTypeOption]: true };\n    const { country, ...restProps } = options;\n    const { ids } = restProps;\n    const fetchOptions = country\n        ? { ...restProps, countries: [country] }\n        : { ...options };\n    const { banks, ...rest } =\n        ids?.length > BANK_CHUNK_SIZE * 2\n            ? await getBanksByChunks(fetchOptions)\n            : await Token.getBanks(fetchOptions);\n    const filteredBanks = await dispatch(getFilteredBanks(banks, options));\n    return { banks: filteredBanks, ...rest };\n};\n\nexport const isBankLive = bankId => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    try {\n        const productType = sharedService.isAisp() ? 'AIS' : 'SIP';\n        const tokenRequestId = tokenRequestService.getRequestId();\n        const bankStatus = await getBankStatus(\n            bankId,\n            productType,\n            tokenRequestId,\n        );\n        if (!bankStatus) {\n            return true;\n        }\n        return !BANK_OUTAGE.includes(bankStatus);\n    } catch (e) {\n        // ignore the bank status\n        return true;\n    }\n};\n\nexport const fetchBanks = (options = {}, pagingCallback) => async dispatch => {\n    const banksResponse = await dispatch(yieldBanks(options));\n    const { data: banks, paging } = formatDataList(banksResponse, {\n        fetchDataKey: 'banks',\n        fetchPagingKey: 'paging',\n        idKey: 'id',\n        titleKey: 'name',\n        dataKey: 'identifier',\n    });\n\n    if (!(options.page && options.page > 1 && paging.page !== 1)) {\n        await dispatch(clearBankWithSubBranches());\n    }\n\n    const filteredBanks = dispatch(filterBanksHavingBranches(banks));\n\n    findBankLogoData(filteredBanks);\n\n    if (options.page && options.page > 1 && paging.page !== 1) {\n        dispatch(addBanks(filteredBanks || []));\n    } else {\n        dispatch(setBanks(filteredBanks || []));\n    }\n    paging && pagingCallback && pagingCallback(paging);\n};\n\nexport const fetchBankBranches = (bankName, country) => async dispatch => {\n    const options = {\n        country: country,\n    };\n    let { banks, paging } = await dispatch(yieldBanks({ country }));\n    while (paging.page !== paging.pageCount) {\n        options.page = paging.page + 1;\n        const data = await dispatch(yieldBanks({ country }));\n        banks = banks.concat(data.banks);\n        paging = data.paging;\n    }\n\n    if (banks) {\n        dispatch(\n            setBankBranchList(bankName, formatBankBranchData(banks, bankName)),\n        );\n    }\n};\n\nexport const fetchCountries = tppMemberId => async dispatch => {\n    const countries = await Token.getCountries({ memberId: tppMemberId });\n    if (!countries || countries.length === 0) {\n        throw new TokenException(\n            INTL_EXCEPTION_REQUEST_FAILED,\n            `no countries are configured for member id: ${tppMemberId}`,\n        );\n    }\n    dispatch(setCountries(countries));\n};\n\nexport const validateAlias = (value, type) => async (\n    dispatch,\n    { sharedService },\n) => {\n    dispatch(clearErrorMessage());\n    const bank = sharedService.getSelectedBank();\n    const { realm, customAliasLabel } = sharedService.getSelectedBankInfo();\n    let alias = {\n        type: customAliasLabel ? 'CUSTOM' : type,\n        value,\n        realm: realm[0],\n    };\n    let keys;\n    try {\n        ({ keys } = await Token.provisionDeviceLow(\n            alias,\n            Token.BrowserCryptoEngine,\n        ));\n    } catch (e) {\n        if (e.message.indexOf('Invalid alias') !== -1) {\n            // Backward compatible with members with realm id\n            try {\n                if (realm[0] === '' || realm[0] === 'token') {\n                    throw e;\n                }\n                const bankAlias = { type: 'BANK', value: realm[0] };\n                const realmMember = await Token.resolveAlias(bankAlias);\n                if (!realmMember) {\n                    throw e;\n                }\n                alias = {\n                    type: customAliasLabel ? 'CUSTOM' : type,\n                    value,\n                    realm: realm[0],\n                    realmId: realmMember.id,\n                };\n                ({ keys } = await Token.provisionDeviceLow(\n                    alias,\n                    Token.BrowserCryptoEngine,\n                ));\n            } catch (e) {\n                if (e.message.indexOf('Invalid alias') !== -1) {\n                    if (sharedService.isAisp())\n                        dispatch(setStep(AISP_ENTER_ALIAS));\n                    else if (sharedService.isTransfer())\n                        dispatch(setStep(PISP_ENTER_ALIAS));\n                    return dispatch(\n                        setErrorMessage('common.aliasInput.invalidAlias'),\n                    );\n                }\n                throw e;\n            }\n        }\n    }\n    saveBankToLocalStorage(bank);\n    await dispatch(completeFlowFromApp(alias, keys));\n};\n\nexport const initiateGuestFlow = () => async (dispatch, { sharedService }) => {\n    dispatch(showBankRedirectionScreen());\n    if (\n        sharedService.isTransfer() ||\n        sharedService.isStandingOrder() ||\n        sharedService.isBulkTransfer()\n    ) {\n        await dispatch(prepareGuestTransfer());\n    } else if (sharedService.isAisp()) {\n        await dispatch(redirectToBank());\n    }\n};\n\nexport const noApp = () => async (dispatch, { sharedService }) => {\n    dispatch(setStep(LOADING_STEP));\n    await cancelPollForTokenRequestResult();\n    if (sharedService.isAisp()) {\n        await dispatch(aispNoApp());\n    } else if (sharedService.isTransfer()) {\n        await dispatch(pispNoApp());\n    }\n};\n\nexport const notYou = () => async (dispatch, { sharedService }) => {\n    await cancelPollForTokenRequestResult();\n    dispatch(clearMembers());\n    await logoutFromLocalStorage();\n    if (sharedService.isAisp()) {\n        dispatch(backOrGoTo(AISP_ENTER_ALIAS));\n    } else if (sharedService.isTransfer()) {\n        dispatch(backOrGoTo(PISP_ENTER_ALIAS));\n    }\n};\n\nexport const cancelApproval = () => (dispatch, { tokenRequestService }) => {\n    const hideConsent = tokenRequestService.getHideConsent();\n    const hasDefaultBankId = tokenRequestService.getDefaultBankId();\n    const hasDefaultAlias = tokenRequestService.getDefaultAlias();\n    if (hideConsent && hasDefaultBankId && hasDefaultAlias) {\n        return dispatch(\n            terminateFlow({\n                error: 'REQUEST_CANCELLED',\n                message: decodeURIComponent(EXCEPTION_REQUEST_CANCELLED),\n            }),\n        );\n    }\n    dispatch(backStep());\n};\n\nexport const cleanUp = () => async dispatch => {\n    dispatch(changeRoute(ROUTE_LOADING));\n\n    // Clean appless state\n    localStorageWrapper.remove('aisp');\n    localStorageWrapper.remove('pisp');\n};\n\nexport const completeFlowFromApp = (alias, keys = []) => async (\n    dispatch,\n    { sharedService, tokenService, tokenRequestService },\n) => {\n    dispatch(setStep(APP_APPROVAL));\n    try {\n        if (tokenRequestService.getRequestPayload()) {\n            // TODO: deprecated\n            const bankId = sharedService.getSelectedBankId();\n            const requestId = tokenRequestService.getRequestId();\n            const redirectState = tokenRequestService.getRequestRedirectState();\n            const tokenPayload = tokenRequestService.getRequestPayload();\n            let receiptContact = {};\n            tokenPayload.from = await Token.resolveAlias(alias);\n            if (sharedService.isTransfer()) {\n                const pispAlias = tokenRequestService.getTppAlias();\n                const receiptEmail = tokenService.getReceiptEmail();\n                tokenPayload.transfer.redeemer = await Token.resolveAlias(\n                    pispAlias,\n                );\n                receiptContact =\n                    (receiptEmail && { type: 'EMAIL', value: receiptEmail }) ||\n                    receiptContact;\n            }\n            const guest = await dispatch(getTempMember());\n            const { notificationId } = await guest.notifyEndorseAndAddKey(\n                tokenPayload,\n                keys,\n                getUserDeviceMetadata(),\n                requestId,\n                bankId,\n                encodeURIComponent(redirectState),\n                receiptContact,\n            );\n            const { tokenId, signature } = await pollForTokenRequestResult(\n                requestId,\n                notificationId,\n                tokenRequestService.getTppMemberAndRealmId()?.memberId,\n            );\n            tokenId &&\n                (await dispatch(\n                    completeFlow(requestId, tokenId, null, signature),\n                ));\n        } else {\n            const requestId = tokenRequestService.getRequestId();\n            let receiptContact = {};\n            if (\n                sharedService.isTransfer() ||\n                sharedService.isStandingOrder() ||\n                sharedService.isBulkTransfer()\n            ) {\n                const receiptEmail = tokenService.getReceiptEmail();\n                receiptContact =\n                    (receiptEmail && { type: 'EMAIL', value: receiptEmail }) ||\n                    receiptContact;\n            }\n            const from = await Token.resolveAlias(alias);\n            const bankId = sharedService.getSelectedBankId();\n            await updateTokenRequest(requestId, { bankId, from });\n            const {\n                notificationId,\n            } = await triggerCreateAndEndorseTokenNotification(\n                requestId,\n                keys,\n                getUserDeviceMetadata(),\n                receiptContact,\n            );\n            const { tokenId, signature } = await pollForTokenRequestResult(\n                requestId,\n                notificationId,\n                tokenRequestService.getTppMemberAndRealmId()?.memberId,\n            );\n            tokenId &&\n                (await dispatch(\n                    completeFlow(requestId, tokenId, null, signature),\n                ));\n        }\n    } catch (e) {\n        if (e.name === INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT.name) {\n            dispatch(\n                setErrorMessage('common.exception.appNotificationTimeout'),\n            );\n        } else {\n            console.error(e); // eslint-disable-line\n            dispatch(setErrorMessage('common.appNotifier.errorRetry'));\n        }\n    }\n};\n\n// Complete the checkout flow V2\nexport const completeFlowV2 = tokenRequestId => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const tokenReqResponse = await dispatch(getTokenRequest(true));\n    const tokenRequest = tokenReqResponse?.tokenRequest;\n    let statusResponse;\n    const validateResponse = response => {\n        const { statusReasonInformation, tokenId, transferId, status } =\n            response || {};\n        statusResponse =\n            statusReasonInformation || 'No token or transfer id found';\n        return (\n            tokenId || transferId || status === externalRequestStatus.REJECTED\n        );\n    };\n    const result = await pollUntil({\n        fn: async () =>\n            await fetchTokenRequestResultWithStatus(\n                tokenRequestId,\n                tokenRequest?.requestPayload?.to?.id,\n            ),\n        validate: validateResponse,\n        interval: tokenRequestResultInterval, // Polling time interval\n        timeout: tokenRequestResultTimeout, // Polling timeout\n        cancelledCb: () => {\n            dispatch(\n                throwError(\n                    new TokenException(\n                        INTL_EXCEPTION_REQUEST_FAILED,\n                        statusResponse,\n                    ),\n                ),\n            );\n        },\n    });\n    const transferId = result.transferId;\n    const transferStatus = result.transferStatus;\n    const redirectState = tokenRequestService.getRequestRedirectState();\n    removeCancelTokenOnClose();\n    dispatch(\n        returnToTpp(POPUP_SUCCESS, {\n            'request-id': tokenRequestId,\n            tokenId: result.tokenId,\n            signature: JSON.stringify(result.signature),\n            state: redirectState,\n            ...(transferId && { 'transfer-id': transferId }),\n            ...(transferId &&\n                transferStatus && { 'transfer-status': transferStatus }),\n        }),\n    );\n};\n\nexport const completeFlow = (\n    requestId,\n    tokenId,\n    member,\n    signature,\n    payload,\n) => async (dispatch, { tokenRequestService }) => {\n    const redirectState = tokenRequestService.getRequestRedirectState();\n    if (!signature) {\n        signature = await member.signTokenRequestState(\n            tokenRequestService.getRequestId(),\n            tokenId,\n            tokenRequestService.getRequestPayload()\n                ? encodeURIComponent(redirectState) // TODO: deprecated\n                : redirectState,\n        );\n    }\n    removeCancelTokenOnClose();\n    dispatch(\n        returnToTpp(POPUP_SUCCESS, {\n            'request-id': requestId,\n            tokenId,\n            signature: JSON.stringify(signature),\n            state: redirectState,\n            ...payload,\n        }),\n    );\n};\n\nexport const declineTerms = () => async dispatch => {\n    addCheckForTokenReqRejection();\n    dispatch(changeRoute(ROUTE_LOADING));\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_CONSENT_DECLINED),\n    );\n    dispatch(\n        terminateFlow({ error: 'access_denied', message: 'Terms declined' }),\n    );\n};\n\nexport const terminateFlow = message => (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const redirectState = tokenRequestService.getRequestRedirectState();\n    const requestId = tokenRequestService.getRequestId();\n    dispatch(terminate({ name: 'TERMINATE_FLOW', message: message }));\n    dispatch(\n        returnToTpp(POPUP_FAILURE, {\n            ...message,\n            state: redirectState,\n            'request-id': requestId,\n        }),\n    );\n};\n\nexport const goToTpp = () => async (dispatch, { tokenRequestService }) => {\n    const { payload, popupStatus } = tokenRequestService.getTppReturnData();\n    dispatch(cleanUp());\n\n    // Send webapp event\n    if (popupStatus === POPUP_FAILURE) {\n        await dispatch(\n            storeWebappEvent({\n                event: WEB_APP_EVENTS.WEB_APP_RETURN_TO_TPP_FAILURE,\n                payload,\n            }),\n        );\n    } else if (popupStatus === POPUP_SUCCESS) {\n        await dispatch(\n            storeWebappEvent({\n                event: WEB_APP_EVENTS.WEB_APP_RETURN_TO_TPP_SUCCESS,\n                payload,\n            }),\n        );\n    }\n\n    if (isContextIframe()) {\n        TokenCommunicator.dispatchMessage(popupStatus, payload);\n    } else if (isPopup()) {\n        TokenCommunicator.dispatchMessage(popupStatus, payload);\n        window.close();\n    } else {\n        // redirect\n        const tppRedirecturl = tokenRequestService.getRequestRedirectUrl();\n        const redirectUrl = parseUrl(tppRedirecturl);\n        Object.assign(redirectUrl.query, payload);\n        dispatch(\n            setTppRedirectUrl(\n                `${redirectUrl.url}?${stringify(redirectUrl.query)}`,\n            ),\n        );\n\n        if (\n            tokenRequestService.isSourceWebapp() ||\n            tokenRequestService.isIOSType2Flow()\n        ) {\n            dispatch(redirectToTpp());\n        } else {\n            dispatch(changeRoute(ROUTE_REDIRECT_TO_TPP));\n        }\n    }\n};\n\n// Fetches transfer details if present\nexport const getTransferDetails = options => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    let tokenReqResponse;\n    if (options?.fetchLatestTokenReq) {\n        // Fetch latest token request response\n        tokenReqResponse = await dispatch(fetchTokenRequestInfo(true));\n    } else {\n        tokenReqResponse = await dispatch(getTokenRequest(true));\n    }\n\n    const tokenRequest = tokenReqResponse?.tokenRequest;\n    const tokenRequestId = tokenRequest?.id;\n    if (!tokenRequestId) return;\n    try {\n        const result = await fetchTokenRequestResultWithStatus(\n            tokenRequestId,\n            tokenRequest?.requestPayload?.to?.id,\n        );\n        const redirectState = tokenRequestService.getRequestRedirectState();\n        if (result.signature && Object.keys(result.signature)?.length > 0) {\n            return {\n                'request-id': tokenRequestId,\n                tokenId: result.tokenId,\n                signature: JSON.stringify(result.signature),\n                state: redirectState,\n                'transfer-id': result.transferId,\n                'transfer-status': result?.transferStatus,\n            };\n        }\n    } catch (e) {\n        // Do nothing\n    }\n    return null;\n};\n\n// Return required parameters back to the tpp.\nexport const returnTransferData = data => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    const tokenReqResponse = await dispatch(getTokenRequest(true));\n    const tokenRequest = tokenReqResponse?.tokenRequest;\n    const tokenRequestId = tokenRequest?.id;\n    if (!tokenRequestId || !data.signature) return;\n\n    const requestOptions = tokenRequest?.requestOptions;\n    const bankId = requestOptions?.bankId;\n    const selectedBankId = sharedService.getSelectedBankId();\n    const doesTppSupportPsr44Flow = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_PSR44_FLOW,\n    );\n\n    let doesBankSupportOneStep = false;\n\n    if (bankId !== selectedBankId && bankId) {\n        const { banks } = await dispatch(yieldBanks({ ids: [bankId] }));\n        const bank = banks?.[0];\n        doesBankSupportOneStep = bank?.requiresOneStepPayment;\n    } else if (selectedBankId) {\n        doesBankSupportOneStep = sharedService.getSelectedBank()\n            ?.requiresOneStepPayment;\n    }\n\n    let transferStatus;\n    let transferId;\n    if (\n        data['transfer-id'] &&\n        (doesBankSupportOneStep || doesTppSupportPsr44Flow)\n    ) {\n        transferId = data['transfer-id'];\n        transferStatus = data?.['transfer-status'];\n    }\n    dispatch(\n        setTppReturnData({\n            popupStatus: POPUP_SUCCESS,\n            payload: {\n                'request-id': tokenRequestId,\n                tokenId: data.tokenId,\n                signature: data.signature,\n                ...(data.state && { state: data.state }),\n                ...(transferId && {\n                    'transfer-id': transferId,\n                }),\n                ...(transferStatus && {\n                    'transfer-status': transferStatus,\n                }),\n            },\n        }),\n    );\n    await dispatch(goToTpp());\n};\n\nexport const returnToTpp = (popupStatus, payload) => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    const isAispFlow = sharedService.isAisp();\n    const transferId = payload['transfer-id'];\n    const transferStatus = payload['transfer-status'];\n    const customRedirectURL = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_WEB_APP_URL,\n    );\n    const doesTppSupportPsr44Flow = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_PSR44_FLOW,\n    );\n\n    const forwardCurrentParams = tokenRequestService.getTppFeature(\n        featureConfig.FORWARD_CURRENT_TRANSFER_PARAMETERS,\n        false,\n    );\n\n    if (\n        popupStatus !== POPUP_FAILURE &&\n        !isAispFlow &&\n        doesTppSupportPsr44Flow &&\n        transferId &&\n        transferStatus\n    ) {\n        dispatch(\n            setTppReturnData({\n                popupStatus,\n                payload,\n            }),\n        );\n        dispatch(setStep(PISP_PAYMENT_INIT_STATUS));\n        dispatch(changeRoute(ROUTE_PISP));\n    } else if (\n        popupStatus !== POPUP_FAILURE &&\n        !transferId &&\n        !transferStatus &&\n        !isAispFlow &&\n        doesTppSupportPsr44Flow\n    ) {\n        const requestId = tokenRequestService.getRequestId();\n        const finalRedirectURL = customRedirectURL\n            ? customRedirectURL\n            : webAppUrl;\n        browserNavigation.assign(\n            `${finalRedirectURL}/api/tpp-integration?` +\n                `request-id=${requestId}` +\n                `${\n                    payload?.traceId ? `&token-trace-id=${payload.traceId}` : ''\n                }`,\n        );\n    } else if (popupStatus === POPUP_FAILURE && forwardCurrentParams) {\n        const transfer = await dispatch(getTransferDetails());\n        if (transfer) {\n            await dispatch(returnTransferData(transfer));\n        } else {\n            dispatch(setTppReturnData({ popupStatus, payload }));\n            await dispatch(goToTpp());\n        }\n    } else {\n        dispatch(setTppReturnData({ popupStatus, payload }));\n        await dispatch(goToTpp());\n    }\n};\n\nexport const showBankRedirectionScreen = () => (\n    dispatch,\n    { tokenRequestService },\n) => {\n    dispatch(clearBankRedirectUrl());\n    if (tokenRequestService.useBankRedirectionScreen()) {\n        // show redirect to bank screen\n        dispatch(changeRoute(ROUTE_BANK_REDIRECT));\n    } else {\n        dispatch(setStep(LOADING_STEP));\n        dispatch(changeRoute(ROUTE_BANK_LOADING));\n    }\n};\n\nexport const redirectToTpp = () => (dispatch, { tokenRequestService }) => {\n    const tppRedirectUrl = tokenRequestService.getTppRedirectUrl();\n    browserNavigation.assign(tppRedirectUrl);\n};\n\nexport const setupBankRedirectUrl = bankRedirectUrl => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    dispatch(setBankRedirectUrl(bankRedirectUrl));\n    if (!tokenRequestService.useBankRedirectionScreen()) {\n        await dispatch(redirectToBankUrl());\n    }\n};\n\nexport const redirectToBankUrl = () => async (dispatch, { tokenService }) => {\n    const bankRedirectUrl = tokenService.getBankRedirectUrl();\n    blockUserToGoBack();\n    await dispatch(\n        setTokenRequestStatus(requestStatus.PENDING_WEB_APP_SENT_USER_TO_BANK),\n    );\n    if (isContextIframe()) {\n        TokenCommunicator.dispatchMessage(\n            TOKEN_BANK_POPUP_IS_OPEN,\n            bankRedirectUrl,\n        );\n    } else if (window !== window.parent) {\n        TokenCommunicator.dispatchMessage(\n            TOKEN_BANK_POPUP_IS_OPEN,\n            bankRedirectUrl,\n        );\n    } else {\n        browserNavigation.assign(bankRedirectUrl);\n    }\n};\n\nexport const handlePopState = state => async (\n    dispatch,\n    { sharedService },\n) => {\n    if (sharedService.getCurrentHistoryStep() === APP_APPROVAL) {\n        dispatch(replaceState(state));\n        await cancelPollForTokenRequestResult();\n    } else {\n        dispatch(replaceState(state));\n    }\n};\n\n// utils\n\nexport const logoutFromLocalStorage = async () => {\n    try {\n        await Token.BrowserCryptoEngine.clearAllKeys();\n        if (!localStorageWrapper.get()) return;\n        // Clean state\n        localStorageWrapper.remove('aisp');\n        localStorageWrapper.remove('pisp');\n        localStorageWrapper.remove('activeMemberId');\n        localStorageWrapper.remove('bank');\n        localStorageWrapper.remove('members');\n        localStorageWrapper.remove('randid');\n    } catch (e) {\n        // Ignoring the exception here because on using firefox in private mode\n        // it throws an error while removing the keys from Index DB with message as:\n        // \"a mutation operation was attempted on a database that did not allow mutations.\"\n        // We can ignore above error in respect to the new co-opt flow where BrowserCryptoEngine\n        // is no longer in use.\n\n        // eslint-disable-next-line no-console\n        console.error(e);\n    }\n};\n\nexport const loginFromLocalStorage = () => async dispatch => {\n    try {\n        // If the browser has a bank (user already went through flow), or if it has aisp/pisp (user\n        // in the the middle of an appless flow), then try to get the member. Otherwise, clear LS.\n        if (getBankFromLocalStorage()) {\n            const member = Token.getMember(Token.BrowserCryptoEngine);\n            const alias = await member.firstAlias();\n            dispatch(addMember(member));\n            dispatch(setAlias(alias));\n        } else {\n            dispatch(clearMembers());\n            await logoutFromLocalStorage();\n        }\n    } catch (e) {\n        dispatch(clearMembers());\n        await logoutFromLocalStorage();\n    }\n};\n\nexport const storeRecentBanks = () => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    if (!localStorageWrapper.get()) {\n        dispatch(saveRecentBanks([]));\n        return;\n    }\n    try {\n        const parsedBanks = localStorageWrapper.get('recentBanks');\n        const allowedCountriesWithBanks =\n            tokenRequestService.getTppFeature(\n                featureConfig.SUPPORTED_COUNTRIES_WITH_BANK_IDS,\n            ) || {};\n        const hideDefaultCountriesAndBanks = tokenRequestService.getTppFeature(\n            featureConfig.HIDE_DEFAULT_COUNTRIES_AND_BANKS,\n        );\n        const isCountriesPresentInTppConfig =\n            Object.keys(allowedCountriesWithBanks)?.length > 0;\n\n        if (hideDefaultCountriesAndBanks && !isCountriesPresentInTppConfig) {\n            dispatch(saveRecentBanks([]));\n            return;\n        }\n\n        if (!(parsedBanks instanceof Array)) {\n            dispatch(saveRecentBanks([]));\n            return;\n        }\n        // fetch banks filtered by IDs\n        const banks = (\n            await dispatch(\n                yieldBanks({\n                    ids: parsedBanks.map(b => b.id),\n                }),\n            )\n        ).banks;\n        // order results by current recentBanks\n        // filter null results so it won't break in case of a bank gets removed\n        //   from the bank list API\n        // return recent banks list with details\n        const recentBanks = parsedBanks\n            .map(p => {\n                const countryCode = p.selectedCountry;\n                let isBankPermitted = true;\n                if (isCountriesPresentInTppConfig) {\n                    const permittedCountry =\n                        allowedCountriesWithBanks[countryCode];\n                    const permittedBanks =\n                        !!permittedCountry && (permittedCountry?.bankIds || []);\n                    isBankPermitted =\n                        !!permittedBanks &&\n                        (permittedBanks.length === 0 ||\n                            permittedBanks.includes(p.id));\n                }\n\n                const bank = banks.find(\n                    b =>\n                        b.id === p.id &&\n                        isBankPermitted &&\n                        b.countries.includes(countryCode),\n                );\n                return bank && { ...bank, selectedCountry: p.selectedCountry };\n            })\n            .filter(Boolean);\n        dispatch(saveRecentBanks(recentBanks || []));\n        return;\n    } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error(e);\n        dispatch(saveRecentBanks([]));\n        return;\n    }\n};\n\nconst recentBankReducer = (recentBanks, { id, selectedCountry }) => {\n    const bank = { id, selectedCountry };\n    if (!recentBanks?.length) return [bank]; // empty list\n    const existing = recentBanks.findIndex(b => b.id === id);\n    // item not found, insert to the top and keep 3 items length\n    if (existing === -1) return [bank, ...recentBanks.slice(0, 2)];\n    // item found, move to the top\n    return [\n        bank,\n        ...recentBanks.slice(0, existing),\n        ...recentBanks.slice(existing + 1),\n    ];\n};\n\nexport const setRecentBank = bank => async (dispatch, { sharedService }) => {\n    const recentBanks = recentBankReducer(sharedService.getRecentBanks(), bank);\n    if (bank.id) {\n        try {\n            dispatch(saveRecentBanks([]));\n            localStorageWrapper.set('recentBanks', recentBanks);\n            await dispatch(storeRecentBanks());\n        } catch (e) {\n            console.error(e); // eslint-disable-line\n            throw e;\n        }\n    }\n};\n\nexport const getCountry = async () => {\n    const country = getURLParameter('country');\n    if (country) {\n        return country;\n    }\n    // const { data } = await axios.get('https://ipinfo.io/');\n    // if (data) {\n    //     return data.country;\n    // }\n    return '';\n};\n\nexport const findBankLogoData = banks => {\n    const newBank = banks.map(obj => {\n        if (obj.rawData && !obj.rawData.logoUri) {\n            try {\n                const images = require.context('./../../assets/banks', true);\n                const bankName = images(\n                    `./${obj.rawData.country}/${obj.rawData.id}/${obj.rawData.id}.png`,\n                ).default;\n                obj.rawData['logoUri'] = bankName;\n            } catch (e) {\n                obj.rawData['logoUri'] = `/assets/${obj.rawData.id}.png`;\n            }\n        }\n        return obj;\n    });\n    return newBank;\n};\n\nexport const filterBanksHavingBranches = banks => (\n    dispatch,\n    { sharedService },\n) => {\n    const banksWithBranchesList = sharedService.getBanksWithBranches();\n    const newBanks = [];\n    for (let i = 0; i < banks.length; i++) {\n        if (Object.keys(banksWithBranches).includes(banks[i].rawData.name)) {\n            if (!banksWithBranchesList[banks[i].rawData.name]) {\n                newBanks.push(createBank(banks[i]));\n                dispatch(setBankWithSubBranches(banks[i].title, true));\n                banksWithBranchesList[banks[i].rawData.name] = true;\n            }\n        }\n    }\n    banks.map(bank => {\n        if (!Object.keys(banksWithBranches).includes(bank.rawData.name)) {\n            newBanks.push(bank);\n        }\n    });\n    return newBanks;\n};\n\nexport const createBank = bank => {\n    return {\n        ...bank,\n        key: bank.title.toLowerCase(),\n        data: undefined,\n        rawData: {\n            ...bank.rawData,\n            id: bank.title.toLowerCase(),\n        },\n    };\n};\n\nexport const setCountriesList = () => async (\n    dispatch,\n    { sharedService, tokenRequestService },\n) => {\n    const countries = sharedService.getCountries();\n    const defaultCountry = sharedService.getDefaultCountry();\n    const aliasName = tokenRequestService.getTppAlias()?.value;\n    const supportedCountriesWithBanksByTpp = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORTED_COUNTRIES_WITH_BANK_IDS,\n    );\n    const hideDefaultCountriesAndBanks = tokenRequestService.getTppFeature(\n        featureConfig.HIDE_DEFAULT_COUNTRIES_AND_BANKS,\n    );\n\n    const customCountriesList =\n        (supportedCountriesWithBanksByTpp &&\n            Object.keys(supportedCountriesWithBanksByTpp)) ||\n        [];\n\n    let countryList = [];\n    if (countries && customCountriesList?.length > 0) {\n        countryList = countries.filter(country =>\n            customCountriesList.includes(country),\n        );\n    } else {\n        if (hideDefaultCountriesAndBanks && !supportedCountriesWithBanksByTpp) {\n            dispatch(setCountries(countryList));\n            return;\n        }\n        let aliasValue = aliasName;\n        for (const value in ALIAS_COUNTRY_LIST) {\n            if (aliasName?.toLowerCase().includes(value.toLowerCase())) {\n                aliasValue = value;\n                break;\n            }\n        }\n        if (!ALIAS_COUNTRY_LIST[aliasValue]) return;\n\n        countryList = ALIAS_COUNTRY_LIST[aliasValue].map(country => {\n            if (countries.includes(country)) return country;\n        });\n    }\n\n    if (\n        countries?.includes(defaultCountry) &&\n        !countryList?.includes(defaultCountry)\n    ) {\n        countryList.push(defaultCountry);\n    }\n\n    if (countryList?.length === 1) {\n        dispatch(setDefaultCountry(countryList[0]));\n    }\n\n    dispatch(setCountries(countryList));\n};\n\nexport const getAppCallbackUrl = customRedirectURL => {\n    let appCallbackUrl;\n    if (customRedirectURL) {\n        appCallbackUrl = new URL(`${customRedirectURL}/app/auth/callback`);\n    } else {\n        appCallbackUrl = new URL(`${webAppUrl}/app/auth/callback`);\n    }\n    return appCallbackUrl;\n};\n\nexport const fetchTokenRequestData = isBankCallback => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const response = await dispatch(fetchTokenRequestInfo(isBankCallback));\n    const tokenRequest = response?.tokenRequest;\n\n    if (tokenRequestService.hasCustomColors()) {\n        await addCustomCss(tokenRequestId);\n    } else {\n        removeCustomCss();\n    }\n    validateBrowserCompatibility();\n    const requestPayload = tokenRequest?.requestPayload;\n    if (requestPayload) {\n        await dispatch(fetchCountries(requestPayload?.to?.id));\n    }\n    return tokenRequest;\n};\n\nexport const goToTppAfterBackButton = () => async dispatch => {\n    dispatch(changeRoute(TPP_LOADING));\n    dispatch(\n        terminateFlow({\n            error: 'USER_CLICKED_ON_BROWSER_BACK_BUTTON',\n            message: 'User may have clicked on the browser back button',\n        }),\n    );\n};\n\nexport const blockUserToGoBackBeforeUnload = () => {\n    window.addEventListener('beforeunload', () => {\n        sessionStorageWrapper.set('blockUserToGoBack', true);\n    });\n};\n\nexport const allowUserToGoBack = () => {\n    sessionStorageWrapper.set('blockUserToGoBack', false);\n};\n\nexport const blockUserToGoBack = () => {\n    sessionStorageWrapper.set('blockUserToGoBack', true);\n};\n\nexport const removeCheckForTokenReqRejection = () => {\n    sessionStorageWrapper.remove('tokenRequestStatus');\n};\n\nexport const addCheckForTokenReqRejection = () => {\n    sessionStorageWrapper.set(\n        'tokenRequestStatus',\n        EXTERNAL_TOKEN_REQUEST_STATUS.REJECTED,\n    );\n};\n\nexport * from './credentials';\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport { terminateFlow } from 'actions/shared';\nimport './index.css';\n\nclass App extends Component {\n    constructor(props) {\n        super(props);\n        this.onCloseDialogClick = this.onCloseDialogClick.bind(this);\n    }\n    onCloseDialogClick() {\n        this.props.terminateFlow({\n            error: 'access_denied',\n            message: 'Token window was cancelled',\n        });\n    }\n    render() {\n        return this.props.routes[this.props.currentRoute] || <span />;\n    }\n}\n\nApp.propTypes = {\n    routes: PropTypes.object,\n    currentRoute: PropTypes.string,\n    terminateFlow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    currentRoute: sharedService.getCurrentRoute(),\n});\n\nconst mapDispatchToProps = {\n    terminateFlow,\n};\n\nconst ConnectedApp = connect(mapStateToProps, mapDispatchToProps)(App);\n\nexport default ConnectedApp;\n","import {\n    TOKEN_TYPE_VRP,\n    LOADING_STEP,\n    banksWithBranches,\n    processedVrpStatusCodes,\n    pendingVrpStatusCodes,\n    CUSTOM_TPP_FEATURES as featureConfig,\n    ROUTE_VRP,\n    VRP_SELECT_BANK_FIRST,\n    VRP_CONSENT_BANK_FIRST,\n    VRP_CONSENT_STATUS,\n    REQUEST_TYPE,\n    VRP_CONSENT_INIT_STATUS,\n    POPUP_SUCCESS,\n    POPUP_FAILURE,\n    ROUTE_LOADING,\n    BANK_SELECTION_PRESETS,\n} from 'config/constants';\nimport {\n    setRecentBank,\n    setupBankRedirectUrl,\n    setHideConsent,\n    fetchCountries,\n    setMemberProperties,\n    setResellerProfile,\n    setTppProfile,\n    setTppConfigurations,\n    setDefaultBankId,\n    setRedirectState,\n    setRedirectUrl,\n    setBankRedirectUrl,\n    setRedirect,\n    setTppSource,\n    setCustomDevKey,\n    getCountry,\n    setDefaultCountry,\n    setCountriesList,\n    storeRecentBanks,\n    yieldBanks,\n    setBank,\n    fetchBankBranches,\n    clearInstructionsSource,\n    clearBank,\n    goToTpp,\n    setTppReturnData,\n} from 'actions/shared';\nimport {\n    fetchVrpConsent,\n    updateVrpRequest,\n    declineVrpConsent,\n    getTppConfigurationsForVrp,\n    getMemberProfileById,\n    getTempMember,\n    getBankFromLocalStorage,\n} from 'actions/shared/api';\nimport {\n    getURLParameter,\n    validateBrowserCompatibility,\n    removeCustomCss,\n    extractDateFromISO,\n    addCustomCss,\n} from 'util/index';\nimport { changeRoute, setStep } from 'actions/shared/route';\nimport {\n    INTL_EXCEPTION_REQUEST_FAILED,\n    EXCEPTION_VRP_REQUEST,\n    EXCEPTION_INVALID_PATH,\n    EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE,\n} from 'config/exceptions';\nimport { TokenException } from '@token-io/lib-web-app';\nimport { updateCustomization } from '../helpers';\nimport { getOverallTppConfigurations } from '../helpers';\n\nexport const setVrpId = vrpId => ({\n    type: 'SET_VRP_ID',\n    vrpId,\n});\n\nexport const setVrpRefId = vrpRefId => ({\n    type: 'SET_VRP_REF_ID',\n    vrpRefId,\n});\n\nexport const setVrpStatus = status => ({\n    type: 'SET_VRP_STATUS',\n    status,\n});\n\nexport const setVrpCreditorInfo = creditorInfo => ({\n    type: 'SET_VRP_CREDITOR_INFO',\n    creditorInfo,\n});\n\nexport const setVrpDebtorInfo = debtorInfo => ({\n    type: 'SET_VRP_DEBTOR_INFO',\n    debtorInfo,\n});\n\nexport const setVrpPeriodicLimit = periodicLimits => ({\n    type: 'SET_VRP_PERIODIC_LIMITS',\n    periodicLimits,\n});\n\nexport const setVrpExpirationDate = expirationDate => ({\n    type: 'SET_VRP_EXPIRATION_DATE',\n    expirationDate,\n});\n\nexport const setPispConsentAccepted = pispConsentAccepted => ({\n    type: 'SET_PISP_CONSENT_ACCEPTED',\n    pispConsentAccepted,\n});\n\nexport const setVrpDescription = description => ({\n    type: 'SET_VRP_DESCRIPTION',\n    description,\n});\n\nexport const setVrpLocalInstrument = localInstrument => ({\n    type: 'SET_VRP_LOCAL_INSTRUMENT',\n    localInstrument,\n});\n\nexport const setVrpMaxAmount = maxIndividualAmount => ({\n    type: 'SET_MAX_AMOUNT',\n    maxIndividualAmount,\n});\n\nexport const setVrpTokenType = ({ tppAlias, memberId } = {}) => {\n    return {\n        type: 'SET_TOKEN_TYPE',\n        tokenType: TOKEN_TYPE_VRP,\n        tppAlias,\n        memberId,\n    };\n};\n\nexport const setCurrency = currency => ({\n    type: 'SET_VRP_CURRENCY',\n    currency,\n});\n\n// Return true if validation succeeded otherwise return false\nexport const validateVRPConsent = vrpConsent => async dispatch => {\n    if (!vrpConsent) return;\n    if (\n        processedVrpStatusCodes.includes(vrpConsent.status) ||\n        pendingVrpStatusCodes.includes(vrpConsent.status)\n    ) {\n        await dispatch(\n            returnToTpp(POPUP_SUCCESS, {\n                'member-id': vrpConsent.memberId,\n                'vrp-consent-id': vrpConsent.id,\n                status: vrpConsent.status,\n                state: vrpConsent.initiation?.callbackState,\n            }),\n        );\n        return false;\n    }\n    return true;\n};\n\nexport const updateAndValidateVrpConsent = bankId => async (\n    dispatch,\n    { vrpService, tokenRequestService },\n) => {\n    const vrpId = vrpService.getVrpRequestId();\n    const pispConsentAccepted = vrpService.getPispConsentAccepted();\n    const vrpConsent = await updateVrpRequest(vrpId, {\n        ...(!tokenRequestService.getDefaultBankId() && {\n            bankId,\n        }),\n        pispConsentAccepted,\n    });\n    if (vrpConsent) {\n        const { authentication, status } = vrpConsent;\n        authentication?.redirectUrl &&\n            dispatch(setBankRedirectUrl(authentication.redirectUrl));\n        status && dispatch(setVrpStatus(status));\n    }\n    return await dispatch(validateVRPConsent(vrpConsent));\n};\n\n// Fetches vrp request info, and saves properties to redux store\nexport const fetchVrpConsentInfo = bankCallback => async (\n    dispatch,\n    { vrpService, tokenRequestService },\n) => {\n    let result;\n    const vrpId = vrpService.getVrpRequestId();\n    try {\n        result = await fetchVrpConsent(vrpId);\n    } catch (e) {\n        throw new TokenException(\n            INTL_EXCEPTION_REQUEST_FAILED,\n            (e.response && e.response.data) || e.message,\n        );\n    }\n    const vrpConsent = result && { ...result.vrpConsent };\n    if (vrpConsent) {\n        const subTppRefId = vrpConsent?.initiation?.onBehalfOfId;\n        const tppConfigResp = await getTppConfigurationsForVrp(vrpId);\n        dispatch(setHideConsent(tppConfigResp.hideConsent));\n        const bankSelectionPreset = tppConfigResp.bankSelectionPreset;\n        if (bankSelectionPreset === BANK_SELECTION_PRESETS.DISABLE_ALL) {\n            throw new TokenException(\n                EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE,\n                EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE.message,\n            );\n        }\n\n        const tppAlias = tppConfigResp?.alias;\n        const realmId = tppConfigResp?.realm?.id;\n\n        const memberProperties = {\n            realmId,\n            memberId: vrpConsent.memberId,\n            subTppRefId,\n        };\n        dispatch(setMemberProperties(memberProperties));\n        const guest = await dispatch(getTempMember());\n        if (realmId) {\n            const resellerProfile = await getMemberProfileById(realmId, guest);\n            dispatch(setResellerProfile(resellerProfile));\n        }\n        const tppProfile = await getMemberProfileById(\n            vrpConsent.memberId,\n            guest,\n        );\n        dispatch(setTppProfile(tppProfile));\n\n        let { tppConfigurations } = tppConfigResp;\n        if (tppConfigurations) {\n            tppConfigurations = {\n                ...updateCustomization(tppConfigurations),\n                bankSelectionPreset,\n            };\n            const tppConfigs = await getOverallTppConfigurations(\n                memberProperties,\n                tppConfigurations,\n            );\n            dispatch(setTppConfigurations(tppConfigs));\n        }\n        dispatch(setVrpRefId(vrpConsent.initiation?.refId));\n        dispatch(\n            setVrpTokenType({\n                tppAlias: tppAlias,\n                memberId: vrpConsent.memberId,\n            }),\n        );\n\n        vrpConsent.initiation?.bankId &&\n            dispatch(setDefaultBankId(vrpConsent.initiation.bankId));\n        vrpConsent.authentication?.redirectUrl &&\n            dispatch(\n                setBankRedirectUrl(vrpConsent.authentication?.redirectUrl),\n            );\n        vrpConsent.status && dispatch(setVrpStatus(vrpConsent.status));\n        vrpConsent.initiation?.callbackState &&\n            dispatch(setRedirectState(vrpConsent.initiation?.callbackState));\n        vrpConsent.initiation?.currency &&\n            dispatch(setCurrency(vrpConsent.initiation.currency));\n        vrpConsent.initiation?.callbackUrl &&\n            dispatch(setRedirectUrl(vrpConsent.initiation?.callbackUrl));\n        vrpConsent.initiation?.creditor &&\n            dispatch(setVrpCreditorInfo(vrpConsent.initiation?.creditor));\n        vrpConsent.initiation?.debtor &&\n            dispatch(setVrpDebtorInfo(vrpConsent.initiation?.debtor));\n        vrpConsent.initiation?.maximumIndividualAmount &&\n            dispatch(\n                setVrpMaxAmount(vrpConsent.initiation?.maximumIndividualAmount),\n            );\n        vrpConsent.initiation?.localInstrument &&\n            dispatch(\n                setVrpLocalInstrument(vrpConsent.initiation?.localInstrument),\n            );\n        vrpConsent.initiation?.remittanceInformationPrimary &&\n            dispatch(\n                setVrpDescription(\n                    vrpConsent.initiation?.remittanceInformationPrimary,\n                ),\n            );\n        vrpConsent.initiation?.periodicLimits &&\n            dispatch(\n                setVrpPeriodicLimit(vrpConsent.initiation?.periodicLimits),\n            );\n        vrpConsent.initiation?.endDateTime &&\n            dispatch(\n                setVrpExpirationDate(\n                    extractDateFromISO(vrpConsent.initiation?.endDateTime),\n                ),\n            );\n        dispatch(setPispConsentAccepted(result?.pispConsentAccepted));\n        if (tokenRequestService.hasCustomColors()) {\n            await addCustomCss(vrpId, REQUEST_TYPE.VRP_CONSENT);\n        } else {\n            removeCustomCss();\n        }\n        await dispatch(storeRecentBanks());\n\n        if (!bankCallback) {\n            const proceedToWebappFlow = await dispatch(\n                validateVRPConsent(vrpConsent),\n            );\n            if (proceedToWebappFlow) {\n                return vrpConsent;\n            }\n        }\n    }\n};\n\n// Step 1 - show consent screen\nexport const initiateVrpFlow = () => async dispatch => {\n    dispatch(changeRoute(ROUTE_VRP));\n    await dispatch(setCountriesList());\n    dispatch(acceptTermsBankFirstFlow());\n};\n\nexport const declineTerms = () => async (dispatch, { vrpService }) => {\n    dispatch(changeRoute(ROUTE_LOADING));\n    const vrpId = vrpService.getVrpRequestId();\n    await declineVrpConsent(vrpId);\n    dispatch(\n        terminateVrpFlow({ error: 'access_denied', message: 'Terms declined' }),\n    );\n};\n\nexport const initiateBankCallbackFlowV2 = () => dispatch => {\n    if (getURLParameter('vrp-consent-id')) {\n        dispatch(initiateVrpBankCallbackFlow());\n    } else {\n        throw new TokenException(EXCEPTION_INVALID_PATH, 'Path is invalid');\n    }\n};\n\nexport const initiateVrpBankCallbackFlow = () => async dispatch => {\n    const vrpConsentId = getURLParameter('vrp-consent-id');\n    dispatch(setVrpId(vrpConsentId));\n    const memberId = getURLParameter('member-id');\n    const redirectUrl = getURLParameter('redirect-url');\n    const status = getURLParameter('status');\n    const state = getURLParameter('state');\n    redirectUrl && dispatch(setRedirectUrl(redirectUrl));\n    dispatch(\n        returnToTpp(POPUP_SUCCESS, {\n            'member-id': memberId,\n            'vrp-consent-id': vrpConsentId,\n            status,\n            state,\n        }),\n    );\n};\n\nexport const handleInitiation = () => async dispatch => {\n    dispatch(setRedirect());\n    dispatch(setTppSource(getURLParameter('source')));\n    dispatch(setCustomDevKey(getURLParameter('dk')));\n    const defaultCountry = await getCountry();\n    dispatch(setDefaultCountry(defaultCountry));\n\n    if (getURLParameter('vrp-consent-id')) {\n        await dispatch(initiateVrpSetupRedirectFlow());\n    } else {\n        throw new TokenException(EXCEPTION_INVALID_PATH, 'Path is invalid');\n    }\n};\n\n// Initiates the VRP flow. This is called as soon as the TPP redirects to the web-app to setup VRP\nexport const initiateVrpSetupRedirectFlow = () => async dispatch => {\n    validateBrowserCompatibility();\n    const vrpId = decodeURIComponent(getURLParameter('vrp-consent-id'));\n    dispatch(setVrpId(vrpId));\n    const vrpConsent = await dispatch(fetchVrpConsentInfo());\n    if (vrpConsent) {\n        await dispatch(fetchCountries(vrpConsent?.memberId));\n        dispatch(initiateVrpFlow());\n    }\n};\n\nexport const proceedToBankForVrp = () => async (\n    dispatch,\n    { tokenRequestService, sharedService, tokenService, vrpService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n    dispatch(setPispConsentAccepted(true));\n    const bank = sharedService.getSelectedBank();\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    if (\n        Object.prototype.hasOwnProperty.call(banksWithBranches, bank.name) &&\n        doesTppSupportRecentBanks\n    ) {\n        await dispatch(setRecentBank(bank));\n    }\n\n    let isConsentValid = true;\n    isConsentValid = await dispatch(updateAndValidateVrpConsent(bank.id));\n    if (\n        isConsentValid &&\n        vrpService.getStatus() === VRP_CONSENT_STATUS.PENDING_REDIRECT_AUTH &&\n        tokenService.getBankRedirectUrl()\n    ) {\n        await dispatch(setupBankRedirectUrl(tokenService.getBankRedirectUrl()));\n    } else if (isConsentValid) {\n        return dispatch(\n            terminateVrpFlow({\n                ...EXCEPTION_VRP_REQUEST[VRP_CONSENT_STATUS.UNSUCCESSFUL],\n            }),\n        );\n    }\n};\n\nexport const acceptTermsBankFirstFlow = () => async (\n    dispatch,\n    { tokenRequestService, sharedService },\n) => {\n    let defaultBankId;\n    let country;\n\n    const recentBanks = sharedService.getRecentBanks();\n\n    defaultBankId = tokenRequestService.getDefaultBankId();\n\n    const bankName =\n        (recentBanks[0] &&\n            recentBanks[0].id[0].toUpperCase() + recentBanks[0].id.slice(1)) ||\n        '';\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    // Check if recent bank supports the payment mode, if present\n    if (\n        doesTppSupportRecentBanks &&\n        defaultBankId === undefined &&\n        recentBanks[0] &&\n        !Object.keys(banksWithBranches).includes(bankName)\n    ) {\n        const { banks } = await dispatch(\n            yieldBanks({ ids: [recentBanks[0].id] }),\n        );\n        const bankDetail = banks?.[0];\n        if (bankDetail) {\n            defaultBankId = recentBanks[0].id;\n            country = recentBanks[0].selectedCountry;\n        }\n    }\n\n    const bank = getBankFromLocalStorage();\n    if (defaultBankId && !bank) {\n        const { banks } = await dispatch(yieldBanks({ ids: [defaultBankId] }));\n        let defaultBank = banks?.[0];\n\n        // If the bank id is already provided in the vrp setup request then\n        // consider country as first element of countries array from bank config\n        if (!country) {\n            country = defaultBank?.countries[0];\n        }\n        defaultBank = { ...defaultBank, selectedCountry: country };\n\n        await dispatch(setBankAndProceedToConsent(defaultBank));\n    } else {\n        dispatch(setStep(VRP_SELECT_BANK_FIRST));\n    }\n};\n\nexport const setBankAndProceedToConsent = bank => async (\n    dispatch,\n    { tokenRequestService, vrpService },\n) => {\n    dispatch(setStep(LOADING_STEP));\n\n    const doesTppSupportRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n\n    if (\n        doesTppSupportRecentBanks &&\n        !Object.prototype.hasOwnProperty.call(banksWithBranches, bank.name)\n    ) {\n        await dispatch(setRecentBank(bank));\n    }\n\n    dispatch(setBank(bank));\n\n    if (Object.keys(banksWithBranches).includes(bank.name)) {\n        await dispatch(\n            fetchBankBranches(bank.name, bank.selectedCountry || bank.country),\n        );\n    }\n\n    if (\n        tokenRequestService.getHideConsent() ||\n        vrpService.getPispConsentAccepted()\n    ) {\n        dispatch(proceedToBankForVrp());\n    } else {\n        dispatch(setStep(VRP_CONSENT_BANK_FIRST));\n    }\n};\n\nexport const backToBankSelector = () => async dispatch => {\n    dispatch(clearBank());\n    dispatch(clearInstructionsSource());\n    dispatch(setStep(VRP_SELECT_BANK_FIRST));\n};\n\nexport const returnToTpp = (popupStatus, payload) => async (\n    dispatch,\n    { tokenRequestService },\n) => {\n    dispatch(setTppReturnData({ popupStatus, payload }));\n    await dispatch(fetchVrpConsentInfo(true));\n    const doesTppSupportPsr44Flow = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_PSR44_FLOW,\n    );\n    if (doesTppSupportPsr44Flow) {\n        const defaultBankId = tokenRequestService.getDefaultBankId();\n        const { banks } = await dispatch(yieldBanks({ ids: [defaultBankId] }));\n        let defaultBank = banks?.[0];\n        defaultBank = {\n            ...defaultBank,\n            selectedCountry: defaultBank?.countries[0],\n        };\n        dispatch(setBank(defaultBank));\n        dispatch(setStep(VRP_CONSENT_INIT_STATUS));\n        dispatch(changeRoute(ROUTE_VRP));\n    } else {\n        await dispatch(goToTpp());\n    }\n};\n\nexport const terminateVrpFlow = message => async (\n    dispatch,\n    { tokenRequestService, vrpService },\n) => {\n    const redirectState = tokenRequestService.getRequestRedirectState();\n    const requestId = vrpService.getVrpRequestId();\n    dispatch(\n        returnToTpp(POPUP_FAILURE, {\n            ...message,\n            'vrp-consent-id': requestId,\n            state: redirectState,\n        }),\n    );\n};\n","import React from 'react';\n\nclass WebAppConfig extends React.Component {\n    constructor(props) {\n        super(props);\n    }\n    componentDidMount() {\n        window.localStorage.clear();\n    }\n    render() {\n        return <div>Config - Cleared LocalStorage</div>;\n    }\n}\n\nexport default WebAppConfig;\n","import React, {Fragment, createElement} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n    KEY_ENTER,\r\n    KEY_ESC,\r\n    KEY_UP,\r\n    KEY_DOWN,\r\n    KEY_SPACEBAR,\r\n    TRANSITION_OPENED,\r\n    TRANSITION_IS_OPENING,\r\n    TRANSITION_CLOSED,\r\n    TRANSITION_IS_CLOSING,\r\n} from './config/constants';\r\nimport EmailValidator from 'email-validator';\r\n\r\nexport const withStatic = values => Component => Object.assign(Component, values);\r\n\r\nexport const withValidator = ({type}) => Component => {\r\n    class withValidatorWrapper extends React.PureComponent {\r\n        static propTypes = {\r\n            onValidityChange: PropTypes.func,\r\n            customIsValid: PropTypes.bool,\r\n            customSetValidation: PropTypes.func,\r\n        }\r\n        static defaultProps = {\r\n            customSetValidation: null,\r\n            customIsValid: null,\r\n        }\r\n        constructor(props) {\r\n            super(props);\r\n            this.state = {\r\n                isValid: props.customIsValid || true,\r\n            };\r\n            this.setValidation = this.setValidation.bind(this);\r\n            this.validate = this.validate.bind(this);\r\n            this.getIsValid = this.getIsValid.bind(this);\r\n            this._comp = React.createRef();\r\n        }\r\n        validate(value) {\r\n            if (type === 'email') {\r\n                if (EmailValidator.validate(value)) {\r\n                    return this.setValidation(true);\r\n                } else {\r\n                    return this.setValidation(false, { extra: 'FAILED_VALIDATION_EMAIL' });\r\n                }\r\n            }\r\n            return this.setValidation(true);\r\n        }\r\n        setValidation(_isValid, { extra } = {}) {\r\n            const {onValidityChange, customIsValid, customSetValidation} = this.props;\r\n            const {isValid: stateIsValid} = this.state;\r\n            let isValid, setValidationFunc;\r\n            if (customSetValidation) {\r\n                isValid = customIsValid;\r\n                setValidationFunc = customSetValidation;\r\n            } else {\r\n                isValid = stateIsValid;\r\n                setValidationFunc = (v, {extra, doneCallback} = {}) => {\r\n                    this.setState({\r\n                        isValid: v,\r\n                        extra,\r\n                    }, doneCallback);\r\n                };\r\n            }\r\n            if (isValid === _isValid) return;\r\n            setValidationFunc(_isValid, {extra, doneCallback: () => {\r\n                onValidityChange && onValidityChange(_isValid, { extra });\r\n            }});\r\n        }\r\n        getIsValid() {\r\n            const {customSetValidation, customIsValid} = this.props;\r\n            const {isValid: stateIsValid} = this.state;\r\n\r\n            if (customSetValidation) {\r\n                return customIsValid;\r\n            } else {\r\n                return stateIsValid;\r\n            }\r\n        }\r\n        render() {\r\n            const isValid = this.getIsValid();\r\n            return (<Component ref={this._comp} {...this.props} {...{\r\n                inputType: type,\r\n                validate: this.validate,\r\n                isValid,\r\n                status: isValid && 'idle' || 'error',\r\n            }} />);\r\n        }\r\n    }\r\n    return withValidatorWrapper;\r\n};\r\n\r\nexport const withAutoFocus = Component => {\r\n    class AutoFocusWrapper extends React.PureComponent {\r\n        static propTypes = {\r\n            autoFocus: PropTypes.bool,\r\n        }\r\n        constructor(props) {\r\n            super(props);\r\n            this._comp = React.createRef();\r\n        }\r\n        componentDidMount() {\r\n            const {autoFocus} = this.props;\r\n            if (this._comp.current && autoFocus) {\r\n                this.focusTimeout = setTimeout(() => {\r\n                    this._comp.current.focus();\r\n                }, 100);\r\n            }\r\n        }\r\n        componentWillUnmount() {\r\n            if (this.focusTimeout) {\r\n                clearTimeout(this.focusTimeout);\r\n            }\r\n        }\r\n        render() {\r\n            return <Component ref={this._comp} {...this.props} />;\r\n        }\r\n    }\r\n    return AutoFocusWrapper;\r\n};\r\n\r\nexport const withValue = Component => {\r\n    class ValueWrapper extends React.PureComponent {\r\n        static propTypes = {\r\n            onChange: PropTypes.func,\r\n            onKeyEnter: PropTypes.func,\r\n            onKeyEsc: PropTypes.func,\r\n            onKeyUp: PropTypes.func,\r\n            onKeyDown: PropTypes.func,\r\n            onKeySpacebar: PropTypes.func,\r\n            customSetValue: PropTypes.func,\r\n            useCustomData: PropTypes.bool,\r\n            defaultValue: PropTypes.any,\r\n            value: PropTypes.any,\r\n            multiple: PropTypes.bool,\r\n            idKey: PropTypes.string,\r\n            allowDeselect: PropTypes.bool,\r\n        };\r\n        static defaultProps = {\r\n            onChange: () => null,\r\n            onKeyEnter: () => null,\r\n            onKeyEsc: () => null,\r\n            onKeyUp: () => null,\r\n            onKeyDown: () => null,\r\n            onKeySpacebar: () => null,\r\n            customSetValue: () => null,\r\n            useCustomData: false,\r\n            idKey: 'id',\r\n        };\r\n        constructor(props) {\r\n            super(props);\r\n            this.state = {\r\n                value: props.defaultValue || null,\r\n            };\r\n            this.setValue = this.setValue.bind(this);\r\n            this.isSelected = this.isSelected.bind(this);\r\n            this.setKeyDown = this.setKeyDown.bind(this);\r\n            this._comp = React.createRef();\r\n        }\r\n        isSelected(data) {\r\n            const {idKey} = this.props;\r\n            const value = this.props.useCustomData ? this.props.value : this.state.value;\r\n            if (!this.props.multiple) {\r\n                return value === data;\r\n            } else if (value instanceof Array) {\r\n                return value.find(v => (v[idKey] || v) == (data[idKey] || data)) !== undefined;\r\n            }\r\n        }\r\n        setValue(val) {\r\n            let value, setValueFunc;\r\n            const {useCustomData, customSetValue, multiple, onChange, idKey} = this.props;\r\n            if (useCustomData) {\r\n                value = this.props.value;\r\n                setValueFunc = customSetValue;\r\n            } else {\r\n                value = this.state.value;\r\n                setValueFunc = (v, {doneCallback} = {}) => {\r\n                    this.setState({\r\n                        value: v,\r\n                    }, doneCallback);\r\n                };\r\n            }\r\n\r\n            let final;\r\n            if (!multiple) {\r\n                final = val;\r\n            } else {\r\n                final = value instanceof Array\r\n                    ? value\r\n                    : [];\r\n                if (val === null) return val;\r\n                const data = val.rawData && val.rawData || val;\r\n                if(this.isSelected(data)) {\r\n                    final = final.filter(f => (f[idKey] || f) !== (data[idKey] || data));\r\n                    final = final.length && final || null;\r\n                } else {\r\n                    final = final.concat([data]);\r\n                }\r\n            }\r\n\r\n            setValueFunc(final, {doneCallback: () => {\r\n                onChange(final);\r\n            }});\r\n        }\r\n        setKeyDown(keyCode, e) {\r\n            switch (keyCode) {\r\n            case KEY_UP:\r\n                this.props.onKeyUp(e);\r\n                break;\r\n            case KEY_DOWN:\r\n                this.props.onKeyDown(e);\r\n                break;\r\n            case KEY_ENTER:\r\n                this.props.onKeyEnter(e);\r\n                break;\r\n            case KEY_ESC:\r\n                this.props.onKeyEsc(e);\r\n                break;\r\n            case KEY_SPACEBAR:\r\n                this.props.onKeySpacebar(e);\r\n                break;\r\n            }\r\n        }\r\n        render() {\r\n            const value = this.props.useCustomData ? this.props.value : this.state.value;\r\n            return (\r\n                <Component\r\n                    ref={this._comp}\r\n                    setValue={this.setValue}\r\n                    setKeyDown={this.setKeyDown}\r\n                    value={value}\r\n                    idKey={this.props.idKey}\r\n                    {...this.props} />\r\n                );\r\n        }\r\n    }\r\n    return ValueWrapper;\r\n};\r\n\r\nexport const withFocusState = Component => {\r\n    class FocusStateWrapper extends React.PureComponent {\r\n        static propTypes = {\r\n            onFocusChange: PropTypes.func,\r\n            focused: PropTypes.bool,\r\n            hover: PropTypes.bool,\r\n        }\r\n        constructor(props) {\r\n            super(props);\r\n            this.state = {\r\n                focused: false,\r\n                hover: false,\r\n            };\r\n            this.setFocus = this.setFocus.bind(this);\r\n            this.setHover = this.setHover.bind(this);\r\n            this._comp = React.createRef();\r\n        }\r\n        setFocus(val) {\r\n            if (this.state.focused === val) return;\r\n            const {onFocusChange} = this.props;\r\n            this.setState({\r\n                focused: val,\r\n            }, () => {\r\n                onFocusChange && onFocusChange(val);\r\n            });\r\n        }\r\n        setHover(val) {\r\n            if (this.state.hover === val) return;\r\n            this.setState({\r\n                hover: val,\r\n            });\r\n        }\r\n        render() {\r\n            return (<Component\r\n                ref={this._comp}\r\n                setFocus={this.setFocus}\r\n                setHover={this.setHover}\r\n                focused={this.props.focused || this.state.focused}\r\n                hover={this.props.hover || this.state.hover}\r\n                {...this.props} />);\r\n        }\r\n    }\r\n    return FocusStateWrapper;\r\n};\r\n\r\nexport const withTransition = ({\r\n    cssPrefix = '',\r\n    openTimeout = 350,\r\n    closeTimeout = 250,\r\n} = {}) => Component => {\r\n    class TransitionWrapper extends React.PureComponent {\r\n        static propTypes = {\r\n            className: PropTypes.string,\r\n            open: PropTypes.bool,\r\n            onOpenComplete: PropTypes.func,\r\n            onCloseComplete: PropTypes.func,\r\n        }\r\n        static defaultProps = {\r\n            open: false,\r\n            onOpenComplete: () => null,\r\n            onCloseComplete: () => null,\r\n        }\r\n        constructor(props) {\r\n            super(props);\r\n            this.transitionTimeout = 0;\r\n            this.executeTransition = this.executeTransition.bind(this);\r\n            this.clearCurrentTransition = this.clearCurrentTransition.bind(this);\r\n            this.state = {\r\n                slideState: props.open && TRANSITION_OPENED || TRANSITION_CLOSED,\r\n            };\r\n        }\r\n        clearCurrentTransition() {\r\n            if (this.transitionTimeout) {\r\n                clearTimeout(this.transitionTimeout);\r\n                this.transitionTimeout = 0;\r\n            }\r\n        }\r\n        executeTransition() {\r\n            const {open, onOpenComplete, onCloseComplete} = this.props;\r\n            const transitionState = open && TRANSITION_IS_OPENING || TRANSITION_IS_CLOSING;\r\n            const newState = open && TRANSITION_OPENED || TRANSITION_CLOSED;\r\n            this.clearCurrentTransition();\r\n            this.setState({\r\n                slideState: transitionState,\r\n            });\r\n            this.transitionTimeout = setTimeout(() => {\r\n                this.setState({\r\n                    slideState: newState,\r\n                }, open && onOpenComplete || onCloseComplete);\r\n            }, open && openTimeout || closeTimeout);\r\n        }\r\n        componentDidUpdate(prevProps) {\r\n            if (prevProps.open !== this.props.open) {\r\n                this.executeTransition();\r\n            }\r\n        }\r\n        render() {\r\n            const {slideState} = this.state;\r\n            const prefix = cssPrefix && `${cssPrefix}--` || '';\r\n            return (<Component\r\n                ref={this._comp}\r\n                cssTransition={{\r\n                    [`${prefix}${TRANSITION_CLOSED}`]: slideState === TRANSITION_IS_OPENING,\r\n                    [`${prefix}${TRANSITION_OPENED}`]: slideState === TRANSITION_IS_CLOSING,\r\n                    [`${prefix}${slideState}`]: true,\r\n                }}\r\n                {...this.props} />);\r\n        }\r\n    }\r\n    return TransitionWrapper;\r\n};\r\n\r\nexport const createContainer = ({type, displayName, className: defaultClass = '', ...defaults}) => {\r\n    const wrapper = ({children, className: classProp = '', ...props}) =>\r\n        createElement(type || Fragment, {\r\n            ...defaults,\r\n            className: `${defaultClass} ${classProp}`,\r\n            ...props,\r\n        }, children);\r\n    wrapper.propTypes = {\r\n        children: PropTypes.node,\r\n        className: PropTypes.string,\r\n    };\r\n    wrapper.displayName = displayName;\r\n    return wrapper;\r\n};\r\ncreateContainer.propTypes = {type: PropTypes.node, displayName: PropTypes.string};\r\n","// Number of pixels from the bottom the user must scroll to before more items are loaded\nexport const SCROLL_BOTTOM_LOAD_DISTANCE = 50;\n\n// Number of milliseconds that must elapse from when the user stopped typing\n// before the search is reset\nexport const SEARCH_RESET_DELAY = 1000;\n\n// Number of milliseconds that must elapse from when the user stopped typing in\n// the search bar before api call is fired\nexport const API_CALL_DELAY = 500;\n\n// Number of list items that are displayed at once\nexport const LIST_PAGE_SIZE = 25;\n\n// Key codes\nexport const KEY_ENTER = 13;\nexport const KEY_ESC = 27;\nexport const KEY_UP = 38;\nexport const KEY_DOWN = 40;\nexport const KEY_SPACEBAR = 32;\n\n// Transitions\nexport const TRANSITION_OPENED = 'opened';\nexport const TRANSITION_IS_OPENING = 'is-opening';\nexport const TRANSITION_CLOSED = 'closed';\nexport const TRANSITION_IS_CLOSING = 'is-closing';\n","export default __webpack_public_path__ + \"assets/spinner.7bad8ba9c1.svg\";","export default __webpack_public_path__ + \"assets/spinner-white.1f6af20700.svg\";","export default __webpack_public_path__ + \"assets/spinner-big.92beb8da7c.svg\";","import React, {Fragment} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport style from '../../../css/Spinner.css';\r\nimport classNames from 'classnames/bind';\r\nimport spinner from '../../../assets/spinner.svg';\r\nimport '../../../assets/spinner-big.svg';\r\nimport spinnerWhite from '../../../assets/spinner-white.svg';\r\n\r\nconst cx = classNames.bind(style);\r\n\r\nconst defaults = {\r\n    big: {\r\n        width: 106,\r\n        height: 106,\r\n        viewBox: '0 0 106 106',\r\n        strokeWidth: 10.5,\r\n    },\r\n    small: {\r\n        width: 15,\r\n        height: 15,\r\n        viewBox: '0 0 106 106',\r\n        strokeWidth: 15,\r\n    },\r\n};\r\n\r\nconst SpinnerSVG = ({strokeWidth, color = '#1ea6ed', ...props}) => (\r\n    <svg {...props}>\r\n        <g fill='none' strokeMiterlimit={10} strokeWidth={strokeWidth}>\r\n            <circle cx={53} cy={53} r={45}\r\n                stroke='#e9eaf0'\r\n                strokeDasharray='206 71 0'\r\n                transform='rotate(274 53 53)' />\r\n            <circle cx={53} cy={53} r={45}\r\n                stroke={color}\r\n                strokeDasharray='71 227 0'\r\n                transform='rotate(180 53 53)' />\r\n        </g>\r\n    </svg>\r\n);\r\n\r\nSpinnerSVG.propTypes = {\r\n    strokeWidth: PropTypes.number,\r\n    color: PropTypes.string,\r\n};\r\n\r\nexport const SpinnerBig = ({className, color, message}) => (\r\n    <div className={cx('SpinnerContainer')}>\r\n        {message && (\r\n            <div className={cx('SpinnerMessage')}>\r\n                {message}\r\n            </div>\r\n        )}\r\n        <SpinnerSVG\r\n            className={cx([\r\n                'SpinnerBig__image',\r\n                className,\r\n            ])}\r\n            color={color}\r\n            {...defaults.big} />\r\n    </div>\r\n);\r\n\r\nSpinnerBig.propTypes = {\r\n    className: PropTypes.string,\r\n    message: PropTypes.node,\r\n    color: PropTypes.string,\r\n};\r\n\r\nexport const SpinnerSmall = ({className, color}) => (\r\n    <SpinnerSVG\r\n        className={cx([\r\n            'SpinnerSmall__image',\r\n            className,\r\n        ])}\r\n        color={color}\r\n        {...defaults.small} />\r\n);\r\n\r\nSpinnerSmall.propTypes = {\r\n    className: PropTypes.string,\r\n    color: PropTypes.string,\r\n};\r\n\r\nexport const SpinnerImage = ({className, message, white}) => {\r\n    return (\r\n        <Fragment>\r\n            {message && (\r\n                <div className={cx('SpinnerMessage')}>\r\n                    {message}\r\n                </div>\r\n            )}\r\n            <img className={cx([\r\n                'SpinnerImage',\r\n                className,\r\n            ])} src={white ? spinnerWhite : spinner} />\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nSpinnerImage.propTypes = {\r\n    className: PropTypes.string,\r\n    message: PropTypes.node,\r\n    white: PropTypes.bool,\r\n};\r\n\r\nconst SpinnerWithLockSVG = ({strokeWidth, color = '#1ea6ed', ...props}) => (\r\n    <Fragment>\r\n        <svg {...props}>\r\n            <g fill='none' strokeMiterlimit={10} strokeWidth={strokeWidth}>\r\n                <circle cx={53} cy={53} r={45}\r\n                    stroke='#e9eaf0'\r\n                    strokeDasharray='206 71 0'\r\n                    transform='rotate(274 53 53)' />\r\n                <circle cx={53} cy={53} r={45}\r\n                    stroke={color}\r\n                    strokeDasharray='71 227 0'\r\n                    transform='rotate(180 53 53)' />\r\n            </g>\r\n        </svg>\r\n        <svg width='28' height='42' viewBox='0 0 28 42' fill='none'\r\n            xmlns='http://www.w3.org/2000/svg'>\r\n            <rect x='1' y='17' width='26' height='24' rx='2' stroke='#A5A5AA' strokeWidth='2' />\r\n            <path d='M5 10C5 5.02944 9.02944 1 14 1C18.9706 1 23 5.02944 23 10V17H5V10Z' stroke='#A5A5AA' strokeWidth='2' />\r\n            <path d='M9 10C9 7.23858 11.2386 5 14 5C16.7614 5 19 7.23858 19 10V17H9V10Z' stroke='#A5A5AA' strokeWidth='2' />\r\n            <mask id='path-4-inside-1' fill='white' >\r\n                <path fillRule='evenodd' clipRule='evenodd' d='M17.1786 28.4286C17.6939 27.7553 18 26.9134 18 26C18 23.7909 16.2091 22 14 22C11.7909 22 10 23.7909 10 26C10 26.9134 10.3061 27.7553 10.8214 28.4286L10 35H18L17.1786 28.4286Z' />\r\n            </mask>\r\n            <path d='M17.1786 28.4286L15.5903 27.2132L15.0924 27.8638L15.194 28.6767L17.1786 28.4286ZM10.8214 28.4286L12.806 28.6767L12.9076 27.8638L12.4097 27.2132L10.8214 28.4286ZM10 35L8.01544 34.7519L7.73444 37H10V35ZM18 35V37H20.2656L19.9846 34.7519L18 35ZM16 26C16 26.4589 15.8479 26.8766 15.5903 27.2132L18.7669 29.6441C19.5398 28.634 20 27.3679 20 26H16ZM14 24C15.1046 24 16 24.8954 16 26H20C20 22.6863 17.3137 20 14 20V24ZM12 26C12 24.8954 12.8954 24 14 24V20C10.6863 20 8 22.6863 8 26H12ZM12.4097 27.2132C12.1521 26.8766 12 26.4589 12 26H8C8 27.3679 8.46017 28.634 9.2331 29.6441L12.4097 27.2132ZM11.9846 35.2481L12.806 28.6767L8.83686 28.1806L8.01544 34.7519L11.9846 35.2481ZM18 33H10V37H18V33ZM15.194 28.6767L16.0154 35.2481L19.9846 34.7519L19.1631 28.1806L15.194 28.6767Z' fill='#A5A5AA' mask='url(#path-4-inside-1)' />\r\n        </svg>\r\n    </Fragment>\r\n);\r\n\r\nSpinnerWithLockSVG.propTypes = {\r\n    strokeWidth: PropTypes.number,\r\n    color: PropTypes.string,\r\n};\r\n\r\nexport const SpinnerWithLockBig = ({className, color, message, label = 'You are being redirected'}) => (\r\n    <Fragment>\r\n        {message &&\r\n            <div className={cx('SpinnerContainer')} style={{justifyContent: 'none'}}>\r\n                <div className={cx('SpinnerContainerText')}>\r\n                    <div className={cx('SpinnerContainerLockText')}>\r\n                        {label}\r\n                    </div>\r\n                    <div className={cx('SpinnerMessage SpinnerMessageText')}>\r\n                        {message}\r\n                    </div>\r\n                </div>\r\n                <div className={cx('SpinnerContainer')}>\r\n                    <SpinnerWithLockSVG\r\n                        className={cx([\r\n                            'SpinnerBig__image',\r\n                            className,\r\n                        ])}\r\n                        color={color}\r\n                        {...defaults.big} />\r\n                </div>\r\n            </div>\r\n            ||\r\n            <div className={cx('SpinnerContainer')}>\r\n                <SpinnerWithLockSVG\r\n                    className={cx([\r\n                        'SpinnerBig__image',\r\n                        className,\r\n                    ])}\r\n                    color={color}\r\n                    {...defaults.big} />\r\n            </div>\r\n        }\r\n    </Fragment>\r\n);\r\n\r\nSpinnerWithLockBig.propTypes = {\r\n    className: PropTypes.string,\r\n    message: PropTypes.node,\r\n    color: PropTypes.string,\r\n    label: PropTypes.node,\r\n};\r\n\r\nconst Spinner = ({message}) => (\r\n    <div className={cx('SpinnerContainer')}>\r\n        <SpinnerImage message={message} />\r\n    </div>\r\n);\r\n\r\nSpinner.propTypes = {\r\n    message: PropTypes.node,\r\n};\r\n\r\nexport default Spinner;\r\n","export default __webpack_public_path__ + \"assets/icon-success.13de5de634.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../../../css/TextInput.css';\nimport {compose} from '../../Util';\nimport {\n    withValidator,\n    withAutoFocus,\n    withValue,\n    withFocusState,\n    withStatic,\n} from '../../Hoc.jsx';\nimport {SpinnerSmall} from '../Spinner';\nimport iconSuccess from '../../../assets/icon-success.svg';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nconst STATUS_IDLE = 'idle';\nconst STATUS_DISABLED = 'disabled';\nconst STATUS_LOADING = 'loading';\nconst STATUS_SUCCESS = 'success';\nconst STATUS_ERROR = 'error';\n\nconst TYPE_TEXT = 'text';\nconst TYPE_EMAIL = 'email';\nconst TYPE_PASSWORD = 'password';\nconst TYPE_NUMBER = 'number';\n\nconst TextInput = React.forwardRef(({\n    className,\n    inputFieldClass,\n    status,\n    placeholder,\n    value,\n    message,\n    focused,\n    hover,\n    prepend,\n    append,\n    setValue,\n    setKeyDown,\n    setFocus,\n    setHover,\n    onClick,\n    validate,\n    inputType,\n    spinnerColor,\n    onKeyDown,\n    activeDescendant,\n    ariaLabel,\n    tabFocused,\n    id,\n}, ref) => (\n    <div\n        className={cx({\n            'TextInput': true,\n            [`TextInput--${status}`]: true,\n            'TextInput--focused': focused,\n            'TextInput--hover': hover,\n            [className]: !!className,\n        })}\n        onMouseEnter={() => {\n            setHover(true);\n        }}\n        onMouseLeave={() => {\n            setHover(false);\n        }}\n        onClick={() => {\n            ref && ref.current && ref.current.focus();\n            onClick(ref && ref.current);\n        }}\n        onKeyDown={onKeyDown}>\n        <span className={cx('TextInput__title')} />\n        <div className={cx({'TextInput__inner': true, 'TextInput__inner--tabFocused': !!tabFocused})}>\n            {prepend && (\n                <span className={cx('TextInput__inner__prepend')}>\n                    {prepend}\n                </span>\n            )}\n            {status === STATUS_DISABLED ? (\n                <span\n                    className={cx('TextInput__inner__disabled-input')}>\n                    {value}\n                </span>\n            ) : (\n                <input\n                    type={inputType}\n                    id={id}\n                    ref={ref}\n                    className={cx({\n                        'TextInput__inner__input': true,\n                        [inputFieldClass]: !!inputFieldClass,\n                    })}\n                    placeholder={placeholder}\n                    value={value || ''}\n                    onChange={e => {\n                        const value = e.target.value;\n                        setValue(value);\n                        if (validate) {\n                            validate(value);\n                        }\n                    }}\n                    onKeyDown={e => {\n                        setKeyDown(e.keyCode, e);\n                    }}\n                    onFocus={() => {\n                        setFocus(true);\n                    }}\n                    onBlur={() => {\n                        setFocus(false);\n                    }}\n                    autoComplete=\"off\"\n                    aria-owns=\"listbox\"\n                    aria-activedescendant={activeDescendant}\n                    aria-label={ariaLabel} />\n            )}\n            {status === STATUS_LOADING && (\n                <span className={cx('TextInput__inner__loader')}>\n                    <SpinnerSmall color={spinnerColor} />\n                </span>\n            )}\n            {status === STATUS_SUCCESS && (\n                <span className={cx('TextInput__inner__success')}>\n                    <img src={iconSuccess} />\n                </span>\n            )}\n            {append && (\n                <span className={cx('TextInput__inner__append')}>\n                    {append}\n                </span>\n            )}\n        </div>\n        {message && status === STATUS_ERROR &&\n            <span className={cx('TextInput__message')}>{message}</span>}\n    </div>\n));\n\nTextInput.displayName = 'TextInput';\n\nTextInput.propTypes = {\n    className: PropTypes.string,\n    inputFieldClass: PropTypes.string,\n    placeholder: PropTypes.string,\n    status: PropTypes.oneOf([\n        STATUS_IDLE,\n        STATUS_DISABLED,\n        STATUS_LOADING,\n        STATUS_SUCCESS,\n        STATUS_ERROR,\n    ]),\n    inputType: PropTypes.oneOf([\n        TYPE_TEXT,\n        TYPE_EMAIL,\n        TYPE_PASSWORD,\n        TYPE_NUMBER,\n    ]),\n    value: PropTypes.string,\n    message: PropTypes.node,\n    id: PropTypes.string,\n    focused: PropTypes.bool,\n    hover: PropTypes.bool,\n    prepend: PropTypes.node,\n    append: PropTypes.node,\n    setValue: PropTypes.func,\n    setKeyDown: PropTypes.func,\n    setFocus: PropTypes.func,\n    setHover: PropTypes.func,\n    onClick: PropTypes.func,\n    validate: PropTypes.func,\n    spinnerColor: PropTypes.string,\n    onKeyDown: PropTypes.func,\n    activeDescendant: PropTypes.string,\n    ariaLabel: PropTypes.string,\n    tabFocused: PropTypes.bool,\n};\n\nTextInput.defaultProps = {\n    status: STATUS_IDLE,\n    inputType: TYPE_TEXT,\n    value: '',\n    focused: false,\n    hover: false,\n    setValue: () => null,\n    setKeyDown: () => null,\n    setFocus: () => null,\n    setHover: () => null,\n    onClick: () => null,\n};\n\nconst TextInputComposer = compose(\n    withAutoFocus,\n    withValue,\n    withFocusState,\n    withStatic({\n        STATUS_IDLE,\n        STATUS_DISABLED,\n        STATUS_LOADING,\n        STATUS_SUCCESS,\n        STATUS_ERROR,\n        TYPE_TEXT,\n        TYPE_EMAIL,\n        TYPE_PASSWORD,\n        TYPE_NUMBER,\n    }),\n);\n\nconst EmailInputComposer = compose(\n    TextInputComposer,\n    withValidator({type: TYPE_EMAIL}),\n    withStatic({\n        displayName: 'EmailInput',\n    }),\n);\n\nexport const EmailInput = EmailInputComposer(TextInput);\n\nexport default TextInputComposer(TextInput);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport style from '../../../css/List.css';\n\nconst cx = classNames.bind(style);\n\nexport const ROW_TYPE_1_COL = '1col';\nexport const ROW_TYPE_2_COL = '2col';\nexport const ROW_SIZE_STANDARD = 'standard';\nexport const ROW_SIZE_LARGE = 'large';\n\nconst AbstractList = React.forwardRef(({\n    className,\n    size,\n    type,\n    keyDown,\n    keyUp,\n    onMouseOver,\n    children,\n    withPointer,\n    activeDescendant,\n    tabIndex,\n    ariaLabel,\n    ariaExpanded,\n    ariaHidden,\n    role,\n    blur,\n}, ref) => (\n    <div\n        className={cx({\n            'List': true,\n            [className]: !!className,\n        })}\n        ref={ref}\n        onClick={e => e.stopPropagation()}\n        onKeyDown={e => {\n            if (!(withPointer && keyDown)) return;\n            e.preventDefault();\n            keyDown(e);\n        }}\n        onKeyUp={e => {\n            if (!keyUp) return;\n            keyUp(e);\n        }}\n        onMouseMove={() => {\n            onMouseOver && onMouseOver(true);\n        }}\n        onMouseLeave={() => {\n            onMouseOver && onMouseOver(false);\n        }}\n        onBlur={() => {\n            blur && blur(true);\n        }}\n        role={role}\n        tabIndex={tabIndex}\n        aria-hidden={ariaHidden}\n        aria-label={ariaLabel}\n        aria-expanded={ariaExpanded}\n        aria-activedescendant={activeDescendant}>\n        {React.Children.map(children, child => React.cloneElement(child, {\n            size,\n            type,\n        }))}\n    </div>\n));\n\nAbstractList.displayName = 'AbstractList';\n\nAbstractList.propTypes = {\n    type: PropTypes.oneOf([\n        ROW_TYPE_1_COL,\n        ROW_TYPE_2_COL,\n    ]),\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    className: PropTypes.string,\n    children: PropTypes.node,\n    keyDown: PropTypes.func,\n    keyUp: PropTypes.func,\n    withPointer: PropTypes.bool,\n    onMouseOver: PropTypes.func,\n    tabIndex: PropTypes.string,\n    ariaLabel: PropTypes.string,\n    activeDescendant: PropTypes.string,\n    ariaExpanded: PropTypes.bool,\n    role: PropTypes.string,\n    blur: PropTypes.func,\n    ariaHidden: PropTypes.string,\n};\n\nAbstractList.defaultProps = {\n    type: ROW_TYPE_1_COL,\n    size: ROW_SIZE_STANDARD,\n    withPointer: false,\n    role: 'listbox',\n};\n\nexport default AbstractList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {ROW_TYPE_1_COL, ROW_TYPE_2_COL, ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from './Abstract';\nimport style from '../../../css/List.css';\n\nconst cx = classNames.bind(style);\n\nconst ListRow = ({\n    type,\n    size,\n    onClick,\n    className,\n    children,\n    onMouseOver,\n    status,\n    ariaLabel,\n    ariaSelected,\n    ariaHidden,\n    role,\n    id,\n}) => (\n    <div\n        className={cx({\n            'List__row': true,\n            [`List__row--${type}`]: true,\n            [`List__row--${size}`]: true,\n            'List__row--hotspot': !!onClick,\n            [className]: !!className,\n        })}\n        id={id}\n        onClick={onClick}\n        onMouseMove={() => {\n            onMouseOver && onMouseOver(true);\n        }}\n        onMouseLeave={() => {\n            onMouseOver && onMouseOver(false);\n        }}\n        aria-selected={role === 'option' ? ariaSelected : undefined}\n        aria-checked={role === 'radio' ? ariaSelected : undefined}\n        aria-label={ariaLabel}\n        aria-hidden={ariaHidden}\n        role={role}>\n        {React.Children.map(children, child => React.cloneElement(child, {size, status}))}\n    </div>\n);\n\nListRow.propTypes = {\n    type: PropTypes.oneOf([\n        ROW_TYPE_1_COL,\n        ROW_TYPE_2_COL,\n    ]),\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    onClick: PropTypes.func,\n    className: PropTypes.string,\n    hover: PropTypes.bool,\n    onMouseOver: PropTypes.func,\n    children: PropTypes.node,\n    status: PropTypes.string,\n    id: PropTypes.string,\n    ariaLabel: PropTypes.string,\n    ariaSelected: PropTypes.bool,\n    ariaHidden: PropTypes.string,\n    role: PropTypes.string,\n};\n\nListRow.defaultProps = {\n    type: ROW_TYPE_1_COL,\n    size: ROW_SIZE_STANDARD,\n    onClick: null,\n    role: 'option',\n};\n\nexport default ListRow;\n","export default __webpack_public_path__ + \"assets/bank-default-logo.80873ef4fc.png\";","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames/bind';\r\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from './Abstract';\r\nimport style from '../../../css/List.css';\r\nimport bankDefaultLogo from '../../../assets/bank-default-logo.png';\r\n\r\nconst cx = classNames.bind(style);\r\n\r\nconst ListCell = ({\r\n    title,\r\n    data,\r\n    extra,\r\n    size,\r\n    className,\r\n    rawData,\r\n    appendItem,\r\n}) => (\r\n    <div className={cx({\r\n        'List__row__cell': true,\r\n        [`List__row__cell--${size}`]: true,\r\n        [className]: !!className,\r\n    })}>\r\n        {(size === ROW_SIZE_LARGE) && rawData && rawData.logoUri && (\r\n            <div className={cx('List__row__cell__extra')}>\r\n                <img src={rawData.logoUri} onError={e => {\r\n                    if (e.target.src !== `${bankDefaultLogo}`) {\r\n                        e.target.src = `${bankDefaultLogo}`;\r\n                    }\r\n                }} alt={''} className={cx('List__row__cell__extra__image')} />\r\n            </div>\r\n        )}\r\n        <div className={cx('List__row__cell__main')} >\r\n            {(size === ROW_SIZE_LARGE) && title && (\r\n                <span className={cx('List__row__cell__title')}>\r\n                    {title}\r\n                </span>\r\n            )}\r\n            <span className={cx('List__row__cell__data')}>\r\n                {data}\r\n            </span>\r\n        </div>\r\n        {(size === ROW_SIZE_LARGE) && extra && (\r\n            <div className={cx('List__row__cell__extra')}>\r\n                <span className={cx('List__row__cell__extra__info')}>\r\n                    {extra}\r\n                </span>\r\n            </div>\r\n        )}\r\n        {appendItem && (\r\n            <div className={cx('List__row__cell__extra')}>\r\n                <div className={cx('List__row__cell__append')}>\r\n                    {appendItem}\r\n                </div>\r\n            </div>\r\n        )}\r\n    </div>\r\n);\r\n\r\nListCell.propTypes = {\r\n    title: PropTypes.node,\r\n    data: PropTypes.node.isRequired,\r\n    extra: PropTypes.node,\r\n    size: PropTypes.oneOf([\r\n        ROW_SIZE_STANDARD,\r\n        ROW_SIZE_LARGE,\r\n    ]),\r\n    className: PropTypes.string,\r\n    dropdown: PropTypes.bool,\r\n    rawData: PropTypes.object,\r\n    appendItem: PropTypes.node,\r\n};\r\n\r\nListCell.defaultProps = {\r\n    title: '',\r\n    data: '',\r\n    extra: '',\r\n    appendItem: '',\r\n    size: ROW_SIZE_STANDARD,\r\n};\r\n\r\nexport default ListCell;\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from './Abstract';\nimport {SpinnerSmall} from '../Spinner';\nimport style from '../../../css/List.css';\n\nconst cx = classNames.bind(style);\n\nconst ListCellLoader = ({\n    size,\n    className,\n    spinnerColor,\n}) => (\n    <div className={cx({\n        'List__row__cell': true,\n        'List__row__cell--loader': true,\n        [`List__row__cell--${size}`]: true,\n        [className]: !!className,\n    })}>\n        <span className={cx('List__row__cell__loader')}>\n            <SpinnerSmall color={spinnerColor} />\n        </span>\n    </div>\n);\n\nListCellLoader.propTypes = {\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    spinnerColor: PropTypes.string,\n    className: PropTypes.string,\n};\n\nListCellLoader.defaultProps = {\n    size: ROW_SIZE_STANDARD,\n};\n\nexport default ListCellLoader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport style from '../../../css/List.css';\nimport AbstractList from './Abstract';\nimport ListRow from './Row';\nimport ListCell from './Cell';\nimport ListCellLoader from './CellLoader';\nimport {isNull, getAriaLabelForList} from '../../Util';\nimport {SEARCH_RESET_DELAY} from '../../config/constants';\n\nconst cx = classNames.bind(style);\n\nlet timer = Date.now();\n\nconst List = React.forwardRef(({\n    data,\n    value,\n    loadingFirstBatch,\n    loadingMore,\n    border,\n    selected,\n    setSelected,\n    withPointer,\n    className,\n    setSearch,\n    searchTerm,\n    rowClass,\n    spinnerColor,\n    allowDeselect,\n    CellComponent,\n    tabIndex,\n    activeDescendant,\n    showFocusOutline,\n    ariaHidden,\n    focused,\n    appendItem,\n    ...props\n}, ref) => (\n    <AbstractList\n        ref={ref}\n        className={cx({\n            [className]: !!className,\n            'List--no-border': border === false,\n        })}\n        onMouseOver={over => {\n            const selectedIndex = data.findIndex(item => item === value);\n            withPointer && !over && selectedIndex >= 0 && setSelected(selectedIndex, {\n                preventScroll: true,\n            });\n        }}\n        keyDown={event => {\n            const { key } = event;\n            if (key.length === 1 && /[a-z0-9]/i.test(key)) {\n                const now = Date.now();\n                if (now - timer >= SEARCH_RESET_DELAY) {\n                    setSearch(key);\n                } else {\n                    setSearch(searchTerm + key);\n                }\n                timer = now;\n            } else if (key === 'ArrowDown') {\n                withPointer && setSelected(isNull(selected) ? 0 : selected + 1, {scroll: true});\n            } else if (key === 'ArrowUp') {\n                withPointer && setSelected(isNull(selected) ? 0 : selected - 1, {scroll: true});\n            } else if (key === 'Escape') {\n                withPointer && allowDeselect && setSelected(null, {triggerChange: true});\n            } else if (key === 'Enter') {\n                withPointer && setSelected(selected, {triggerChange: true});\n            } else if (key === 'Tab') {\n                showFocusOutline(false);\n                ref.current.blur();\n            }\n        }}\n        keyUp={ event => {\n            const { key } = event;\n            if (key === 'Tab') {\n                showFocusOutline(true);\n            }\n        }}\n        blur={blur => blur && showFocusOutline(false)}\n        withPointer={withPointer}\n        {...props}\n        ariaHidden={ariaHidden}\n        tabIndex={tabIndex}\n        ariaExpanded={focused}\n        activeDescendant={activeDescendant || `${className}-${selected}`}>\n        {([\n            ...data.map((item, index) => (\n                <ListRow\n                    id={`${className}-${index}`}\n                    key={item.key}\n                    className={cx({\n                        'List__row--selected': selected === index,\n                        'List__row--active': value && item && (value.rawData === item.rawData)\n                            || false,\n                        [rowClass]: !!rowClass,\n                    })}\n                    onClick={e => {\n                        e.stopPropagation();\n                        showFocusOutline(false);\n                        withPointer && setSelected(index, {triggerChange: true});\n                    }}\n                    onMouseOver={over => withPointer && over && setSelected(index, {\n                        preventScroll: true,\n                    })}\n                    ariaSelected={(selected === index)}\n                    ariaHidden={ariaHidden}\n                    ariaLabel={className && getAriaLabelForList(className, item)} >\n                    <CellComponent title={item.title} data={item.data} extra={item.extra} rawData={item.rawData} appendItem={appendItem} />\n                </ListRow>\n            )),\n            (loadingFirstBatch || loadingMore) && (\n                <ListRow\n                    key={-1}>\n                    <ListCellLoader spinnerColor={spinnerColor} />\n                </ListRow>\n            ),\n        ]).filter(i => !!i)}\n    </AbstractList>\n));\n\nList.displayName = 'List';\n\nList.propTypes = {\n    data: PropTypes.array,\n    loadingFirstBatch: PropTypes.bool,\n    loadingMore: PropTypes.bool,\n    border: PropTypes.bool,\n    selected: PropTypes.number,\n    setSearch: PropTypes.func,\n    searchTerm: PropTypes.string,\n    rowClass: PropTypes.string,\n    spinnerColor: PropTypes.string,\n    value: PropTypes.any,\n    setSelected: PropTypes.func,\n    withPointer: PropTypes.bool,\n    className: PropTypes.string,\n    allowDeselect: PropTypes.bool,\n    CellComponent: PropTypes.func.isRequired,\n    activeDescendant: PropTypes.string,\n    showFocusOutline: PropTypes.func,\n    tabIndex: PropTypes.string,\n    ariaHidden: PropTypes.string,\n    focused: PropTypes.bool,\n    appendItem: PropTypes.node,\n};\n\nList.defaultProps = {\n    border: true,\n    selected: null,\n    setSelected: () => null,\n    showFocusOutline: () => null,\n    CellComponent: ListCell,\n    ariaHidden: 'false',\n    appendItem: '',\n};\n\nexport default List;\n","import React, {Component, Fragment} from 'react';\nimport {createPortal} from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {compose} from '../../Util';\nimport {withStatic} from '../../Hoc.jsx';\nimport style from '../../../css/Overlay.css';\nimport Dom from '../../Dom';\n\nconst cx = classNames.bind(style);\n\nconst ANCHOR_TOP = 'top';\nconst ANCHOR_BOTTOM = 'bottom';\nconst ALIGN_LEFT = 'left';\nconst ALIGN_RIGHT = 'right';\n\nclass Overlay extends Component {\n    constructor(props) {\n        super(props);\n        this.overlayContainer = Dom.createElement('div', {\n            'class': cx({'Overlay': true, [this.props.overlayClass]: !!this.props.overlayClass}),\n        });\n        \n        const evtHandlers = {\n            ...(props.onClick && {'click': props.onClick}),\n            ...(props.onMouseUp && {'mouseup': props.onMouseUp}),\n        };\n\n        Object.keys(evtHandlers).forEach( name => {\n            this.overlayContainer.addEventListener(name, evt => {\n                if (evt.target !== this.overlayContainer) return;\n                evtHandlers[name](evt)\n            }, false);\n        });\n\n        document.body.appendChild(this.overlayContainer);\n    }\n\n    componentWillUnmount() {\n        document.body.removeChild(this.overlayContainer);\n    }\n\n    render() {\n        const {dummy, anchor, children, align, width, rectPosition} = this.props;\n        let rect;\n        if (rectPosition && Object.keys(rectPosition)?.length > 0) {\n            rect = rectPosition;\n        } else {\n            rect = dummy ? dummy.getBoundingClientRect() : {\n                left: 0,\n                top: 0,\n                width: '100%',\n                height: '100%',\n            };\n        }\n        const styleWidth = width || rect.width;\n        return createPortal(\n            <Fragment>\n                <div\n                    className={cx({'Overlay__bounds': true, [this.props.portalClass]: !!this.props.portalClass})}\n                    style={{\n                        left: rect.left + (align === ALIGN_RIGHT ? rect.width - styleWidth : 0)\n                            + window.scrollX,\n                        top: rect.top + (anchor === ANCHOR_BOTTOM ? rect.height : 0)\n                            + window.scrollY,\n                        width: styleWidth,\n                    }}>\n                    {children}\n                </div>\n            </Fragment>,\n            this.overlayContainer\n        );\n    }\n}\n\nOverlay.propTypes = {\n    children: PropTypes.node.isRequired,\n    anchor: PropTypes.oneOf([\n        ANCHOR_TOP,\n        ANCHOR_BOTTOM,\n    ]),\n    align: PropTypes.oneOf([\n        ALIGN_LEFT,\n        ALIGN_RIGHT,\n    ]),\n    width: PropTypes.number,\n    dummy: PropTypes.any,\n    onClick: PropTypes.func,\n    overlayClass: PropTypes.string,\n    portalClass: PropTypes.string,\n    rectPosition: PropTypes.object,\n};\n\nOverlay.defaultProps = {\n    anchor: ANCHOR_TOP,\n    align: ALIGN_LEFT,\n    width: 0,\n    onClick: () => null,\n    rectPosition: {},\n};\n\nexport default compose(\n    withStatic({\n        ANCHOR_TOP, ANCHOR_BOTTOM, ALIGN_LEFT, ALIGN_RIGHT,\n    }),\n)(Overlay);\n","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {isNull} from '../../Util';\nimport style from '../../../css/Scroll.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nclass SimpleScroll extends PureComponent {\n    static propTypes = {\n        children: PropTypes.node.isRequired,\n        selected: PropTypes.number,\n        autoFocus: PropTypes.bool,\n        maxHeight: PropTypes.number,\n        setSelected: PropTypes.func,\n        withPointer: PropTypes.bool,\n        className: PropTypes.string,\n    }\n    static defaultProps = {\n        selected: null,\n        autoFocus: false,\n    }\n    constructor(props) {\n        super(props);\n        this.state = {\n            tabFocused: false,\n        };\n        this.container = React.createRef();\n        this.overflow = React.createRef();\n        this.handleScroll = this.handleScroll.bind(this);\n        this.setSelected = this.setSelected.bind(this);\n        this.showFocusOutline = this.showFocusOutline.bind(this);\n    }\n    /*\n     * Scrolls list item into view\n     *\n     * @param {index} selected - index of the selected item to scroll into view, this is\n     * essentially always the one that is denoted by cursor\n     */\n    handleScroll(selected) {\n        const container = this.container.current;\n        const overflow = this.overflow.current;\n        if (selected === null || !overflow) {\n            container !== null ? container.scrollTop = 0 : null;\n            return 0;\n        }\n        if (selected >= overflow.children.length) {\n            container.scrollTop = 0;\n            return 0;\n        }\n        const el = overflow.children[selected];\n        const offsetUp = el.offsetTop - overflow.offsetTop - container.scrollTop;\n        const offsetDown = offsetUp + el.offsetHeight - container.offsetHeight;\n        const scrollUp = offsetUp < 0;\n        const scrollDown = offsetDown > 0;\n        const scrollBy = scrollDown && offsetDown || scrollUp && offsetUp || 0;\n        if (scrollBy === 0) return 0;\n        container.scrollTop += scrollBy;\n        return scrollBy;\n    }\n\n    showFocusOutline = visible => {\n        this.setState({tabFocused: visible});\n    }\n\n    componentDidUpdate(prevProps) {\n        if (this.props.selected !== prevProps.selected) {\n            this.handleScroll(this.props.selected);\n        }\n    }\n    componentDidMount() {\n        const {autoFocus} = this.props;\n        if (this.overflow.current && autoFocus) {\n            this.focusTimeout = setTimeout(() => {\n                this.overflow.current.focus();\n            }, 100);\n        }\n        const {selected} = this.props;\n        if (isNull(selected)) return;\n        this.handleScroll(selected);\n    }\n    componentWillUnmount() {\n        if (this.focusTimeout) {\n            clearTimeout(this.focusTimeout);\n        }\n    }\n    setSelected(selected, {doneCallback, preventScroll, ...options} = {}) {\n        if (this.props.withPointer && this.props.setSelected) {\n            this.props.setSelected(selected, {\n                doneCallback: () => {\n                    !preventScroll && this.handleScroll(selected);\n                    doneCallback && doneCallback();\n                },\n                ...options,\n            });\n        }\n    }\n    render() {\n        const {children, maxHeight, className, ...props} = this.props;\n        return (\n            <div\n                className={cx({\n                    'Scroll': true,\n                    'Scroll__tabFocused': !!this.state.tabFocused,\n                    [className]: !!className,\n                })}\n                style={{\n                    maxHeight,\n                }}\n                ref={this.container}>\n                {React.Children.map(children, child => React.cloneElement(child, {\n                    ref: this.overflow,\n                    border: false,\n                    ...props,\n                    setSelected: this.setSelected,\n                    showFocusOutline: this.showFocusOutline,\n                    tabFocused: this.state.tabFocused,\n                }))}\n            </div>\n        );\n    }\n}\n\nexport default SimpleScroll;\n","export default __webpack_public_path__ + \"assets/icon-dropdown-caret.db41e0be52.svg\";","import React, {PureComponent} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames/bind';\r\nimport List from '../List';\r\nimport {isNull} from '../../Util';\r\nimport Overlay from '../Overlay';\r\nimport ListCell from '../List/Cell';\r\nimport SimpleScroll from '../Scroll/Simple';\r\nimport iconDropdownCaret from '../../../assets/icon-dropdown-caret.svg';\r\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from '../List/Abstract';\r\nimport style from '../../../css/Dropdown.css';\r\n\r\nconst cx = classNames.bind(style);\r\n\r\nclass AbstractDropdown extends PureComponent {\r\n    constructor() {\r\n        super();\r\n        this.state = {\r\n            focused: false,\r\n        };\r\n        this.handleClickContainer = this.handleClickContainer.bind(this);\r\n        this.onKeyDown = this.onKeyDown.bind(this);\r\n    }\r\n    handleClickContainer() {\r\n        this.props.setDropDownState(undefined);\r\n        this.setState({isTabKeyPressed: false});\r\n        this.setState(prevState => ({focused: !prevState.focused}));\r\n    }\r\n    onKeyDown(event, dummy) {\r\n        if (event.key === 'Enter') {\r\n            if (this.state.focused === true) dummy.focus();\r\n            this.props.setDropDownState(undefined);\r\n            this.setState(prevState => ({focused: !prevState.focused}));\r\n        } else if (event.key === 'Tab') {\r\n            if (this.state.focused === true) dummy.focus();\r\n            this.setState({focused: false, isTabKeyPressed: false});\r\n        }\r\n    }\r\n    onKeyUp(event) {\r\n        if (event.key === 'Tab') {\r\n            this.setState({isTabKeyPressed: true});\r\n        }\r\n    }\r\n    componentDidUpdate(prevProps) {\r\n        if (!prevProps.value && !this.props.value) return;\r\n        if (!prevProps.value || !this.props.value\r\n            || this.props.value.key !== prevProps.value.key) {\r\n            this.setState({\r\n                focused: false,\r\n            });\r\n        }\r\n    }\r\n    render() {\r\n        const {value, disabled, className, labelClass, rowClass, listClass, scrollClass,\r\n            displayClass, selectedClass, unselectedClass, label, placeholder, align, allowDeselect,\r\n            showCaret, selected, data, setSelected, withPointer, setSearch, size, width, searchTerm,\r\n            CellComponent, dropDownState, ariaLabel, overlayClass,\r\n        } = this.props;\r\n        const focused = dropDownState !== undefined ? dropDownState : this.state.focused;\r\n        const dropdownClasses = cx({\r\n            'Dropdown__container': true,\r\n            [`Dropdown__container--${size}`]: true,\r\n            'Dropdown__container--open': focused,\r\n            'Dropdown__container--disabled': disabled,\r\n            'Dropdown__container--tabFocused': this.state.isTabKeyPressed,\r\n            [className]: !!className,\r\n        });\r\n        const labelClasses = cx({\r\n            [labelClass]: !!labelClass,\r\n        });\r\n        const displayClasses = cx({\r\n            'Dropdown__container__display': true,\r\n            [displayClass]: !!displayClass,\r\n            [selectedClass]: selected >= 0 && selectedClass,\r\n            [unselectedClass]: selected < 0 && unselectedClass,\r\n            'Dropdown__container__display--placeholder': isNull(value),\r\n        });\r\n        return (\r\n            <div\r\n                className={dropdownClasses}\r\n                onClick={this.handleClickContainer}\r\n                ref={r => this.dummy = r}\r\n                onKeyDown={e => this.onKeyDown(e, this.dummy)}\r\n                onKeyUp={e => this.onKeyUp(e)}\r\n                onBlur={() => this.setState({isTabKeyPressed: false})}\r\n                tabIndex='0'\r\n                aria-label={ariaLabel}\r\n                role='button'\r\n            >\r\n                {label && <span className={labelClasses}>{label}</span>}\r\n                <div className={displayClasses} style={{display: 'inline-block'}}>\r\n                    {!isNull(value)\r\n                        ? <CellComponent\r\n                            {...value}\r\n                            size={size} />\r\n                        : placeholder}\r\n                </div>\r\n                {showCaret &&\r\n                    <img className={cx('Dropdown__container__caret')}\r\n                        src={iconDropdownCaret} alt='' />}\r\n                {focused &&\r\n                    <Overlay\r\n                        dummy={this.dummy}\r\n                        overlayClass={overlayClass}\r\n                        anchor={Overlay.ANCHOR_BOTTOM}\r\n                        onClick={() => {\r\n                            this.setState({\r\n                                focused: false,\r\n                            });\r\n                        }}\r\n                        align={align}\r\n                        width={width}>\r\n                        <SimpleScroll\r\n                            selected={selected}\r\n                            maxHeight={275}\r\n                            withPointer={withPointer}\r\n                            setSelected={setSelected}\r\n                            className={cx({\r\n                                'Dropdown__scroll': true,\r\n                                [scrollClass]: !!scrollClass,\r\n                            })}\r\n                            autoFocus>\r\n                            <List\r\n                                className={listClass}\r\n                                data={data}\r\n                                setSearch={setSearch}\r\n                                searchTerm={searchTerm}\r\n                                value={value}\r\n                                size={size}\r\n                                rowClass={rowClass}\r\n                                allowDeselect={allowDeselect}\r\n                                CellComponent={CellComponent}\r\n                                tabIndex='-1'\r\n                                focused={focused} />\r\n                        </SimpleScroll>\r\n                    </Overlay>\r\n                }\r\n            </div>\r\n        );\r\n    }\r\n}\r\n\r\nAbstractDropdown.defaultProps = {\r\n    data: [],\r\n    size: ROW_SIZE_STANDARD,\r\n    disabled: false,\r\n    placeholder: 'Please select',\r\n    align: Overlay.ALIGN_LEFT,\r\n    width: 0,\r\n    CellComponent: ListCell,\r\n    setDropDownState: () => {},\r\n};\r\n\r\nAbstractDropdown.propTypes = {\r\n    data: PropTypes.array,\r\n    size: PropTypes.oneOf([\r\n        ROW_SIZE_STANDARD,\r\n        ROW_SIZE_LARGE,\r\n    ]),\r\n    selected: PropTypes.number,\r\n    value: PropTypes.any,\r\n    setSelected: PropTypes.func,\r\n    setSearch: PropTypes.func,\r\n    searchTerm: PropTypes.string,\r\n    withPointer: PropTypes.bool,\r\n    label: PropTypes.string,\r\n    disabled: PropTypes.bool,\r\n    className: PropTypes.string,\r\n    listClass: PropTypes.string,\r\n    displayClass: PropTypes.string,\r\n    labelClass: PropTypes.string,\r\n    selectedClass: PropTypes.string,\r\n    unselectedClass: PropTypes.string,\r\n    rowClass: PropTypes.string,\r\n    overlayClass: PropTypes.string,\r\n    scrollClass: PropTypes.string,\r\n    showCaret: PropTypes.bool,\r\n    allowDeselect: PropTypes.bool,\r\n    placeholder: PropTypes.string,\r\n    align: PropTypes.oneOf([\r\n        Overlay.ALIGN_LEFT,\r\n        Overlay.ALIGN_RIGHT,\r\n    ]),\r\n    width: PropTypes.number,\r\n    CellComponent: PropTypes.func.isRequired,\r\n    dropDownState: PropTypes.bool,\r\n    setDropDownState: PropTypes.func,\r\n    ariaLabel: PropTypes.string,\r\n};\r\n\r\nexport default AbstractDropdown;\r\n","import React from 'react';\nimport AbstractDropdown from './Abstract';\nimport classNames from 'classnames/bind';\nimport style from '../../../css/DefaultDropdown.css';\n\nconst cx = classNames.bind(style);\n\nconst Dropdown = props => (\n    <AbstractDropdown\n        className={cx('DefaultDropdown__container')}\n        displayClass={cx('DefaultDropdown__container__display')}\n        showCaret\n        {...props} />\n);\n\nexport default Dropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {compose} from '../../Util';\nimport {withAutoFocus, withStatic} from '../../Hoc.jsx';\nimport style from '../../../css/Button.css';\n\nconst cx = classNames.bind(style);\n\nconst TYPE_PRIMARY = 'primary';\nconst TYPE_SECONDARY = 'secondary';\nconst TYPE_DELETE = 'delete';\nconst TYPE_GHOST = 'ghost';\nconst TYPE_GHOST_WARNING = 'ghost-warning';\nconst TYPE_SUCCESS = 'success';\n\nconst STATUS_IDLE = 'idle';\nconst STATUS_DISABLED = 'disabled';\nconst STATUS_LOADING = 'loading';\n\nconst WITH_FORWARD = 'forward';\nconst WITH_ICON = 'icon';\n\nconst Button = React.forwardRef(({\n    type,\n    status,\n    loadingText,\n    withForward,\n    icon,\n    onClick,\n    text,\n    className,\n    showFocusOutline,\n    tabStatus,\n}, ref) => {\n    const isTabFoucused = tabStatus?.tabFocused && (tabStatus?.type === type);\n    return (\n        <div className={cx({\n            'Button-container': true,\n            'Button-container--tabFocussed': !!isTabFoucused,\n        })}>\n            <button\n                className={cx({\n                    'Button': true,\n                    [`Button--${type}--tabFocussed`]: !!isTabFoucused,\n                    [`Button--${type}--${status}`]: true,\n                    'Button--with-forward': withForward,\n                    'Button--with-icon': !!icon,\n                    [className]: !!className,\n                })}\n                onClick={() => {\n                    showFocusOutline(type, false);\n                    if (status === STATUS_IDLE) {\n                        onClick();\n                    }\n                }}\n                onBlur={e => {\n                    showFocusOutline(type, false);\n                }}\n                onKeyUp={e => {\n                    if (e.key === 'Tab') showFocusOutline(type, true);\n                }}\n                onKeyDown={e => {\n                    if (e.key === 'Tab') showFocusOutline(type, false);\n                }}\n                ref={ref}>\n                <span className={cx('label')}>\n                    {status === STATUS_LOADING && loadingText || text || 'Continue'}\n                </span>\n            </button>\n        </div>\n    );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n    type: PropTypes.oneOf([\n        TYPE_PRIMARY,\n        TYPE_SECONDARY,\n        TYPE_DELETE,\n        TYPE_SUCCESS,\n        TYPE_GHOST,\n        TYPE_GHOST_WARNING,\n    ]),\n    status: PropTypes.oneOf([\n        STATUS_IDLE,\n        STATUS_DISABLED,\n        STATUS_LOADING,\n    ]),\n    loadingText: PropTypes.node,\n    withForward: PropTypes.bool,\n    icon: PropTypes.string,\n    onClick: PropTypes.func,\n    autoFocus: PropTypes.bool,\n    className: PropTypes.string,\n    showFocusOutline: PropTypes.func,\n    tabStatus: PropTypes.any,\n    text: PropTypes.node,\n};\n\nButton.defaultProps = {\n    type: TYPE_PRIMARY,\n    status: STATUS_IDLE,\n    loadingText: 'Please wait...',\n    withForward: false,\n    icon: '',\n    onClick: () => {},\n    showFocusOutline: () => {},\n    autoFocus: false,\n};\n\nexport default compose(\n    withAutoFocus,\n    withStatic({\n        TYPE_PRIMARY, TYPE_SECONDARY, TYPE_DELETE, TYPE_SUCCESS,\n        TYPE_GHOST, STATUS_IDLE, STATUS_DISABLED, STATUS_LOADING,\n        WITH_FORWARD, WITH_ICON, TYPE_GHOST_WARNING\n    }),\n)(Button);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../../../css/TokenContainer.css';\nimport classNames from 'classnames/bind';\nimport {forceRedrawForSafari} from '../../Util.js';\n\nconst cx = classNames.bind(style);\n\nclass TokenContainer extends Component {\n    componentDidMount() {\n        // hack for safari redraw issue\n        forceRedrawForSafari();\n    }\n    render() {\n        const {className, children, noMargin, noScrollable, innerRef, ...props} = this.props;\n        const classNames = cx({\n            'TokenContainer': true,\n            'TokenContainer-margin': !noMargin,\n            'TokenContainer-scrollable': !noScrollable,\n            [className]: !!className,\n        });\n        return <div ref={innerRef} className={classNames} {...props}>{children}</div>;\n    }\n}\n\nTokenContainer.propTypes = {\n    className: PropTypes.string,\n    children: PropTypes.node,\n    noMargin: PropTypes.bool,\n    noScrollable: PropTypes.bool,\n    innerRef: PropTypes.any,\n};\n\nexport default TokenContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../../../css/TokenTitle.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nconst TokenTitle = ({className, children, sub, backArrow, arrowColor = '#05A5F0', ...props}) => {\n    const classNames = cx({\n        TokenTitle: !sub,\n        TokenSubtitle: sub,\n        'TokenTitle--with-back': backArrow,\n        [className]: !!className,\n    });\n    return (\n        <div className={classNames} role={sub ? undefined : 'heading'} {...props}>\n            {backArrow &&\n                <span className={cx('TokenTitle-backArrow')}>\n                    <svg width=\"17\" height=\"17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                        <path d=\"M9.5 1L2 8.5 9.5 16M2 8.5h15\"\n                            stroke={arrowColor} strokeWidth=\"2\" />\n                    </svg>\n                </span>\n            || null}\n            {children}\n        </div>\n    );\n};\n\nTokenTitle.propTypes = {\n    className: PropTypes.string,\n    children: PropTypes.any,\n    sub: PropTypes.bool,\n    backArrow: PropTypes.bool,\n    onClick: PropTypes.func,\n    arrowColor: PropTypes.string,\n};\n\nexport default TokenTitle;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../../../css/TokenButtonsContainer.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nclass TokenButtonsContainer extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            status: {\n                type: '',\n                tabFocused: false,\n            },\n        };\n        this.showFocusOutline = this.showFocusOutline.bind(this);\n    }\n\n    showFocusOutline = (type, visible) => {\n        this.setState({status: {type: type, tabFocused: visible}});\n    };\n\n    render() {\n        const {className, children, alignment, ...props} = this.props;\n        const classNames = cx({\n            TokenButtonsContainer: true,\n            [`TokenButtonsContainer--${alignment}`]: true,\n            [className]: !!className,\n        });\n        return (\n            <div className={classNames} {...props}>\n                {React.Children.map(children, child => React.cloneElement(child, {\n                    showFocusOutline: this.showFocusOutline,\n                    tabStatus: this.state.status,\n                }))}\n            </div>\n        );\n    }\n}\n\nTokenButtonsContainer.defaultProps = {\n    alignment: 'row',\n};\n\nTokenButtonsContainer.propTypes = {\n    className: PropTypes.string,\n    children: PropTypes.any,\n};\n\nexport default TokenButtonsContainer;\n","import React, { useState, useLayoutEffect, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { connect } from 'reducers';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from '../../../config/constants';\nimport { FormattedMessage } from 'react-intl';\n\nconst isInViewport = element => {\n    try {\n        const elementPosition = element.getBoundingClientRect();\n        return (\n            elementPosition.top >= 0 &&\n            elementPosition.left >= 0 &&\n            Math.abs(\n                elementPosition.height +\n                    element.scrollTop -\n                    element.scrollHeight,\n            ) < 20\n        );\n    } catch (e) {\n        return false;\n    }\n};\n\nconst ButtonVisibilityWrapper = ({\n    scrollRef,\n    status,\n    isButtonFlagEnabled,\n    text,\n    ...props\n}) => {\n    const [visibleStatus, setVisibleStatus] = useState(Button.STATUS_DISABLED);\n    const [innerRef, setInnerRef] = useState(scrollRef);\n    const [buttonText, setButtonText] = useState(\n        isButtonFlagEnabled ? (\n            <FormattedMessage id={'pisp.consent.button.scrollText'} />\n        ) : (\n            text\n        ),\n    );\n    const fetchButtonStatus = () => {\n        useLayoutEffect(() => {\n            const scrollElement = innerRef.current;\n            const updateVisiblity = () => {\n                if (scrollElement.scrollHeight > scrollElement.clientHeight) {\n                    // Scenario when scroller is actually present\n                    // Enable and set back default text on scroll\n                    if (isButtonFlagEnabled) {\n                        if (isInViewport(scrollElement)) {\n                            setButtonText(text);\n                            setVisibleStatus(Button.STATUS_IDLE);\n                        }\n                    } else {\n                        setButtonText(text);\n                        setVisibleStatus(Button.STATUS_IDLE);\n                    }\n                } else {\n                    // Scenario when scroller is not present and whole of content is visible\n                    setVisibleStatus(Button.STATUS_IDLE);\n                }\n            };\n\n            scrollElement?.addEventListener('scroll', updateVisiblity);\n            window.addEventListener('resize', updateVisiblity);\n            updateVisiblity();\n\n            return () => {\n                window.removeEventListener('resize', updateVisiblity);\n                scrollElement?.removeEventListener('scroll', updateVisiblity);\n            };\n        }, []);\n\n        return visibleStatus;\n    };\n\n    useEffect(() => {\n        setInnerRef(scrollRef);\n    }, []);\n\n    const getStatus = () => {\n        const { STATUS_DISABLED } = Button;\n        const buttonStatus = fetchButtonStatus();\n        if (status !== STATUS_DISABLED) {\n            return scrollRef ? buttonStatus : status;\n        }\n        return status;\n    };\n\n    return <Button {...props} text={buttonText} status={getStatus()} />;\n};\n\nButtonVisibilityWrapper.displayName = 'ButtonVisibilityWrapper';\n\nButtonVisibilityWrapper.propTypes = {\n    status: PropTypes.oneOf([\n        Button.STATUS_IDLE,\n        Button.STATUS_DISABLED,\n        Button.STATUS_LOADING,\n    ]),\n    scrollRef: PropTypes.any,\n    text: PropTypes.any,\n    isButtonFlagEnabled: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    return {\n        isButtonFlagEnabled: tokenRequestService.getTppFeature(\n            featureConfig.ENABLE_ACCEPT_BUTTON,\n            false,\n        ),\n    };\n};\n\nexport default connect(mapStateToProps)(ButtonVisibilityWrapper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport style from './TokenButtonsWrapper.css';\nimport TokenButtonsContainer from '@token-io/lib-web-components/src/Components/Layout/TokenButtonsContainer';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from 'config/constants';\nimport ButtonVisibilityWrapper from './ButtonVisibilityWrapper.js';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\n\nconst cx = classNames.bind(style);\n\nconst isTypeGhost = type => {\n    if (\n        type &&\n        (type === Button.TYPE_GHOST_WARNING || type === Button.TYPE_GHOST)\n    ) {\n        return true;\n    }\n    return false;\n};\n\nconst TokenButtonsWrapper = ({\n    children,\n    displayShadow,\n    buttonAlignment,\n    className,\n}) => {\n    const alignButtonsVertically = buttonAlignment === 'COLUMN';\n    const alignment = alignButtonsVertically ? 'column' : 'row-reverse';\n\n    return (\n        <TokenButtonsContainer\n            className={cx({\n                [className]: !!className,\n                'Webapp-buttons-container': true,\n                'Webapp-buttons-container--block':\n                    React.Children.count(children) === 1,\n                'Webapp-buttons-container--shadow': !!displayShadow,\n            })}\n            alignment={alignment}>\n            {React.Children.map(children, child => {\n                if (React.isValidElement(child)) {\n                    let buttonType = child.props?.type;\n                    if (\n                        isTypeGhost(child.props?.type) &&\n                        !alignButtonsVertically\n                    ) {\n                        buttonType = Button.TYPE_SECONDARY;\n                    }\n                    const props = {\n                        ...child.props,\n                        type: buttonType,\n                    };\n                    if (child.props.scrollRef) {\n                        return <ButtonVisibilityWrapper {...props} />;\n                    }\n                    return React.cloneElement(child, { ...props });\n                }\n                return child;\n            })}\n        </TokenButtonsContainer>\n    );\n};\n\nTokenButtonsWrapper.displayName = 'TokenButtonsWrapper';\n\nTokenButtonsWrapper.propTypes = {\n    children: PropTypes.any,\n    displayShadow: PropTypes.bool,\n    className: PropTypes.string,\n    buttonAlignment: PropTypes.string,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const buttonAlignment = tokenRequestService.getTppFeature(\n        featureConfig.WEB_APP_BUTTONS_ALIGNMENT,\n        'COLUMN',\n    );\n\n    const displayShadow = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_SHADOW,\n        true,\n    );\n\n    return {\n        buttonAlignment,\n        displayShadow,\n    };\n};\n\nexport default connect(mapStateToProps)(TokenButtonsWrapper);\n","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {isFunction, isNull, defaultSearch, formatDataList} from '../../Util';\nimport {withValue} from '../../Hoc.jsx';\n\nclass StaticDataProvider extends PureComponent {\n    static propTypes = {\n        children: PropTypes.node.isRequired,\n        source: PropTypes.oneOfType([\n            PropTypes.func.isRequired,\n            PropTypes.array.isRequired,\n        ]),\n        idKey: PropTypes.string.isRequired,\n        titleKey: PropTypes.string.isRequired,\n        dataKey: PropTypes.string.isRequired,\n        extraKey: PropTypes.string.isRequired,\n        withPointer: PropTypes.bool,\n        value: PropTypes.any,\n        setValue: PropTypes.func,\n        defaultValue: PropTypes.any,\n        searchFunc: PropTypes.func,\n        customFormat: PropTypes.func,\n        multiple: PropTypes.bool,\n        useCustomData: PropTypes.bool,\n        customData: PropTypes.any,\n    }\n    static defaultProps = {\n        idKey: 'id',\n        titleKey: 'title',\n        dataKey: 'data',\n        extraKey: 'extra',\n        withPointer: false,\n        searchFunc: defaultSearch,\n    }\n    constructor() {\n        super();\n        this.state = {\n            data: [],\n            selected: null,\n            searchTerm: '',\n        };\n        this.fetchData = this.fetchData.bind(this);\n        this.setSelected = this.setSelected.bind(this);\n        this.setSearch = this.setSearch.bind(this);\n        this.getValue = this.getValue.bind(this);\n        this.getData = this.getData.bind(this);\n    }\n    setSearch(term) {\n        const {searchFunc} = this.props;\n        const {searchTerm} = this.state;\n        const data = this.getData();\n        if (searchTerm === term) return;\n        const {startsWith, includes} = searchFunc(term);\n        this.setState({\n            searchTerm: term,\n        }, () => {\n            const startedWith = data.findIndex(startsWith);\n            const included = data.findIndex(includes);\n            const found = startedWith > 1 ? startedWith : included;\n            (found >= 0) && this.setSelected(found, {scroll: true});\n        });\n    }\n    setSelected(selected, {triggerChange, doneCallback} = {}) {\n        const data = this.getData();\n        const {setValue} = this.props;\n        if (selected < 0 || selected >= data.length) return;\n        this.setState({\n            selected,\n        }, () => {\n            doneCallback && doneCallback();\n        });\n        if (triggerChange) {\n            const value = !isNull(selected) && data[selected].rawData || null;\n            setValue(value);\n        }\n    }\n    fetchData(options = {}) {\n        const {source, useCustomData, customData} = this.props;\n        const data = useCustomData ? customData\n            : isFunction(source) && source(options) || source;\n        this.setState({\n            data,\n        });\n    }\n    componentDidMount() {\n        this.fetchData();\n    }\n    getValue() {\n        const {multiple, value, idKey} = this.props;\n        const data = this.getData();\n        if (multiple || value && value.rawData || !value || !data.length) {\n            return value;\n        }\n        return data.find(item => item.rawData[idKey] === value[idKey]);\n    }\n    getData() {\n        const {data: stateData} = this.state;\n        const {idKey, titleKey, dataKey, extraKey, useCustomData,\n            customData, customFormat} = this.props;\n        const sourceList = useCustomData ? customData : stateData;\n        const {data} = formatDataList(sourceList, {\n            idKey, titleKey, dataKey, extraKey,\n            customFormat,\n        });\n        return data;\n    }\n    render() {\n        const {children, withPointer, multiple, idKey} = this.props;\n        const {selected, searchTerm} = this.state;\n        const data = this.getData();\n        const value = this.getValue();\n        return (\n            <React.Fragment>\n                {React.Children.map(children, child => React.cloneElement(child, {\n                    fetchData: this.fetchData,\n                    setSelected: withPointer ? this.setSelected : null,\n                    data,\n                    selected: withPointer ? selected : null,\n                    value: withPointer ? value : null,\n                    withPointer,\n                    setSearch: this.setSearch,\n                    searchTerm,\n                    multiple,\n                    idKey,\n                }))}\n            </React.Fragment>\n        );\n    }\n}\n\nexport default withValue(StaticDataProvider);\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './AliasInput.css';\nimport classNames from 'classnames/bind';\nimport TextInput from '@token-io/lib-web-components/src/Components/TextInput';\nimport Dropdown from '@token-io/lib-web-components/src/Components/Dropdown';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport { validateAlias, initiateGuestFlow } from 'actions/shared';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport {\n    AISP_GUEST_UNSUPPORTED,\n    BANKS_WITHOUT_SUBTITLE,\n} from 'config/constants';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport { formatCountriesPhone } from '../../../util';\nimport countryTelData from 'country-telephone-data';\nconst cx = classNames.bind(style);\n\nclass AliasInput extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            loading: false,\n            alias: '',\n            bankSupportedType: '',\n            countryCode: '',\n            country: formatCountriesPhone([\n                countryTelData.allCountries.find(\n                    country =>\n                        props.selectedCountry.toLowerCase() === country.iso2,\n                ),\n            ])[0],\n            selectedType: '',\n        };\n        this.continuePress = this.continuePress.bind(this);\n        this.onChange = this.onChange.bind(this);\n        this.continuePressPhone = this.continuePressPhone.bind(this);\n        this.checkType = this.checkType.bind(this);\n    }\n    // TODO: deprecated, this lifecycle hook will be removed in React 17\n    componentWillReceiveProps(nextProps) {\n        if (nextProps.aliasError) {\n            this.setState({\n                loading: false,\n            });\n        }\n    }\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        this.checkType();\n    }\n\n    next() {\n        if (!this.state.loading) {\n            this.setState({ loading: true });\n            this.props.validateAlias(this.state.alias, this.state.selectedType);\n        }\n    }\n\n    nextPhone() {\n        if (!this.state.loading) {\n            this.setState({ loading: true });\n            this.props.validateAlias(\n                '+' + this.state.country.id + this.state.alias,\n                this.state.selectedType,\n            );\n        }\n    }\n    continuePress() {\n        if (this.state.alias) {\n            this.next();\n        }\n    }\n    continuePressPhone() {\n        if (\n            this.state.alias &&\n            this.state.selectedType === 'PHONE' &&\n            this.state.country\n        ) {\n            this.nextPhone();\n        } else {\n            this.next();\n        }\n    }\n    updateAlias(alias) {\n        this.setState({ alias });\n    }\n\n    onChange(country) {\n        if (country !== this.state.country) {\n            this.setState({ country });\n        }\n    }\n\n    renderDoubleInput() {\n        return (\n            <div>\n                <TextInput\n                    onChange={value => {\n                        this.updateAlias(value);\n                        this.setState({\n                            selectedType: 'EMAIL',\n                        });\n                    }}\n                    onKeyEnter={this.continuePress}\n                    placeholder={this.props.intl.formatMessage({\n                        id: 'common.aliasInput.aliasTypes.email',\n                    })}\n                    className={cx('AliasInput-email-field')}\n                    inputFieldClass={cx('AliasInput-field')}\n                />\n                <TokenTitle sub>\n                    <FormattedMessage id={'common.aliasInput.or'} />\n                </TokenTitle>\n                <div className={cx('AliasInput-Phone-container')}>\n                    <StaticDataProvider\n                        idKey={'code'}\n                        titleKey={'code'}\n                        dataKey={'key'}\n                        source={() => countryTelData.allCountries}\n                        useCustomData\n                        customData={formatCountriesPhone(\n                            countryTelData.allCountries,\n                        )}\n                        value={this.state.country}\n                        customSetValue={async (value, { doneCallback }) => {\n                            await this.onChange(value);\n                            doneCallback();\n                        }}\n                        withPointer>\n                        <Dropdown\n                            className={cx('phoneSelector-country')}\n                            rowClass={cx('phoneSelector-country-item')}\n                            allowDeselect\n                        />\n                    </StaticDataProvider>\n                    <TextInput\n                        className={cx('AliasInput-phone-field')}\n                        onChange={value => {\n                            this.updateAlias(value);\n                            this.setState({\n                                selectedType: 'PHONE',\n                            });\n                        }}\n                        onKeyEnter={this.continuePressPhone}\n                        placeholder={this.props.intl.formatMessage({\n                            id: 'common.aliasInput.aliasTypes.phone',\n                        })}\n                        inputFieldClass={cx('AliasInput-phone-field-inner')}\n                    />\n                </div>\n            </div>\n        );\n    }\n\n    renderSwitch(param, customAliasLabel) {\n        switch (param) {\n            case 'EMAIL':\n                return (\n                    <TextInput\n                        onChange={value => {\n                            this.updateAlias(value);\n                            this.setState({\n                                selectedType: 'EMAIL',\n                            });\n                        }}\n                        onKeyEnter={this.continuePress}\n                        placeholder={this.props.intl.formatMessage({\n                            id: 'common.aliasInput.aliasTypes.email',\n                        })}\n                        inputFieldClass={cx('AliasInput-field')}\n                        value={this.state.alias}\n                        autoFocus\n                    />\n                );\n            case 'PHONE':\n                return (\n                    <div className={cx('AliasInput-Phone-container')}>\n                        <StaticDataProvider\n                            idKey={'code'}\n                            titleKey={'code'}\n                            dataKey={'key'}\n                            useCustomData\n                            customData={formatCountriesPhone(\n                                countryTelData.allCountries,\n                            )}\n                            value={this.state.country}\n                            customSetValue={async (value, { doneCallback }) => {\n                                await this.onChange(value);\n                                doneCallback();\n                            }}\n                            withPointer>\n                            <Dropdown\n                                placeholder={'+ 0'}\n                                className={cx('phoneSelector-country')}\n                                rowClass={cx('phoneSelector-country-item')}\n                                allowDeselect\n                            />\n                        </StaticDataProvider>\n                        <TextInput\n                            className={cx('AliasInput-phone-field')}\n                            onChange={value => {\n                                this.updateAlias(value);\n                                this.setState({\n                                    selectedType: 'PHONE',\n                                });\n                            }}\n                            onKeyEnter={this.continuePressPhone}\n                            placeholder={this.props.intl.formatMessage({\n                                id: 'common.aliasInput.aliasTypes.phone',\n                            })}\n                            inputFieldClass={cx('AliasInput-phone-field-inner')}\n                        />\n                    </div>\n                );\n            case 'CUSTOM':\n                return (\n                    <TextInput\n                        onChange={value => {\n                            this.updateAlias(value);\n                            this.setState({\n                                selectedType: 'CUSTOM',\n                            });\n                        }}\n                        onKeyEnter={this.continuePress}\n                        placeholder={customAliasLabel}\n                        inputFieldClass={cx('AliasInput-field')}\n                        value={this.state.alias}\n                        autoFocus\n                    />\n                );\n            default:\n                // email or phone\n                return this.renderDoubleInput();\n        }\n    }\n\n    checkType() {\n        const { aliasTypes } = this.props.bankInfo;\n        const { bankSupportedType } = this.state;\n        if (aliasTypes.includes('CUSTOM')) {\n            this.setState({\n                bankSupportedType: 'CUSTOM',\n            });\n        } else if (\n            aliasTypes.includes('EMAIL') &&\n            aliasTypes.includes('PHONE')\n        ) {\n            this.setState({\n                bankSupportedType: 'Email or Phone',\n            });\n        } else {\n            this.setState({\n                bankSupportedType: aliasTypes[0],\n            });\n        }\n        this.renderSwitch(bankSupportedType);\n    }\n\n    render() {\n        const status =\n            (!this.state.alias && Button.STATUS_DISABLED) ||\n            (this.state.loading && Button.STATUS_LOADING) ||\n            Button.STATUS_IDLE;\n        const { customAliasLabel, aliasTypes } = this.props.bankInfo;\n        const { bankSupportedType } = this.state;\n        return (\n            <Fragment>\n                <img\n                    className={cx('AliasInput-logo')}\n                    src={this.props.bank.fullLogoUri}\n                />\n                <TokenContainer className={cx('AliasInput-subcontainer')}>\n                    <TokenTitle>\n                        <FormattedMessage\n                            id={'common.aliasInput.title'}\n                            values={{\n                                BANK_NAME: this.props.bank.name,\n                                ALIAS_TYPES:\n                                    (aliasTypes.includes('CUSTOM') &&\n                                        customAliasLabel) ||\n                                    (aliasTypes.includes('PHONE') &&\n                                        aliasTypes.includes('EMAIL') &&\n                                        this.props.intl.formatMessage({\n                                            id:\n                                                'common.aliasInput.aliasTypes.both',\n                                        })) ||\n                                    (aliasTypes.includes('PHONE') &&\n                                        this.props.intl.formatMessage({\n                                            id:\n                                                'common.aliasInput.aliasTypes.phone',\n                                        })) ||\n                                    (aliasTypes.includes('EMAIL') &&\n                                        this.props.intl.formatMessage({\n                                            id:\n                                                'common.aliasInput.aliasTypes.email',\n                                        })),\n                            }}>\n                        </FormattedMessage>\n                    </TokenTitle>\n                    {!BANKS_WITHOUT_SUBTITLE.includes(this.props.bank.id) && (\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'common.aliasInput.subtitle'}\n                            />\n                        </TokenTitle>\n                    )}\n                    {this.renderSwitch(bankSupportedType, customAliasLabel)}\n                    {this.props.aliasError && (\n                        <p className={cx('AliasInput-error')}>\n                            <FormattedMessage\n                                id={this.props.aliasError}\n                                values={{ BANK_NAME: this.props.bank.name }}\n                            />\n                        </p>\n                    )}\n                    {this.props.supportsGuest && (\n                        <p\n                            className={cx('AliasInput-guest')}\n                            onClick={this.props.initiateGuestFlow}>\n                            <FormattedMessage id={'common.aliasInput.guest'} />\n                        </p>\n                    )}\n                </TokenContainer>\n                <TokenButtonsWrapper>\n                    <Button\n                        onClick={\n                            this.state.selectedType === 'PHONE' &&\n                            this.state.country\n                                ? () => this.nextPhone()\n                                : () => this.next()\n                        }\n                        status={status}\n                        text={<FormattedMessage id={'common.button.next'} />}\n                    />\n                    <Button\n                        onClick={this.props.clearBankAndBack}\n                        type={Button.TYPE_GHOST}\n                        text={<FormattedMessage id={'common.button.back'} />}\n                    />\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nAliasInput.propTypes = {\n    bank: PropTypes.object.isRequired,\n    bankInfo: PropTypes.object.isRequired,\n    clearBankAndBack: PropTypes.func.isRequired,\n    validateAlias: PropTypes.func.isRequired,\n    initiateGuestFlow: PropTypes.func.isRequired,\n    supportsGuest: PropTypes.bool,\n    aliasError: PropTypes.string,\n    intl: intlShape.isRequired,\n    selectedCountry: PropTypes.string.isRequired,\n    supportsAisGuestCheckout: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }, ownProps) => ({\n    aliasError: sharedService.getErrorMessage(),\n    supportsGuest:\n        (sharedService.isAisp() &&\n            !AISP_GUEST_UNSUPPORTED.includes(ownProps.bank.id) &&\n            sharedService.supportsAisGuestCheckout()) ||\n        sharedService.supportsGuestCheckout(),\n    selectedCountry: sharedService.getSelectedCountry(),\n    supportsAisGuestCheckout: sharedService.supportsAisGuestCheckout(),\n});\n\nconst mapDispatchToProps = {\n    validateAlias,\n    initiateGuestFlow,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AliasInput);\n","import React from 'react';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport AliasInput from 'components/App/Shared/AliasInput';\nimport { clearBankAndBack } from 'actions/aisp';\n\n// Higher order component AliasInput for AISP\nconst AispAliasInput = props => <AliasInput {...props} />;\n\nAispAliasInput.propTypes = {\n    bank: PropTypes.object,\n    bankInfo: PropTypes.object,\n    clearBankAndBack: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    bank: sharedService.getSelectedBank(),\n    bankInfo: sharedService.getSelectedBankInfo(),\n});\n\nconst mapDispatchToProps = {\n    clearBankAndBack,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AispAliasInput);\n","export default __webpack_public_path__ + \"assets/approval.bde9ae39a2.png\";","export default __webpack_public_path__ + \"assets/approval@2x.01581b0997.png\";","export default __webpack_public_path__ + \"assets/approval@3x.022d9a8893.png\";","export default __webpack_public_path__ + \"assets/poweredByToken.b65282a412.png\";","export default __webpack_public_path__ + \"assets/poweredByToken@2x.1876adabcb.png\";","export default __webpack_public_path__ + \"assets/poweredByToken@3x.bee8091179.png\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {compose} from '../../Util';\nimport {withStatic} from '../../Hoc.jsx';\n\nimport approval from '../../../assets/approval.png';\nimport approval2x from '../../../assets/approval@2x.png';\nimport approval3x from '../../../assets/approval@3x.png';\n\nimport poweredByToken from '../../../assets/poweredByToken.png';\nimport poweredByToken2x from '../../../assets/poweredByToken@2x.png';\nimport poweredByToken3x from '../../../assets/poweredByToken@3x.png';\n\nconst APPROVAL = 'approval';\nconst POWERED_BY_TOKEN = 'poweredByToken';\n\nconst images = {\n    [APPROVAL]: [\n        approval,\n        approval2x,\n        approval3x,\n    ],\n    [POWERED_BY_TOKEN]: [\n        poweredByToken,\n        poweredByToken2x,\n        poweredByToken3x,\n    ],\n};\n\nexport const TokenImage = ({id, className}) => {\n    const img = images[id];\n    return (\n        <picture>\n            <source srcSet={`${img[0]}, ${img[1]} 2x, ${img[2]} 3x`} />\n            <img src={img[0]} alt={id} className={className} />\n        </picture>\n    );\n};\n\nTokenImage.propTypes = {\n    id: PropTypes.string.isRequired,\n    className: PropTypes.string,\n};\n\nexport default compose(\n    withStatic({APPROVAL, POWERED_BY_TOKEN}),\n)(TokenImage);\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './AppNotifier.css';\nimport {\n    cancelApproval,\n    notYou,\n    noApp,\n    clearErrorMessage,\n} from 'actions/shared';\nimport classNames from 'classnames/bind';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenImage from '@token-io/lib-web-components/src/Components/Image/TokenImage';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport { FormattedMessage } from 'react-intl';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\n\nconst cx = classNames.bind(style);\n\nclass AppNotifier extends Component {\n    componentWillUnmount() {\n        this.props.clearErrorMessage();\n    }\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n    }\n\n    render() {\n        const {\n            strings,\n            notYou,\n            noApp,\n            cancelApproval,\n            error,\n            hasCustomization,\n        } = this.props;\n        return (\n            <Fragment>\n                <TokenContainer className={cx('AppNotifier-subcontainer')}>\n                    <TokenTitle>{strings[0]}</TokenTitle>\n                    <TokenTitle sub>{strings[1]}</TokenTitle>\n                    <div className={cx('AppNotifier-body')}>\n                        <TokenImage\n                            id={TokenImage.APPROVAL}\n                            className={cx({\n                                'AppNotifier-approve': true,\n                                'AppNotifier-desaturate': hasCustomization,\n                            })}\n                        />\n                    </div>\n                    <div className={cx('AppNotifier-footer')}>\n                        {(error && (\n                            <p className={cx('AppNotifier-error')}>\n                                <FormattedMessage\n                                    id={'common.appNotifier.errorTitle'}\n                                />\n                                <br />\n                                <FormattedMessage id={error} />\n                            </p>\n                        )) ||\n                            null}\n                        {(!hasCustomization && (\n                            <p className={cx('AppNotifier-app')}>\n                                {strings[2]}\n                                <span onClick={noApp}>{strings[3]}</span>\n                            </p>\n                        )) ||\n                            null}\n                        {(strings[4] && !hasCustomization && (\n                            <p className={cx('AppNotifier-app')}>\n                                <span onClick={notYou}>{strings[4]}</span>\n                            </p>\n                        )) ||\n                            null}\n                    </div>\n                </TokenContainer>\n                <TokenButtonsWrapper>\n                    <Button\n                        onClick={cancelApproval}\n                        type={\n                            error\n                                ? Button.TYPE_SECONDARY\n                                : Button.TYPE_GHOST_WARNING\n                        }\n                        text={\n                            <FormattedMessage\n                                id={\n                                    (error && 'common.button.back') ||\n                                    'common.button.cancelRequest'\n                                }\n                            />\n                        }\n                    />\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nAppNotifier.propTypes = {\n    strings: PropTypes.array.isRequired,\n    notYou: PropTypes.func.isRequired,\n    noApp: PropTypes.func.isRequired,\n    cancelApproval: PropTypes.func.isRequired,\n    clearErrorMessage: PropTypes.func.isRequired,\n    error: PropTypes.string,\n    hasCustomization: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService, tokenRequestService }) => ({\n    error: sharedService.getErrorMessage(),\n    hasCustomization: tokenRequestService.hasCustomization(),\n});\n\nconst mapDispatchToProps = {\n    noApp,\n    notYou,\n    cancelApproval,\n    clearErrorMessage,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AppNotifier);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport AppNotifier from 'components/App/Shared/AppNotifier';\nimport { intlShape } from 'react-intl';\nimport {\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\n\n// Higher order component AppNotifier for AISP\nconst AispAppNotifier = ({ intl, appName, ...props }) => (\n    <AppNotifier\n        {...props}\n        strings={[\n            intl.formatMessage(\n                { id: 'common.appNotifier.title' },\n                { APP_NAME: appName },\n            ),\n            intl.formatMessage(\n                { id: 'aisp.appNotifier.subtitle' },\n                { APP_NAME: appName },\n            ),\n            intl.formatMessage({ id: 'common.appNotifier.notYou' }),\n        ]}\n    />\n);\n\nAispAppNotifier.propTypes = {\n    intl: intlShape.isRequired,\n    appName: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => ({\n    appName:\n        tokenRequestService.getTppFeature(featureConfig.AIS_APP_NAME) ||\n        defaultAppName,\n});\n\nexport default connect(mapStateToProps)(AispAppNotifier);\n","export default __webpack_public_path__ + \"assets/install.61e1cbdd24.png\";","export default __webpack_public_path__ + \"assets/google-play.987f645ade.png\";","export default __webpack_public_path__ + \"assets/app-store.e4129373af.png\";","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './AppInstall.css';\nimport classNames from 'classnames/bind';\nimport { notYou as goToBankSelector } from 'actions/shared';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport {\n    appUrlIOS,\n    appUrlAndroid,\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { FormattedMessage } from 'react-intl';\n\nimport installIcon from 'assets/install.png';\nimport googlePlayIcon from 'assets/google-play.png';\nimport appStoreIcon from 'assets/app-store.png';\n\nconst cx = classNames.bind(style);\n\nconst AppInstall = ({ strings, goToBankSelector, appName }) => {\n    return (\n        <Fragment>\n            <TokenContainer\n                className={cx('AppInstall-subcontainer')}\n                noMargin\n                noScrollable>\n                <div className={cx('AppInstall-body')}>\n                    <div className={cx('AppInstall-wrapper')}>\n                        <div className={cx('AppInstall-title')}>\n                            <FormattedMessage\n                                id={'common.appInstall.title'}\n                                tagName={'p'}\n                                values={{\n                                    APP_NAME: <strong>{appName}</strong>,\n                                }}\n                            />\n                        </div>\n                        <img\n                            className={cx('AppInstall-install')}\n                            src={installIcon}\n                        />\n                        <div className={cx('AppInstall-subtitle')}>\n                            <p>\n                                {strings[0]}\n                                <br />\n                                {strings[1]}\n                            </p>\n                        </div>\n                        <div className={cx('AppInstall-links')}>\n                            <a href={appUrlAndroid}>\n                                <img\n                                    className={cx('AppInstall-button')}\n                                    src={googlePlayIcon}\n                                />\n                            </a>\n                            <a\n                                href={appUrlIOS}\n                                target=\"_blank\"\n                                rel=\"noreferrer noopener\">\n                                <img\n                                    className={cx('AppInstall-button')}\n                                    src={appStoreIcon}\n                                />\n                            </a>\n                        </div>\n                    </div>\n                </div>\n            </TokenContainer>\n            <Button\n                onClick={goToBankSelector}\n                type={Button.TYPE_DELETE}\n                text={<FormattedMessage id={'common.button.back'} />}\n            />\n        </Fragment>\n    );\n};\n\nAppInstall.propTypes = {\n    strings: PropTypes.array.isRequired,\n    goToBankSelector: PropTypes.func.isRequired,\n    appName: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = ({ tokenRequestService, sharedService }) => ({\n    appName:\n        (sharedService.isAisp()\n            ? tokenRequestService.getTppFeature(featureConfig.AIS_APP_NAME)\n            : tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME)) ||\n        defaultAppName,\n});\n\nconst mapDispatchToProps = {\n    goToBankSelector,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AppInstall);\n","import React from 'react';\nimport AppInstall from 'components/App/Shared/AppInstall';\nimport { injectIntl, intlShape } from 'react-intl';\n\n// Higher order component AppInstall for AISP\nconst AispAppInstall = ({ intl, ...props }) => (\n    <AppInstall\n        {...props}\n        strings={[\n            intl.formatMessage({ id: 'aisp.appInstall.subtitle' }),\n            intl.formatMessage({ id: 'common.appInstall.subtitle' }),\n        ]}\n    />\n);\n\nAispAppInstall.propTypes = {\n    intl: intlShape.isRequired,\n};\n\nexport default injectIntl(AispAppInstall);\n","export default class FlickerCode {\n    constructor(newCode) {\n        this.code = newCode.toUpperCase().replace(/[^a-fA-F0-9]/g, '');\n        this.checksum();\n    }\n\n    toHex = (n, minlen) => {\n        let s = n.toString(16).toUpperCase();\n        while (s.length < minlen) {\n            s = '0' + s;\n        }\n        return s;\n    };\n\n    quersumme = n => {\n        let q = 0;\n        while (n != 0) {\n            q += n % 10;\n            n = Math.floor(n / 10);\n        }\n        return q;\n    };\n\n    getPayload = () => {\n        let i = 0;\n        let payload = '';\n\n        let len = parseInt(this.code.slice(0, 2), 16);\n        i += 2;\n        while (i < this.code.length - 2) {\n            /* skip bcd identifier */\n            i += 1;\n            /* parse length */\n            len = parseInt(this.code.slice(i, i + 1), 16);\n            i += 1;\n            payload += this.code.slice(i, i + len * 2);\n            i += len * 2;\n        }\n        return payload;\n    };\n\n    checksum = () => {\n        /* length check: first byte */\n        const len = this.code.length / 2 - 1;\n        this.code = this.toHex(len, 2) + this.code.substr(2);\n\n        /* luhn checksum */\n        const luhndata = this.getPayload();\n        let luhnsum = 0;\n        for (let i = 0; i < luhndata.length; i += 2) {\n            luhnsum +=\n                1 * parseInt(luhndata[i], 16) +\n                this.quersumme(2 * parseInt(luhndata[i + 1], 16));\n        }\n        luhnsum = (10 - (luhnsum % 10)) % 10;\n        this.code =\n            this.code.substr(0, this.code.length - 2) +\n            this.toHex(luhnsum, 1) +\n            this.code.substr(this.code.length - 1);\n\n        /* xor checksum */\n        let xorsum = 0;\n        for (let i = 0; i < this.code.length - 2; i++) {\n            xorsum ^= parseInt(this.code[i], 16);\n        }\n        this.code =\n            this.code.substr(0, this.code.length - 1) + this.toHex(xorsum, 1);\n    };\n\n    getCode = () => {\n        return this.code;\n    };\n}\n","export default class FlickerClass {\n    constructor(flickerCode) {\n        this.flickerCode = flickerCode;\n    }\n\n    startTanBeamer(leds) {\n        this.leds = leds.filter(led => led !== null);\n    }\n\n    startFlicker() {\n        this.start(this.flickerCode);\n    }\n\n    updateSpeed = newSpeed => {\n        this.stopFlicker();\n        this.changeInterval(1000 / newSpeed);\n        this.tanFlicker(this._interval);\n        this.startFlicker();\n    };\n\n    updateSize = (newSize, image) => {\n        if (!image) return;\n        image.style.width = `${newSize}px`;\n        image.style.height = `${newSize / 2}px`;\n    };\n\n    tanFlicker = interval => {\n        this._interval = interval;\n        this.symbols = {};\n        this.symbols['0'] = [0, 0, 0, 0];\n        this.symbols['1'] = [1, 0, 0, 0];\n        this.symbols['2'] = [0, 1, 0, 0];\n        this.symbols['3'] = [1, 1, 0, 0];\n        this.symbols['4'] = [0, 0, 1, 0];\n        this.symbols['5'] = [1, 0, 1, 0];\n        this.symbols['6'] = [0, 1, 1, 0];\n        this.symbols['7'] = [1, 1, 1, 0];\n        this.symbols['8'] = [0, 0, 0, 1];\n        this.symbols['9'] = [1, 0, 0, 1];\n        this.symbols['A'] = [0, 1, 0, 1];\n        this.symbols['B'] = [1, 1, 0, 1];\n        this.symbols['C'] = [0, 0, 1, 1];\n        this.symbols['D'] = [1, 0, 1, 1];\n        this.symbols['E'] = [0, 1, 1, 1];\n        this.symbols['F'] = [1, 1, 1, 1];\n    };\n\n    initializeDataBits = data => {\n        data = '0FFF' + data;\n        const dataBits = [];\n        for (let i = 0; i < data.length; i += 2) {\n            dataBits[i] = this.symbols?.[data[i + 1]] || [];\n            dataBits[i + 1] = this.symbols?.[data[i]] || [];\n        }\n\n        return dataBits;\n    };\n\n    toLineStart = () => {\n        this.offset = 0;\n        this.sync = 1;\n    };\n\n    prepare = () => {\n        this.refreshLeds([0, 0, 0, 0], 0);\n        this._timer = null;\n    };\n\n    refreshLeds = (data, sync) => {\n        this.leds[0].className = sync === 1 ? 'LedOn' : 'LedOff';\n        for (let i = 1; i < this.leds.length; i++) {\n            if (data[i - 1] === 1) {\n                this.leds[i].className = 'LedOn';\n            } else {\n                this.leds[i].className = 'LedOff';\n            }\n        }\n    };\n\n    step = () => {\n        this.refreshLeds(this.dataBits[this.offset], this.sync--);\n        if (this.sync < 0) {\n            this.sync = 1;\n            this.offset += 1;\n            if (this.offset > this.dataBits.length - 1) {\n                this.toLineStart();\n            }\n        }\n    };\n\n    stopFlicker = () => {\n        if (this._timer) {\n            window.clearInterval(this._timer);\n            this.prepare();\n        }\n    };\n\n    start = tanCode => {\n        this.dataBits = this.initializeDataBits(tanCode);\n        this.toLineStart();\n        // If times still active, stop it before starting again\n        if (this._timer) {\n            this.stopFlicker();\n        }\n        this._timer = window.setInterval(() => {\n            this.step();\n        }, this._interval);\n    };\n\n    changeInterval = newInterval => {\n        this._interval = newInterval;\n    };\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport FlickerCode from './FlickerCode.js';\nimport FlickerClass from './FlickerClass';\nimport style from './FlickerImage.css';\nimport classNames from 'classnames/bind';\nimport Nouislider from 'nouislider-react';\nimport 'nouislider/distribute/nouislider.css';\n\nconst cx = classNames.bind(style);\n\nconst FlickerImage = ({ flickerCode }) => {\n    const flickerCodeInstance = new FlickerCode(flickerCode);\n    const flickerImage = new FlickerClass(flickerCodeInstance.getCode());\n    const led0Ref = useRef(null);\n    const led1Ref = useRef(null);\n    const led2Ref = useRef(null);\n    const led3Ref = useRef(null);\n    const led4Ref = useRef(null);\n    const imageRef = useRef(null);\n    const [speed, setSpeed] = useState(null);\n    const [size, setSize] = useState(null);\n\n    const currentSpeedPercentage = Math.floor((speed / 35) * 100);\n    const currentSizePercentage = Math.floor(\n        ((size - 210) * 100) / (330 - 210),\n    );\n\n    useEffect(() => {\n        const leds = [\n            led0Ref.current,\n            led1Ref.current,\n            led2Ref.current,\n            led3Ref.current,\n            led4Ref.current,\n        ];\n        flickerImage.startTanBeamer(leds);\n    }, []);\n\n    const updateSpeed = newSpeed => {\n        setSpeed(newSpeed);\n        flickerImage.updateSpeed(newSpeed);\n    };\n\n    const updateSize = newSize => {\n        setSize(newSize);\n        flickerImage.updateSize(newSize, imageRef.current);\n    };\n\n    return (\n        <div className={cx('FlickerContainer')}>\n            <div className={cx('FlickerItems')} ref={imageRef}>\n                <table\n                    className={cx('FlickerLeds')}\n                    cellSpacing=\"0\"\n                    cellPadding=\"0\">\n                    <tbody>\n                        <tr>\n                            <td className={cx('Space')}></td>\n                            <td ref={led0Ref}></td>\n                            <td className={cx('SpaceInBetween')}></td>\n                            <td ref={led1Ref}></td>\n                            <td className={cx('SpaceInBetween')}></td>\n                            <td ref={led2Ref}></td>\n                            <td className={cx('SpaceInBetween')}></td>\n                            <td ref={led3Ref}></td>\n                            <td className={cx('SpaceInBetween')}></td>\n                            <td ref={led4Ref}></td>\n                            <td className={cx('Space')}></td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n            <div className={cx('SlidersContainer')}>\n                <label className={cx('SliderLabel')}>\n                    Flicker code size - {currentSizePercentage}%\n                </label>\n                <Nouislider\n                    className={cx('Slider')}\n                    start={210}\n                    connect={[true, false]}\n                    step={5}\n                    orientation=\"horizontal\"\n                    format={{\n                        to: function (value) {\n                            return value;\n                        },\n                        from: function (value) {\n                            return value;\n                        },\n                    }}\n                    range={{\n                        min: 210,\n                        max: 330,\n                    }}\n                    onUpdate={newSize => updateSize(newSize[0])}\n                />\n                <label className={cx('SliderLabel')}>\n                    Flicker code speed - {currentSpeedPercentage}%\n                </label>\n                <Nouislider\n                    className={cx('Slider')}\n                    start={10}\n                    connect={[true, false]}\n                    step={1}\n                    orientation=\"horizontal\"\n                    format={{\n                        to: function (value) {\n                            return value;\n                        },\n                        from: function (value) {\n                            return value;\n                        },\n                    }}\n                    range={{\n                        min: 1,\n                        max: 35,\n                    }}\n                    onUpdate={newSpeed => updateSpeed(newSpeed[0])}\n                />\n            </div>\n        </div>\n    );\n};\n\nFlickerImage.propTypes = {\n    flickerCode: PropTypes.string,\n};\n\nexport default FlickerImage;\n","import React from 'react';\nimport './EyeIcon.css';\nimport PropTypes from 'prop-types';\nimport style from './../Pisp/Consent.css';\nimport classNames from 'classnames/bind';\nimport { BsEyeSlashFill } from 'react-icons/bs';\nimport { BsEyeFill } from 'react-icons/bs';\n\nconst cx = classNames.bind(style);\n\nconst EyeIcon = ({ setPasswordVisible, isVisible }) => {\n    return isVisible ? (\n        <span\n            className={cx({ 'Eye-icon': true })}\n            onClick={() => {\n                setPasswordVisible(false);\n            }}>\n            <BsEyeSlashFill style={{ height: 'inherit' }} />\n        </span>\n    ) : (\n        <span\n            className={cx({ 'Eye-icon': true })}\n            onClick={() => {\n                setPasswordVisible(true);\n            }}>\n            <BsEyeFill style={{ height: 'inherit' }} />\n        </span>\n    );\n};\n\nEyeIcon.propTypes = {\n    setPasswordVisible: PropTypes.func.isRequired,\n    isVisible: PropTypes.bool,\n};\n\nEyeIcon.defaultProps = {\n    setPasswordVisible: () => null,\n};\n\nexport default EyeIcon;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './TextInput.css';\nimport classNames from 'classnames/bind';\nimport EyeIcon from '../Icons/EyeIcon';\n\nconst cx = classNames.bind(style);\n\nconst TextInput = React.forwardRef(\n    (\n        {\n            value,\n            onChange,\n            className,\n            placeholder,\n            dataTip,\n            validateInput,\n            type,\n            ...props\n        },\n        ref,\n    ) => {\n        const [tabFocused, setFocus] = useState(false);\n        const [isVisible, setVisibility] = useState(false);\n\n        const setPasswordVisible = visible => {\n            setVisibility(visible);\n        };\n\n        const setTabFocus = focus => {\n            setFocus(focus);\n        };\n        const isPassword = type === 'password';\n        const inputType = isPassword && !isVisible ? 'password' : 'text';\n\n        return (\n            <div\n                className={cx({\n                    'TextInput-container': true,\n                })}\n                onKeyUp={e => {\n                    if (e.key === 'Tab') setTabFocus(true);\n                }}\n                tabIndex=\"-1\">\n                <input\n                    placeholder={placeholder}\n                    value={value}\n                    onChange={e => onChange && onChange(e)}\n                    onFocus={e => e.target.select()}\n                    onBlur={() => {\n                        setTabFocus(false);\n                    }}\n                    {...props}\n                    className={cx({\n                        TextInput__inner: true,\n                        'Input--tabFocused': !!tabFocused,\n                        [className]: !!className,\n                        'Input--password': !!isPassword,\n                        Invalid__input: !!validateInput,\n                    })}\n                    ref={ref}\n                    type={inputType}\n                    tabIndex=\"0\"\n                />\n                {isPassword && (\n                    <EyeIcon\n                        setPasswordVisible={setPasswordVisible}\n                        isVisible={isVisible}\n                    />\n                )}\n                {dataTip !== '' ? (\n                    <span className=\"Tooltip-text\">{dataTip}</span>\n                ) : null}\n            </div>\n        );\n    },\n);\n\nTextInput.displayName = 'TextInput';\n\nTextInput.defaultProps = {\n    value: '',\n    placeholder: '',\n    onChange: () => {},\n    dataTip: '',\n    validateInput: false,\n    type: 'text',\n};\n\nTextInput.propTypes = {\n    onChange: PropTypes.func,\n    className: PropTypes.string,\n    value: PropTypes.any,\n    placeholder: PropTypes.string,\n    dataTip: PropTypes.string,\n    validateInput: PropTypes.bool,\n    type: PropTypes.string,\n};\n\nexport default TextInput;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport base64url from 'base64url';\nimport { connect } from 'reducers';\nimport FlickerImage from './../Shared/FlickerImage';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport Dropdown from '@token-io/lib-web-components/src/Components/Dropdown';\nimport { changeRoute } from 'actions/shared/route';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport style from './CaptureCredentials.css';\nimport {\n    terminateFlow,\n    initiateBankAuthFlow,\n    initiateCredentialsCallback,\n} from 'actions/shared';\nimport { initBankAuth } from 'actions/shared/api';\nimport TokenButtonsWrapper from './TokenButtonsWrapper.js';\nimport {\n    ROUTE_LOADING,\n    decoupleAuthorizationInterval,\n    decoupleAuthorizationTimeout,\n    CREDENTIAL_FIELD_TYPE as fieldType,\n} from 'config/constants';\nimport { EXCEPTION_INITIATE_BANK_AUTH } from 'config/exceptions';\nimport {\n    getButtonStatusOnCredsPage,\n    segregateCredentials,\n    pollUntil,\n    getDeveloperId,\n    sanitizeHTML,\n} from 'util/index';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TextInput from './../Shared/TextInput.js';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\nconst IBAN = 'IBAN';\n\nclass CaptureCredentials extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            credentialsValue: {},\n            dropDown: false,\n            decoupledFlow: false,\n            ...segregateCredentials(props.overallCredentials),\n        };\n        this.pollResult = React.createRef();\n    }\n\n    confirm = () => {\n        this.props.changeRoute(ROUTE_LOADING);\n        const credentials = base64url.encode(\n            JSON.stringify(this.state.credentialsValue),\n        );\n        this.props.initiateBankAuthFlow(credentials);\n    };\n\n    displayCredentialField = (data, isPassword) => {\n        const intl = this.props.intl;\n        return (\n            <div key={data.displayName} className={cx('Credentials-data-row')}>\n                <div\n                    className={cx({\n                        'Credentials-data-row-title': true,\n                        'Credentials-data-row-title--fixSize': true,\n                    })}>\n                    {data.displayName}\n                </div>\n                <div\n                    className={cx({\n                        'Credentials-data-row-detail': true,\n                        'Credentials-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e => {\n                            if (data?.id?.toUpperCase()?.trim() === IBAN)\n                                e.target.value = e.target.value?.toUpperCase();\n                            this.setState({\n                                credentialsValue: {\n                                    ...this.state.credentialsValue,\n                                    [data.id]: e.target.value,\n                                },\n                            });\n                        }}\n                        placeholder={\n                            intl.formatMessage({\n                                id: 'common.credentials.enter',\n                            }) +\n                            ' ' +\n                            data.displayName +\n                            ' ' +\n                            intl.formatMessage({\n                                id: 'common.credentials.value',\n                            })\n                        }\n                        key={'credentials' + data.displayName}\n                        type={isPassword ? 'password' : 'text'}\n                        name=\"credentials_inputField\"\n                        dataTip={data.description}\n                        className={cx({\n                            TextInput__inner__input: true,\n                            'Credential-field': true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            (this.state.credentialsValue &&\n                                this.state.credentialsValue[data.id]) ||\n                            ''\n                        }\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    displayOptions = data => {\n        const customOptions = data.options?.map(option => {\n            const [scaCode, ...rest] = option.value\n                ?.split(/:(.+)/)\n                .filter(Boolean);\n            return {\n                ...option,\n                value:\n                    Array.isArray(rest) && rest.length > 0 ? rest[0] : scaCode,\n            };\n        });\n\n        return (\n            <div key={data.displayName} className={cx('Credentials-data-row')}>\n                <div\n                    className={cx({\n                        'Credentials-data-row-title': true,\n                        'Credentials-data-row-title--fixSize': true,\n                    })}>\n                    {data.displayName}\n                </div>\n                <div\n                    className={cx({\n                        'Credentials-data-row-detail': true,\n                        'Credentials-data-row-detail--fixSize': true,\n                    })}>\n                    <StaticDataProvider\n                        useCustomData\n                        customData={customOptions}\n                        idKey={'id'}\n                        titleKey={'id'}\n                        dataKey={'value'}\n                        customSetValue={async (\n                            slctdValue,\n                            { doneCallback },\n                        ) => {\n                            const value = data.options?.find(\n                                option => option.id === slctdValue.id,\n                            );\n                            await this.handleOptionChange(data.id, value);\n                            doneCallback();\n                        }}\n                        value={\n                            this.state.option === undefined\n                                ? null\n                                : this.state.option\n                        }\n                        withPointer>\n                        <Dropdown\n                            className={'Credentials-options'}\n                            listClass={'Credentials-options-dropdown'}\n                            overlayClass={'Credentials-options-overlay'}\n                            rowClass={'Credentials-options-item'}\n                            dropDownState={this.state.dropDown}\n                            placeholder={'Please select'}\n                            scrollClass={cx('Credentials-options-scroll')}\n                            setDropDownState={this.setDropDownState}\n                            allowDeselect\n                        />\n                    </StaticDataProvider>\n                </div>\n            </div>\n        );\n    };\n\n    handleOptionChange = (id, selectedOption) => {\n        this.setState({\n            credentialsValue: {\n                ...this.state.credentialsValue,\n                [id]: selectedOption?.value,\n            },\n            option: selectedOption,\n            dropDown: false,\n        });\n    };\n\n    setDropDownState = state => {\n        this.setState({ dropDown: state });\n    };\n\n    async componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        if (this.state?.decoupledFlow) {\n            const emptyCredentials = base64url.encode(JSON.stringify({}));\n            let result;\n            try {\n                result = await pollUntil({\n                    fn: () =>\n                        initBankAuth({\n                            credentials: emptyCredentials,\n                            requestId: this.props.tokenRequestId,\n                            useCredentialFlow: true,\n                            developerId: this.props.developerId,\n                        }),\n                    validate: response => {\n                        if (response) {\n                            if (this.pollResult.current) {\n                                if (\n                                    JSON.stringify(response) !==\n                                    JSON.stringify(this.pollResult.current)\n                                ) {\n                                    this.pollResult.current = response;\n                                    return true;\n                                }\n                            } else {\n                                const result = segregateCredentials(\n                                    response?.credentialFields?.fields,\n                                );\n                                if (!result.decoupledFlow) {\n                                    this.pollResult.current = response;\n                                    return true;\n                                }\n                            }\n                            this.pollResult.current = response;\n                            return false;\n                        }\n                    },\n                    interval: decoupleAuthorizationInterval,\n                    timeout: decoupleAuthorizationTimeout,\n                    cancelledCb: () =>\n                        this.props.paymentFailure({\n                            error: 'access_denied',\n                            message: 'Timeout: Final Sca status not found',\n                        }),\n                    failOnReject: true,\n                });\n            } catch (e) {\n                const jsonStringifiedError = JSON.stringify(e);\n                const errorMessage = e?.message;\n                const axiosError = e?.response?.data;\n                const errorText = `jsonStringifiedError: ${jsonStringifiedError} |\n                errorMessage: ${errorMessage} | \n                axiosError: ${JSON.stringify(axiosError)}`;\n\n                this.props.paymentFailure({\n                    error: EXCEPTION_INITIATE_BANK_AUTH,\n                    message: errorText,\n                });\n            }\n            this.props.initiateCredentialsCallback(result);\n        }\n    }\n\n    render() {\n        const {\n            captureCredentials,\n            staticImages,\n            flickerCode,\n            psuMessages,\n            decoupledFlow,\n            credentialsValue,\n        } = this.state;\n        const { declinePayment, selectedBank } = this.props;\n        const status =\n            Button[\n                getButtonStatusOnCredsPage(captureCredentials, credentialsValue)\n            ];\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Credentials-subcontainer')}\n                    noMargin>\n                    <div\n                        className={cx({\n                            'Credentials-title-margin': true,\n                        })}>\n                        {!decoupledFlow && (\n                            <>\n                                <TokenTitle>\n                                    <FormattedMessage\n                                        id={'common.credentials.title'}\n                                    />\n                                </TokenTitle>\n                                <TokenTitle\n                                    className={cx(\n                                        'Credentials-bank-information',\n                                    )}>\n                                    {selectedBank.name}\n                                    <img\n                                        className=\"Credentials-bank-logo\"\n                                        src={selectedBank.logoUri}\n                                        alt={selectedBank.name}\n                                    />\n                                </TokenTitle>\n                                <TokenTitle sub>\n                                    <FormattedMessage\n                                        id={'common.credentials.subtitle1'}\n                                        tagName={'p'}\n                                    />\n                                </TokenTitle>\n                            </>\n                        )}\n                        {psuMessages?.map((data, i) => {\n                            return (\n                                <TokenTitle\n                                    sub\n                                    className={cx(\n                                        'Credentials-psumessage-container',\n                                    )}\n                                    key={i}>\n                                    <span\n                                        className={cx('Credentials-psumessage')}\n                                        dangerouslySetInnerHTML={{\n                                            __html: sanitizeHTML(\n                                                data?.description,\n                                            ),\n                                        }}>\n                                    </span>\n                                </TokenTitle>\n                            );\n                        })}\n                    </div>\n                    <div className={cx('Credentials-static-images')}>\n                        {staticImages?.map((data, i) => {\n                            return (\n                                <div key={i}>\n                                    <img\n                                        src={\n                                            'data:image/png;base64,' +\n                                            data.image\n                                        }\n                                        className={cx(\n                                            'Credentials-static-image',\n                                        )}\n                                        alt=\"\"\n                                    />\n                                </div>\n                            );\n                        })}\n                    </div>\n                    <div className={cx('Credentials-flicker-image-container')}>\n                        {flickerCode && (\n                            <div className={cx('Credentials-flicker-image')}>\n                                <FlickerImage flickerCode={flickerCode} />\n                            </div>\n                        )}\n                    </div>\n                    {captureCredentials?.length > 0 && (\n                        <div className={cx('Credentials-data')}>\n                            <TokenTitle sub>\n                                {captureCredentials?.map(data => {\n                                    switch (data.type) {\n                                        case fieldType.OPTIONS:\n                                            return this.displayOptions(data);\n                                        case fieldType.PASSWORD:\n                                            return this.displayCredentialField(\n                                                data,\n                                                true,\n                                            );\n                                        default:\n                                            return this.displayCredentialField(\n                                                data,\n                                            );\n                                    }\n                                })}\n                            </TokenTitle>\n                        </div>\n                    )}\n                </TokenContainer>\n\n                {!decoupledFlow && (\n                    <TokenButtonsWrapper>\n                        <Button\n                            status={status}\n                            onClick={this.confirm}\n                            text={\n                                <FormattedMessage id={'common.button.next'} />\n                            }\n                        />\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declinePayment}\n                            status={Button.STATUS_IDLE}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    </TokenButtonsWrapper>\n                )}\n            </Fragment>\n        );\n    }\n}\n\nCaptureCredentials.propTypes = {\n    overallCredentials: PropTypes.array,\n    declinePayment: PropTypes.func,\n    tokenRequestId: PropTypes.string,\n    changeRoute: PropTypes.func,\n    traceId: PropTypes.string,\n    paymentFailure: PropTypes.func,\n    bankAuthStatus: PropTypes.string,\n    initiateBankAuthFlow: PropTypes.func.isRequired,\n    intl: intlShape.isRequired,\n    setDisplayFooterShadow: PropTypes.func,\n    handleFinalScaStatus: PropTypes.func,\n    developerId: PropTypes.string,\n    initiateCredentialsCallback: PropTypes.func,\n    selectedBank: PropTypes.object,\n};\n\nconst mapStateToProps = ({\n    tokenService,\n    tokenRequestService,\n    sharedService,\n}) => {\n    const overallCredentials = tokenService.getCredentials();\n    const bankAuthStatus = tokenService.getBankAuthStatus();\n    const requestId = tokenRequestService.getRequestId();\n    const traceId = tokenService.getTraceId();\n    const customDevKey = sharedService.getCustomDevKey();\n    const developerId = getDeveloperId(customDevKey);\n    const selectedBank = sharedService.getSelectedBank();\n    return {\n        overallCredentials: overallCredentials || [],\n        tokenRequestId: requestId,\n        traceId,\n        bankAuthStatus,\n        developerId,\n        selectedBank,\n    };\n};\n\nconst mapDispatchToProps = {\n    declinePayment: () =>\n        terminateFlow({\n            error: 'access_denied',\n            message: 'Payment declined',\n        }),\n    paymentFailure: ({ error, message }) =>\n        terminateFlow({\n            error,\n            message,\n        }),\n    changeRoute,\n    initiateBankAuthFlow,\n    initiateCredentialsCallback,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CaptureCredentials);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {compose} from '../../Util';\nimport {withStatic, createContainer} from '../../Hoc.jsx';\nimport style from '../../../css/TokenBackground.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nconst TokenBackground = createContainer({\n    type: 'div',\n    displayName: 'TokenBackground',\n    className: cx('TokenBackground-container'),\n});\n\nconst TokenBackgroundHeader = createContainer({\n    type: 'div',\n    displayName: 'TokenBackgroundHeader',\n    className: cx('TokenBackground-header'),\n});\n\nconst TokenBackgroundTitle = ({logo, text, alignAtCenter}) => {\n    if (!logo && text) {\n        return (\n            <div className={cx({\n                'TokenBackground-header-title': true,\n                'TokenBackground-header-title--center': !!alignAtCenter\n            })}>\n                <span className={cx({\n                    'TokenBackground-header-title-text': true,\n                    'TokenBackground-header-title-text--center': !!alignAtCenter,\n                })}>\n                    {text}\n                </span>\n            </div>\n        );\n    }\n    return (\n        <div className={cx({\n            'TokenBackground-header-title': true,\n            'TokenBackground-header-title--center': !!alignAtCenter\n        })}>\n            { logo && (\n                <img\n                    src={logo}\n                    className={cx('TokenBackground-logo')}\n                    alt={text ? text + 'logo' : 'token logo'}\n                />\n            )}\n        </div>\n    );\n};\n\nTokenBackgroundTitle.propTypes = {\n    logo: PropTypes.string,\n    text: PropTypes.string,\n    noPrepend: PropTypes.bool,\n};\n\nconst TokenBackgroundContent = createContainer({\n    type: 'div',\n    displayName: 'TokenBackgroundContent',\n    className: cx('TokenBackground-content'),\n});\n\nconst TokenBackgroundFooter = createContainer({\n    type: 'div',\n    displayName: 'TokenBackgroundFooter',\n    className: cx('TokenBackground-footer'),\n});\n\nexport default compose(\n    withStatic({\n        Header: TokenBackgroundHeader,\n        Title: TokenBackgroundTitle,\n        Content: TokenBackgroundContent,\n        Footer: TokenBackgroundFooter,\n    }),\n)(TokenBackground);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { sanitizeHTML } from 'util/index';\nimport { connect } from 'reducers';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from 'config/constants';\nimport TokenBackground from '@token-io/lib-web-components/src/Components/Layout/TokenBackground';\nimport classNames from 'classnames/bind';\nimport style from './FooterText.css';\n\nconst cx = classNames.bind(style);\n\nconst CustomFooterText = ({\n    customFooterText = '<span>powered by <strong>Token</strong></span>',\n    className,\n    tppLogo,\n    resellerLogo,\n    displayShadow,\n}) => {\n    if (customFooterText) {\n        const tppImg = `<image src=\"${tppLogo}\" class='Footer-image'></image>`;\n        const resellerImg = `<image src=\"${resellerLogo}\" class='Footer-image'></image>`;\n        return (\n            <TokenBackground.Footer\n                className={cx({\n                    'display-block': true,\n                    'TokenBackground-footer--shadow': !!displayShadow,\n                    'TokenBackground-footer--outerMargin': true,\n                })}>\n                <div\n                    className={className}\n                    dangerouslySetInnerHTML={{\n                        __html: sanitizeHTML(customFooterText)\n                            .replace(/{TPP_LOGO}/g, tppLogo ? tppImg : '')\n                            .replace(\n                                /{RESELLER_LOGO}/g,\n                                resellerLogo ? resellerImg : '',\n                            )\n                            .replace(/\\|/g, \"<div class='rt-divider'></div>\"),\n                    }}>\n                </div>\n            </TokenBackground.Footer>\n        );\n    }\n    return <span></span>;\n};\n\nconst Footer = ({\n    customFooterText,\n    isSpinner,\n    hasCustomization,\n    className,\n    tppLogo,\n    resellerLogo,\n    displayShadow,\n}) => {\n    if (hasCustomization || customFooterText) {\n        if (typeof customFooterText === 'string') {\n            return (\n                <CustomFooterText\n                    customFooterText={customFooterText}\n                    className={className}\n                    tppLogo={tppLogo}\n                    resellerLogo={resellerLogo}\n                    displayShadow={isSpinner ? false : displayShadow}\n                />\n            );\n        } else {\n            return (\n                <CustomFooterText\n                    className={className}\n                    displayShadow={isSpinner ? false : displayShadow}\n                />\n            );\n        }\n    }\n    return '';\n};\n\nFooter.propTypes = {\n    customFooterText: PropTypes.string,\n    isSpinner: PropTypes.bool,\n    hasCustomization: PropTypes.bool,\n    className: PropTypes.string,\n    tppLogo: PropTypes.string,\n    resellerLogo: PropTypes.string,\n    displayShadow: PropTypes.bool,\n};\n\nCustomFooterText.propTypes = {\n    customFooterText: PropTypes.string,\n    className: PropTypes.string,\n    tppLogo: PropTypes.string,\n    resellerLogo: PropTypes.string,\n    displayShadow: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const hasCustomization = tokenRequestService.hasCustomization();\n    const customFooterText = tokenRequestService.getTppFeature(\n        featureConfig.FOOTER_TEXT,\n    );\n    const tppLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.TPP_LOGO,\n    );\n    const resellerLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.RESELLER_LOGO,\n    );\n    const tppLogo = tppLogoPayload\n        ? `data:${tppLogoPayload.type};base64,${tppLogoPayload.data}`\n        : '';\n    const resellerLogo = resellerLogoPayload\n        ? `data:${resellerLogoPayload.type};base64,${resellerLogoPayload.data}`\n        : '';\n    return {\n        hasCustomization,\n        customFooterText,\n        tppLogo,\n        resellerLogo,\n    };\n};\n\nconst FooterText = connect(mapStateToProps)(Footer);\n\nexport { FooterText, CustomFooterText };\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { SpinnerWithLockBig } from '@token-io/lib-web-components/src/Components/Spinner';\nimport { connect } from 'reducers';\nimport style from './Loading.css';\nimport classNames from 'classnames/bind';\nimport { argbToRgba, sessionStorageWrapper } from 'util/index';\nimport browserNavigation from 'util/browserNavigation';\nimport {\n    defaultColors,\n    SPLASH_STEP,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { FooterText } from 'components/App/Shared/FooterText';\nimport platform from 'platform';\nimport { setStep } from 'actions/shared/route';\n\nconst cx = classNames.bind(style);\n\nconst Loading = ({ color, displaySplashScreen, setStep, stepsUntilNow }) => {\n    useEffect(() => {\n        if (displaySplashScreen) {\n            if (stepsUntilNow?.length === 1) {\n                setStep(SPLASH_STEP);\n            }\n        }\n\n        const platformIsIos = platform.description.includes('iOS');\n        const isBankCallbackUrl = document.location.pathname.includes(\n            '/app/auth',\n        );\n\n        const hasSessionRefreshed = sessionStorageWrapper.get(\n            'hasSessionRefreshed',\n        );\n\n        const timeout = setTimeout(() => {\n            if (isBankCallbackUrl && platformIsIos && !hasSessionRefreshed) {\n                sessionStorageWrapper.set('hasSessionRefreshed', true);\n                browserNavigation.reload(true);\n            }\n        }, 7000);\n\n        return () => {\n            clearTimeout(timeout);\n        };\n    }, [displaySplashScreen]);\n\n    return (\n        <div className={cx('Loading')}>\n            <SpinnerWithLockBig color={color} />\n            <FooterText className={cx('LoadingFooter')} isSpinner />\n        </div>\n    );\n};\n\nLoading.propTypes = {\n    color: PropTypes.string,\n    displaySplashScreen: PropTypes.bool,\n    setStep: PropTypes.func,\n    stepsUntilNow: PropTypes.array,\n};\n\nconst mapStateToProps = ({ tokenRequestService, sharedService }) => {\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    const displaySplashScreen = !!tokenRequestService\n        .getTppFeature(featureConfig.SPLASH_SCREEN)\n        ?.trim();\n    const stepsUntilNow = sharedService.getSteps();\n\n    return {\n        color:\n            argbToRgba(colors['color-spinner']) ||\n            argbToRgba(colors['color-primary']),\n        displaySplashScreen,\n        stepsUntilNow,\n    };\n};\n\nconst mapDispatchToProps = {\n    setStep,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Loading);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './LanguageSwitcher.css';\nimport classNames from 'classnames/bind';\nimport { intlShape } from 'react-intl';\nimport { connect } from 'reducers';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport AbstractDropdown from '@token-io/lib-web-components/src/Components/Dropdown/Abstract';\nimport { languages } from 'config/constants';\nimport { setLocale } from 'actions/shared';\nimport { getURLParameter } from '../../util';\n\nconst cx = classNames.bind(style);\n\nclass LanguageSwitcher extends Component {\n    constructor() {\n        super();\n        this.onChange = this.onChange.bind(this);\n        this.getPreferredLang = this.getPreferredLang.bind(this);\n    }\n    getPreferredLang() {\n        // Find preferred language in array and set its locale code (e.g. 'en' becomes 'en-US')\n        for (const [i, lang] of languages.entries()) {\n            if (\n                lang.code.toLowerCase() ===\n                this.props.locale.slice(0, 2).toLowerCase()\n            ) {\n                lang.code = this.props.locale;\n                return i;\n            }\n        }\n        return 0;\n    }\n\n    onChange(lang) {\n        if (this.props.locale !== lang.code) {\n            this.props.setLocale(lang.code);\n        }\n    }\n\n    componentDidMount() {\n        const defaultLang = getURLParameter('lang');\n        if (defaultLang) {\n            this.props.setLocale(defaultLang);\n        }\n    }\n\n    render() {\n        return (\n            <StaticDataProvider\n                idKey={'code'}\n                titleKey={'code'}\n                dataKey={'key'}\n                useCustomData\n                customData={languages}\n                value={languages[this.getPreferredLang()]}\n                customSetValue={async (value, { doneCallback }) => {\n                    await this.onChange(value);\n                    doneCallback();\n                }}\n                withPointer>\n                <AbstractDropdown\n                    className={cx('LanguageSwitcher-container')}\n                    listClass={cx('LanguageSwitcher-dropdown')}\n                    rowClass={cx('LanguageSwitcher-item')}\n                    scrollClass={cx('LanguageSwitcher-scroll')}\n                    align={'right'}\n                    width={180}\n                    ariaLabel={this.props.intl.formatMessage({\n                        id: 'common.langSwitcher.focus',\n                    })}\n                />\n            </StaticDataProvider>\n        );\n    }\n}\n\nLanguageSwitcher.propTypes = {\n    locale: PropTypes.string.isRequired,\n    setLocale: PropTypes.func.isRequired,\n    intl: intlShape.isRequired,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    locale: sharedService.getLocale(),\n});\n\nconst mapDispatchToProps = {\n    setLocale,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LanguageSwitcher);\n","import React from 'react';\n\n// Sets the header portion empty, instead of placeholder for token logo\nconst EmptyBackgroundTitle = () => <div>{null}</div>;\n\nexport default EmptyBackgroundTitle;\n","import React from 'react';\nimport style from './LeftChevron.css';\nimport classNames from 'classnames/bind';\nimport PropTypes from 'prop-types';\n\nconst cx = classNames.bind(style);\n\nconst LeftChevron = ({ color = 'none', svgClassName }) => {\n    return (\n        <div className={cx('Left-chevron-container')}>\n            <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n                version=\"1.1\"\n                className={cx({\n                    [svgClassName]: !!svgClassName,\n                })}\n                viewBox=\"0 0 24 24\">\n                <path\n                    className={cx('Left-chevron')}\n                    fill={color}\n                    d=\"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z\"\n                />\n            </svg>\n        </div>\n    );\n};\n\nLeftChevron.propTypes = {\n    color: PropTypes.string,\n    svgClassName: PropTypes.string,\n};\n\nexport default LeftChevron;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './HomeIconSvg.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nconst HomeIconSvg = ({\n    bgColor,\n    svgHeight,\n    svgWidth,\n    scale = -10,\n    svgColor = '#000000',\n}) => {\n    return (\n        <div\n            className={cx('TokenHome-icon')}\n            style={{\n                height: svgHeight + 'px',\n                width: svgWidth + 'px',\n                ...(bgColor && { backgroundColor: bgColor }),\n            }}>\n            <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n                version=\"1.1\"\n                width={parseInt(svgWidth, 10) + scale - 2}\n                height={parseInt(svgHeight, 10) + scale}\n                fill={svgColor}\n                viewBox=\"0 0 24 24\">\n                <path d=\"M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z\" />\n            </svg>\n        </div>\n    );\n};\n\nHomeIconSvg.propTypes = {\n    svgHeight: PropTypes.string,\n    svgWidth: PropTypes.string,\n    svgColor: PropTypes.string,\n    bgColor: PropTypes.string,\n    scale: PropTypes.number,\n};\n\nexport default HomeIconSvg;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport style from './HomeIcon.css';\nimport HomeIconSvg from './HomeIconSvg';\n\nconst cx = classNames.bind(style);\n\n/**\n * Home icon HOC.\n * @param height circular height for home icon.\n * @param width circular width for home icon.\n * @param color color of the home icon.\n * @param scale factor to manipulate dimensions of home icon svg w.r.t background circle.\n * @param bgColor color for the background circle of home icon.\n * @param className css class names for home icon container.\n */\nconst HomeIcon = ({ height, width, className, color, scale, bgColor }) => {\n    return (\n        <div\n            className={cx({\n                'TokenHome-icon-container': true,\n                [className]: !!className,\n            })}>\n            <HomeIconSvg\n                svgHeight={height}\n                svgWidth={width}\n                svgColor={color}\n                bgColor={bgColor}\n                scale={scale}\n            />\n        </div>\n    );\n};\n\nHomeIcon.propTypes = {\n    height: PropTypes.string,\n    width: PropTypes.string,\n    color: PropTypes.string,\n    bgColor: PropTypes.string,\n    scale: PropTypes.number,\n    className: PropTypes.string,\n};\n\nexport default HomeIcon;\n","import React, { useEffect, useState, useRef, useLayoutEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport style from './ConsentBackToTppOverlay.css';\nimport Overlay from '@token-io/lib-web-components/src/Components/Overlay';\nimport { FormattedMessage } from 'react-intl';\nimport TokenButtonsContainer from '@token-io/lib-web-components/src/Components/Layout/TokenButtonsContainer';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport { connect } from 'reducers';\nimport { terminateFlow, addCheckForTokenReqRejection } from 'actions/shared';\nimport { changeRoute } from 'actions/shared/route';\nimport { setTokenRequestStatus } from 'actions/helpers/Api';\nimport HomeIcon from 'components/App/Icons/HomeIcon';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n    CUSTOM_TPP_FEATURES as featureConfig,\n    ROUTE_LOADING,\n    INTERNAL_TOKEN_REQUEST_STATUS as requestStatus,\n} from 'config/constants';\n\nconst cx = classNames.bind(style);\n\n// Automate animation factor\nconst SLIDE_AUTOMATE_FACTOR = 0.5;\n\n// Percentage according to the extra min height required for pop-up, for refernce:- check css for toggle container\nconst SCALE_FACTOR = 0.07;\n\n// React Component\nconst ConsentBackToTppOverlay = ({\n    declineConsent,\n    handleOverlay,\n    tppName,\n    merchantName,\n    productName,\n}) => {\n    let initialX = null;\n    let initialY = null;\n    const [initialOverlayHeight, _setInitialOverlayHeight] = useState(0);\n    const [currentOverlayHeight, setCurrentOverlayHeight] = useState(0);\n    const ref = useRef(null);\n    const toggleRef = useRef(null);\n    const root = document.getElementById('app');\n    const [size, setSize] = useState(root.getBoundingClientRect());\n    const [showTransition, setShowTransition] = useState(false);\n\n    // UseRef hook because to access states inside event listners.\n    const initialOverlayHeightRef = useRef(initialOverlayHeight);\n\n    const setInitialOverlayHeight = data => {\n        const initialHeight = data + SCALE_FACTOR * data;\n        initialOverlayHeightRef.current = initialHeight;\n        _setInitialOverlayHeight(initialHeight);\n        setCurrentOverlayHeight(initialHeight);\n    };\n\n    const useWindowSize = () => {\n        useLayoutEffect(() => {\n            const updateSize = () => {\n                setSize(root.getBoundingClientRect());\n            };\n            window.addEventListener('resize', updateSize);\n            updateSize();\n            return () => window.removeEventListener('resize', updateSize);\n        }, []);\n        return size;\n    };\n\n    const rect = useWindowSize();\n\n    useEffect(() => {\n        if (!showTransition) {\n            const timeout = setTimeout(() => {\n                handleOverlay(false);\n            }, 400);\n\n            return () => {\n                clearTimeout(timeout);\n            };\n        }\n    }, [showTransition]);\n\n    useEffect(() => {\n        if (\n            currentOverlayHeight &&\n            currentOverlayHeight < SLIDE_AUTOMATE_FACTOR * initialOverlayHeight\n        ) {\n            setCurrentOverlayHeight(currentOverlayHeight - 1);\n        }\n        if (showTransition && currentOverlayHeight <= 0) {\n            handleOverlay(false);\n        }\n    }, [currentOverlayHeight]);\n\n    const onMouseUpHandler = () => {\n        // Reset global psoitioning of cursor\n        initialX = 0;\n        initialY = 0;\n\n        setCurrentOverlayHeight(prevHeight => {\n            if (\n                prevHeight >\n                SLIDE_AUTOMATE_FACTOR * initialOverlayHeightRef.current\n            ) {\n                return initialOverlayHeightRef.current;\n            }\n            return prevHeight;\n        });\n    };\n\n    const onMouseDownHandler = e => {\n        const firstTouch = getTouches(e)?.[0];\n        initialX = firstTouch?.clientX || e.clientX;\n        initialY = firstTouch?.clientX || e.clientY;\n    };\n\n    const onMouseMoveHandler = e => {\n        if (initialX === null || initialY === null) {\n            return;\n        }\n\n        const currentX = e.touches?.[0].clientX || e.clientX;\n        const currentY = e.touches?.[0].clientY || e.clientY;\n\n        const diffX = initialX - currentX;\n        const diffY = initialY - currentY;\n\n        if (Math.abs(diffX) < Math.abs(diffY)) {\n            // sliding vertically\n            if (diffY < 0 && initialY !== 0) {\n                // swiped down\n                setCurrentOverlayHeight(prevHeight => {\n                    const newHeight = prevHeight - Math.abs(diffY);\n                    if (newHeight < 0) {\n                        return 0;\n                    }\n                    return newHeight;\n                });\n            }\n        }\n\n        e.preventDefault();\n    };\n\n    const getTouches = e => {\n        return (\n            e.touches || // browser API\n            e?.originalEvent?.touches\n        ); // jQuery\n    };\n\n    useEffect(() => {\n        setInitialOverlayHeight(ref.current.clientHeight);\n        setShowTransition(true); // Slide in transition\n\n        const evtHandlers = {\n            mousemove: onMouseMoveHandler,\n            mousedown: onMouseDownHandler,\n            touchstart: onMouseDownHandler,\n            touchmove: onMouseMoveHandler,\n        };\n\n        Object.keys(evtHandlers).forEach(name => {\n            toggleRef.current.addEventListener(name, evtHandlers[name], true);\n        });\n\n        return () => {\n            Object.keys(evtHandlers).forEach(name => {\n                toggleRef.current.removeEventListener(\n                    name,\n                    evtHandlers[name],\n                    false,\n                );\n            });\n        };\n    }, []);\n\n    return (\n        <div>\n            <CSSTransition\n                classNames=\"ConsentBackToTpp-overlay-transition\"\n                in={!!showTransition}\n                timeout={400}>\n                <Overlay\n                    overlayClass={cx('ConsentBackToTpp-overlay')}\n                    portalClass={cx('ConsentBackToTpp-portal')}\n                    onMouseUp={onMouseUpHandler}\n                    rectPosition={{\n                        ...rect,\n                        left: rect.left,\n                        width: rect.width,\n                        top: rect.top + rect.height - currentOverlayHeight,\n                    }}>\n                    <>\n                        <div\n                            className={cx('ConsentBackToTpp')}\n                            ref={ref}\n                            style={{\n                                height: currentOverlayHeight\n                                    ? currentOverlayHeight\n                                    : undefined,\n                            }}>\n                            <div\n                                className={cx(\n                                    'ConsentBackToTpp-overlay-toggle-container',\n                                )}>\n                                <div\n                                    className={cx(\n                                        'ConsentBackToTpp-overlay-toggle',\n                                    )}\n                                    ref={toggleRef}>\n                                </div>\n                            </div>\n                            <TokenTitle\n                                className={cx('ConsentBackToTpp-token-title')}>\n                                <div className={cx('ConsentBackToTpp-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'common.consentOverlay.title'}\n                                        values={{\n                                            MERCHANT_NAME: merchantName,\n                                        }}\n                                    />\n                                </div>\n                                {!merchantName && (\n                                    <HomeIcon\n                                        className={'ConsentBackToTpp-home-icon'}\n                                        height=\"47\"\n                                        width=\"47\"\n                                        bgColor={'#D8D8D8'}\n                                    />\n                                )}\n                            </TokenTitle>\n\n                            <TokenTitle sub>\n                                <div\n                                    className={cx(\n                                        'ConsentBackToTpp-sub-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'common.consentOverlay.subtitle'}\n                                        values={{\n                                            DISPLAY_NAME: <b>{tppName}</b>,\n                                            PRODUCT_NAME: productName ? (\n                                                productName\n                                            ) : (\n                                                <FormattedMessage\n                                                    tagName={'span'}\n                                                    id={\n                                                        'common.consentOverlay.openBanking'\n                                                    }\n                                                />\n                                            ),\n                                        }}\n                                    />\n                                </div>\n                            </TokenTitle>\n\n                            <div>\n                                <TokenButtonsContainer className=\"ConsentBackToTpp-button-container\">\n                                    <Button\n                                        type={Button.TYPE_DELETE}\n                                        onClick={declineConsent}\n                                        status={Button.STATUS_IDLE}\n                                        tabIndex=\"0\"\n                                        text={\n                                            <FormattedMessage\n                                                id={\n                                                    'common.consentOverlay.button.cancel'\n                                                }\n                                            />\n                                        }\n                                        className=\"ConsentBackToTpp-button\"\n                                    />\n                                    <Button\n                                        type={Button.TYPE_GHOST}\n                                        status={Button.STATUS_IDLE}\n                                        tabIndex=\"0\"\n                                        onClick={() => handleOverlay(false)}\n                                        className=\"ConsentBackToTpp-button\"\n                                        text={\n                                            <FormattedMessage\n                                                id={\n                                                    'common.consentOverlay.button.continue'\n                                                }\n                                                values={{\n                                                    PRODUCT_NAME: productName ? (\n                                                        productName\n                                                    ) : (\n                                                        <FormattedMessage\n                                                            tagName={'span'}\n                                                            id={\n                                                                'common.consentOverlay.openBanking'\n                                                            }\n                                                        />\n                                                    ),\n                                                }}\n                                            />\n                                        }\n                                    />\n                                </TokenButtonsContainer>\n                            </div>\n                        </div>\n                    </>\n                </Overlay>\n            </CSSTransition>\n        </div>\n    );\n};\n\nConsentBackToTppOverlay.propTypes = {\n    handleOverlay: PropTypes.func,\n    declineConsent: PropTypes.func,\n    tppName: PropTypes.string,\n    merchantName: PropTypes.string,\n    productName: PropTypes.string,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const tppName = tokenRequestService.getTppProfile()?.tppName;\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const merchantName = actingAs?.displayName || tppName || '';\n    const productName = tokenRequestService.getTppFeature(\n        featureConfig.PRODUCT_NAME,\n        '',\n    );\n\n    return {\n        tppName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias.value,\n        merchantName,\n        productName,\n    };\n};\n\nconst mapDispatchToProps = {\n    declineConsent: () => async dispatch => {\n        addCheckForTokenReqRejection();\n        dispatch(changeRoute(ROUTE_LOADING));\n        await dispatch(setTokenRequestStatus(requestStatus.REJECTED));\n        dispatch(\n            terminateFlow({\n                error: 'access_denied',\n                message: 'User Cancelled',\n            }),\n        );\n    },\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(ConsentBackToTppOverlay);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport LeftChevron from './Icons/LeftChevron';\nimport classNames from 'classnames/bind';\nimport style from './TokenBackgroundBackButton.css';\nimport ConsentBackToTppOverlay from './ConsentBackToTppOverlay.js';\nimport { intlShape } from 'react-intl';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst TokenBackgroundBackButton = ({ intl, tppName }) => {\n    const [displayOverlay, setDisplayOverlay] = useState(false);\n\n    const handleBackButton = () => {\n        if (displayOverlay) {\n            setDisplayOverlay(false);\n        } else {\n            setDisplayOverlay(true);\n        }\n    };\n\n    return (\n        <>\n            <div\n                className={cx('TokenBackground-back-button-container')}\n                tabIndex=\"0\"\n                role=\"button\"\n                onClick={handleBackButton}\n                aria-label={\n                    intl.formatMessage({\n                        id: 'common.backButton.ariaLabel',\n                    }) +\n                    ' ' +\n                    tppName\n                }>\n                <div className={cx('TokenBackground-left-chevron-container')}>\n                    <LeftChevron svgClassName={'Left-chevron-svg'} />\n                </div>\n                <div className={cx('TokenBackground-back-button')}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'common.backButton.text'}\n                    />\n                </div>\n            </div>\n            {displayOverlay && (\n                <ConsentBackToTppOverlay handleOverlay={setDisplayOverlay} />\n            )}\n        </>\n    );\n};\n\nTokenBackgroundBackButton.propTypes = {\n    intl: intlShape.isRequired,\n    tppName: PropTypes.string,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const tppName = tokenRequestService.getTppProfile()?.tppName;\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n\n    return {\n        tppName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias?.value,\n    };\n};\n\nexport default connect(mapStateToProps)(TokenBackgroundBackButton);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport TokenBackground from '@token-io/lib-web-components/src/Components/Layout/TokenBackground';\nimport LanguageSwitcher from 'components/App/LanguageSwitcher';\nimport {\n    STEPS_WITHOUT_LOGO,\n    ROUTES_WITHOUT_BACK_BUTTON,\n    STEPS_WITHOUT_BACK_BUTTON,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport EmptyBackgroundTitle from './EmptyBackgroundTitle';\nimport { FooterText } from 'components/App/Shared/FooterText';\nimport TokenBackgroundBackButton from 'components/App/TokenBackgroundBackButton';\nimport { setHtmlLanguageAttribute } from 'util/index';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind();\n\nconst Background = ({\n    children,\n    logo,\n    locale,\n    productName,\n    currentStep,\n    currentRoute,\n    displayBackButton,\n    displayShadowTppConfig,\n}) => {\n    const [displayFooterShadow, setDisplayFooterShadow] = useState(true);\n    const pagesWithoutBackButton =\n        ROUTES_WITHOUT_BACK_BUTTON.includes(currentRoute) ||\n        STEPS_WITHOUT_BACK_BUTTON.includes(currentStep);\n    const displayHeaderBackButton =\n        displayBackButton && !pagesWithoutBackButton;\n\n    useEffect(() => {\n        setHtmlLanguageAttribute(locale);\n    }, [locale]);\n\n    return (\n        <TokenBackground>\n            <TokenBackground.Header\n                className={cx({\n                    'TokenBackground-header--shadow': !!displayShadowTppConfig,\n                })}>\n                {STEPS_WITHOUT_LOGO.includes(currentStep) ? (\n                    <EmptyBackgroundTitle />\n                ) : (\n                    <>\n                        {displayHeaderBackButton && (\n                            <TokenBackgroundBackButton />\n                        )}\n                        <TokenBackground.Title\n                            logo={productName ? undefined : logo}\n                            text={productName}\n                            {...(displayBackButton &&\n                                pagesWithoutBackButton && {\n                                alignAtCenter: true,\n                            })}\n                        />\n                    </>\n                )}\n\n                <LanguageSwitcher />\n            </TokenBackground.Header>\n            <TokenBackground.Content>\n                {React.Children.map(children, child => {\n                    if (React.isValidElement(child)) {\n                        return React.cloneElement(child, {\n                            setDisplayFooterShadow: setDisplayFooterShadow,\n                        });\n                    }\n                    return child;\n                })}\n            </TokenBackground.Content>\n            <FooterText\n                displayShadow={displayFooterShadow && displayShadowTppConfig}\n            />\n        </TokenBackground>\n    );\n};\n\nBackground.propTypes = {\n    children: PropTypes.any,\n    logo: PropTypes.string,\n    locale: PropTypes.string,\n    productName: PropTypes.string,\n    footer: PropTypes.node,\n    currentStep: PropTypes.string,\n    currentRoute: PropTypes.string,\n    displayShadowTppConfig: PropTypes.bool,\n    displayFooterText: PropTypes.bool,\n    displayBackButton: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService, sharedService }, ownProps) => {\n    const currentStep = sharedService.getCurrentStep();\n    const locale = sharedService.getLocale();\n    const customLogo = tokenRequestService.getTppFeature(\n        featureConfig.TPP_LOGO,\n    );\n    const logo =\n        ownProps.enfuseLogo ||\n        (customLogo &&\n            Object.keys(customLogo).length > 0 &&\n            `data:${customLogo.type};base64,${customLogo.data}`) ||\n        '';\n    const currentRoute = sharedService.getCurrentRoute();\n    const displayBackButton = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_TOKEN_BACKGROUND_BACK_BUTTON,\n        false,\n    );\n    const productName = tokenRequestService.getTppFeature(\n        featureConfig.PRODUCT_NAME,\n        '',\n    );\n    const displayShadowTppConfig = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_SHADOW,\n        true,\n    );\n\n    return {\n        logo,\n        locale,\n        productName,\n        currentStep,\n        currentRoute,\n        displayShadowTppConfig,\n        displayBackButton,\n    };\n};\n\nexport default connect(mapStateToProps)(Background);\n","export default __webpack_public_path__ + \"assets/icon-error.5289514232.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './DefaultErrorPage.css';\nimport classNames from 'classnames/bind';\nimport iconError from 'assets/icon-error.svg';\nimport { FormattedMessage, intlShape } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst BankOutageError = ({ bank }) => {\n    return (\n        <div className={cx('ErrorPage-body')}>\n            <div className={cx('ErrorPage-wrapper')}>\n                <div className={cx('ErrorPage-title')}>\n                    <img src={iconError} />\n                    <FormattedMessage\n                        id={'common.bankOutageErrorPage.title'}\n                        tagName={'p'}\n                        values={{\n                            BANK_NAME: bank,\n                        }}\n                    />\n                </div>\n                <div className={cx('ErrorPage-subtitle')}>\n                    <FormattedMessage\n                        id={'common.bankOutageErrorPage.generic'}\n                        tagName={'p'}\n                    />\n                    <FormattedMessage\n                        id={'common.bankOutageErrorPage.generic2'}\n                        tagName={'p'}\n                    />\n                </div>\n            </div>\n        </div>\n    );\n};\n\nBankOutageError.propTypes = {\n    bank: PropTypes.string.isRequired,\n};\n\nexport default BankOutageError;\n","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {isNull} from '../../Util';\nimport style from '../../../css/Scroll.css';\nimport classNames from 'classnames/bind';\nimport {SCROLL_BOTTOM_LOAD_DISTANCE} from '../../config/constants';\n\nconst cx = classNames.bind(style);\n\nclass InfiniteScroll extends PureComponent {\n    static propTypes = {\n        children: PropTypes.node.isRequired,\n        fetchData: PropTypes.func.isRequired,\n        page: PropTypes.number,\n        loadingFirstBatch: PropTypes.bool,\n        loadingMore: PropTypes.bool,\n        selected: PropTypes.number,\n        maxHeight: PropTypes.number,\n        searchTerm: PropTypes.string,\n        setSelected: PropTypes.func,\n        withPointer: PropTypes.bool,\n        className: PropTypes.string,\n    }\n    static defaultProps = {\n        fetchData: () => null,\n        page: 1,\n        loadingFirstBatch: false,\n        loadingMore: false,\n        selected: null,\n    }\n    constructor(props) {\n        super(props);\n        this.container = React.createRef();\n        this.overflow = React.createRef();\n        this.handleScroll = this.handleScroll.bind(this);\n        this.checkScroll = this.checkScroll.bind(this);\n        this.setSelected = this.setSelected.bind(this);\n    }\n    /*\n     * Scrolls list item into view\n     *\n     * @param {index} selected - index of the selected item to scroll into view, this is\n     * essentially always the one that is denoted by cursor\n     */\n    handleScroll(selected) {\n        const container = this.container.current;\n        const overflow = this.overflow.current;\n        if (selected === null) {\n            container.scrollTop = 0;\n            return 0;\n        }\n        const el = overflow.children[selected];\n        if(!(el && container && overflow)) return;\n        const offsetUp = el.offsetTop - overflow.offsetTop - container.scrollTop;\n        const offsetDown = offsetUp + el.offsetHeight - container.offsetHeight;\n        const scrollUp = offsetUp < 0;\n        const scrollDown = offsetDown > 0;\n        const scrollBy = scrollDown && offsetDown || scrollUp && offsetUp || 0;\n        if (scrollBy === 0) return 0;\n        container.scrollTop += scrollBy;\n        return scrollBy;\n    }\n    /*\n     * Handler for when the user scrolls, checks if close to bottom and fires API call to load\n     * more banks\n     */\n    async checkScroll() {\n        if (this.props.loadingMore || this.props.loadingFirstBatch || this.checkingScroll) return;\n        const container = this.container.current;\n        const overflow = this.overflow.current;\n        if (overflow.offsetHeight - container.offsetHeight - container.scrollTop\n            < SCROLL_BOTTOM_LOAD_DISTANCE) {\n            this.checkingScroll = true;\n            await this.props.fetchData({\n                page: this.props.page + 1,\n                search: this.props.searchTerm,\n            });\n        }\n    }\n    componentDidUpdate(prevProps) {\n        this.checkingScroll = false;\n        if (this.props.selected !== prevProps.selected) {\n            this.handleScroll(this.props.selected);\n        }\n    }\n    componentDidMount() {\n        const {selected} = this.props;\n        if (isNull(selected)) return;\n        this.handleScroll(selected);\n    }\n    setSelected(selected, {doneCallback, preventScroll, ...options} = {}) {\n        if (this.props.withPointer) {\n            this.props.setSelected(selected, {\n                doneCallback: () => {\n                    !preventScroll && this.handleScroll(selected);\n                    doneCallback && doneCallback();\n                },\n                ...options,\n            });\n        }\n    }\n    render() {\n        const {children, maxHeight, className, ...props} = this.props;\n        return (\n            <div\n                className={cx({\n                    'Scroll': true,\n                    [className]: !!className,\n                })}\n                onScroll={this.checkScroll}\n                ref={this.container}\n                style={{\n                    maxHeight,\n                }}>\n                {React.Children.map(children, child => React.cloneElement(child, {\n                    ref: this.overflow,\n                    border: false,\n                    ...props,\n                    setSelected: this.setSelected,\n                }))}\n            </div>\n        );\n    }\n}\n\nexport default InfiniteScroll;\n","export default __webpack_public_path__ + \"assets/icon-search.e5da47e09e.svg\";","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {withStatic} from '../../Hoc.jsx';\nimport List from '../List';\nimport {isNull} from '../../Util';\nimport TextInput from '../TextInput';\nimport Overlay from '../Overlay';\nimport ListCell from '../List/Cell';\nimport InfiniteScroll from '../Scroll/Infinite';\nimport iconSearch from '../../../assets/icon-search.svg';\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from '../List/Abstract';\nimport style from '../../../css/DefaultSearch.css';\n\nconst cx = classNames.bind(style);\n\nexport const ICON_ALIGN_LEFT = 'left';\nexport const ICON_ALIGN_RIGHT = 'right';\n\nclass AbstractSearch extends PureComponent {\n    constructor() {\n        super();\n        this.state = {\n            focused: false,\n            tabFocused: false,\n            activeDescendant: undefined,\n        };\n        this.searchFieldRef = React.createRef();\n    }\n    componentDidUpdate(prevProps) {\n        if (this.props.value !== prevProps.value) {\n            this.setState({\n                focused: false,\n            });\n        }\n        this.props.setSearchFocus(this.state.focused);\n    }\n\n    componentDidMount() {\n        this.input = this.searchFieldRef.current._comp.current._comp.current._comp.current;\n        this.props.setSearchFocus(this.state.focused);\n    }\n    render() {\n        const {disabled, className, searchInputClass, selected, data, listClass,\n            setSelected, withPointer, placeholder, fetchData, page, rowClass, spinnerColor,\n            loadingFirstBatch, loadingMore, setSearch, value, size, allowDeselect,\n            scrollClass, iconAlignment, CellComponent, ariaLabel, id, customInputOnChange, customInputValue\n        } = this.props;\n        const {focused} = this.state;\n        const searchInputClasses = cx({\n            'Search__container': true,\n            'Search__container--open': focused,\n            'Search__container--disabled': disabled,\n            [className]: !!className,\n        });\n        const listClasses = cx({\n            'Search-dropdown': true,\n            'Search-dropdown--show': focused,\n            [listClass]: !!listClass,\n        });\n        const icon = <img src={iconSearch} alt='' />;\n        const input = (<TextInput\n            className={cx({\n                'Search__input--focus': focused,\n            })}\n            ref={this.searchFieldRef}\n            inputFieldClass={cx({\n                [searchInputClass]: !!searchInputClass,\n            })}\n            placeholder={placeholder}\n            status={loadingFirstBatch && TextInput.STATUS_LOADING || TextInput.STATUS_IDLE}\n            append={iconAlignment == ICON_ALIGN_RIGHT && icon}\n            prepend={iconAlignment == ICON_ALIGN_LEFT && icon}\n            id={id}\n            tabFocused={this.state.tabFocused}\n            spinnerColor={spinnerColor}\n            {\n                // Custom input handler for search text box\n                ...(customInputOnChange\n                        ? {\n                            value: customInputValue,\n                            useCustomData: true,\n                            customSetValue: customInputOnChange\n                        } : {}\n                    )\n            }\n            onFocusChange={focused => {\n                focused && this.setState({focused});\n            }}\n            onClick={() => {\n                const {focused} = this.state;\n                if (focused) return;\n                this.setState({focused: true});\n            }}\n            onChange={value => {\n                setSearch(value);\n            }}\n            onKeyUp={e => {\n                e.preventDefault();\n                if (!focused) {\n                    this.setState({focused: true});\n                } else {\n                    setSelected(isNull(selected) ? 0 : selected - 1);\n                }\n            }}\n            onKeyDown={e => {\n                const { key } = e;\n                let activeElementIndex = selected;\n                if (!focused) {\n                    this.setState({focused: true});\n                } else if (key === 'ArrowDown') {\n                    activeElementIndex = isNull(selected) ? 0 : selected + 1;\n                    this.setState({ activeDescendant: `${listClasses}-${activeElementIndex}` });\n                    setSelected(isNull(selected) ? 0 : selected + 1);\n                } else if (key === 'ArrowUp') {\n                    activeElementIndex = isNull(selected) ? 0 : selected - 1;\n                    this.setState({ activeDescendant: `${listClasses}-${activeElementIndex}` });\n                    setSelected(isNull(selected) ? 0 : selected - 1);\n                } else if (key === 'Escape' || key === 'Tab') {\n                    allowDeselect && setSelected(null, {triggerChange: true});\n                    this.setState({ focused: false, tabFocused: false });\n                } else if (key === 'Enter') {\n                    setSelected(selected, {triggerChange: true});\n                }\n            }}\n            onKeyEnter={() => {\n                if (focused) {\n                    setSelected(selected, {triggerChange: true});\n                } else {\n                    this.setState({focused: true});\n                }\n            }}\n            onKeyEscape={() => allowDeselect && setSelected(null, {triggerChange: true})}\n            activeDescendant={this.state.activeDescendant}\n            ariaLabel={ariaLabel}\n        />);\n        return (\n            <div\n                className={searchInputClasses}\n                ref={r => this.dummy = r}\n                role=\"combobox\"\n                onKeyUp={e => { if (e.key === 'Tab') this.setState({tabFocused: true});} }\n                onBlur={() => this.setState({tabFocused: false})}\n                aria-expanded={focused}>\n                {input}\n                {focused &&\n                    <Overlay\n                        dummy={this.dummy}\n                        anchor={Overlay.ANCHOR_BOTTOM}\n                        onClick={() => {\n                            this.setState({\n                                focused: false,\n                            });\n                        }}>\n                        <div role=\"region\" aria-live=\"polite\" className=\"visuallyHidden\">\n                            {`${data.length} results found`}\n                        </div>\n                        <InfiniteScroll\n                            selected={selected}\n                            fetchData={fetchData}\n                            page={page}\n                            loadingFirstBatch={false}\n                            loadingMore={loadingMore}\n                            maxHeight={275}\n                            withPointer={withPointer}\n                            data={data}\n                            setSelected={setSelected}\n                            setSearch={setSearch}\n                            className={cx({\n                                'Search__scroll': true,\n                                [scrollClass]: !!scrollClass,\n                            })}\n                            autoFocus>\n                            <List\n                                className={listClasses}\n                                value={value}\n                                size={size}\n                                rowClass={rowClass}\n                                spinnerColor={spinnerColor}\n                                allowDeselect={allowDeselect}\n                                CellComponent={CellComponent}\n                                activeDescendant={this.state.activeDescendant}\n                                tabIndex='-1'\n                                focused={focused} />\n                        </InfiniteScroll>\n                    </Overlay>\n                }\n            </div>\n        );\n    }\n}\n\nAbstractSearch.defaultProps = {\n    data: [],\n    size: ROW_SIZE_STANDARD,\n    disabled: false,\n    placeholder: 'Click to search',\n    iconAlignment: ICON_ALIGN_LEFT,\n    CellComponent: ListCell,\n    setSearchFocus: () => {},\n};\n\nAbstractSearch.propTypes = {\n    data: PropTypes.array,\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    iconAlignment: PropTypes.oneOf([\n        ICON_ALIGN_LEFT,\n        ICON_ALIGN_RIGHT,\n    ]),\n    selected: PropTypes.number,\n    value: PropTypes.any,\n    setSelected: PropTypes.func,\n    setSearch: PropTypes.func,\n    withPointer: PropTypes.bool,\n    label: PropTypes.string,\n    id: PropTypes.string,\n    disabled: PropTypes.bool,\n    className: PropTypes.string,\n    listClass: PropTypes.string,\n    searchInputClass: PropTypes.string,\n    rowClass: PropTypes.string,\n    scrollClass: PropTypes.string,\n    placeholder: PropTypes.string,\n    fetchData: PropTypes.func,\n    page: PropTypes.number,\n    loadingFirstBatch: PropTypes.bool,\n    loadingMore: PropTypes.bool,\n    spinnerColor: PropTypes.string,\n    allowDeselect: PropTypes.bool,\n    CellComponent: PropTypes.func.isRequired,\n    ariaLabel: PropTypes.string,\n    setSearchFocus: PropTypes.func,\n    customInputOnChange: PropTypes.func,\n    customInputValue: PropTypes.string,\n};\n\nexport default withStatic({\n    ICON_ALIGN_LEFT,\n    ICON_ALIGN_RIGHT,\n})(AbstractSearch);\n","import React from 'react';\nimport {withStatic} from '../../Hoc.jsx';\nimport AbstractSearch, {\n    ICON_ALIGN_LEFT,\n    ICON_ALIGN_RIGHT,\n} from './Abstract';\nimport classNames from 'classnames/bind';\nimport style from '../../../css/DefaultSearch.css';\nconst cx = classNames.bind(style);\n\nconst Search = React.forwardRef((props, ref) => (\n    <AbstractSearch\n        className={cx('DefaultSearch__container')}\n        searchInputClass={cx('DefaultSearch__searchInput')}\n        ref={ref}\n        {...props} />\n));\n\nSearch.displayName = 'Search';\n\nexport default withStatic({\n    ICON_ALIGN_LEFT,\n    ICON_ALIGN_RIGHT,\n})(Search);\n","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {isNull, formatDataList} from '../../Util';\nimport {withValue} from '../../Hoc.jsx';\nimport {API_CALL_DELAY, LIST_PAGE_SIZE} from '../../config/constants';\n\nclass AsyncDataProvider extends PureComponent {\n    static propTypes = {\n        page: PropTypes.number,\n        pageSize: PropTypes.number.isRequired,\n        children: PropTypes.node.isRequired,\n        source: PropTypes.func.isRequired,\n        fetchDataKey: PropTypes.string.isRequired,\n        fetchPagingKey: PropTypes.string.isRequired,\n        idKey: PropTypes.string.isRequired,\n        titleKey: PropTypes.string.isRequired,\n        dataKey: PropTypes.string.isRequired,\n        extraKey: PropTypes.string.isRequired,\n        withPointer: PropTypes.bool,\n        value: PropTypes.any,\n        setValue: PropTypes.func,\n        fetchOnMount: PropTypes.bool,\n        useCustomData: PropTypes.bool,\n        customData: PropTypes.any,\n        customLoading: PropTypes.bool,\n        customFormat: PropTypes.func,\n    }\n    static defaultProps = {\n        pageSize: 25,\n        page: 1,\n        fetchDataKey: 'data',\n        fetchPagingKey: 'paging',\n        idKey: 'id',\n        titleKey: 'title',\n        dataKey: 'data',\n        extraKey: 'extra',\n        withPointer: false,\n        fetchOnMount: true,\n        useCustomData: false,\n    }\n    constructor(props) {\n        super(props);\n        this.state = {\n            loadingFirstBatch: false,\n            loadingMore: false,\n            end: LIST_PAGE_SIZE,\n            page: props.page,\n            data: [],\n            selected: null,\n            searchTerm: '',\n        };\n        this.fetchData = this.fetchData.bind(this);\n        this.setSelected = this.setSelected.bind(this);\n        this.setSearch = this.setSearch.bind(this);\n        this.getData = this.getData.bind(this);\n    }\n    setSearch(term) {\n        const {searchTerm} = this.state;\n        if (searchTerm === term) return;\n        this.setState({\n            page: 0,\n            searchTerm: term,\n        }, () => {\n            clearTimeout(this.fetchTimer);\n            this.fetchTimer = setTimeout(() => {\n                this.fetchData({\n                    page: 1,\n                    search: term,\n                });\n            }, API_CALL_DELAY);\n        });\n    }\n    setSelected(selected, {triggerChange, doneCallback} = {}) {\n        const data = this.getData();\n        const {setValue} = this.props;\n        if (selected < 0 || selected >= data.length) return;\n        this.setState({\n            selected,\n        }, () => {\n            doneCallback && doneCallback();\n        });\n        if (triggerChange) {\n            const value = !isNull(selected) && data[selected] || null;\n            setValue(value);\n        }\n    }\n    getData() {\n        const {useCustomData, customData} = this.props;\n        const {data} = this.state;\n        return useCustomData ? customData : data;\n    }\n    getLoading() {\n        const {useCustomData, customLoading} = this.props;\n        const {loadingMore} = this.state;\n        return useCustomData ? customLoading : loadingMore;\n    }\n    componentDidMount() {\n        const {fetchOnMount} = this.props;\n        if (!fetchOnMount) return;\n        const {page, searchTerm} = this.state;\n        this.fetchData({\n            page,\n            search: searchTerm,\n        });\n    }\n    async fetchData(options = {}) {\n        const {idKey, titleKey, dataKey, extraKey, fetchDataKey,\n            fetchPagingKey, useCustomData, customFormat} = this.props;\n        const {loadingFirstBatch, searchTerm} = this.state;\n        const loadingMore = this.getLoading();\n        if (loadingFirstBatch || loadingMore) return;\n        options.perPage = this.props.pageSize;\n        const isLoadingMore = options.page && options.page > 1 || false;\n        options.search = searchTerm;\n        if (this.state.end && (this.state.page >= this.state.end)) return;\n        !isLoadingMore && this.setState({data: [], selected: null});\n        this.setState({\n            loadingFirstBatch: !isLoadingMore,\n            loadingMore: isLoadingMore,\n        });\n        let data;\n        try {\n            data = await this.props.source(options);\n        } catch (e) {\n            throw e;\n        } finally {\n            this.setState({\n                loadingFirstBatch: false,\n            });\n        }\n        // loadingMore = isLoadingMore && paging.page !== 1;\n        if (useCustomData) return;\n        const {data: dataList, paging} = formatDataList(data, {\n            fetchDataKey, fetchPagingKey, idKey, titleKey, dataKey, extraKey,\n            customFormat,\n        });\n        this.setState(oldState => ({\n            end: paging && paging.pageCount || oldState.end + this.props.pageSize,\n            page: (isLoadingMore && oldState.page || 0) + 1,\n            data: isLoadingMore\n                && [...oldState.data, ...dataList]\n                || dataList,\n            loadingMore: false,\n        }));\n    }\n    getValue() {\n        const {value, idKey} = this.props;\n        const {data} = this.state;\n        if (value && value.rawData || !value || !data.length) {\n            return value;\n        }\n        return data.find(item => item.rawData[idKey] === value[idKey]) || value;\n    }\n    render() {\n        const {children, withPointer, value, idKey} = this.props;\n        const {loadingFirstBatch, selected, searchTerm, page} = this.state;\n        const data = this.getData();\n        const loadingMore = this.getLoading();\n        return (\n            <React.Fragment>\n                {React.Children.map(children, child => React.cloneElement(child, {\n                    fetchData: this.fetchData,\n                    setSelected: withPointer && this.setSelected,\n                    loadingFirstBatch,\n                    loadingMore,\n                    page,\n                    data,\n                    selected: withPointer ? selected : null,\n                    value: withPointer ? value : null,\n                    withPointer,\n                    setSearch: this.setSearch,\n                    searchTerm,\n                    idKey,\n                }))}\n            </React.Fragment>\n        );\n    }\n}\n\nexport default withValue(AsyncDataProvider);\n","// Radio button\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../../../css/Radio.css';\nimport {compose} from '../../Util';\nimport {\n    withAutoFocus,\n    withValue,\n    withFocusState,\n    withStatic,\n} from '../../Hoc.jsx';\nimport classNames from 'classnames/bind';\nimport {KEY_SPACEBAR} from '../../config/constants';\n\nconst cx = classNames.bind(style);\n\nconst STATUS_IDLE = 'idle';\nconst STATUS_DISABLED = 'disabled';\n\nconst RadioButton = React.forwardRef(({\n    className,\n    status,\n    focused,\n    hover,\n    setKeyDown,\n    setFocus,\n    setHover,\n    value,\n    setValue,\n}, ref) => (\n    <div\n        className={cx({\n            'RadioButton': true,\n            'RadioButton--checked': value === true,\n            [`RadioButton--${status}`]: true,\n            'RadioButton--focused': focused,\n            'RadioButton--hover': hover,\n            [className]: !!className,\n        })}\n        onMouseEnter={() => {\n            setHover(true);\n        }}\n        onMouseLeave={() => {\n            setHover(false);\n        }}\n        onFocus={() => {\n            setFocus(true);\n        }}\n        onBlur={() => {\n            setFocus(false);\n        }}\n        onClick={() => (status === STATUS_IDLE) && setValue(!value)}\n        tabIndex='-1'\n        onKeyDown={e => {\n            setKeyDown(e.keyCode, e);\n            const key = e.keyCode;\n            if (key === KEY_SPACEBAR) {\n                (status === STATUS_IDLE) && setValue(!value);\n            }\n        }}\n        ref={ref} >\n        <div className={cx('RadioButton__outer')}>\n            {(value === true) && <span className={cx('RadioButton__inner')} />}\n        </div>\n    </div>\n));\n\nRadioButton.displayName = 'RadioButton';\n\nRadioButton.propTypes = {\n    className: PropTypes.string,\n    status: PropTypes.oneOf([\n        STATUS_IDLE,\n        STATUS_DISABLED,\n    ]),\n    value: PropTypes.bool,\n    focused: PropTypes.bool,\n    hover: PropTypes.bool,\n    setValue: PropTypes.func,\n    setFocus: PropTypes.func,\n    setHover: PropTypes.func,\n    setKeyDown: PropTypes.func,\n};\n\nRadioButton.defaultProps = {\n    status: STATUS_IDLE,\n    focused: false,\n    hover: false,\n    setFocus: () => null,\n    setHover: () => null,\n    setValue: () => null,\n    setKeyDown: () => null,\n};\n\nconst RadioButtonComposer = compose(\n    withAutoFocus,\n    withValue,\n    withFocusState,\n    withStatic({\n        STATUS_IDLE,\n        STATUS_DISABLED,\n    }),\n);\n\nexport default RadioButtonComposer(RadioButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from './Abstract';\nimport RadioButton from '../Radio';\nimport style from '../../../css/List.css';\n\nconst cx = classNames.bind(style);\n\nconst ListCellRadio = ({\n    title,\n    data,\n    extra,\n    highlighted,\n    size,\n    className,\n    value,\n    status,\n}) => (\n    <div className={cx({\n        'List__row__cell': true,\n        'List__row__cell-radio': true,\n        [`List__row__cell--${size}`]: true,\n        [`List__row__cell--${status}`]: !!status,\n        [className]: !!className,\n    })}>\n        <div className={cx('List__row__cell__main')}>\n            {(size === ROW_SIZE_LARGE) && title && (\n                <span className={cx('List__row__cell__title')}>\n                    {title}\n                </span>\n            )}\n            <span className={cx('List__row__cell__data')}>\n                {data}\n            </span>\n            {(size === ROW_SIZE_LARGE) && extra && (\n                <span className={cx('List__row__cell__extra__info')}>\n                    {extra}\n                </span>\n            )}\n        </div>\n        <div className={cx('List__row__cell__extra')}>\n            <div className={cx('List__row__cell__extra__radio')}>\n                <RadioButton value={value} hover={highlighted} />\n            </div>\n        </div>\n    </div>\n);\n\nListCellRadio.propTypes = {\n    title: PropTypes.node,\n    data: PropTypes.node.isRequired,\n    value: PropTypes.bool,\n    extra: PropTypes.node,\n    highlighted: PropTypes.bool,\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    className: PropTypes.string,\n    status: PropTypes.string,\n};\n\nListCellRadio.defaultProps = {\n    title: '',\n    data: '',\n    extra: '',\n    value: false,\n    highlighted: false,\n    size: ROW_SIZE_STANDARD,\n};\n\nexport default ListCellRadio;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport style from '../../../css/List.css';\nimport {withStatic} from '../../Hoc.jsx';\nimport AbstractList from '../List/Abstract';\nimport ListRow from '../List/Row';\nimport ListCellRadio from '../List/CellRadio';\nimport ListCellLoader from '../List/CellLoader';\nimport {ROW_SIZE_STANDARD, ROW_SIZE_LARGE} from '../List/Abstract';\nimport RadioButton from '.';\nimport {compose, isNull} from '../../Util';\nimport {SEARCH_RESET_DELAY} from '../../config/constants';\n\nconst cx = classNames.bind(style);\n\nlet timer = Date.now();\n\nconst List = React.forwardRef(({\n    data,\n    value,\n    loadingFirstBatch,\n    loadingMore,\n    border,\n    selected,\n    setSelected,\n    withPointer,\n    className,\n    setSearch,\n    searchTerm,\n    rowClass,\n    spinnerColor,\n    size,\n    allowDeselect,\n    idKey,\n    tabIndex,\n    ariaLabel,\n    showFocusOutline,\n    focused,\n    ...props\n}, ref) => (\n    <AbstractList\n        ref={ref}\n        className={cx({\n            [className]: !!className,\n            'List--no-border': border === false,\n        })}\n        onMouseOver={over => {\n            const selectedIndex = data.findIndex(item => item === value);\n            withPointer && !over && selectedIndex >= 0 && setSelected(selectedIndex, {\n                preventScroll: true,\n            });\n        }}\n        keyDown={event => {\n            const { key } = event;\n            if (key.length === 1 && /[a-z0-9]/i.test(key)) {\n                const now = Date.now();\n                if (now - timer >= SEARCH_RESET_DELAY) {\n                    setSearch(key);\n                } else {\n                    setSearch(searchTerm + key);\n                }\n                timer = now;\n            } else if (key === 'ArrowDown') {\n                withPointer && setSelected(isNull(selected) ? 0 : selected + 1, {scroll: true, triggerChange: true});\n            } else if (key === 'ArrowUp') {\n                withPointer && setSelected(isNull(selected) ? 0 : selected - 1, {scroll: true, triggerChange: true});\n            } else if (key === 'Tab' || key === 'Escape') {\n                withPointer && allowDeselect && setSelected(null, {triggerChange: true});\n                showFocusOutline(false);\n                ref.current.blur();\n            } else if (key === 'Enter') {\n                event.stopPropagation();\n                withPointer && setSelected(selected, {triggerChange: true});\n            }\n        }}\n        keyUp={event => {\n            const {key} = event;\n            if (key === 'Tab') {\n                showFocusOutline(true);\n            }\n        }}\n        blur={blur => blur && showFocusOutline(false)}\n        withPointer={withPointer}\n        size={size}\n        {...props}\n        tabIndex={tabIndex}\n        ariaLabel={ariaLabel}\n        ariaExpanded={focused}\n        role={'radiogroup'}\n        activeDescendant={`${className}-${selected}`}>\n        {([\n            ...data.map((item, index) => (\n                <ListRow\n                    id={`${className}-${index}`}\n                    key={item.key + item.title}\n                    className={cx({\n                        [rowClass]: !!rowClass,\n                    })}\n                    role='radio'\n                    onClick={e => {\n                        e.stopPropagation();\n                        showFocusOutline(false);\n                        withPointer && setSelected(index, {triggerChange: true});\n                    }}\n                    onMouseOver={over => withPointer && over && setSelected(index, {\n                        preventScroll: true,\n                    })}\n                    ariaSelected={(selected === index)}\n                    ariaLabel={item.title + item.data}>\n                    <ListCellRadio\n                        title={item.title}\n                        data={item.data}\n                        extra={item.extra}\n                        value={(\n                            (value && value.rawData && value.rawData[idKey]\n                            || value && value.rawData) || value) === (\n                            (item && item.rawData && item.rawData[idKey]\n                            || item && item.rawData) || item)}\n                        highlighted={selected === index} />\n                </ListRow>\n            )),\n            (loadingFirstBatch || loadingMore) && (\n                <ListRow\n                    key={-1}>\n                    <ListCellLoader spinnerColor={spinnerColor} />\n                </ListRow>\n            ),\n        ]).filter(i => !!i)}\n    </AbstractList>\n));\n\nList.displayName = 'RadioList';\n\nList.propTypes = {\n    data: PropTypes.array,\n    loadingFirstBatch: PropTypes.bool,\n    loadingMore: PropTypes.bool,\n    border: PropTypes.bool,\n    selected: PropTypes.number,\n    setSearch: PropTypes.func,\n    searchTerm: PropTypes.string,\n    rowClass: PropTypes.string,\n    spinnerColor: PropTypes.string,\n    value: PropTypes.any,\n    setSelected: PropTypes.func,\n    withPointer: PropTypes.bool,\n    allowDeselect: PropTypes.bool,\n    idKey: PropTypes.string,\n    className: PropTypes.string,\n    size: PropTypes.oneOf([\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    ]),\n    status: PropTypes.oneOf([\n        RadioButton.STATUS_IDLE,\n        RadioButton.STATUS_DISABLED,\n    ]),\n    tabIndex: PropTypes.string,\n    ariaLabel: PropTypes.string,\n    focused: PropTypes.bool,\n    showFocusOutline: PropTypes.func,\n};\n\nList.defaultProps = {\n    border: true,\n    selected: null,\n    setSelected: () => null,\n    showFocusOutline: () => null,\n    size: ROW_SIZE_STANDARD,\n    idKey: 'id',\n};\n\nconst ListComposer = compose(\n    withStatic({\n        ROW_SIZE_STANDARD,\n        ROW_SIZE_LARGE,\n    }),\n);\n\nexport default ListComposer(List);\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport RadioList from '@token-io/lib-web-components/src/Components/Radio/RadioList';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport SimpleScroll from '@token-io/lib-web-components/src/Components/Scroll/Simple';\nimport { intlShape } from 'react-intl';\nimport msg from 'config/locales/en.json';\nimport { setBank } from 'actions/shared';\nimport { FormattedMessage } from 'react-intl';\n\nconst RecentBankList = ({ intl, setBank, selectedBankId, banks }) => (\n    <Fragment>\n        <TokenTitle sub className=\"BankSelector-search-label\">\n            <FormattedMessage id={'common.bankSelector.recent'} />\n        </TokenTitle>\n        <StaticDataProvider\n            idKey={'id'}\n            titleKey={'country'}\n            dataKey={'name'}\n            extraKey={'identifier'}\n            source={() => banks}\n            customFormat={({ id, name, identifier, selectedCountry }) => ({\n                id,\n                name,\n                country: intl.formatMessage({\n                    id: `common.country.${selectedCountry}`,\n                    defaultMessage: msg.common.country[selectedCountry],\n                }),\n                identifier: identifier || '',\n            })}\n            useCustomData\n            customData={banks}\n            value={banks.find(item => item.id === selectedBankId)}\n            customLoading={false}\n            customSetValue={async (value, { doneCallback }) => {\n                await setBank(value);\n                doneCallback();\n            }}\n            withPointer>\n            <SimpleScroll>\n                <RadioList\n                    size={'large'}\n                    className={'RecentBankSelector'}\n                    tabIndex=\"0\"\n                    ariaLabel={intl.formatMessage({\n                        id: 'common.bankSelector.recent',\n                    })}\n                    focused\n                />\n            </SimpleScroll>\n        </StaticDataProvider>\n    </Fragment>\n);\n\nRecentBankList.propTypes = {\n    selectedBankId: PropTypes.string,\n    setBank: PropTypes.func.isRequired,\n    banks: PropTypes.array.isRequired,\n    intl: intlShape.isRequired,\n};\n\nRecentBankList.defaultProps = {\n    banks: [],\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    selectedBankId: sharedService.getSelectedBankId(),\n});\n\nconst mapDispatchToProps = {\n    setBank,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RecentBankList);\n","import React from 'react';\nimport style from './RightChevron.css';\nimport classNames from 'classnames/bind';\nimport PropTypes from 'prop-types';\n\nconst cx = classNames.bind(style);\n\nconst RightChevron = ({ color = 'none', svgClassName }) => {\n    return (\n        <div className={cx('Right-chevron-container')}>\n            <svg\n                className={cx({\n                    [svgClassName]: !!svgClassName,\n                })}\n                xmlns=\"http://www.w3.org/2000/svg\"\n                height=\"24\"\n                viewBox=\"0 0 24 24\"\n                width=\"24\">\n                <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n                <path\n                    fill={color}\n                    className={cx('Right-chevron')}\n                    d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n                />\n            </svg>\n        </div>\n    );\n};\n\nRightChevron.propTypes = {\n    color: PropTypes.string,\n    svgClassName: PropTypes.string,\n};\n\nexport default RightChevron;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport List from '@token-io/lib-web-components/src/Components/List';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport { intlShape } from 'react-intl';\nimport msg from 'config/locales/en.json';\nimport { setBank, setOneStepSupport } from 'actions/shared';\nimport { FormattedMessage } from 'react-intl';\nimport { fetchTransferDestinationUrl } from '../../../actions/pisp';\nimport classNames from 'classnames/bind';\nimport style from './TopBanks.css';\nimport RightChevron from '../Icons/RightChevron';\n\nconst cx = classNames.bind(style);\n\nconst TopBanks = props => {\n    const {\n        intl,\n        setBank,\n        selectedBankId,\n        banks,\n        setBankAndProceedToConsent,\n        setTransferDestinationsUrl,\n        destinations,\n        fetchTransferDestinationUrl,\n        searchInputFocused,\n    } = props;\n    const hasTransferDestinationsUrlOnly =\n        setTransferDestinationsUrl && !destinations;\n    return (\n        <Fragment>\n            <br />\n            <TokenTitle\n                sub\n                className=\"BankSelector-search-label\"\n                aria-hidden={searchInputFocused ? 'true' : 'false'}\n                tabIndex={searchInputFocused ? '-1' : undefined}>\n                <FormattedMessage id={'common.bankSelector.topBanks'} />\n            </TokenTitle>\n            <StaticDataProvider\n                idKey={'id'}\n                titleKey={'name'}\n                extraKey={'identifier'}\n                customFormat={({ id, name, selectedCountry, identifier }) => ({\n                    id,\n                    name,\n                    country: intl.formatMessage({\n                        id: `common.country.${selectedCountry}`,\n                        defaultMessage: msg.common.country[selectedCountry],\n                    }),\n                    identifier: identifier || '',\n                })}\n                useCustomData\n                customData={banks.slice(0, 5)}\n                value={banks.find(item => item.id === selectedBankId)}\n                customLoading={false}\n                customSetValue={async (value, { doneCallback }) => {\n                    await setBank(value);\n                    setTimeout(() => {\n                        hasTransferDestinationsUrlOnly\n                            ? fetchTransferDestinationUrl(value)\n                            : setBankAndProceedToConsent(value);\n                    }, 500);\n                    doneCallback();\n                }}\n                withPointer>\n                <List\n                    size={'large'}\n                    className={'TopBanks'}\n                    rowClass={cx('TopBanks-item')}\n                    tabIndex={searchInputFocused ? '-1' : '0'}\n                    ariaHidden={searchInputFocused ? 'true' : 'false'}\n                    ariaLabel={intl.formatMessage({\n                        id: 'common.bankSelector.topBanks',\n                    })}\n                    appendItem={<RightChevron svgColor={'#0074C7'} />}\n                    focused\n                />\n            </StaticDataProvider>\n        </Fragment>\n    );\n};\n\nTopBanks.propTypes = {\n    selectedBankId: PropTypes.string,\n    setBank: PropTypes.func.isRequired,\n    banks: PropTypes.array.isRequired,\n    intl: intlShape.isRequired,\n    setOneStepSupport: PropTypes.func.isRequired,\n    setBankAndProceedToConsent: PropTypes.func.isRequired,\n    destinations: PropTypes.array,\n    setTransferDestinationsUrl: PropTypes.string,\n    fetchTransferDestinationUrl: PropTypes.func,\n    searchInputFocused: PropTypes.bool,\n};\n\nTopBanks.defaultProps = {\n    banks: [],\n};\n\nconst mapStateToProps = ({ sharedService, tokenService }) => ({\n    selectedBankId: sharedService.getSelectedBankId(),\n    destinations: tokenService.getDestinations(),\n    setTransferDestinationsUrl: tokenService.getSetTransferDestinationsUrl(),\n});\n\nconst mapDispatchToProps = {\n    setBank,\n    setOneStepSupport,\n    fetchTransferDestinationUrl,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TopBanks);\n","import React, { Fragment, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './BankSelector.css';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport BankOutageError from '../Shared/BankOutageError.js';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Search from '@token-io/lib-web-components/src/Components/Search';\nimport { ROW_SIZE_LARGE } from '@token-io/lib-web-components/src/Components/List/Abstract';\nimport AsyncDataProvider from '@token-io/lib-web-components/src/Components/Data/AsyncDataProvider';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport Dropdown from '@token-io/lib-web-components/src/Components/Dropdown';\nimport RecentBankList from './RecentBankList';\nimport {\n    fetchBanks,\n    fetchTopBanks,\n    declineTerms,\n    clearBankStatus,\n    setCountry,\n} from 'actions/shared';\nimport {\n    argbToRgba,\n    formatCountries,\n    getBankRawData,\n    formatCountry,\n} from 'util/index';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport TopBanks from './TopBanks';\nimport { fetchTransferDestinationUrl } from '../../../actions/pisp';\n\nconst cx = classNames.bind(style);\n\nclass BankSelectorFirst extends PureComponent {\n    constructor(props) {\n        super(props);\n        this.state = {\n            recentBanks: [],\n            country: null, // Denotes the currently selected country\n            loadingMore: false,\n            searchTerm: undefined,\n            showMore: false,\n            dropDown: undefined,\n            displayBankOutageError: false,\n            searchInputFocused: false,\n            paging: {\n                page: 1,\n                perPage: 25,\n                pageCount: 1,\n            },\n        };\n        this.handleCountryChange = this.handleCountryChange.bind(this);\n        this.setPaging = this.setPaging.bind(this);\n        this.searchRef = React.createRef();\n        this.setDropDownState = this.setDropDownState.bind(this);\n        this.setSearchFocus = this.setSearchFocus.bind(this);\n    }\n\n    dismissBankOutageError() {\n        this.setState({ displayBankOutageError: false });\n        // clear bank status\n        this.props.clearBankStatus();\n    }\n\n    setDisplayBankOutageError() {\n        if (\n            this.props.bankStatus &&\n            Object.keys(this.props.bankStatus).length > 0\n        ) {\n            if (\n                this.props.bankStatus.isLive != null &&\n                !this.props.bankStatus.isLive\n            ) {\n                this.setState({ displayBankOutageError: true }, () => {\n                    // display previously selected country as selected by default in case of bank outage error.\n                    const previouslySelectedCountry = this.props\n                        .selectedCountry;\n                    if (previouslySelectedCountry != null) {\n                        const country = formatCountry(\n                            previouslySelectedCountry,\n                            this.props.intl.formatMessage,\n                        );\n                        this.handleCountryChange(country, true);\n                    }\n                });\n            }\n        }\n    }\n\n    /*\n     * Handler for when the user changes country, does proper state management and fires API call\n     */\n    handleCountryChange(selectedItem, skipDismiss = false) {\n        if (\n            JSON.stringify(selectedItem) !== JSON.stringify(this.state.country)\n        ) {\n            this.props.fetchTopBanks(selectedItem);\n            this.setState(\n                {\n                    country: selectedItem,\n                    loadingMore: false,\n                    showMore: false,\n                },\n                selectedItem &&\n                    (() => {\n                        this.props.fetchBanks(\n                            { country: selectedItem.code },\n                            this.setPaging,\n                        );\n                    }),\n            );\n            this.state.displayBankOutageError &&\n                !skipDismiss &&\n                this.dismissBankOutageError();\n            this.props.setCountry(selectedItem.code);\n        } else {\n            this.setDropDownState(false);\n        }\n    }\n\n    setSearchFocus(focus) {\n        // eslint-disable-next-line no-extra-boolean-cast\n        if (!!focus) {\n            this.dismissBankOutageError();\n        }\n        this.setState({ searchInputFocused: focus });\n    }\n\n    setDropDownState(state) {\n        if (\n            this.props.countries.length !== 1 &&\n            !this.props.destinationCountry\n        ) {\n            this.dismissBankOutageError();\n        }\n        this.setState({ dropDown: state });\n    }\n\n    setPaging(paging) {\n        this.setState({\n            paging,\n        });\n    }\n\n    proceed = () => {\n        const hasTransferDestinationsUrlOnly =\n            this.props.setTransferDestinationsUrl && !this.props.destinations;\n        const selectedBank = this.props.selectedBank;\n\n        if (hasTransferDestinationsUrlOnly) {\n            this.props.fetchTransferDestinationUrl(selectedBank);\n        } else {\n            this.props.setBankAndProceedToConsent(selectedBank);\n        }\n    };\n\n    displayButtonContainer = () => {\n        const { displayRecentBanks } = this.props;\n        const { recentBanks, country } = this.state;\n        if (\n            displayRecentBanks &&\n            recentBanks?.length > 0 &&\n            !country &&\n            !this.state.displayBankOutageError\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    };\n\n    componentDidUpdate() {\n        this.props.setDisplayFooterShadow(!this.displayButtonContainer());\n    }\n\n    async componentDidMount() {\n        let recentBanks = this.props.recentBanksList;\n        // If countries list present in requestPayload, filter out any bank not\n        // in the mentioned country list.\n        const requestCountries = this.props.requestCountries;\n        if (requestCountries && requestCountries.length > 0) {\n            recentBanks = recentBanks?.filter(b =>\n                requestCountries.includes(b.selectedCountry),\n            );\n        }\n        this.setState({ recentBanks });\n\n        // Check if there is only one country present or\n        // if there is any default country is there then\n        // set it immediately after the component is mounted\n        if (\n            this.props.countries.length === 1 ||\n            (this.props.destinationCountry &&\n                this.props.countries.includes(this.props.destinationCountry))\n        ) {\n            const destinationCountry =\n                this.props.destinationCountry || this.props.countries[0];\n            const country = formatCountry(\n                destinationCountry,\n                this.props.intl.formatMessage,\n            );\n            this.handleCountryChange(country);\n        }\n\n        this.setDisplayBankOutageError();\n    }\n\n    render() {\n        const {\n            country,\n            loadingMore,\n            searchTerm,\n            paging,\n            recentBanks,\n        } = this.state;\n        const {\n            declineTerms,\n            countries,\n            banks,\n            intl,\n            fetchBanks,\n            setBankAndProceedToConsent,\n            selectedBankId,\n            selectedBank,\n            spinnerColor,\n            setTransferDestinationsUrl,\n            destinations,\n            topBanks,\n            fetchTransferDestinationUrl,\n            displayRecentBanks,\n            showBankSelectorTitle,\n            tppProfile,\n            bankStatus,\n        } = this.props;\n        const { page, perPage, pageCount } = paging;\n        const status =\n            (recentBanks?.findIndex(bank => bank.id === selectedBankId) ===\n                -1 &&\n                Button.STATUS_DISABLED) ||\n            Button.STATUS_IDLE;\n        const hasTransferDestinationsUrlOnly =\n            setTransferDestinationsUrl && !destinations;\n        return (\n            <Fragment>\n                <TokenContainer className={'BankSelector-container'}>\n                    <TokenTitle>\n                        <FormattedMessage id={'common.bankSelector.title'} />\n                    </TokenTitle>\n                    {showBankSelectorTitle && (\n                        <>\n                            <TokenTitle sub>\n                                <FormattedMessage\n                                    id={'common.bankSelector.bankSelectorTitle'}\n                                    values={{\n                                        TPP_NAME: tppProfile.tppName,\n                                    }}\n                                />\n                            </TokenTitle>\n                            <br />\n                        </>\n                    )}\n\n                    <TokenTitle sub className=\"BankSelector-country-label\">\n                        {(this.state.country && (\n                            <FormattedMessage\n                                id={'common.bankSelector.subtitleSelected'}\n                            />\n                        )) || (\n                            <FormattedMessage\n                                id={'common.bankSelector.subtitle'}\n                            />\n                        )}\n                    </TokenTitle>\n                    {(countries.length === 1 && (\n                        <div className=\"BankSelector_Single\">\n                            {\n                                formatCountries(\n                                    countries,\n                                    intl.formatMessage,\n                                )[0].key\n                            }\n                        </div>\n                    )) || (\n                        <StaticDataProvider\n                            source={formatCountries(\n                                countries,\n                                intl.formatMessage,\n                            )}\n                            idKey={'code'}\n                            titleKey={'code'}\n                            dataKey={'key'}\n                            onChange={this.handleCountryChange}\n                            value={country}\n                            withPointer>\n                            <Dropdown\n                                className={'BankSelector-country'}\n                                listClass={'BankSelector-country-dropdown'}\n                                rowClass={'BankSelector-country-item'}\n                                dropDownState={this.state.dropDown}\n                                setDropDownState={this.setDropDownState}\n                                placeholder={this.props.intl.formatMessage({\n                                    id:\n                                        'common.bankSelector.countryPlaceholder',\n                                })}\n                                ariaLabel={this.props.intl.formatMessage({\n                                    id: 'common.bankSelector.subtitle',\n                                })}\n                                allowDeselect\n                            />\n                        </StaticDataProvider>\n                    )}\n\n                    {country ? (\n                        <TokenTitle sub className=\"BankSelector-search-label\">\n                            <label htmlFor=\"Bank-Selector-Input\">\n                                <FormattedMessage\n                                    id={'common.bankSelector.search.label'}\n                                />\n                            </label>\n                        </TokenTitle>\n                    ) : null}\n                    {country ? (\n                        <div className={cx('BankSelector-input-container')}>\n                            <AsyncDataProvider\n                                page={page}\n                                pageSize={perPage}\n                                source={async options => {\n                                    const searching =\n                                        options.search !== searchTerm;\n                                    const nextPage =\n                                        (searching && 1) ||\n                                        (page && page + 1) ||\n                                        2;\n                                    if (\n                                        !searching &&\n                                        (loadingMore || page >= pageCount)\n                                    )\n                                        return;\n                                    this.setState({\n                                        loadingMore: true,\n                                        searchTerm: options.search,\n                                    });\n                                    await fetchBanks(\n                                        Object.assign(options, {\n                                            country: country && country.code,\n                                            page: nextPage,\n                                        }),\n                                        this.setPaging,\n                                    );\n                                    this.setState({\n                                        loadingMore: false,\n                                    });\n                                }}\n                                fetchOnMount={false}\n                                useCustomData\n                                customData={banks}\n                                customLoading={loadingMore}\n                                customSetValue={async (\n                                    value,\n                                    { doneCallback },\n                                ) => {\n                                    const bank = {\n                                        ...value.rawData,\n                                        selectedCountry: country.code.toUpperCase(),\n                                    };\n                                    hasTransferDestinationsUrlOnly\n                                        ? fetchTransferDestinationUrl(bank)\n                                        : setBankAndProceedToConsent(bank);\n                                    doneCallback();\n                                }}\n                                value={selectedBank}\n                                withPointer>\n                                <Search\n                                    ref={this.searchRef}\n                                    id={'Bank-Selector-Input'}\n                                    size={ROW_SIZE_LARGE}\n                                    placeholder={\n                                        this.state.searchInputFocused\n                                            ? null\n                                            : this.props.intl.formatMessage({\n                                                id:\n                                                      'common.bankSelector.search.placeholder',\n                                            })\n                                    }\n                                    className={'BankSelector-input'}\n                                    listClass={'BankSelector-banks'}\n                                    rowClass={'BankSelector-banks-item'}\n                                    spinnerColor={spinnerColor}\n                                    ariaLabel={this.props.intl.formatMessage({\n                                        id:\n                                            'common.bankSelector.search.ariaLabel',\n                                    })}\n                                    setSearchFocus={this.setSearchFocus}\n                                />\n                            </AsyncDataProvider>\n                        </div>\n                    ) : (\n                        (displayRecentBanks &&\n                            recentBanks?.length &&\n                            !this.state.displayBankOutageError && (\n                            <RecentBankList banks={recentBanks} />\n                        )) ||\n                        null\n                    )}\n                    {country &&\n                        !this.state.searchInputFocused &&\n                        topBanks.length > 0 &&\n                        !this.state.displayBankOutageError && (\n                        <TopBanks\n                            banks={getBankRawData(topBanks)}\n                            setBankAndProceedToConsent={\n                                setBankAndProceedToConsent\n                            }\n                            searchInputFocused={\n                                this.state.searchInputFocused\n                            }\n                        />\n                    )}\n                    {this.state.displayBankOutageError && bankStatus.bank && (\n                        <BankOutageError bank={bankStatus.bank} />\n                    )}\n                </TokenContainer>\n                {this.displayButtonContainer() && (\n                    <TokenButtonsWrapper>\n                        <Button\n                            status={status}\n                            onClick={this.proceed}\n                            text={\n                                <FormattedMessage id={'common.button.next'} />\n                            }\n                        />\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    </TokenButtonsWrapper>\n                )}\n            </Fragment>\n        );\n    }\n}\n\nBankSelectorFirst.propTypes = {\n    countries: PropTypes.array.isRequired,\n    banks: PropTypes.array.isRequired,\n    selectedBankId: PropTypes.string,\n    selectedBank: PropTypes.object,\n    bankStatus: PropTypes.object,\n    fetchBanks: PropTypes.func.isRequired,\n    setBankAndProceedToConsent: PropTypes.func.isRequired,\n    backToBankSelector: PropTypes.func.isRequired,\n    hideConsent: PropTypes.bool,\n    spinnerColor: PropTypes.string,\n    intl: intlShape.isRequired,\n    tokenType: PropTypes.string.isRequired,\n    transferTypeDestinations: PropTypes.array.isRequired,\n    setTransferDestinationsUrl: PropTypes.string,\n    destinations: PropTypes.array,\n    declineTerms: PropTypes.func.isRequired,\n    clearBankStatus: PropTypes.func,\n    fetchTopBanks: PropTypes.func.isRequired,\n    topBanks: PropTypes.array.isRequired,\n    recentBanksList: PropTypes.array,\n    setCountry: PropTypes.func,\n    destinationCountry: PropTypes.string,\n    alias: PropTypes.string,\n    tppProfile: PropTypes.object,\n    fetchTransferDestinationUrl: PropTypes.func,\n    tppMemberAndRealmId: PropTypes.object.isRequired,\n    displayRecentBanks: PropTypes.bool,\n    requestCountries: PropTypes.array.isRequired,\n    showBankSelectorTitle: PropTypes.bool,\n    resellerName: PropTypes.string,\n    setDisplayFooterShadow: PropTypes.func,\n    hideDefaultCountriesAndBanks: PropTypes.bool,\n    selectedCountry: PropTypes.string,\n};\n\nBankSelectorFirst.defaultProps = {\n    banks: [],\n    topBanks: [],\n    requestCountries: [],\n};\n\nconst mapStateToProps = ({\n    sharedService,\n    tokenRequestService,\n    tokenService,\n}) => {\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    const tppProfile = tokenRequestService.getTppProfile();\n    const tppMemberAndRealmId = tokenRequestService.getTppMemberAndRealmId();\n    const hideDefaultCountriesAndBanks = tokenRequestService.getTppFeature(\n        featureConfig.HIDE_DEFAULT_COUNTRIES_AND_BANKS,\n    );\n    const displayRecentBanks = tokenRequestService.getTppFeature(\n        featureConfig.SUPPORT_RECENT_BANKS,\n        !tokenRequestService.hasTppFeatures(),\n    );\n    const memberCountries = sharedService.getCountries();\n    const requestCountries = tokenRequestService.getRequestCountries();\n    const countries = requestCountries ? requestCountries : memberCountries;\n    const showBankSelectorTitle = tokenRequestService.getTppFeature(\n        featureConfig.SHOW_BANK_SELECTOR_TITLE,\n        false,\n    );\n    return {\n        banks: sharedService.getBanks(),\n        countries: countries,\n        requestCountries: requestCountries,\n        selectedBankId: sharedService.getSelectedBankId(),\n        bankStatus: sharedService.getBankStatus(),\n        selectedBank: sharedService.getSelectedBank(),\n        spinnerColor: argbToRgba(colors['color-primary']),\n        hideConsent: tokenRequestService.getHideConsent(),\n        tokenType: sharedService.getTokenType(),\n        transferTypeDestinations: tokenService.getTransferTypeDestinations(\n            sharedService.getTokenType(),\n        ),\n        selectedCountry: sharedService.getSelectedCountry(),\n        setTransferDestinationsUrl: tokenService.getSetTransferDestinationsUrl(),\n        destinations: tokenService.getDestinations(),\n        topBanks: sharedService.getTopBanks(),\n        recentBanksList: sharedService.getRecentBanks(),\n        destinationCountry: sharedService.getDefaultCountry(),\n        alias: tokenRequestService.getTppAlias().value,\n        resellerName: tokenRequestService.getResellerName(),\n        tppMemberAndRealmId,\n        displayRecentBanks,\n        showBankSelectorTitle,\n        hideDefaultCountriesAndBanks,\n        tppProfile,\n    };\n};\n\nconst mapDispatchToProps = {\n    fetchBanks,\n    setCountry,\n    fetchTopBanks,\n    fetchTransferDestinationUrl,\n    declineTerms,\n    clearBankStatus,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BankSelectorFirst);\n","import React from 'react';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport { setBankAndProceedToConsent, backToBankSelector } from 'actions/aisp';\nimport BankSelectorFirst from '../Shared/BankSelectorFirst';\n\n// Higher order component BankSelector for AISP\nconst AispBankSelectorFirst = props => <BankSelectorFirst {...props} />;\n\nAispBankSelectorFirst.propTypes = {\n    setBankAndProceedToConsent: PropTypes.func,\n    backToBankSelector: PropTypes.func,\n};\n\nconst mapDispatchToProps = {\n    setBankAndProceedToConsent,\n    backToBankSelector,\n};\n\nexport default connect(null, mapDispatchToProps)(AispBankSelectorFirst);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport { SpinnerSmall } from '@token-io/lib-web-components/src/Components/Spinner';\nimport style from './SmallSpinner.css';\n\nconst cx = classNames.bind(style);\n\nconst SmallSpinner = ({ className, color }) => {\n    return (\n        <span\n            className={cx({\n                [className]: !!className,\n            })}>\n            <SpinnerSmall\n                className={cx({\n                    Custom_spinner: true,\n                })}\n                color={color}\n            />\n        </span>\n    );\n};\n\nSmallSpinner.propTypes = {\n    className: PropTypes.string,\n    color: PropTypes.string,\n};\n\nexport default SmallSpinner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './CheckIcon.css';\nimport classNames from 'classnames/bind';\nimport { FaCheck } from 'react-icons/fa';\n\nconst cx = classNames.bind(style);\n\nconst CheckIcon = ({ className, title }) => (\n    <FaCheck\n        title={title}\n        className={cx({\n            CheckIcon: true,\n            [className]: !!className,\n        })}\n    />\n);\n\nCheckIcon.propTypes = {\n    className: PropTypes.string,\n    title: PropTypes.string,\n};\n\nexport default CheckIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './CrossIconCircle.css';\nimport classNames from 'classnames/bind';\nimport { FaRegTimesCircle } from 'react-icons/fa';\n\nconst cx = classNames.bind(style);\n\nconst CrossIconCircle = ({ className, title }) => (\n    <FaRegTimesCircle\n        title={title}\n        className={cx({\n            CrossIcon: true,\n            [className]: !!className,\n        })}\n    />\n);\n\nCrossIconCircle.propTypes = {\n    className: PropTypes.string,\n    title: PropTypes.string,\n};\n\nexport default CrossIconCircle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './FeedbackIcon.css';\nimport classNames from 'classnames/bind';\nimport { connect } from 'reducers';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport SmallSpinner from './../Shared/SmallSpinner';\nimport CheckIcon from './../Icons/CheckIcon';\nimport CrossIcon from './../Icons/CrossIconCircle';\nimport { argbToRgba } from 'util/index';\n\nconst cx = classNames.bind(style);\n\nconst FeedbackIcon = ({ color, isValid, displaySpinner, preCondition }) => {\n    return (\n        (displaySpinner && (\n            <SmallSpinner\n                className={cx({\n                    TextInput__inner__loader: true,\n                    Custom__spinner: true,\n                })}\n                color={color}\n            />\n        )) ||\n        (preCondition &&\n            ((isValid && <CheckIcon title=\"Correct\" />) || (\n                <CrossIcon title=\"Wrong branch Number\" />\n            )))\n    );\n};\n\nFeedbackIcon.propTypes = {\n    color: PropTypes.string,\n    isValid: PropTypes.bool,\n    displaySpinner: PropTypes.bool,\n    preCondition: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService }, ownProps) => {\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    return {\n        color:\n            argbToRgba(colors['color-spinner']) ||\n            argbToRgba(colors['color-primary']),\n        isValid: ownProps.isValid,\n        displaySpinner: ownProps.displaySpinner,\n        preCondition: ownProps.preCondition,\n    };\n};\n\nexport default connect(mapStateToProps, null)(FeedbackIcon);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './InvalidIbanText.css';\nimport classNames from 'classnames/bind';\n\nconst cx = classNames.bind(style);\n\nconst InvalidIbanText = ({ className, text }) => (\n    <span\n        className={cx({\n            Invalid_iban_warning_text: true,\n            [className]: !!className,\n        })}>\n        {text}\n    </span>\n);\n\nInvalidIbanText.propTypes = {\n    className: PropTypes.string,\n    text: PropTypes.string,\n};\n\nexport default InvalidIbanText;\n","import { TppIntegrationClient } from 'actions/helpers/Api';\nimport { PATH_TO_VALIDATE_IBAN } from 'config/constants';\n\nlet timer = null;\n\nexport const handleCheckIban = ({\n    iban,\n    requestId,\n    handleValidIban,\n    handleInvalidIban,\n    timeout,\n}) => {\n    // Clears running timer and starts a new one each time the user types\n    if (timer) clearTimeout(timer);\n    timer = setTimeout(async () => {\n        let res;\n        try {\n            res = await TppIntegrationClient({\n                method: 'put',\n                url: PATH_TO_VALIDATE_IBAN,\n                data: { iban, tokenRequestId: requestId },\n            });\n        } catch (error) {\n            if (error.response?.status === 400) {\n                // eslint-disable-next-line no-console\n                console.error(\n                    'IBAN validation failed with status',\n                    error.response?.status,\n                    error.response?.data,\n                );\n                handleInvalidIban();\n            } else {\n                handleValidIban();\n            }\n        }\n        if (res) {\n            if (res.status === 200) {\n                handleValidIban();\n            } else {\n                // eslint-disable-next-line no-console\n                console.error(\n                    'IBAN validation failed with status',\n                    res.status,\n                    res.data,\n                );\n                handleInvalidIban();\n            }\n        }\n    }, timeout);\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport TextInput from './../Shared/TextInput.js';\nimport FeedbackIcon from './../Icons/FeedbackIcon.js';\nimport InvalidIbanText from './../Shared/InvalidIbanText.js';\nimport { handleCheckIban } from './../Shared/ValidateIban';\nimport classNames from 'classnames/bind';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport { mandatoryFieldsConfig } from 'config/mandatoryFields';\nimport { connect } from 'reducers';\n\nconst cx = classNames.bind(style);\n\nconst MandatoryFields = ({\n    parentState,\n    type,\n    intl,\n    selectedBank,\n    tokenRequestId,\n    resourceTypeList,\n    getIbanIsValid,\n    handleMandatoryFields,\n    requiredMandatoryFields,\n}) => {\n    const [isIbanValid, setIsIbanValid] = useState(true);\n    const [defaultIban, setDefaultIban] = useState(\n        resourceTypeList?.source?.accountIdentifier?.iban?.iban,\n    );\n    const [displayIbanSpinner, setDisplayIbanSpinner] = useState(false);\n    const currentIban = parentState?.source?.accountIdentifier?.iban?.iban;\n\n    const handleCurrencyInput = value => {\n        handleMandatoryFields({\n            source: {\n                ...parentState?.source,\n                currency: value,\n            },\n        });\n    };\n\n    const captureCurrency = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'currency'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'aisp.consent.mandatory.currency.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e => handleCurrencyInput(e.target.value)}\n                        placeholder={intl.formatMessage({\n                            id: 'aisp.consent.mandatory.currency.placeholder',\n                        })}\n                        name=\"currency\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={parentState?.source?.currency}\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    const handleInvalidIban = () => {\n        setIsIbanValid(false);\n        setDisplayIbanSpinner(false);\n    };\n\n    const handleValidIban = () => {\n        setIsIbanValid(true);\n        setDisplayIbanSpinner(false);\n    };\n\n    const handleIbanInput = ibanValue => {\n        const iban = ibanValue?.trim();\n        setIsIbanValid(false);\n        setDisplayIbanSpinner(true);\n        handleMandatoryFields({\n            source: {\n                ...parentState?.source,\n                accountIdentifier: {\n                    ...parentState?.source?.accountIdentifier,\n                    iban: { iban },\n                },\n            },\n        });\n        return ibanValue;\n    };\n\n    const ibanWithCountry = () => {\n        return (\n            (currentIban && currentIban?.length > 2 && currentIban) ||\n            (selectedBank && selectedBank.country) ||\n            ''\n        );\n    };\n\n    const iconDisplay = () => {\n        return (\n            <FeedbackIcon\n                isValid={isIbanValid}\n                preCondition={currentIban?.length >= 12}\n                displaySpinner={displayIbanSpinner}\n            />\n        );\n    };\n\n    const captureSourceIban = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'iban'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'aisp.consent.mandatory.iban.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <div style={{ display: 'flex' }}>\n                        {iconDisplay()}\n                        <TextInput\n                            onChange={e =>\n                                handleIbanInput(e.target.value?.toUpperCase())\n                            }\n                            placeholder={intl.formatMessage({\n                                id: 'aisp.consent.mandatory.iban.placeholder',\n                            })}\n                            key=\"iban\"\n                            name=\"iban_inputField\"\n                            className={cx({\n                                TextInput__inner__input: true,\n                                'AliasInput-field': true,\n                                'IbanInput-field': true,\n                            })}\n                            aria-required=\"true\"\n                            validateInput={\n                                !isIbanValid &&\n                                !displayIbanSpinner &&\n                                !!currentIban\n                            }\n                            value={ibanWithCountry()}\n                            required\n                            autoFocus\n                        />\n                    </div>\n                    {currentIban && !isIbanValid && !displayIbanSpinner && (\n                        <InvalidIbanText\n                            text={intl.formatMessage({\n                                id: 'aisp.consent.mandatory.iban.notValid',\n                            })}\n                        />\n                    )}\n                </div>\n            </div>\n        );\n    };\n\n    useEffect(() => {\n        resourceTypeList && handleMandatoryFields({ ...resourceTypeList });\n    }, []);\n\n    useEffect(() => {\n        const timeout = defaultIban ? 0 : 1000;\n        handleCheckIban({\n            iban: currentIban,\n            requestId: tokenRequestId,\n            handleValidIban: handleValidIban,\n            handleInvalidIban: handleInvalidIban,\n            timeout,\n        });\n    }, [currentIban]);\n\n    useEffect(() => {\n        if (defaultIban && !isIbanValid) {\n            setDefaultIban('');\n        }\n        getIbanIsValid(isIbanValid);\n    }, [isIbanValid]);\n\n    const config = mandatoryFieldsConfig?.[type];\n    const defaultCurrency = resourceTypeList?.source?.currency;\n\n    return (\n        <>\n            {requiredMandatoryFields?.map(field => {\n                if (field === config?.iban) {\n                    if (!defaultIban) {\n                        return captureSourceIban();\n                    }\n                } else if (field === config?.currency) {\n                    if (!defaultCurrency) {\n                        return captureCurrency();\n                    }\n                }\n                return null;\n            })}\n        </>\n    );\n};\n\nMandatoryFields.propTypes = {\n    requiredMandatoryFields: PropTypes.array,\n    resourceTypeList: PropTypes.object,\n    intl: intlShape.isRequired,\n    handleMandatoryFields: PropTypes.func,\n    parentState: PropTypes.object,\n    type: PropTypes.string,\n    tokenRequestId: PropTypes.string,\n    selectedBank: PropTypes.object,\n    getIbanIsValid: PropTypes.func,\n};\n\nMandatoryFields.defaultProps = {\n    type: 'access',\n};\n\nconst mapStateToProps = ({ sharedService, tokenRequestService }) => {\n    const selectedBank = sharedService.getSelectedBank();\n    const tokenRequestId = tokenRequestService.getRequestId();\n    return {\n        selectedBank,\n        tokenRequestId,\n    };\n};\n\nexport default connect(mapStateToProps, null)(MandatoryFields);\n","import { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst HrefToPopup = ({ contentRef, defaultUrls, children }) => {\n    const openTab = url => {\n        window.open(`${url}`, '_blank', 'width:500px, height:700px;');\n    };\n\n    const manipulateAnchorTag = node => {\n        if (!node || node.tagName?.toLowerCase() !== 'a') return;\n\n        const href = node.getAttribute('href');\n        const tagId = node.getAttribute('id');\n        const tabURL =\n            href || defaultUrls[tagId] || window.location.origin + '/terms';\n\n        node.addEventListener('click', () => openTab(tabURL));\n        node.setAttribute('data-url', tabURL);\n        node.removeAttribute('href');\n        node.setAttribute('tabIndex', '0');\n    };\n\n    const manipulateAnchorTags = node => {\n        let i = 0;\n        if (node) manipulateAnchorTag(node);\n        while (i < node?.childNodes?.length) {\n            manipulateAnchorTags(node.childNodes[i]);\n            ++i;\n        }\n    };\n\n    useEffect(() => {\n        manipulateAnchorTags(contentRef?.current);\n    }, []);\n\n    return children;\n};\n\nHrefToPopup.propTypes = {\n    contentRef: PropTypes.any.isRequired,\n    defaultUrls: PropTypes.object,\n    children: PropTypes.any.isRequired,\n};\n\nHrefToPopup.defaultProps = {\n    defaultUrls: {},\n};\n\nexport default HrefToPopup;\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { intlShape } from 'react-intl';\nimport { connect } from 'reducers';\nimport { sanitizeHTML } from 'util/index.js';\nimport style from './TermsLoader.css';\nimport classNames from 'classnames/bind';\nimport HrefToPopup from '../Shared/HrefToPopup';\n\nconst cx = classNames.bind(style);\n\nconst LINK_URLS_WITH_TAG_ID = {\n    'token-terms': window.location.origin + '/terms',\n};\n\nconst TermsLoader = ({ isAisp, isVrp, intl }) => {\n    const tAndCRef = useRef();\n\n    const getTranslationId = () => {\n        if (isAisp) {\n            return 'aisp.consent.termsAndConditions.loader';\n        } else if (isVrp) {\n            return 'vrp.consent.termsAndConditions.loader';\n        } else {\n            return 'pisp.consent.termsAndConditions.loader';\n        }\n    };\n\n    return (\n        <HrefToPopup\n            contentRef={tAndCRef}\n            defaultUrls={LINK_URLS_WITH_TAG_ID}\n            fallbackToOverlay>\n            <div\n                className={cx('TermsConditions-loader')}\n                ref={tAndCRef}\n                dangerouslySetInnerHTML={{\n                    __html: sanitizeHTML(\n                        intl.formatMessage({\n                            id: getTranslationId(),\n                        }),\n                    ),\n                }}>\n            </div>\n        </HrefToPopup>\n    );\n};\n\nTermsLoader.propTypes = {\n    isAisp: PropTypes.bool,\n    isVrp: PropTypes.bool,\n    intl: intlShape.isRequired,\n};\n\nconst mapStateToProps = ({ sharedService }) => {\n    return {\n        isAisp: sharedService.isAisp(),\n        isVrp: sharedService.isVrp(),\n    };\n};\n\nexport default connect(mapStateToProps)(TermsLoader);\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport MandatoryFields from './MandatoryFields';\nimport TermsLoader from 'components/App/Terms/TermsLoader';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport {\n    backToBankSelector,\n    proceedToBank,\n    setMandatoryAccessFields,\n} from 'actions/aisp';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n    CUSTOM_TPP_FEATURES as featureConfig,\n    defaultAppName,\n} from 'config/constants';\nimport { mandatoryFieldsConfig } from 'config/mandatoryFields';\nimport { declineTerms } from 'actions/shared';\nimport {\n    sanitizeHTML,\n    convertToReadableDate,\n    hideConsentText,\n    checkMandatoryFieldsPresent,\n} from '../../../util/index.js';\nimport HrefToPopup from '../Shared/HrefToPopup.js';\n\nconst cx = classNames.bind(style);\n\nclass ConsentBankFirstFlow extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {};\n        this.consentTextRef = createRef();\n    }\n\n    isIbanMandatory = () => {\n        if (\n            this.props.requiredMandatoryFields?.fields?.includes(\n                mandatoryFieldsConfig.access?.iban,\n            )\n        ) {\n            return true;\n        }\n        return false;\n    };\n\n    confirm = () => {\n        const requiredMandatoryFields = this.props.requiredMandatoryFields;\n        requiredMandatoryFields &&\n            this.props.setMandatoryAccessFields(this.state.mandatoryFields);\n        this.props.proceedToBank();\n    };\n\n    handleMandatoryFields = obj => {\n        this.setState(prevState => ({\n            mandatoryFields: {\n                ...prevState.mandatoryFields,\n                ...obj,\n            },\n        }));\n    };\n\n    handleIbanValidation = isIbanValid => {\n        this.setState({ isIbanValid });\n    };\n\n    componentDidMount = () => {\n        this.props.setDisplayFooterShadow(false);\n    };\n\n    render() {\n        const {\n            declineTerms,\n            aispName,\n            businessName,\n            resources,\n            backToBankSelector,\n            defaultBankId,\n            resourceTypeList,\n            modifyPreSelectedBank,\n            requiredMandatoryFields,\n        } = this.props;\n        const expireDate = this.props.tokenExpiration\n            ? new Date(Number(this.props.tokenExpiration))\n            : new Date();\n        !this.props.tokenExpiration &&\n            expireDate.setDate(\n                expireDate.getDate() + DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n            );\n\n        const messageVariableValues = {\n            BUSINESS_NAME: `<strong>${businessName}</strong>`,\n            DISPLAY_NAME: `<span>${aispName}</span>`,\n            EXPIRATION_DATE: `<strong>${convertToReadableDate(\n                expireDate,\n            )}</strong>`,\n        };\n\n        const consentText = this.props.intl.formatMessage(\n            {\n                id: 'aisp.consent.text',\n                defaultMessage: '',\n            },\n            messageVariableValues,\n        );\n\n        const hideConsentTextBlock = hideConsentText(consentText);\n\n        const status = () => {\n            if (\n                this.state.mandatoryFields &&\n                !checkMandatoryFieldsPresent(\n                    this.state.mandatoryFields,\n                    requiredMandatoryFields,\n                    'access',\n                )\n            ) {\n                return Button.STATUS_DISABLED;\n            }\n            if (this.isIbanMandatory()) {\n                if (\n                    this.state.mandatoryFields?.source?.accountIdentifier?.iban\n                ) {\n                    if (!this.state.isIbanValid) {\n                        return Button.STATUS_DISABLED;\n                    }\n                } else {\n                    return Button.STATUS_DISABLED;\n                }\n            } else {\n                return Button.STATUS_IDLE;\n            }\n        };\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx({\n                        'Consent-container': true,\n                        'Aisp-container': true,\n                    })}\n                    noMargin>\n                    <div className={cx('Ais-container-margin')}>\n                        <TokenTitle>\n                            <FormattedMessage\n                                id={\n                                    resources[0].type\n                                        ? 'aisp.caf.consent.title'\n                                        : 'aisp.consent.title'\n                                }\n                            />\n                        </TokenTitle>\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'aisp.consent.subtitle1'}\n                                values={{ BUSINESS_NAME: businessName }}\n                            />\n                        </TokenTitle>\n                    </div>\n                    <div className={cx('Consent-data')}>\n                        {typeof resources[0] === 'string' ? (\n                            resources.map(r => (\n                                <div\n                                    className={cx('Consent-data-row')}\n                                    key={`aisp.consent.resources.${r}`}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            id={`aisp.consent.resources.${r}`}\n                                        />\n                                    </div>\n                                </div>\n                            ))\n                        ) : (\n                            <FormattedMessage id={'aisp.consent.accountInfo'} />\n                        )}\n                        {requiredMandatoryFields?.fields && (\n                            <MandatoryFields\n                                requiredMandatoryFields={\n                                    requiredMandatoryFields?.fields\n                                }\n                                resourceTypeList={resourceTypeList}\n                                handleMandatoryFields={obj =>\n                                    this.handleMandatoryFields(obj)\n                                }\n                                getIbanIsValid={this.handleIbanValidation}\n                                parentState={this.state.mandatoryFields}\n                                type=\"access\"\n                            />\n                        )}\n                    </div>\n\n                    {!hideConsentTextBlock && (\n                        <HrefToPopup\n                            contentRef={this.consentTextRef}\n                            fallbackToOverlay>\n                            <div\n                                className={cx({\n                                    'Consent-details': true,\n                                })}\n                                ref={this.consentTextRef}\n                                dangerouslySetInnerHTML={{\n                                    __html: sanitizeHTML(consentText),\n                                }}\n                            />\n                        </HrefToPopup>\n                    )}\n\n                    <TermsLoader />\n                </TokenContainer>\n\n                <TokenButtonsWrapper>\n                    <Button\n                        status={status()}\n                        onClick={this.confirm}\n                        text={<FormattedMessage id={'common.button.accept'} />}\n                    />\n                    {defaultBankId !== '' && !modifyPreSelectedBank ? (\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    ) : (\n                        <Button\n                            type={Button.TYPE_GHOST}\n                            onClick={backToBankSelector}\n                            status={Button.STATUS_IDLE}\n                            text={\n                                <FormattedMessage id={'common.button.back'} />\n                            }\n                        />\n                    )}\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    aispName: PropTypes.string,\n    businessName: PropTypes.string.isRequired,\n    resources: PropTypes.array.isRequired,\n    oneStepSupport: PropTypes.bool.isRequired,\n    proceedToBank: PropTypes.func.isRequired,\n    backToBankSelector: PropTypes.func.isRequired,\n    banksBranchList: PropTypes.object,\n    aispAlias: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    tokenExpiration: PropTypes.string,\n    defaultBankId: PropTypes.string,\n    resourceTypeList: PropTypes.object,\n    requiredMandatoryFields: PropTypes.object,\n    setMandatoryAccessFields: PropTypes.func,\n    modifyPreSelectedBank: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({\n    tokenService,\n    tokenRequestService,\n    sharedService,\n}) => {\n    const tppName = tokenRequestService.getTppProfile().tppName;\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const defaultBankId = tokenRequestService.getDefaultBankId() || '';\n    const resources = tokenService.getResources();\n    const resourceTypeList = tokenService.getResourceTypeList();\n    const tokenExpiration = tokenRequestService.getTokenExpiration();\n    const selectedBank = sharedService.getSelectedBank();\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    return {\n        aispAlias: actingAs?.secondaryName || tppAlias.value,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.AIS_APP_NAME) ||\n            defaultAppName,\n        aispName: actingAs?.displayName || tppName,\n        defaultBankId,\n        resourceTypeList,\n        resources: resources,\n        oneStepSupport: sharedService.getDoesBankSupportOneStep(),\n        banksBranchList: sharedService.getBanksBranchList() || {},\n        requiredMandatoryFields: selectedBank?.mandatoryFields?.access,\n        tokenExpiration,\n        modifyPreSelectedBank,\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBank,\n    declineTerms,\n    setMandatoryAccessFields,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(ConsentBankFirstFlow);\n","import React, { Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './ConfirmFundsConsent.css';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n} from 'actions/aisp';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { declineTerms } from 'actions/shared';\nimport TermsLoader from '../Terms/TermsLoader';\nimport { sanitizeHTML, hideConsentText } from '../../../util';\n\nconst cx = classNames.bind(style);\n\nconst ConfirmFundsConsentBankFirstFlow = ({\n    declineTerms,\n    businessName,\n    aispName,\n    resources,\n    backToBankSelector,\n    proceedToBank,\n    defaultIban,\n    setDisplayFooterShadow,\n    intl,\n}) => {\n    const expireDate = new Date();\n    expireDate.setDate(\n        expireDate.getDate() + DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n    );\n\n    const consentText = intl.formatMessage(\n        {\n            id: 'aisp.caf.consent.text',\n            defaultMessage: '',\n        },\n        { BUSINESS_NAME: aispName },\n    );\n\n    const status = Button.STATUS_IDLE;\n\n    const hideConsentTextBlock = hideConsentText(consentText);\n\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    return (\n        <Fragment>\n            <TokenContainer className={cx('Consent-container')} noMargin>\n                <div className=\"Caf-tokenContainer-margin\">\n                    <TokenTitle>\n                        <FormattedMessage id={'aisp.caf.consent.title'} />\n                    </TokenTitle>\n                    <TokenTitle sub>\n                        <FormattedMessage\n                            id={'aisp.caf.consent.subtitle1'}\n                            values={{ BUSINESS_NAME: businessName }}\n                        />\n                    </TokenTitle>\n                </div>\n                <div className={cx('Consent-data')}>\n                    <TokenTitle sub>\n                        <div className={cx('Consent-data-row')}>\n                            <div className={cx('Consent-data-row-title')}>\n                                <FormattedMessage\n                                    tagName={'span'}\n                                    id={'aisp.caf.consent.accountNumber'}\n                                />\n                            </div>\n                            <div className={cx('Consent-data-row-detail')}>\n                                <span className={cx('Colored-Text')}>\n                                    {resources[0].bankAccount.iban\n                                        ? resources[0].bankAccount.iban.iban\n                                        : resources[0].bankAccount.domestic\n                                            .accountNumber}\n                                </span>\n                            </div>\n                        </div>\n                        <div className={cx('Consent-data-row')}>\n                            <div className={cx('Consent-data-row-title')}>\n                                <FormattedMessage\n                                    tagName={'span'}\n                                    id={'aisp.caf.consent.beneficiary'}\n                                />\n                            </div>\n                            <div className={cx('Consent-data-row-detail')}>\n                                <span className={cx('Colored-Text')}>\n                                    {aispName}\n                                </span>\n                            </div>\n                        </div>\n                        <div className={cx('Consent-data-row')}>\n                            <div className={cx('Consent-data-row-title')}>\n                                <FormattedMessage\n                                    tagName={'span'}\n                                    id={'aisp.caf.consent.tokenValidUntil'}\n                                />\n                            </div>\n                            <div className={cx('Consent-data-row-detail')}>\n                                <span className={cx('Colored-Text')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'aisp.caf.consent.ongoing'}\n                                    />\n                                </span>\n                            </div>\n                        </div>\n                    </TokenTitle>\n                </div>\n                {!hideConsentTextBlock && (\n                    <div\n                        className={cx({\n                            'Consent-details': true,\n                        })}\n                        dangerouslySetInnerHTML={{\n                            __html: sanitizeHTML(consentText),\n                        }}\n                    />\n                )}\n                <TermsLoader />\n            </TokenContainer>\n\n            <TokenButtonsWrapper>\n                <Button\n                    status={status}\n                    onClick={proceedToBank}\n                    text={<FormattedMessage id={'common.button.accept'} />}\n                />\n                {defaultIban !== '' ? (\n                    <Button\n                        type={Button.TYPE_GHOST_WARNING}\n                        onClick={declineTerms}\n                        text={<FormattedMessage id={'common.button.decline'} />}\n                    />\n                ) : (\n                    <Button\n                        type={Button.TYPE_GHOST}\n                        onClick={backToBankSelector}\n                        text={<FormattedMessage id={'common.button.back'} />}\n                    />\n                )}\n            </TokenButtonsWrapper>\n        </Fragment>\n    );\n};\n\nConfirmFundsConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    aispName: PropTypes.string,\n    businessName: PropTypes.string.isRequired,\n    resources: PropTypes.array.isRequired,\n    proceedToBank: PropTypes.func.isRequired,\n    defaultIban: PropTypes.string.isRequired,\n    setInstructionsSourceIban: PropTypes.func.isRequired,\n    backToBankSelector: PropTypes.func.isRequired,\n    locale: PropTypes.string,\n    setDisplayFooterShadow: PropTypes.func,\n    intl: intlShape.isRequired,\n};\n\nconst mapStateToProps = ({\n    tokenService,\n    tokenRequestService,\n    sharedService,\n}) => {\n    const tppName = tokenRequestService.getTppProfile().tppName;\n    const actingAs = tokenRequestService.getTppActingAs();\n    const defaultIban = tokenService.getResources();\n    return {\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.AIS_APP_NAME) ||\n            defaultAppName,\n        aispName: actingAs?.displayName || tppName,\n        resources: tokenService.getResources(),\n        locale: sharedService.getLocale(),\n        defaultIban: defaultIban?.[0]?.bankAccount?.iban?.iban || '',\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n    declineTerms,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(ConfirmFundsConsentBankFirstFlow);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport style from './SplashScreen.css';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport { CSSTransition } from 'react-transition-group';\nimport { setStep } from 'actions/shared/route';\nimport { setFadeOutProp } from 'actions/shared';\nimport { sanitizeHTML, argbToRgba } from 'util/index';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\n\nconst cx = classNames.bind(style);\n\nclass SplashScreen extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            inProp: false,\n        };\n        this.timeoutRef = React.createRef();\n    }\n\n    componentDidMount = () => {\n        this.setState({ inProp: true });\n    };\n\n    componentDidUpdate = () => {\n        if (this.props.stepToSet && this.state.inProp) {\n            this.setState({ inProp: false });\n            this.timeoutRef.current = setTimeout(() => {\n                this.props.setFadeOutProp(true);\n                this.props.setStep(this.props.stepToSet);\n            }, 2000);\n        }\n    };\n\n    componentWillUnmount = () => {\n        clearTimeout(this.timeoutRef.current);\n    };\n\n    render() {\n        const {\n            splashScreenHtml,\n            tppLogo,\n            tppSplashLogo,\n            resellerLogo,\n            displayName,\n            productName,\n            productLogo,\n        } = this.props;\n        const tppImg = `<image src=\"${tppLogo}\"></image>`;\n        const resellerImg = `<image src=\"${resellerLogo}\"></image>`;\n\n        const tppSplashImg = tppSplashLogo ? (\n            <span\n                className={cx('TokenSplash-upper-half-tpp-logo')}\n                dangerouslySetInnerHTML={{\n                    __html: sanitizeHTML(\n                        `<image src=\"${tppSplashLogo}\"></image>`,\n                    ),\n                }}>\n            </span>\n        ) : null;\n\n        const productImg = productLogo ? (\n            <span\n                key={'product-logo'}\n                className={cx('TokenSplash-upper-half-product-logo')}\n                dangerouslySetInnerHTML={{\n                    __html: sanitizeHTML(\n                        `<image src=\"${productLogo}\"></image>`,\n                    ),\n                }}>\n            </span>\n        ) : null;\n\n        const productIdentifier = productName ? (\n            <span\n                key={'product-identifier'}\n                className={cx({\n                    'TokenSplash-upper-half-product-name': true,\n                    'TokenSplash-upper-half-product-name--no-prepend': !productImg,\n                })}>\n                {productName}\n            </span>\n        ) : null;\n\n        const renderProductStuff = () => {\n            return [productImg, productIdentifier];\n        };\n\n        return (\n            <>\n                <CSSTransition\n                    in={!!this.state.inProp}\n                    timeout={3000}\n                    classNames=\"TokenSplash\">\n                    <TokenContainer noMargin noScrollable>\n                        <div className={cx({ TokenSplash: true })}>\n                            <div className={cx('TokenSplash-upper-half')}>\n                                <div\n                                    className={cx(\n                                        'TokenSplash-upper-half-container',\n                                    )}>\n                                    <div\n                                        className={cx(\n                                            'TokenSplash-upper-half-product-container',\n                                        )}>\n                                        {renderProductStuff()}\n                                    </div>\n                                    {tppSplashImg}\n                                </div>\n                            </div>\n                            <div\n                                className={cx('TokenSplash-lower-half')}\n                                dangerouslySetInnerHTML={{\n                                    __html: sanitizeHTML(splashScreenHtml)\n                                        .replace(/{DISPLAY_NAME}/g, displayName)\n                                        .replace(\n                                            /{TPP_LOGO}/g,\n                                            tppLogo ? tppImg : '',\n                                        )\n                                        .replace(\n                                            /{RESELLER_LOGO}/g,\n                                            resellerLogo ? resellerImg : '',\n                                        ),\n                                }}>\n                            </div>\n                        </div>\n                    </TokenContainer>\n                </CSSTransition>\n            </>\n        );\n    }\n}\n\nSplashScreen.defaultProps = {\n    stepToSet: null,\n};\n\nSplashScreen.propTypes = {\n    stepToSet: PropTypes.string,\n    setStep: PropTypes.func.isRequired,\n    setFadeOutProp: PropTypes.func,\n    splashScreenHtml: PropTypes.string,\n    tppLogo: PropTypes.string,\n    tppSplashLogo: PropTypes.string,\n    productName: PropTypes.string,\n    productLogo: PropTypes.string,\n    resellerLogo: PropTypes.string,\n    displayName: PropTypes.string,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const splashScreenHtml = tokenRequestService\n        .getTppFeature(featureConfig.SPLASH_SCREEN)\n        ?.trim();\n\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n\n    const tppLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.TPP_LOGO,\n    );\n    const resellerLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.RESELLER_LOGO,\n    );\n    const tppSplashLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.TPP_LOGO_FOR_SPLASH_SCREEN,\n    );\n    const productLogoPayload = tokenRequestService.getTppFeature(\n        featureConfig.PRODUCT_LOGO,\n    );\n    const tppLogo = tppLogoPayload\n        ? `data:${tppLogoPayload.type};base64,${tppLogoPayload.data}`\n        : '';\n\n    const resellerLogo = resellerLogoPayload\n        ? `data:${resellerLogoPayload.type};base64,${resellerLogoPayload.data}`\n        : '';\n    const tppSplashLogo = tppSplashLogoPayload\n        ? `data:${tppSplashLogoPayload.type};base64,${tppSplashLogoPayload.data}`\n        : '';\n    const productLogo = productLogoPayload\n        ? `data:${productLogoPayload.type};base64,${productLogoPayload.data}`\n        : '';\n    const productName = tokenRequestService.getTppFeature(\n        featureConfig.PRODUCT_NAME,\n    );\n\n    return {\n        splashScreenHtml,\n        tppLogo,\n        tppSplashLogo,\n        resellerLogo,\n        productName,\n        productLogo,\n        displayName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias.value,\n        bgColor: argbToRgba(colors['color-splash-header']),\n    };\n};\n\nconst mapDispatchToProps = {\n    setStep,\n    setFadeOutProp,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SplashScreen);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport {\n    LOADING_STEP,\n    SPLASH_STEP,\n    APP_APPROVAL,\n    AISP_ENTER_ALIAS,\n    AISP_APP_INSTALL,\n    AISP_SELECT_BANK_BANK_FIRST,\n    AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST,\n    AISP_CONSENT_BANK_FIRST,\n    AISP_CAPTURE_CREDENTIALS,\n} from 'config/constants';\nimport AispAliasInput from 'components/App/Aisp/AispAliasInput';\nimport AispAppNotifier from 'components/App/Aisp/AispAppNotifier';\nimport AispAppInstall from 'components/App/Aisp/AispAppInstall';\nimport CaptureCredentials from 'components/App/Shared/CaptureCredentials';\nimport Loading from 'components/App/Shared/Loading';\nimport Background from 'components/App/Background';\nimport AispBankSelectorFirst from './AispBankSelectorFirst';\nimport ConsentBankFirstFlow from './ConsentBankFirstFlow';\nimport ConfirmFundsConsentBankFirstFlow from './ConfirmFundsConsentBankFirstFlow';\nimport SplashScreen from 'components/App/Shared/SplashScreen';\n\nclass Aisp extends Component {\n    static getStepComponent(currentStep) {\n        const steps = {\n            [AISP_ENTER_ALIAS]: <AispAliasInput />,\n            [APP_APPROVAL]: <AispAppNotifier />,\n            [AISP_APP_INSTALL]: <AispAppInstall />,\n            [AISP_SELECT_BANK_BANK_FIRST]: <AispBankSelectorFirst />,\n            [AISP_CONSENT_BANK_FIRST]: <ConsentBankFirstFlow />,\n            [AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST]: (\n                <ConfirmFundsConsentBankFirstFlow />\n            ),\n            [AISP_CAPTURE_CREDENTIALS]: <CaptureCredentials />,\n        };\n        return steps[currentStep];\n    }\n\n    static getStepComponentWithoutBackground(currentStep) {\n        const stepsWithoutBackground = {\n            [LOADING_STEP]: <Loading />,\n            [SPLASH_STEP]: <SplashScreen />,\n        };\n        return stepsWithoutBackground[currentStep];\n    }\n\n    render() {\n        const { currentStep } = this.props;\n        const component = Aisp.getStepComponent(currentStep) ? (\n            <Background> {Aisp.getStepComponent(currentStep)} </Background>\n        ) : (\n            Aisp.getStepComponentWithoutBackground(currentStep)\n        );\n\n        return <>{component}</>;\n    }\n}\n\nAisp.propTypes = {\n    currentStep: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    currentStep: sharedService.getCurrentStep(),\n});\n\nexport default connect(mapStateToProps)(Aisp);\n","import React from 'react';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport AliasInput from 'components/App/Shared/AliasInput';\nimport { clearBankAndBack } from 'actions/pisp';\n\n// Higher order component AliasInput for PISP\nconst PispAliasInput = props => <AliasInput {...props} />;\n\nPispAliasInput.propTypes = {\n    bank: PropTypes.object,\n    bankInfo: PropTypes.object,\n    clearBankAndBack: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    bank: sharedService.getSelectedBank(),\n    bankInfo: sharedService.getSelectedBankInfo(),\n});\n\nconst mapDispatchToProps = {\n    clearBankAndBack,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PispAliasInput);\n","import React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './PispTransferOverview.css';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport Dropdown from '@token-io/lib-web-components/src/Components/Dropdown';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport { ROW_SIZE_LARGE } from '@token-io/lib-web-components/src/Components/List/Abstract';\nimport { terminateFlow } from 'actions/shared';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    proceedToConsent,\n    setPaymentAccount,\n    clearBankAndBack,\n} from 'actions/pisp';\nimport { transformAccounts, formatCurrency } from 'util/index';\nimport { FormattedMessage, intlShape } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nclass PispTransferOverview extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            isLoading: false,\n        };\n    }\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n    }\n\n    render() {\n        const {\n            bank,\n            alias,\n            accounts,\n            paymentAccount,\n            proceedWithCheckout,\n            terminateFlow,\n            total,\n            amountLimit,\n            setPaymentAccount,\n            goToBankSelection,\n        } = this.props;\n        const status = this.state.isLoading\n            ? Button.STATUS_LOADING\n            : Button.STATUS_IDLE;\n        const accs = accounts.map(acc => ({\n            ...acc,\n            text: acc.key,\n            key: (\n                <div>\n                    <span>{acc.key}</span>\n                    <span>{acc.value}</span>\n                </div>\n            ),\n        }));\n        const defaultValue = accs.find(acc => acc.id === paymentAccount);\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx([\n                        'Pisp-TransferOverview-subcontainer',\n                        'Pisp-TransferOverview-title',\n                    ])}>\n                    <TokenTitle\n                        className={cx('Pisp-TransferOverview-title-label')}>\n                        <FormattedMessage id={'pisp.transferOverview.title'} />\n                    </TokenTitle>\n                    <TokenTitle sub>\n                        <FormattedMessage\n                            id={'pisp.transferOverview.misc2'}\n                            showIcon={false}\n                            values={{\n                                AMOUNT: amountLimit,\n                            }}\n                        />\n                    </TokenTitle>\n                    <div className={cx('Pisp-TransferOverview-subcontainer')}>\n                        <div className={cx('Pisp-TransferOverview-menu')}>\n                            {alias ? (\n                                <dl\n                                    className={cx(\n                                        'Pisp-TransferOverview-menu-item',\n                                    )}>\n                                    <dt>\n                                        <span\n                                            className={cx(\n                                                'Pisp-TransferOverview-menu-title',\n                                            )}>\n                                            <FormattedMessage\n                                                id={\n                                                    'pisp.transferOverview.tokenAccount'\n                                                }\n                                            />\n                                        </span>\n                                        <span\n                                            className={cx(\n                                                'Pisp-TransferOverview-menu-value',\n                                            )}>\n                                            {alias}\n                                        </span>\n                                    </dt>\n                                </dl>\n                            ) : (\n                                ''\n                            )}\n                            <dl\n                                className={cx(\n                                    'Pisp-TransferOverview-menu-item',\n                                )}>\n                                <dt>\n                                    <span\n                                        className={cx(\n                                            'Pisp-TransferOverview-menu-title',\n                                        )}>\n                                        <FormattedMessage\n                                            id={'pisp.transferOverview.bank'}\n                                        />\n                                    </span>\n                                    <span\n                                        className={cx(\n                                            'Pisp-TransferOverview-menu-value',\n                                        )}>\n                                        {bank.name}\n                                    </span>\n                                </dt>\n                                <dd>\n                                    <a\n                                        href=\"#\"\n                                        className={cx(\n                                            'Pisp-TransferOverview-menu-action',\n                                        )}\n                                        onClick={e => {\n                                            e.preventDefault();\n                                            goToBankSelection();\n                                        }}>\n                                        <FormattedMessage\n                                            id={\n                                                'pisp.transferOverview.changeBank'\n                                            }\n                                        />\n                                    </a>\n                                </dd>\n                            </dl>\n                            <dl\n                                className={cx(\n                                    'Pisp-TransferOverview-menu-item-vertical',\n                                )}>\n                                <dt>\n                                    <span\n                                        className={cx(\n                                            'Pisp-TransferOverview-menu-title',\n                                        )}>\n                                        <FormattedMessage\n                                            id={\n                                                'pisp.transferOverview.bankAccount'\n                                            }\n                                        />\n                                    </span>\n                                </dt>\n                                <dd>\n                                    <StaticDataProvider\n                                        idKey={'id'}\n                                        titleKey={'text'}\n                                        extraKey={'value'}\n                                        source={() => accs}\n                                        defaultValue={defaultValue || accs[0]}\n                                        onChange={acc => {\n                                            setPaymentAccount(acc.id);\n                                        }}\n                                        withPointer>\n                                        <Dropdown size={ROW_SIZE_LARGE} />\n                                    </StaticDataProvider>\n                                </dd>\n                            </dl>\n                        </div>\n                    </div>\n                    <div\n                        className={cx([\n                            'Pisp-TransferOverview-subcontainer',\n                            'Pisp-TransferOverview-total',\n                        ])}>\n                        <dl>\n                            <dt>\n                                <FormattedMessage\n                                    id={'pisp.transferOverview.total'}\n                                />\n                            </dt>\n                            <dd>{total}</dd>\n                        </dl>\n                    </div>\n                </TokenContainer>\n                <TokenButtonsWrapper>\n                    <Button\n                        onClick={() => {\n                            this.setState({ isLoading: true });\n                            proceedWithCheckout();\n                        }}\n                        status={status}\n                        text={<FormattedMessage id={'common.button.next'} />}\n                        autoFocus\n                    />\n                    <Button\n                        onClick={() => {\n                            terminateFlow({\n                                error: 'access_denied',\n                                message: 'Checkout was canceled',\n                            });\n                        }}\n                        type={Button.TYPE_GHOST_WARNING}\n                        text={<FormattedMessage id={'common.button.cancel'} />}\n                    />\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nPispTransferOverview.propTypes = {\n    proceedWithCheckout: PropTypes.func.isRequired,\n    terminateFlow: PropTypes.func.isRequired,\n    bank: PropTypes.object.isRequired,\n    accounts: PropTypes.array.isRequired,\n    paymentAccount: PropTypes.string.isRequired,\n    setPaymentAccount: PropTypes.func.isRequired,\n    alias: PropTypes.string.isRequired,\n    total: PropTypes.string.isRequired,\n    amountLimit: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    goToBankSelection: PropTypes.func.isRequired,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = (\n    { sharedService, tokenService, userService },\n    ownProps,\n) => {\n    const alias = userService.getAlias();\n    const bank = sharedService.getSelectedBank();\n    const accounts = userService.getBankMemberAccounts(bank.id);\n    return {\n        bank: sharedService.getSelectedBank(),\n        accounts: transformAccounts(accounts, ownProps.intl.formatNumber),\n        paymentAccount: tokenService.getSourceAccountId(),\n        alias: alias ? alias.value : '',\n        total: formatCurrency(\n            tokenService.getAmount(),\n            tokenService.getCurrency(),\n            ownProps.intl.formatNumber,\n        ),\n        amountLimit: formatCurrency(\n            30,\n            tokenService.getCurrency(),\n            ownProps.intl.formatNumber,\n        ),\n    };\n};\n\nconst mapDispatchToProps = {\n    proceedWithCheckout: proceedToConsent,\n    terminateFlow,\n    setPaymentAccount,\n    goToBankSelection: clearBankAndBack,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(PispTransferOverview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport AppNotifier from 'components/App/Shared/AppNotifier';\nimport { intlShape } from 'react-intl';\nimport {\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\n\n// Higher order component AppNotifier for PISP\nconst PispAppNotifier = ({ intl, appName, ...props }) => (\n    <AppNotifier\n        {...props}\n        strings={[\n            intl.formatMessage(\n                { id: 'common.appNotifier.title' },\n                { APP_NAME: appName },\n            ),\n            intl.formatMessage(\n                { id: 'pisp.appNotifier.subtitle' },\n                { APP_NAME: appName },\n            ),\n            '',\n        ]}\n    />\n);\n\nPispAppNotifier.propTypes = {\n    intl: intlShape.isRequired,\n    appName: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => ({\n    appName:\n        tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n        defaultAppName,\n});\n\nexport default connect(mapStateToProps)(PispAppNotifier);\n","import React from 'react';\nimport AppInstall from 'components/App/Shared/AppInstall';\nimport { injectIntl, intlShape } from 'react-intl';\n\n// Higher order component AppInstall for PISP\nconst PispAppInstall = ({ intl, ...props }) => (\n    <AppInstall\n        {...props}\n        strings={[\n            intl.formatMessage({ id: 'pisp.appInstall.subtitle' }),\n            intl.formatMessage({ id: 'common.appInstall.subtitle' }),\n        ]}\n    />\n);\n\nPispAppInstall.propTypes = {\n    intl: intlShape.isRequired,\n};\n\nexport default injectIntl(PispAppInstall);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './../Pisp/Consent.css';\nimport classNames from 'classnames/bind';\nimport { FaRegEdit } from 'react-icons/fa';\n\nconst cx = classNames.bind(style);\n\nconst EditIcon = ({ onKeyPress, onClick, className, ariaLabel }) => {\n    return (\n        <span\n            className={cx({ [className]: !!className })}\n            aria-label={ariaLabel}\n            onKeyPress={e => {\n                if (e.key === 'Enter') onKeyPress();\n            }}\n            onClick={() => onClick()}\n            tabIndex=\"0\"\n            role=\"button\">\n            <FaRegEdit\n                className={cx('Consent-EditIcon')}\n                style={{\n                    color: 'black',\n                    cursor: 'pointer',\n                    border: 'none',\n                    outline: 'none',\n                }}\n                title=\"Edit\"\n            />\n        </span>\n    );\n};\n\nEditIcon.propTypes = {\n    onClick: PropTypes.func.isRequired,\n    onKeyPress: PropTypes.func.isRequired,\n    className: PropTypes.string,\n    ariaLabel: PropTypes.string,\n};\n\nEditIcon.defaultProps = {\n    onClick: () => null,\n    onKeyPress: () => null,\n};\n\nexport default EditIcon;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport TextInput from './../Shared/TextInput.js';\nimport classNames from 'classnames/bind';\nimport { FormattedMessage, intlShape, injectIntl } from 'react-intl';\nimport { mandatoryFieldsConfig } from 'config/mandatoryFields';\n\nconst cx = classNames.bind(style);\n\nclass MandatoryFields extends Component {\n    componentDidMount() {\n        const instructions = this.props.instructions;\n        instructions && this.props.handleMandatoryFields({ instructions });\n    }\n\n    handleDebtorName = value => {\n        const state = this.props.state;\n        const sourceLegalName =\n            (state?.instructions?.source?.customerData?.legalNames && [\n                ...state?.instructions?.source?.customerData?.legalNames,\n            ]) ||\n            [];\n        sourceLegalName[0] = value;\n        this.props.handleMandatoryFields({\n            instructions: {\n                ...state?.instructions,\n                source: {\n                    ...state?.instructions?.source,\n                    customerData: {\n                        ...state?.instructions?.source?.customerData,\n                        legalNames: sourceLegalName,\n                    },\n                },\n            },\n        });\n    };\n\n    handleBeneficiaryName = value => {\n        const state = this.props.state;\n        const beneficiaryLegalName =\n            (state?.instructions?.transferDestinations?.[0]?.customerData\n                ?.legalNames && [\n                ...state?.instructions?.transferDestinations?.[0]?.customerData\n                    ?.legalNames,\n            ]) ||\n            [];\n        beneficiaryLegalName[0] = value;\n        this.props.handleMandatoryFields({\n            instructions: {\n                ...state?.instructions,\n                transferDestinations: [\n                    {\n                        ...state?.instructions?.transferDestinations?.[0],\n                        customerData: {\n                            ...state?.instructions?.transferDestinations?.[0]\n                                ?.customerData,\n                            legalNames: beneficiaryLegalName,\n                        },\n                    },\n                    ...state?.instructions?.transferDestinations?.slice(1),\n                ],\n            },\n        });\n    };\n\n    handleDebtorBic = value => {\n        const state = this.props.state;\n        this.props.handleMandatoryFields({\n            instructions: {\n                ...state?.instructions,\n                source: {\n                    ...state?.instructions?.source,\n                    bic: value,\n                },\n            },\n        });\n    };\n\n    displayCreditorName = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'beneficiary_name'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.beneficiaryName.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e =>\n                            this.handleBeneficiaryName(e.target.value)\n                        }\n                        placeholder={this.props.intl.formatMessage({\n                            id:\n                                'pisp.consent.mandatory.beneficiaryName.placeholder',\n                        })}\n                        name=\"beneficiary_name\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            this.props?.state?.instructions\n                                ?.transferDestinations?.[0]?.customerData\n                                ?.legalNames?.[0]\n                        }\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    handleDebtorBBAN = value => {\n        const state = this.props.state;\n        this.props.handleMandatoryFields({\n            instructions: {\n                ...state?.instructions,\n                source: {\n                    ...state?.instructions?.source,\n                    accountIdentifier: {\n                        ...state?.instructions?.source?.accountIdentifier,\n                        bban: {\n                            ...state?.instructions?.source?.accountIdentifier\n                                ?.bban,\n                            bban: value.trim(),\n                        },\n                    },\n                },\n            },\n        });\n    };\n\n    displayDebtorBBAN = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'bban'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.debtorBban.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e => this.handleDebtorBBAN(e.target.value)}\n                        placeholder={this.props.intl.formatMessage({\n                            id: 'pisp.consent.mandatory.debtorBban.placeholder',\n                        })}\n                        name=\"bban\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            this.props?.state?.instructions?.source\n                                ?.accountIdentifier?.bban?.bban\n                        }\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    displayDebtorName = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'debtor_name'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.debtorName.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e => this.handleDebtorName(e.target.value)}\n                        placeholder={this.props.intl.formatMessage({\n                            id: 'pisp.consent.mandatory.debtorName.placeholder',\n                        })}\n                        name=\"debtor_name\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            this.props?.state?.instructions?.source\n                                ?.customerData?.legalNames?.[0]\n                        }\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    displayDebtorBic = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'debtor_bic'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.debtorBic.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e => this.handleDebtorBic(e.target.value)}\n                        placeholder={this.props.intl.formatMessage({\n                            id: 'pisp.consent.mandatory.debtorBic.placeholder',\n                        })}\n                        name=\"debtor_bic\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={this.props?.state?.instructions?.source?.bic}\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    render() {\n        const { requiredMandatoryFields, instructions, type } = this.props;\n        const config = mandatoryFieldsConfig?.[type];\n        const creditorData =\n            instructions?.transferDestinations?.[0]?.customerData;\n        const defaultCreditorName = creditorData?.legalNames?.[0];\n        const defaultDebtorName =\n            instructions?.source?.customerData?.legalNames?.[0];\n        const defaultDebtorBic =\n            instructions?.source?.bic ||\n            instructions?.source?.account?.iban?.bic;\n        const defaultSourceBBAN =\n            instructions?.source?.accountIdentifier?.bban?.bban;\n\n        return (\n            <>\n                {requiredMandatoryFields?.map(field => {\n                    if (field === config?.creditorName) {\n                        if (!defaultCreditorName) {\n                            return this.displayCreditorName();\n                        }\n                    } else if (field === config?.debtorName) {\n                        if (!defaultDebtorName) {\n                            return this.displayDebtorName();\n                        }\n                    } else if (field === config?.debtorBic) {\n                        if (!defaultDebtorBic) {\n                            return this.displayDebtorBic();\n                        }\n                    } else if (field === config?.bban) {\n                        if (!defaultSourceBBAN) {\n                            return this.displayDebtorBBAN();\n                        }\n                    }\n                    return null;\n                })}\n            </>\n        );\n    }\n}\n\nMandatoryFields.propTypes = {\n    requiredMandatoryFields: PropTypes.array,\n    instructions: PropTypes.object,\n    intl: intlShape.isRequired,\n    handleMandatoryFields: PropTypes.func,\n    state: PropTypes.object,\n    type: PropTypes.string,\n};\n\nMandatoryFields.defaultProps = {\n    type: 'transfer',\n};\n\nexport default injectIntl(MandatoryFields);\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport TextInput from './../Shared/TextInput.js';\nimport classNames from 'classnames/bind';\nimport { FormattedMessage, intlShape, injectIntl } from 'react-intl';\nimport { mandatoryFieldsConfig } from 'config/mandatoryFields';\n\nconst cx = classNames.bind(style);\n\nclass StetMandatoryFields extends Component {\n    componentDidMount() {\n        const stetMetadata = this.props.transferMetadata;\n        this.props.handleMandatoryFields({ stetMetadata });\n    }\n\n    handleCreditorAgentBicFi = value => {\n        const state = this.props.state;\n        this.props.handleMandatoryFields({\n            stetMetadata: {\n                ...state?.stetMetadata,\n                beneficiary: {\n                    ...state?.stetMetadata?.beneficiary,\n                    creditorAgent: {\n                        ...state?.stetMetadata?.beneficiary?.creditorAgent,\n                        bicFi: value || undefined,\n                    },\n                },\n            },\n        });\n    };\n\n    handleCreditorAgentName = value => {\n        const state = this.props.state;\n        this.props.handleMandatoryFields({\n            stetMetadata: {\n                ...state?.stetMetadata,\n                beneficiary: {\n                    ...state?.stetMetadata?.beneficiary,\n                    creditorAgent: {\n                        ...state?.stetMetadata?.beneficiary?.creditorAgent,\n                        name: value || undefined,\n                    },\n                },\n            },\n        });\n    };\n\n    displayCreditorAgentName = () => {\n        return (\n            <div className={cx('Consent-data-row')} key={'creditor_agent_name'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.creditorAgent.name.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e =>\n                            this.handleCreditorAgentName(e.target.value)\n                        }\n                        placeholder={this.props.intl.formatMessage({\n                            id:\n                                'pisp.consent.mandatory.creditorAgent.name.placeholder',\n                        })}\n                        name=\"creditor_agent_name\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            this.props?.state?.stetMetadata?.beneficiary\n                                ?.creditorAgent?.name\n                        }\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    displayCreditorAgentBicFi = () => {\n        return (\n            <div\n                className={cx('Consent-data-row')}\n                key={'creditor_agent_bicFi'}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage\n                        tagName={'span'}\n                        id={'pisp.consent.mandatory.creditorAgent.bicFi.label'}\n                    />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <TextInput\n                        onChange={e =>\n                            this.handleCreditorAgentBicFi(e.target.value)\n                        }\n                        placeholder={this.props.intl.formatMessage({\n                            id:\n                                'pisp.consent.mandatory.creditorAgent.bicFi.placeholder',\n                        })}\n                        name=\"creditor_agent_bicFi\"\n                        className={cx({\n                            TextInput__inner__input: true,\n                            Mandatory_field: true,\n                        })}\n                        aria-required=\"true\"\n                        value={\n                            this.props.state?.stetMetadata?.beneficiary\n                                ?.creditorAgent?.bicFi\n                        }\n                        required\n                        autoFocus\n                    />\n                </div>\n            </div>\n        );\n    };\n\n    render() {\n        const { requiredMandatoryFields, transferMetadata, type } = this.props;\n        const config = mandatoryFieldsConfig?.[type];\n        const defaultCreditorAgentName =\n            transferMetadata?.beneficiary?.creditorAgent?.name;\n        const defaultCreditorAgentBicFi =\n            transferMetadata?.beneficiary?.creditorAgent?.bicFi;\n\n        return (\n            <>\n                {requiredMandatoryFields?.map(field => {\n                    return (\n                        <Fragment key={'stet_fields'}>\n                            {field === config.stet.creditorAgent &&\n                                !defaultCreditorAgentName &&\n                                this.displayCreditorAgentName()}\n                            {field === config.stet.creditorAgent &&\n                                !defaultCreditorAgentBicFi &&\n                                this.displayCreditorAgentBicFi()}\n                        </Fragment>\n                    );\n                })}\n            </>\n        );\n    }\n}\n\nStetMandatoryFields.propTypes = {\n    requiredMandatoryFields: PropTypes.array,\n    transferMetadata: PropTypes.object,\n    intl: intlShape.isRequired,\n    handleMandatoryFields: PropTypes.func,\n    state: PropTypes.object,\n    type: PropTypes.string,\n};\n\nStetMandatoryFields.defaultProps = {\n    type: 'transfer',\n};\n\nexport default injectIntl(StetMandatoryFields);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './PolishApiMandatoryFields.css';\nimport classNames from 'classnames/bind';\nimport { FormattedMessage, intlShape, injectIntl } from 'react-intl';\nimport StaticDataProvider from '@token-io/lib-web-components/src/Components/Data/StaticDataProvider';\nimport Dropdown from '@token-io/lib-web-components/src/Components/Dropdown';\nimport { formatAsKeyValuePair } from 'util/index';\nimport { POLISH_API_DELIVER_MODES } from 'config/constants';\nimport { mandatoryFieldsConfig } from 'config/mandatoryFields';\n\nconst cx = classNames.bind(style);\n\nclass PolishApiMandatoryFields extends Component {\n    state = {\n        dropDown: false,\n    };\n\n    handleOptionChange = selectedOption => {\n        this.props.handleMandatoryFields({\n            polishApiMetadata: {\n                ...this.props.state?.polishApiMetadata,\n                deliveryMode:\n                    Object.keys(POLISH_API_DELIVER_MODES)[selectedOption?.id] ||\n                    undefined,\n            },\n        });\n        this.setState({\n            option: selectedOption,\n            dropDown: false,\n        });\n    };\n\n    setDropDownState = state => {\n        this.setState({ dropDown: state });\n    };\n\n    componentDidMount() {\n        const polishApiMetadata = this.props.transferMetadata;\n        this.props.handleMandatoryFields({ polishApiMetadata });\n    }\n\n    render() {\n        const {\n            requiredMandatoryFields,\n            transferMetadata,\n            intl,\n            type,\n        } = this.props;\n        const config = mandatoryFieldsConfig?.[type];\n        const displayOptions = formatAsKeyValuePair(\n            Object.values(POLISH_API_DELIVER_MODES),\n        );\n\n        return (\n            <>\n                {requiredMandatoryFields?.map(field => {\n                    return (\n                        field === config.polishApi.deliveryMode &&\n                        !transferMetadata?.deliveryMode && (\n                            <div\n                                className={cx('Consent-data-row')}\n                                key={'polish_delivery_mode'}>\n                                <div\n                                    className={cx({\n                                        'Consent-data-row-title': true,\n                                        'Consent-data-row-title--fixSize': true,\n                                    })}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={\n                                            'pisp.consent.mandatory.deliveryMode.label'\n                                        }\n                                    />\n                                </div>\n                                <div\n                                    className={cx({\n                                        'Consent-data-row-detail': true,\n                                        'Consent-data-row-detail--fixSize': true,\n                                    })}>\n                                    <StaticDataProvider\n                                        useCustomData\n                                        customData={displayOptions}\n                                        idKey={'id'}\n                                        titleKey={'id'}\n                                        dataKey={'value'}\n                                        customSetValue={async (\n                                            value,\n                                            { doneCallback },\n                                        ) => {\n                                            await this.handleOptionChange(\n                                                value,\n                                            );\n                                            doneCallback();\n                                        }}\n                                        value={\n                                            this.state.option === undefined\n                                                ? null\n                                                : this.state.option\n                                        }\n                                        withPointer>\n                                        <Dropdown\n                                            className={\n                                                'Consent-data-row-detail-options'\n                                            }\n                                            listClass={\n                                                'Consent-data-row-detail-options-dropdown'\n                                            }\n                                            overlayClass={\n                                                'Consent-data-row-detail-options-overlay'\n                                            }\n                                            rowClass={\n                                                'Consent-data-row-detail-options-item'\n                                            }\n                                            dropDownState={this.state.dropDown}\n                                            placeholder={intl.formatMessage({\n                                                id:\n                                                    'pisp.consent.mandatory.deliveryMode.placeholder',\n                                            })}\n                                            scrollClass={cx(\n                                                'Consent-data-row-detail-options-scroll',\n                                            )}\n                                            setDropDownState={\n                                                this.setDropDownState\n                                            }\n                                            allowDeselect\n                                        />\n                                    </StaticDataProvider>\n                                </div>\n                            </div>\n                        )\n                    );\n                })}\n            </>\n        );\n    }\n}\n\nPolishApiMandatoryFields.propTypes = {\n    requiredMandatoryFields: PropTypes.array,\n    transferMetadata: PropTypes.object,\n    intl: intlShape.isRequired,\n    handleMandatoryFields: PropTypes.func,\n    state: PropTypes.object,\n    type: PropTypes.string,\n};\n\nPolishApiMandatoryFields.defaultProps = {\n    type: 'transfer',\n};\n\nexport default injectIntl(PolishApiMandatoryFields);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport style from './CopyIcon.css';\nimport classNames from 'classnames/bind';\nimport { FaCopy } from 'react-icons/fa';\n\nconst cx = classNames.bind(style);\n\nconst CopyIcon = ({ onKeyPress, onClick, className, ariaLabel }) => {\n    return (\n        <span\n            className={cx({\n                [className]: !!className,\n            })}\n            aria-label={ariaLabel}\n            onKeyPress={e => {\n                if (e.key === 'Enter') onKeyPress();\n            }}\n            onClick={() => onClick()}\n            tabIndex=\"0\"\n            role=\"button\">\n            <FaCopy\n                className={cx('CopyIcon')}\n                style={{ outline: 'none', border: 'none' }}\n                title=\"Copy\"\n            />\n        </span>\n    );\n};\n\nCopyIcon.propTypes = {\n    onClick: PropTypes.func,\n    onKeyPress: PropTypes.func,\n    ariaLabel: PropTypes.string,\n    className: PropTypes.string,\n};\n\nCopyIcon.defaultProps = {\n    onClick: () => null,\n    onKeyPress: () => null,\n};\n\nexport default CopyIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Button = ({ className, onClick, ariaLabel, text }) => {\n    return (\n        <button\n            aria-label={ariaLabel}\n            onClick={onClick}\n            className={className}\n            tabIndex=\"0\">\n            <span\n                style={{ outline: 'none', border: 'none' }}\n                className=\"Button__content\">\n                {text}\n            </span>\n        </button>\n    );\n};\n\nButton.propTypes = {\n    onClick: PropTypes.func,\n    ariaLabel: PropTypes.string,\n    className: PropTypes.string,\n    text: PropTypes.string,\n};\n\nButton.defaultProps = {\n    onClick: () => null,\n    text: '',\n};\n\nexport default Button;\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport EditIcon from '../Icons/EditIcon.js';\nimport TextInput from '../Shared/TextInput.js';\nimport FeedbackIcon from '../Icons/FeedbackIcon.js';\nimport { handleCheckIban } from '../Shared/ValidateIban';\nimport InvalidIbanText from '../Shared/InvalidIbanText.js';\nimport MandatoryFields from './MandatoryFields.js';\nimport StetMandatoryFields from './StetMandatoryFields.js';\nimport PolishApiMandatoryFields from './PolishApiMandatoryFields.js';\nimport CopyIcon from '../Icons/CopyIcon.js';\nimport ChangeButton from './Button.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n    setMandatoryTransferFields,\n    setMandatoryProviderTransferMetadata,\n} from 'actions/pisp';\nimport { setBank, declineTerms } from 'actions/shared';\nimport {\n    copyOnClipboard,\n    hideConsentText,\n    filterDestinationAccount,\n    formatCurrency,\n    formatDate,\n    getDestinationPaymentRail,\n    addRefundTextIfNotPresent,\n    sanitizeHTML,\n    checkMandatoryFieldsPresent,\n} from 'util/index';\nimport { defaultAppName } from 'config/constants';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TermsLoader from '../Terms/TermsLoader';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    banksWithBranches,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from '../../../config/constants';\nimport HrefToPopup from '../Shared/HrefToPopup.js';\n\nconst cx = classNames.bind(style);\n\nclass ConsentBankFirstFlow extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            iban: '',\n            bic: '',\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        };\n        this.confirm = this.confirm.bind(this);\n        this.contentRef = createRef();\n        this.consentTextRef = createRef();\n        this.ibanInputDisplay = this.ibanInputDisplay.bind(this);\n        this.defaultIbanDisplay = this.defaultIbanDisplay.bind(this);\n        this.ibanWithCountry = this.ibanWithCountry.bind(this);\n        this.checkSubBranch = this.checkSubBranch.bind(this);\n        this.iconDisplay = this.iconDisplay.bind(this);\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        if (prevState.iban !== this.state.iban) {\n            const timeout = this.props.defaultIban ? 0 : 1000;\n            handleCheckIban({\n                iban: this.state.iban,\n                requestId: this.props.tokenRequestId,\n                handleValidIban: this.handleValidIban,\n                handleInvalidIban: this.handleInvalidIban,\n                timeout,\n            });\n        }\n        if (\n            this.props?.defaultIban &&\n            !this.state.isIbanValid &&\n            prevState.iban\n        ) {\n            this.props.setInstructionsSourceIban({\n                iban: '',\n                bic: this.state.bic,\n            });\n        }\n    }\n\n    handleInvalidIban = () => {\n        this.setState({\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        });\n    };\n\n    handleValidIban = () => {\n        this.setState({\n            isIbanValid: true,\n            displayIbanSpinner: false,\n        });\n    };\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        const iban = this.props.defaultIban?.trim();\n        const bic = this.props.defaultBic?.trim();\n        if (\n            iban &&\n            Object.prototype.hasOwnProperty.call(\n                banksWithBranches,\n                this.props.selectedBankName,\n            )\n        ) {\n            const validBranchNumber = this.checkSubBranch(iban);\n            if (!validBranchNumber) {\n                this.props.setInstructionsSourceIban({\n                    iban: '',\n                    bic: this.state.bic,\n                });\n            }\n        }\n        if (iban) {\n            this.setState({ iban, bic });\n        }\n    }\n\n    ibanWithCountry() {\n        return (\n            (this.state.iban &&\n                this.state.iban.length > 2 &&\n                this.state.iban) ||\n            (this.props.selectedBank && this.props.selectedBank.country) ||\n            ''\n        );\n    }\n\n    handleMandatoryFields = obj => {\n        this.setState(prevState => ({\n            mandatoryFields: {\n                ...prevState.mandatoryFields,\n                ...obj,\n            },\n            bic: obj?.instructions?.source?.bic || this.state.bic,\n        }));\n    };\n\n    checkSubBranch(ibanValue) {\n        const iban = ibanValue?.trim();\n        let validBranchNumber = false;\n        const branchList =\n            this.props.banksBranchList &&\n            this.props.banksBranchList[this.props.selectedBankName];\n        if (branchList && iban.length >= 12) {\n            const branchNumber = iban.slice(4, 12);\n            if (branchList[branchNumber]) {\n                this.props.setBank(branchList[branchNumber]);\n                validBranchNumber = true;\n            }\n        }\n        this.setState({\n            iban: iban,\n            validBranchNumber,\n            isIbanValid: false,\n            displayIbanSpinner: true,\n        });\n        return validBranchNumber;\n    }\n\n    iconDisplay() {\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n        const displayIbanSpinner = this.state.displayIbanSpinner;\n        return (\n            <FeedbackIcon\n                isValid={this.state.validBranchNumber && this.state.isIbanValid}\n                preCondition={\n                    selectedBankHavingSubbranch && this.state.iban.length >= 12\n                }\n                displaySpinner={displayIbanSpinner}\n            />\n        );\n    }\n\n    ibanInputDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <div style={{ display: 'flex' }}>\n                        {this.iconDisplay()}\n                        <TextInput\n                            onChange={e =>\n                                this.checkSubBranch(\n                                    e.target.value?.toUpperCase(),\n                                )\n                            }\n                            placeholder={this.props.intl.formatMessage({\n                                id: 'pisp.iban.description',\n                            })}\n                            key=\"iban\"\n                            name=\"iban_inputField\"\n                            className={cx({\n                                TextInput__inner__input: true,\n                                'AliasInput-field': true,\n                                'IbanInput-field': true,\n                            })}\n                            aria-required=\"true\"\n                            validateInput={\n                                !this.state.isIbanValid &&\n                                !this.state.displayIbanSpinner &&\n                                !!this.state.iban\n                            }\n                            value={this.ibanWithCountry()}\n                            required\n                            autoFocus\n                        />\n                    </div>\n                    {this.state.iban &&\n                        !this.state.isIbanValid &&\n                        !this.state.displayIbanSpinner && (\n                        <InvalidIbanText\n                            text={this.props.intl.formatMessage({\n                                id: 'pisp.iban.notValid',\n                            })}\n                        />\n                    )}\n                </div>\n            </div>\n        );\n    }\n\n    defaultIbanDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <span className={cx('Colored-Text')}>\n                        <strong>{this.props.defaultIban}</strong> &nbsp;\n                        <EditIcon\n                            className={cx('Consent-DefaultIban')}\n                            ariaLabel={this.props.intl.formatMessage({\n                                id: 'pisp.iban.focus',\n                            })}\n                            onKeyPress={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                            onClick={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                        />\n                    </span>\n                </div>\n            </div>\n        );\n    }\n\n    confirm = () => {\n        const requiredMandatoryFields = this.props.requiredMandatoryFields;\n        if (this.props.oneStepSupport) {\n            this.props.setInstructionsSourceIban({\n                iban: this.state.iban,\n                bic: this.state.bic,\n            });\n        }\n        requiredMandatoryFields &&\n            this.props.setMandatoryTransferFields(this.state.mandatoryFields);\n        (requiredMandatoryFields?.stetFields ||\n            requiredMandatoryFields?.polishapiFields) &&\n            this.props.setMandatoryProviderTransferMetadata(\n                this.state.mandatoryFields,\n                requiredMandatoryFields,\n            );\n        this.props.proceedToBank();\n    };\n\n    render() {\n        const {\n            declineTerms,\n            pispName,\n            pispAlias,\n            total,\n            businessName,\n            executionDate,\n            oneStepSupport,\n            backToBankSelector,\n            defaultIban,\n            selectedBankName,\n            refId,\n            defaultBankId,\n            destinations,\n            setTransferDestinationsUrl,\n            instructions,\n            requiredMandatoryFields,\n            displayBeneficiaryDetails,\n            description,\n            returnRefundAccountFlag,\n            modifyPreSelectedBank,\n        } = this.props;\n        const { iban, mandatoryFields } = this.state;\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n\n        const messageVariableValues = {\n            BUSINESS_NAME: businessName,\n            DISPLAY_NAME: pispName ? pispName : pispAlias,\n            REFUND_ACCOUNT: returnRefundAccountFlag\n                ? this.props.intl.formatMessage({\n                    id: 'pisp.consent.refundAccount',\n                })\n                : '',\n        };\n\n        const consentText = this.props.intl.formatMessage(\n            {\n                id: 'pisp.consent.text',\n                defaultMessage: ' ',\n            },\n            messageVariableValues,\n        );\n\n        const status = () => {\n            if (\n                selectedBankHavingSubbranch &&\n                !this.state.validBranchNumber &&\n                !defaultBankId\n            ) {\n                return Button.STATUS_DISABLED;\n            }\n            if (oneStepSupport === true && !(iban?.length > 2)) {\n                return Button.STATUS_DISABLED;\n            } else if (oneStepSupport === true && !this.state.isIbanValid) {\n                return Button.STATUS_DISABLED;\n            } else if (\n                mandatoryFields &&\n                !checkMandatoryFieldsPresent(\n                    mandatoryFields,\n                    requiredMandatoryFields,\n                )\n            ) {\n                return Button.STATUS_DISABLED;\n            } else return Button.STATUS_IDLE;\n        };\n        const destinationAccount = filterDestinationAccount(destinations[0]);\n        const showBeneficiaryDetails = !!displayBeneficiaryDetails;\n        const hideConsentTextBlock = hideConsentText(consentText);\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Pisp-Consent-subcontainer')}\n                    innerRef={this.contentRef}\n                    noMargin>\n                    <div className=\"TokenContainer-margin\">\n                        <TokenTitle>\n                            <FormattedMessage id={'pisp.consent.title'} />\n                        </TokenTitle>\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'pisp.consent.subtitle1'}\n                                tagName={'p'}\n                            />\n                        </TokenTitle>\n                    </div>\n                    <div className={cx('Consent-data')}>\n                        <TokenTitle sub>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.singlePayment'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Colored-Text')}>\n                                        {total}\n                                    </span>\n                                </div>\n                            </div>\n                            {executionDate ? (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.executionDate'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {executionDate}\n                                        </span>\n                                    </div>\n                                </div>\n                            ) : null}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.beneficiary'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-pisp-alias')}>\n                                        {pispName ? (\n                                            <strong>{pispName}</strong>\n                                        ) : (\n                                            <strong>{pispAlias}</strong>\n                                        )}\n                                    </span>\n                                </div>\n                            </div>\n                            {showBeneficiaryDetails &&\n                                Object.keys(destinationAccount).map(key => {\n                                    return (\n                                        <div\n                                            key={key}\n                                            className={cx('Consent-data-row')}>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-title',\n                                                )}>\n                                                <FormattedMessage\n                                                    tagName={'span'}\n                                                    id={`pisp.consent.destination.${key}`}\n                                                />\n                                            </div>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-detail',\n                                                )}>\n                                                <span>\n                                                    <strong>\n                                                        {\n                                                            destinationAccount[\n                                                                key\n                                                            ]\n                                                        }\n                                                    </strong>\n                                                </span>\n                                            </div>\n                                        </div>\n                                    );\n                                })}\n\n                            {selectedBankName && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.bankName'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <span\n                                            className={cx('Consent-BankName')}>\n                                            <strong>{selectedBankName}</strong>\n                                        </span>\n                                        {!setTransferDestinationsUrl &&\n                                            (defaultBankId === '' ||\n                                                modifyPreSelectedBank) && (\n                                            <ChangeButton\n                                                ariaLabel={this.props.intl.formatMessage(\n                                                    {\n                                                        id:\n                                                                'pisp.consent.changeBank.ariaLabel',\n                                                    },\n                                                )}\n                                                onClick={() =>\n                                                    backToBankSelector()\n                                                }\n                                                className={cx('ChangeBank')}\n                                                text={this.props.intl.formatMessage(\n                                                    {\n                                                        id:\n                                                                'pisp.consent.changeBank.label',\n                                                    },\n                                                )}\n                                            />\n                                        )}\n                                    </div>\n                                </div>\n                            )}\n                            {oneStepSupport\n                                ? defaultIban === ''\n                                    ? this.ibanInputDisplay()\n                                    : this.defaultIbanDisplay()\n                                : null}\n                            {requiredMandatoryFields?.fields && (\n                                <MandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.fields\n                                    }\n                                    instructions={instructions}\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"transfer\"\n                                />\n                            )}\n                            {requiredMandatoryFields?.['stetFields'] && (\n                                <StetMandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.['stetFields']\n                                    }\n                                    transferMetadata={\n                                        instructions?.metadata\n                                            ?.providerTransferMetadata\n                                            ?.stetTransferMetadata\n                                    }\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"transfer\"\n                                />\n                            )}\n                            {requiredMandatoryFields?.['polishapiFields'] && (\n                                <PolishApiMandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.[\n                                            'polishapiFields'\n                                        ]\n                                    }\n                                    transferMetadata={\n                                        instructions?.metadata\n                                            ?.providerTransferMetadata\n                                            ?.polishApiTransferMetadata\n                                    }\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"transfer\"\n                                />\n                            )}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.refId'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId} </strong>\n                                        <CopyIcon\n                                            className={cx('Consent-CopyRefId')}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            {description && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.description'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Description')}>\n                                            {description}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                        </TokenTitle>\n                    </div>\n                    {!hideConsentTextBlock && (\n                        <HrefToPopup\n                            contentRef={this.consentTextRef}\n                            fallbackToOverlay>\n                            <div\n                                className={cx({\n                                    'show-reverse-payments-support': returnRefundAccountFlag,\n                                    'Consent-details': true,\n                                })}\n                                ref={this.consentTextRef}\n                                dangerouslySetInnerHTML={{\n                                    __html: sanitizeHTML(\n                                        addRefundTextIfNotPresent({\n                                            customConsentText: consentText,\n                                            defaultRefundText: this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.refundAccount',\n                                                },\n                                                messageVariableValues,\n                                            ),\n                                        }),\n                                    ),\n                                }}\n                            />\n                        </HrefToPopup>\n                    )}\n                    <TermsLoader />\n                </TokenContainer>\n\n                <TokenButtonsWrapper>\n                    <Button\n                        status={status()}\n                        onClick={this.confirm}\n                        scrollRef={this.contentRef}\n                        text={<FormattedMessage id={'common.button.accept'} />}\n                    />\n                    {defaultBankId !== '' || modifyPreSelectedBank ? (\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    ) : (\n                        <Button\n                            type={Button.TYPE_GHOST}\n                            onClick={backToBankSelector}\n                            status={\n                                setTransferDestinationsUrl\n                                    ? Button.STATUS_DISABLED\n                                    : Button.STATUS_IDLE\n                            }\n                            text={\n                                <FormattedMessage id={'common.button.back'} />\n                            }\n                        />\n                    )}\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    pispName: PropTypes.string.isRequired,\n    pispAlias: PropTypes.string.isRequired,\n    total: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    businessName: PropTypes.string.isRequired,\n    executionDate: PropTypes.string,\n    backToBankSelector: PropTypes.func.isRequired,\n    oneStepSupport: PropTypes.bool.isRequired,\n    proceedToBank: PropTypes.func.isRequired,\n    defaultIban: PropTypes.string.isRequired,\n    defaultBic: PropTypes.string.isRequired,\n    setInstructionsSourceIban: PropTypes.func.isRequired,\n    selectedBankName: PropTypes.string,\n    selectedBank: PropTypes.object,\n    refId: PropTypes.string.isRequired,\n    banksBranchList: PropTypes.object,\n    setBank: PropTypes.func,\n    defaultBankId: PropTypes.string,\n    destinations: PropTypes.array,\n    setTransferDestinationsUrl: PropTypes.string,\n    instructions: PropTypes.object,\n    requiredMandatoryFields: PropTypes.object,\n    setMandatoryTransferFields: PropTypes.func.isRequired,\n    setMandatoryProviderTransferMetadata: PropTypes.func.isRequired,\n    tokenRequestId: PropTypes.string.isRequired,\n    description: PropTypes.string,\n    returnRefundAccountFlag: PropTypes.bool,\n    displayBeneficiaryDetails: PropTypes.bool,\n    modifyPreSelectedBank: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = (\n    { tokenService, tokenRequestService, sharedService },\n    ownProps,\n) => {\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const total = formatCurrency(\n        tokenService.getAmount(),\n        tokenService.getCurrency(),\n        ownProps.intl.formatNumber,\n    );\n    const executionDate = formatDate(tokenService.getExecutionDate());\n    const instructions = tokenService.getInstructions();\n    const selectedBankName = sharedService.getSelectedBankName();\n    const selectedBank = sharedService.getSelectedBank();\n    const defaultBankId = tokenRequestService.getDefaultBankId() || '';\n    const destinations = tokenService.getDestinations();\n    const paymentType = getDestinationPaymentRail(\n        destinations[0],\n        selectedBank,\n    );\n    const description = tokenRequestService.getDescription();\n    const returnRefundAccountFlag = tokenService.getReturnRefundAccountFlag();\n    const displayBeneficiaryDetails = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_BENEFICARY_DETAILS,\n        false,\n    );\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    return {\n        pispName: actingAs?.displayName || tppName,\n        pispAlias: actingAs?.secondaryName || tppAlias.value,\n        total,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n            defaultAppName,\n        executionDate,\n        oneStepSupport: sharedService.getDoesBankSupportOneStep(),\n        instructions,\n        defaultIban:\n            instructions?.source?.account?.iban?.iban ||\n            instructions?.source?.accountIdentifier?.iban?.iban ||\n            '',\n        defaultBic:\n            instructions?.source?.account?.iban?.bic ||\n            instructions?.source?.bic ||\n            '',\n        selectedBankName,\n        selectedBank,\n        refId: tokenService.getRefId(),\n        banksBranchList: sharedService.getBanksBranchList() || {},\n        defaultBankId,\n        destinations,\n        setTransferDestinationsUrl: tokenService.getSetTransferDestinationsUrl(),\n        requiredMandatoryFields:\n            selectedBank?.mandatoryFields?.transfer?.[paymentType],\n        tokenRequestId,\n        description,\n        returnRefundAccountFlag,\n        displayBeneficiaryDetails,\n        modifyPreSelectedBank,\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n    setBank,\n    setMandatoryTransferFields,\n    setMandatoryProviderTransferMetadata,\n    declineTerms,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(ConsentBankFirstFlow);\n","import React from 'react';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport { setBankAndProceedToConsent, backToBankSelector } from 'actions/pisp';\nimport BankSelectorFirst from '../Shared/BankSelectorFirst';\n\n// Higher order component BankSelector for PISP\nconst PispBankSelectorFirst = props => <BankSelectorFirst {...props} />;\n\nPispBankSelectorFirst.propTypes = {\n    setBankAndProceedToConsent: PropTypes.func,\n    backToBankSelector: PropTypes.func,\n};\n\nconst mapDispatchToProps = {\n    setBankAndProceedToConsent,\n    backToBankSelector,\n};\n\nexport default connect(null, mapDispatchToProps)(PispBankSelectorFirst);\n","import React, { Fragment, Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './StandingOrderConsent.css';\nimport EditIcon from '../Icons/EditIcon.js';\nimport FeedbackIcon from '../Icons/FeedbackIcon.js';\nimport InvalidIbanText from '../Shared/InvalidIbanText.js';\nimport { handleCheckIban } from '../Shared/ValidateIban';\nimport CopyIcon from '../Icons/CopyIcon.js';\nimport TextInput from '../Shared/TextInput.js';\nimport MandatoryFields from './MandatoryFields.js';\nimport StetMandatoryFields from './StetMandatoryFields.js';\nimport PolishApiMandatoryFields from './PolishApiMandatoryFields.js';\nimport ChangeButton from './Button.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n    setMandatoryStandingOrderFields,\n    setMandatoryProviderStandingOrderMetadata,\n} from 'actions/pisp';\nimport { declineTerms, setBank } from 'actions/shared';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    formatCurrency,\n    hideConsentText,\n    formatDate,\n    copyOnClipboard,\n    filterDestinationAccount,\n    checkMandatoryFieldsPresent,\n    addRefundTextIfNotPresent,\n} from 'util/index';\nimport {\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TermsLoader from '../Terms/TermsLoader';\nimport { banksWithBranches } from '../../../config/constants';\nimport { getDestinationPaymentRail, sanitizeHTML } from '../../../util';\n\nconst cx = classNames.bind(style);\n\nclass StandingOrderConsentBankFirstFlow extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            iban: '',\n            bic: '',\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        };\n        this.confirm = this.confirm.bind(this);\n        this.contentRef = createRef();\n        this.ibanInputDisplay = this.ibanInputDisplay.bind(this);\n        this.defaultIbanDisplay = this.defaultIbanDisplay.bind(this);\n        this.ibanWithCountry = this.ibanWithCountry.bind(this);\n        this.checkSubBranch = this.checkSubBranch.bind(this);\n        this.iconDisplay = this.iconDisplay.bind(this);\n    }\n\n    ibanWithCountry() {\n        return (\n            (this.state.iban &&\n                this.state.iban.length > 2 &&\n                this.state.iban) ||\n            (this.props.selectedBank && this.props.selectedBank.country) ||\n            ''\n        );\n    }\n\n    handleInvalidIban = () => {\n        this.setState({\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        });\n    };\n\n    handleValidIban = () => {\n        this.setState({\n            isIbanValid: true,\n            displayIbanSpinner: false,\n        });\n    };\n\n    checkSubBranch(ibanValue) {\n        const iban = ibanValue?.trim();\n        let validBranchNumber = false;\n        const branchList =\n            this.props.banksBranchList &&\n            this.props.banksBranchList[this.props.selectedBankName];\n        if (branchList && iban.length >= 12) {\n            const branchNumber = iban.slice(4, 12);\n            if (branchList[branchNumber]) {\n                this.props.setBank(branchList[branchNumber]);\n                validBranchNumber = true;\n            }\n        }\n        this.setState({\n            iban: iban,\n            validBranchNumber: validBranchNumber,\n            isIbanValid: false,\n            displayIbanSpinner: true,\n        });\n        return validBranchNumber;\n    }\n\n    iconDisplay() {\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n        const displayIbanSpinner = this.state.displayIbanSpinner;\n        return (\n            <FeedbackIcon\n                isValid={this.state.validBranchNumber && this.state.isIbanValid}\n                preCondition={\n                    selectedBankHavingSubbranch && this.state.iban.length >= 12\n                }\n                displaySpinner={displayIbanSpinner}\n            />\n        );\n    }\n\n    ibanInputDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <div style={{ display: 'flex' }}>\n                        {this.iconDisplay()}\n                        <TextInput\n                            onChange={e =>\n                                this.checkSubBranch(\n                                    e.target.value?.toUpperCase(),\n                                )\n                            }\n                            placeholder={this.props.intl.formatMessage({\n                                id: 'pisp.iban.description',\n                            })}\n                            key=\"iban\"\n                            name=\"iban_inputField\"\n                            className={cx({\n                                TextInput__inner__input: true,\n                                'AliasInput-field': true,\n                                'IbanInput-field': true,\n                            })}\n                            validateInput={\n                                !this.state.isIbanValid &&\n                                !this.state.displayIbanSpinner &&\n                                !!this.state.iban\n                            }\n                            aria-required=\"true\"\n                            value={this.ibanWithCountry()}\n                            required\n                            autoFocus\n                        />\n                    </div>\n                    {this.state.iban &&\n                        !this.state.isIbanValid &&\n                        !this.state.displayIbanSpinner && (\n                        <InvalidIbanText\n                            text={this.props.intl.formatMessage({\n                                id: 'pisp.iban.notValid',\n                            })}\n                        />\n                    )}\n                </div>\n            </div>\n        );\n    }\n\n    defaultIbanDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <span className={cx('Colored-Text')}>\n                        <strong>{this.props.defaultIban}</strong> &nbsp;\n                        <EditIcon\n                            className={cx('Consent-DefaultIban')}\n                            ariaLabel={this.props.intl.formatMessage({\n                                id: 'pisp.iban.focus',\n                            })}\n                            onKeyPress={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                            onClick={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                        />\n                    </span>\n                </div>\n            </div>\n        );\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        if (prevState.iban !== this.state.iban) {\n            const timeout = this.props.defaultIban ? 0 : 1000;\n            handleCheckIban({\n                iban: this.state.iban,\n                requestId: this.props.tokenRequestId,\n                handleValidIban: this.handleValidIban,\n                handleInvalidIban: this.handleInvalidIban,\n                timeout,\n            });\n        }\n        if (\n            this.props?.defaultIban &&\n            !this.state.isIbanValid &&\n            prevState.iban\n        ) {\n            this.props.setInstructionsSourceIban({\n                iban: '',\n                bic: this.state.bic,\n            });\n        }\n    }\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        const iban = this.props.defaultIban?.trim();\n        const bic = this.props.defaultBic?.trim();\n        if (\n            iban &&\n            Object.prototype.hasOwnProperty.call(\n                banksWithBranches,\n                this.props.selectedBankName,\n            )\n        ) {\n            const validBranchNumber = this.checkSubBranch(iban);\n            if (!validBranchNumber) {\n                this.props.setInstructionsSourceIban({\n                    iban: '',\n                    bic: this.state.bic,\n                });\n            }\n        }\n        if (iban) {\n            this.setState({ iban, bic });\n        }\n    }\n\n    handleMandatoryFields = obj => {\n        this.setState(prevState => ({\n            mandatoryFields: {\n                ...prevState.mandatoryFields,\n                ...obj,\n            },\n            bic: obj?.instructions?.source?.bic || this.state.bic,\n        }));\n    };\n\n    confirm = () => {\n        const requiredMandatoryFields = this.props.requiredMandatoryFields;\n        if (this.props.oneStepSupport) {\n            this.props.setInstructionsSourceIban({\n                iban: this.state.iban,\n                bic: this.state.bic,\n            });\n        }\n        requiredMandatoryFields &&\n            this.props.setMandatoryStandingOrderFields(\n                this.state.mandatoryFields,\n            );\n        (requiredMandatoryFields?.stetFields ||\n            requiredMandatoryFields?.polishapiFields) &&\n            this.props.setMandatoryProviderStandingOrderMetadata(\n                this.state.mandatoryFields,\n                requiredMandatoryFields,\n            );\n        this.props.proceedToBank();\n    };\n\n    render() {\n        const {\n            declineTerms,\n            pispName,\n            pispAlias,\n            total,\n            businessName,\n            frequency,\n            startDate,\n            endDate,\n            oneStepSupport,\n            backToBankSelector,\n            defaultIban,\n            selectedBankName,\n            refId,\n            defaultBankId,\n            destinations,\n            instructions,\n            requiredMandatoryFields,\n            displayBeneficiaryDetails,\n            description,\n            returnRefundAccountFlag,\n            modifyPreSelectedBank,\n        } = this.props;\n        const { iban, mandatoryFields } = this.state;\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n        const messageVariableValues = {\n            BUSINESS_NAME: businessName,\n            DISPLAY_NAME: pispName ? pispName : pispAlias,\n            REFUND_ACCOUNT: returnRefundAccountFlag\n                ? this.props.intl.formatMessage({\n                    id: 'pisp.consent.refundAccount',\n                })\n                : '',\n        };\n        const consentText = this.props.intl.formatMessage(\n            {\n                id: 'pisp.consent.text',\n                defaultMessage: '',\n            },\n            messageVariableValues,\n        );\n        const status = () => {\n            if (\n                selectedBankHavingSubbranch &&\n                !this.state.validBranchNumber &&\n                !defaultBankId\n            ) {\n                return Button.STATUS_DISABLED;\n            }\n            if (oneStepSupport === true && !(iban?.length > 2)) {\n                return Button.STATUS_DISABLED;\n            } else if (oneStepSupport === true && !this.state.isIbanValid) {\n                return Button.STATUS_DISABLED;\n            } else if (\n                mandatoryFields &&\n                !checkMandatoryFieldsPresent(\n                    mandatoryFields,\n                    requiredMandatoryFields,\n                    'standingOrder',\n                )\n            ) {\n                return Button.STATUS_DISABLED;\n            } else return Button.STATUS_IDLE;\n        };\n        const destinationAccount = filterDestinationAccount(destinations[0]);\n        const showBeneficiaryDetails = !!displayBeneficiaryDetails;\n        const hideConsentTextBlock = hideConsentText(consentText);\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    innerRef={this.contentRef}\n                    className={cx('Pisp-Consent-subcontainer')}\n                    noMargin>\n                    <div className=\"TokenContainer-margin\">\n                        <TokenTitle>\n                            <FormattedMessage id={'pisp.consent.title'} />\n                        </TokenTitle>\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'pisp.consent.subtitle1'}\n                                tagName={'p'}\n                            />\n                        </TokenTitle>\n                    </div>\n                    <div className={cx('Consent-data')}>\n                        <TokenTitle sub>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.standingOrder.amount'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Colored-Text')}>\n                                        {total}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.standingOrder.startDate'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Colored-Text')}>\n                                        {startDate}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.standingOrder.frequency'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'strong'}\n                                        id={`pisp.standingOrder.${frequency}`}\n                                    />\n                                </div>\n                            </div>\n                            {endDate ? (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.standingOrder.endDate'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {endDate}\n                                        </span>\n                                    </div>\n                                </div>\n                            ) : null}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.beneficiary'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-pisp-alias')}>\n                                        {pispName ? (\n                                            <strong>{pispName}</strong>\n                                        ) : (\n                                            <strong>{pispAlias}</strong>\n                                        )}\n                                    </span>\n                                </div>\n                            </div>\n                            {showBeneficiaryDetails &&\n                                Object.keys(destinationAccount).map(key => {\n                                    return (\n                                        <div\n                                            key={key}\n                                            className={cx('Consent-data-row')}>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-title',\n                                                )}>\n                                                <FormattedMessage\n                                                    tagName={'span'}\n                                                    id={`pisp.consent.destination.${key}`}\n                                                />\n                                            </div>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-detail',\n                                                )}>\n                                                <span>\n                                                    <strong>\n                                                        {\n                                                            destinationAccount[\n                                                                key\n                                                            ]\n                                                        }\n                                                    </strong>\n                                                </span>\n                                            </div>\n                                        </div>\n                                    );\n                                })}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.bankName'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-BankName')}>\n                                        <strong>{selectedBankName}</strong>\n                                    </span>\n                                    {(defaultBankId === '' ||\n                                        modifyPreSelectedBank) && (\n                                        <ChangeButton\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.ariaLabel',\n                                                },\n                                            )}\n                                            onClick={() => backToBankSelector()}\n                                            className={cx('ChangeBank')}\n                                            text={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.label',\n                                                },\n                                            )}\n                                        />\n                                    )}\n                                </div>\n                            </div>\n\n                            {oneStepSupport\n                                ? defaultIban === ''\n                                    ? this.ibanInputDisplay()\n                                    : this.defaultIbanDisplay()\n                                : null}\n                            {requiredMandatoryFields && (\n                                <MandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.fields\n                                    }\n                                    instructions={instructions}\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"standingOrder\"\n                                />\n                            )}\n                            {requiredMandatoryFields?.['stetFields'] && (\n                                <StetMandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.['stetFields']\n                                    }\n                                    transferMetadata={\n                                        instructions?.metadata\n                                            ?.providerStandingOrderMetadata\n                                            ?.stetStandingOrderMetadata\n                                    }\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"standingOrder\"\n                                />\n                            )}\n                            {requiredMandatoryFields?.['polishapiFields'] && (\n                                <PolishApiMandatoryFields\n                                    requiredMandatoryFields={\n                                        requiredMandatoryFields?.[\n                                            'polishapiFields'\n                                        ]\n                                    }\n                                    transferMetadata={\n                                        instructions?.metadata\n                                            ?.providerStandingOrderMetadata\n                                            ?.polishApiStandingOrderMetaData\n                                    }\n                                    handleMandatoryFields={obj =>\n                                        this.handleMandatoryFields(obj)\n                                    }\n                                    state={this.state.mandatoryFields}\n                                    type=\"standingOrder\"\n                                />\n                            )}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.refId'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId}</strong>\n                                        <CopyIcon\n                                            className={cx('Consent-CopyRefId')}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            {description && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.description'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Description')}>\n                                            {description}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                        </TokenTitle>\n                    </div>\n                    {!hideConsentTextBlock && (\n                        <div\n                            className={cx({\n                                'Consent-details': true,\n                                'show-reverse-payments-support': returnRefundAccountFlag,\n                            })}\n                            dangerouslySetInnerHTML={{\n                                __html: sanitizeHTML(\n                                    addRefundTextIfNotPresent({\n                                        customConsentText: consentText,\n                                        defaultRefundText: this.props.intl.formatMessage(\n                                            {\n                                                id:\n                                                    'pisp.consent.refundAccount',\n                                            },\n                                            messageVariableValues,\n                                        ),\n                                    }),\n                                ),\n                            }}\n                        />\n                    )}\n                    <TermsLoader />\n                </TokenContainer>\n\n                <TokenButtonsWrapper>\n                    <Button\n                        status={status()}\n                        scrollRef={this.contentRef}\n                        onClick={this.confirm}\n                        text={<FormattedMessage id={'common.button.accept'} />}\n                    />\n                    {defaultBankId !== '' || modifyPreSelectedBank ? (\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    ) : (\n                        <Button\n                            type={Button.TYPE_GHOST}\n                            onClick={backToBankSelector}\n                            text={\n                                <FormattedMessage id={'common.button.back'} />\n                            }\n                        />\n                    )}\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nStandingOrderConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    pispName: PropTypes.string.isRequired,\n    pispAlias: PropTypes.string.isRequired,\n    total: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    businessName: PropTypes.string.isRequired,\n    frequency: PropTypes.string.isRequired,\n    startDate: PropTypes.string.isRequired,\n    endDate: PropTypes.string,\n    backToBankSelector: PropTypes.func.isRequired,\n    oneStepSupport: PropTypes.bool.isRequired,\n    proceedToBank: PropTypes.func.isRequired,\n    defaultIban: PropTypes.string.isRequired,\n    defaultBic: PropTypes.string.isRequired,\n    setInstructionsSourceIban: PropTypes.func.isRequired,\n    selectedBankName: PropTypes.string,\n    selectedBank: PropTypes.object,\n    refId: PropTypes.string.isRequired,\n    banksBranchList: PropTypes.object,\n    setBank: PropTypes.func,\n    defaultBankId: PropTypes.string,\n    destinations: PropTypes.array,\n    instructions: PropTypes.object,\n    requiredMandatoryFields: PropTypes.object,\n    setMandatoryStandingOrderFields: PropTypes.func.isRequired,\n    setMandatoryProviderStandingOrderMetadata: PropTypes.func.isRequired,\n    tokenRequestId: PropTypes.string.isRequired,\n    description: PropTypes.string,\n    returnRefundAccountFlag: PropTypes.bool,\n    displayBeneficiaryDetails: PropTypes.bool,\n    modifyPreSelectedBank: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = (\n    { tokenService, tokenRequestService, sharedService },\n    ownProps,\n) => {\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const total = formatCurrency(\n        tokenService.getStandingOrderAmount(),\n        tokenService.getStandingOrderCurrency(),\n        ownProps.intl.formatNumber,\n    );\n    const frequency = tokenService.getStandingOrderFrequency();\n    const startDate = formatDate(tokenService.getStandingOrderStartDate());\n    const endDate = formatDate(tokenService.getStandingOrderEndDate());\n    const instructions = tokenService.getStandingOrderInstructions();\n    const selectedBankName = sharedService.getSelectedBankName();\n    const selectedBank = sharedService.getSelectedBank();\n    const destinations = tokenService.getStandingOrderDestinations();\n    const paymentType = getDestinationPaymentRail(\n        destinations[0],\n        selectedBank,\n    );\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const description = tokenRequestService.getDescription();\n    const returnRefundAccountFlag = tokenService.getStandingOrderReturnRefundAccountFlag();\n    const displayBeneficiaryDetails = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_BENEFICARY_DETAILS,\n        false,\n    );\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    return {\n        pispName: actingAs?.displayName || tppName,\n        pispAlias: actingAs?.secondaryName || tppAlias.value,\n        total,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n            defaultAppName,\n        frequency,\n        startDate,\n        endDate,\n        oneStepSupport: sharedService.getDoesBankSupportOneStep(),\n        instructions,\n        defaultIban:\n            instructions?.source?.account?.iban?.iban ||\n            instructions?.source?.accountIdentifier?.iban?.iban ||\n            '',\n        defaultBic:\n            instructions?.source?.account?.iban?.bic ||\n            instructions?.source?.bic ||\n            '',\n        selectedBankName,\n        selectedBank,\n        refId: tokenService.getRefId(),\n        banksBranchList: sharedService.getBanksBranchList() || {},\n        defaultBankId: tokenRequestService.getDefaultBankId() || '',\n        destinations,\n        requiredMandatoryFields:\n            selectedBank?.mandatoryFields?.standingOrder?.[paymentType],\n        tokenRequestId,\n        description,\n        returnRefundAccountFlag,\n        displayBeneficiaryDetails,\n        modifyPreSelectedBank,\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n    setBank,\n    setMandatoryStandingOrderFields,\n    setMandatoryProviderStandingOrderMetadata,\n    declineTerms,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(StandingOrderConsentBankFirstFlow);\n","import React, { Fragment, Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './BulkTransferConsent.css';\nimport EditIcon from '../Icons/EditIcon.js';\nimport FeedbackIcon from '../Icons/FeedbackIcon.js';\nimport InvalidIbanText from '../Shared/InvalidIbanText.js';\nimport { handleCheckIban } from '../Shared/ValidateIban';\nimport CopyIcon from '../Icons/CopyIcon.js';\nimport TextInput from '../Shared/TextInput.js';\nimport ChangeButton from './Button.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport ButtonVisibilityWrapper from '../Shared/ButtonVisibilityWrapper.js';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport {\n    backToBankSelector,\n    proceedToBank,\n    setInstructionsSourceIban,\n} from 'actions/pisp';\nimport { declineTerms, setBank } from 'actions/shared';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    formatCurrency,\n    formatDate,\n    copyOnClipboard,\n    hideConsentText,\n    filterDestinationAccount,\n} from 'util/index';\nimport {\n    defaultAppName,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TermsLoader from '../Terms/TermsLoader';\nimport { banksWithBranches } from '../../../config/constants';\nimport { sanitizeHTML } from '../../../util';\n\nconst cx = classNames.bind(style);\n\nclass BulkTransferConsentBankFirstFlow extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            iban: '',\n            bic: '',\n            buttonStatus: 'disabled',\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        };\n        this.confirm = this.confirm.bind(this);\n        this.contentRef = createRef();\n        this.ibanInputDisplay = this.ibanInputDisplay.bind(this);\n        this.defaultIbanDisplay = this.defaultIbanDisplay.bind(this);\n        this.ibanWithCountry = this.ibanWithCountry.bind(this);\n        this.checkSubBranch = this.checkSubBranch.bind(this);\n        this.iconDisplay = this.iconDisplay.bind(this);\n    }\n\n    ibanWithCountry() {\n        return (\n            (this.state.iban &&\n                this.state.iban.length > 2 &&\n                this.state.iban) ||\n            (this.props.selectedBank && this.props.selectedBank.country) ||\n            ''\n        );\n    }\n\n    checkSubBranch(iban) {\n        let validBranchNumber = false;\n        const branchList =\n            this.props.banksBranchList &&\n            this.props.banksBranchList[this.props.selectedBankName];\n        if (branchList && iban.length >= 12) {\n            const branchNumber = iban.slice(4, 12);\n            if (branchList[branchNumber]) {\n                this.props.setBank(branchList[branchNumber]);\n                validBranchNumber = true;\n            }\n        }\n        this.setState({\n            iban: iban,\n            validBranchNumber: validBranchNumber,\n            isIbanValid: false,\n            displayIbanSpinner: true,\n        });\n        return validBranchNumber;\n    }\n\n    iconDisplay() {\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n        const displayIbanSpinner = this.state.displayIbanSpinner;\n        return (\n            <FeedbackIcon\n                isValid={this.state.validBranchNumber && this.state.isIbanValid}\n                preCondition={\n                    selectedBankHavingSubbranch && this.state.iban.length >= 12\n                }\n                displaySpinner={displayIbanSpinner}\n            />\n        );\n    }\n\n    ibanInputDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <div style={{ display: 'flex' }}>\n                        {this.iconDisplay()}\n                        <TextInput\n                            onChange={e =>\n                                this.checkSubBranch(\n                                    e.target.value?.toUpperCase(),\n                                )\n                            }\n                            placeholder={this.props.intl.formatMessage({\n                                id: 'pisp.iban.description',\n                            })}\n                            key=\"iban\"\n                            name=\"iban_inputField\"\n                            className={cx({\n                                TextInput__inner__input: true,\n                                'AliasInput-field': true,\n                                'IbanInput-field': true,\n                            })}\n                            validateInput={\n                                !this.state.isIbanValid &&\n                                !this.state.displayIbanSpinner &&\n                                !!this.state.iban\n                            }\n                            aria-required=\"true\"\n                            value={this.ibanWithCountry()}\n                            required\n                            autoFocus\n                        />\n                    </div>\n                    {this.state.iban &&\n                        !this.state.isIbanValid &&\n                        !this.state.displayIbanSpinner && (\n                        <InvalidIbanText\n                            text={this.props.intl.formatMessage({\n                                id: 'pisp.iban.notValid',\n                            })}\n                        />\n                    )}\n                </div>\n            </div>\n        );\n    }\n\n    defaultIbanDisplay() {\n        return (\n            <div className={cx('Consent-data-row')}>\n                <div\n                    className={cx({\n                        'Consent-data-row-title': true,\n                        'Consent-data-row-title--fixSize': true,\n                    })}>\n                    <FormattedMessage tagName={'span'} id={'pisp.iban.title'} />\n                </div>\n                <div\n                    className={cx({\n                        'Consent-data-row-detail': true,\n                        'Consent-data-row-detail--fixSize': true,\n                    })}>\n                    <span className={cx('Colored-Text')}>\n                        <strong>{this.props.defaultIban}</strong>&nbsp;\n                        <EditIcon\n                            className={cx('Consent-DefaultIban')}\n                            ariaLabel={this.props.intl.formatMessage({\n                                id: 'pisp.iban.focus',\n                            })}\n                            onKeyPress={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                            onClick={() =>\n                                this.props.setInstructionsSourceIban({\n                                    iban: '',\n                                    bic: this.state.bic,\n                                })\n                            }\n                        />\n                    </span>\n                </div>\n            </div>\n        );\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        if (prevState.iban !== this.state.iban) {\n            const timeout = this.props.defaultIban ? 0 : 1000;\n            handleCheckIban({\n                iban: this.state.iban,\n                requestId: this.props.tokenRequestId,\n                handleValidIban: this.handleValidIban,\n                handleInvalidIban: this.handleInvalidIban,\n                timeout,\n            });\n        }\n        if (\n            this.props?.defaultIban &&\n            !this.state.isIbanValid &&\n            prevState.iban\n        ) {\n            this.props.setInstructionsSourceIban();\n        }\n    }\n\n    handleInvalidIban = () => {\n        this.setState({\n            isIbanValid: false,\n            displayIbanSpinner: false,\n        });\n    };\n\n    handleValidIban = () => {\n        this.setState({\n            isIbanValid: true,\n            displayIbanSpinner: false,\n        });\n    };\n\n    componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        const iban = this.props.defaultIban;\n        const bic = this.props.defaultBic;\n        if (\n            iban &&\n            Object.prototype.hasOwnProperty.call(\n                banksWithBranches,\n                this.props.selectedBankName,\n            )\n        ) {\n            const validBranchNumber = this.checkSubBranch(iban);\n            if (!validBranchNumber) {\n                this.props.setInstructionsSourceIban({\n                    iban: '',\n                    bic: this.state.bic,\n                });\n            }\n        }\n        if (iban) {\n            this.setState({ iban, bic });\n        }\n    }\n\n    confirm = () => {\n        if (this.props.oneStepSupport) {\n            this.props.setInstructionsSourceIban({\n                iban: this.state.iban,\n                bic: this.state.bic,\n            });\n        }\n        this.props.proceedToBank();\n    };\n\n    render() {\n        const {\n            declineTerms,\n            pispName,\n            pispAlias,\n            total,\n            businessName,\n            oneStepSupport,\n            backToBankSelector,\n            defaultIban,\n            executionDate,\n            selectedBankName,\n            refId,\n            defaultBankId,\n            bulkTransfers,\n            displayBeneficiaryDetails,\n            description,\n            modifyPreSelectedBank,\n        } = this.props;\n        const { iban } = this.state;\n        const selectedBankHavingSubbranch = Object.keys(\n            banksWithBranches,\n        ).includes(this.props.selectedBankName);\n        const status = () => {\n            if (\n                selectedBankHavingSubbranch &&\n                !this.state.validBranchNumber &&\n                !defaultBankId\n            ) {\n                return Button.STATUS_DISABLED;\n            }\n            if (oneStepSupport === true && !(iban?.length > 2)) {\n                return Button.STATUS_DISABLED;\n            } else if (oneStepSupport === true && !this.state.isIbanValid) {\n                return Button.STATUS_DISABLED;\n            } else return Button.STATUS_IDLE;\n        };\n        const destinationAccount = filterDestinationAccount(\n            bulkTransfers[0].destination,\n        );\n        const messageVariableValues = {\n            BUSINESS_NAME: businessName,\n            DISPLAY_NAME: pispName ? pispName : pispAlias,\n            REFUND_ACCOUNT: '',\n        };\n        const consentText = this.props.intl.formatMessage(\n            {\n                id: 'pisp.consent.text',\n                defaultMessage: '',\n            },\n            messageVariableValues,\n        );\n        const showBeneficiaryDetails = !!displayBeneficiaryDetails;\n        const hideConsentTextBlock = hideConsentText(consentText);\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Pisp-Consent-subcontainer')}\n                    innerRef={this.contentRef}\n                    noMargin>\n                    <div className=\"TokenContainer-margin\">\n                        <TokenTitle>\n                            <FormattedMessage id={'pisp.consent.title'} />\n                        </TokenTitle>\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'pisp.consent.subtitle1'}\n                                tagName={'p'}\n                            />\n                        </TokenTitle>\n                    </div>\n                    <div className={cx('Consent-data')}>\n                        <TokenTitle sub>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.bulkTransfer.bulkPayment'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Colored-Text')}>\n                                        {total}\n                                    </span>\n                                </div>\n                            </div>\n                            {executionDate ? (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.executionDate'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {executionDate}\n                                        </span>\n                                    </div>\n                                </div>\n                            ) : null}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.beneficiary'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-pisp-alias')}>\n                                        {pispName ? (\n                                            <strong>{pispName}</strong>\n                                        ) : (\n                                            <strong>{pispAlias}</strong>\n                                        )}\n                                    </span>\n                                </div>\n                            </div>\n                            {showBeneficiaryDetails &&\n                                Object.keys(destinationAccount).map(key => {\n                                    return (\n                                        <div\n                                            key={key}\n                                            className={cx('Consent-data-row')}>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-title',\n                                                )}>\n                                                <FormattedMessage\n                                                    tagName={'span'}\n                                                    id={`pisp.consent.destination.${key}`}\n                                                />\n                                            </div>\n                                            <div\n                                                className={cx(\n                                                    'Consent-data-row-detail',\n                                                )}>\n                                                <span>\n                                                    <strong>\n                                                        {\n                                                            destinationAccount[\n                                                                key\n                                                            ]\n                                                        }\n                                                    </strong>\n                                                </span>\n                                            </div>\n                                        </div>\n                                    );\n                                })}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.bankName'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-BankName')}>\n                                        <strong>{selectedBankName}</strong>\n                                    </span>\n                                    {(defaultBankId === '' ||\n                                        modifyPreSelectedBank) && (\n                                        <ChangeButton\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.ariaLabel',\n                                                },\n                                            )}\n                                            onClick={() => backToBankSelector()}\n                                            className={cx('ChangeBank')}\n                                            text={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.label',\n                                                },\n                                            )}\n                                        />\n                                    )}\n                                </div>\n                            </div>\n\n                            {oneStepSupport\n                                ? defaultIban === ''\n                                    ? this.ibanInputDisplay()\n                                    : this.defaultIbanDisplay()\n                                : null}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.consent.refId'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId} </strong>\n                                        <CopyIcon\n                                            className={cx('Consent-CopyRefId')}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            {description && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.consent.description'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Description')}>\n                                            {description}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                        </TokenTitle>\n                    </div>\n                    {!hideConsentTextBlock && (\n                        <div\n                            className={cx({\n                                'Consent-details': true,\n                            })}\n                            dangerouslySetInnerHTML={{\n                                __html: sanitizeHTML(consentText),\n                            }}\n                        />\n                    )}\n                    <TermsLoader />\n                </TokenContainer>\n                <TokenButtonsWrapper>\n                    <Button\n                        status={status()}\n                        scrollRef={this.contentRef}\n                        onClick={this.confirm}\n                        text={<FormattedMessage id={'common.button.accept'} />}\n                    />\n                    {defaultBankId !== '' || modifyPreSelectedBank ? (\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    ) : (\n                        <Button\n                            type={Button.TYPE_GHOST}\n                            onClick={backToBankSelector}\n                            text={\n                                <FormattedMessage id={'common.button.back'} />\n                            }\n                        />\n                    )}\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nBulkTransferConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    pispName: PropTypes.string.isRequired,\n    pispAlias: PropTypes.string.isRequired,\n    total: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    businessName: PropTypes.string.isRequired,\n    backToBankSelector: PropTypes.func.isRequired,\n    oneStepSupport: PropTypes.bool.isRequired,\n    proceedToBank: PropTypes.func.isRequired,\n    defaultIban: PropTypes.string.isRequired,\n    defaultBic: PropTypes.string.isRequired,\n    setInstructionsSourceIban: PropTypes.func.isRequired,\n    executionDate: PropTypes.string,\n    selectedBankName: PropTypes.string,\n    selectedBank: PropTypes.object,\n    refId: PropTypes.string.isRequired,\n    banksBranchList: PropTypes.object,\n    setBank: PropTypes.func,\n    defaultBankId: PropTypes.string,\n    bulkTransfers: PropTypes.array,\n    tokenRequestId: PropTypes.string.isRequired,\n    description: PropTypes.string,\n    displayBeneficiaryDetails: PropTypes.bool,\n    modifyPreSelectedBank: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = (\n    { tokenService, tokenRequestService, sharedService },\n    ownProps,\n) => {\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const total = formatCurrency(\n        tokenService.getBulkTransferAmount(),\n        tokenService.getBulkTransferCurrency(),\n        ownProps.intl.formatNumber,\n    );\n    const defaultIban = tokenService.getBulkTransferSource();\n    const selectedBankName = sharedService.getSelectedBankName();\n    const selectedBank = sharedService.getSelectedBank();\n    const executionDate = formatDate(tokenService.getExecutionDate());\n    const tokenRequestId = tokenRequestService.getRequestId();\n    const description = tokenRequestService.getDescription();\n    const displayBeneficiaryDetails = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_BENEFICARY_DETAILS,\n        false,\n    );\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    return {\n        pispName: actingAs?.displayName || tppName,\n        pispAlias: actingAs?.secondaryName || tppAlias.value,\n        total,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n            defaultAppName,\n        oneStepSupport: sharedService.getDoesBankSupportOneStep(),\n        defaultIban:\n            (defaultIban &&\n                defaultIban.account.iban &&\n                defaultIban.account.iban.iban) ||\n            '',\n        defaultBic:\n            (defaultIban &&\n                defaultIban.account.iban &&\n                defaultIban.account.iban.bic) ||\n            '',\n        selectedBankName,\n        selectedBank,\n        executionDate,\n        refId: tokenService.getRefId(),\n        banksBranchList: sharedService.getBanksBranchList() || {},\n        defaultBankId: tokenRequestService.getDefaultBankId() || '',\n        bulkTransfers: tokenService.getBulkTransfers(),\n        tokenRequestId,\n        description,\n        modifyPreSelectedBank,\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBank,\n    setBank,\n    setInstructionsSourceIban,\n    declineTerms,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(BulkTransferConsentBankFirstFlow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FaCheckCircle } from 'react-icons/fa';\n\nconst SuccessIcon = ({ className, title }) => (\n    <FaCheckCircle title={title} className={className} />\n);\n\nSuccessIcon.propTypes = {\n    className: PropTypes.string,\n    title: PropTypes.string,\n};\n\nexport default SuccessIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FaTimesCircle } from 'react-icons/fa';\n\nconst FailureIcon = ({ className, title }) => (\n    <FaTimesCircle title={title} className={className} />\n);\n\nFailureIcon.propTypes = {\n    className: PropTypes.string,\n    title: PropTypes.string,\n};\n\nexport default FailureIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { AiOutlineClockCircle } from 'react-icons/ai';\n\nconst PendingIcon = ({ className, title }) => (\n    <AiOutlineClockCircle title={title} className={className} />\n);\n\nPendingIcon.propTypes = {\n    className: PropTypes.string,\n    title: PropTypes.string,\n};\n\nexport default PendingIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport { FormattedMessage } from 'react-intl';\nimport {\n    unsuccessfulStatusCodes,\n    successfulStatusCodes,\n    submittedStatusCodes,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport SuccessIcon from '../Icons/SuccessIcon';\nimport FailureIcon from '../Icons/FailureIcon';\nimport ClockIcon from '../Icons/ClockIcon';\nimport style from './PaymentStatusTitle.css';\nimport classNames from 'classnames/bind';\nimport { connect } from 'reducers';\n\nconst cx = classNames.bind(style);\n\nconst Successful = ({ transferStatus }) => {\n    return (\n        <TokenTitle\n            className={cx({\n                'PaymentInitStatus-status--success': true,\n            })}>\n            <div>\n                <SuccessIcon\n                    title=\"success\"\n                    className={cx('PaymentInitStatus-status-icon')}\n                />\n            </div>\n            <b>\n                <FormattedMessage\n                    tagName={'span'}\n                    id={`pisp.paymentInitStatus.status_title.${transferStatus}`}\n                />\n            </b>\n        </TokenTitle>\n    );\n};\n\nSuccessful.propTypes = {\n    transferStatus: PropTypes.string,\n};\n\nconst Unsuccessful = ({ transferStatus }) => {\n    return (\n        <TokenTitle\n            className={cx({\n                'PaymentInitStatus-status--error': true,\n            })}>\n            <div>\n                <FailureIcon\n                    title=\"failure\"\n                    className={cx('PaymentInitStatus-status-icon')}\n                />\n            </div>\n            <b>\n                <FormattedMessage\n                    tagName={'span'}\n                    id={`pisp.paymentInitStatus.status_title.${transferStatus}`}\n                />\n            </b>\n        </TokenTitle>\n    );\n};\n\nUnsuccessful.propTypes = {\n    transferStatus: PropTypes.string,\n};\n\nconst Submitted = ({ transferStatus }) => {\n    return (\n        <TokenTitle\n            className={cx({\n                'PaymentInitStatus-status--submitted': true,\n            })}>\n            <div>\n                <ClockIcon\n                    title=\"submitted\"\n                    className={cx('PaymentInitStatus-status-icon')}\n                />\n            </div>\n            <b>\n                <FormattedMessage\n                    tagName={'span'}\n                    id={`pisp.paymentInitStatus.status_title.${transferStatus}`}\n                />\n            </b>\n        </TokenTitle>\n    );\n};\n\nSubmitted.propTypes = {\n    transferStatus: PropTypes.string,\n};\n\nconst PaymentStatusSubTitle = ({\n    transferStatus,\n    seconds,\n    pispName,\n    hidePSR44Timer,\n    removePSR44Timer,\n}) => {\n    const renderSubtitle = () => {\n        if (unsuccessfulStatusCodes.includes(transferStatus)) {\n            return (\n                <TokenTitle role=\"alert\" aria-live={'polite'} sub>\n                    <FormattedMessage\n                        id={`pisp.paymentInitStatus.status_message.${transferStatus}`}\n                        values={{\n                            MERCHANT_NAME: pispName,\n                        }}\n                    />\n                </TokenTitle>\n            );\n        }\n\n        return null;\n    };\n\n    const getSubtitleKey = () => {\n        if (hidePSR44Timer) {\n            return 'pisp.paymentInitStatus.subTitle.hidePSR44TimerMessage';\n        } else if (removePSR44Timer) {\n            return 'pisp.paymentInitStatus.subTitle.removePSR44TimerMessage';\n        } else if (unsuccessfulStatusCodes.includes(transferStatus)) {\n            return 'pisp.paymentInitStatus.subTitle.unSuccessfulMessage';\n        }\n\n        return `pisp.paymentInitStatus.status_message.${transferStatus}`;\n    };\n\n    if (\n        ![\n            ...successfulStatusCodes,\n            ...submittedStatusCodes,\n            ...unsuccessfulStatusCodes,\n        ].includes(transferStatus)\n    ) {\n        return <></>;\n    }\n\n    return (\n        <>\n            {renderSubtitle()}\n            {!removePSR44Timer && (\n                <TokenTitle sub>\n                    <b>\n                        <FormattedMessage\n                            id={'pisp.paymentInitStatus.doNotCloseMessage'}\n                        />\n                    </b>\n                </TokenTitle>\n            )}\n\n            <TokenTitle\n                role=\"alert\"\n                aria-live={seconds === 10 ? 'polite' : 'off'}\n                sub>\n                <FormattedMessage\n                    id={getSubtitleKey()}\n                    values={{\n                        MERCHANT_NAME: pispName,\n                        SECONDS: seconds,\n                    }}\n                />\n            </TokenTitle>\n        </>\n    );\n};\n\nPaymentStatusSubTitle.propTypes = {\n    transferStatus: PropTypes.string,\n    seconds: PropTypes.number,\n    pispName: PropTypes.string,\n    hidePSR44Timer: PropTypes.bool,\n    removePSR44Timer: PropTypes.bool,\n};\n\nconst PaymentStatusTitle = ({\n    transferStatus,\n    pispName,\n    seconds,\n    hidePSR44Timer,\n    removePSR44Timer,\n}) => {\n    const getTitleComponent = () => {\n        if (successfulStatusCodes.includes(transferStatus)) {\n            return <Successful transferStatus={transferStatus} />;\n        } else if (submittedStatusCodes.includes(transferStatus)) {\n            return <Submitted transferStatus={transferStatus} />;\n        } else if (unsuccessfulStatusCodes.includes(transferStatus)) {\n            return <Unsuccessful transferStatus={transferStatus} />;\n        }\n\n        return null;\n    };\n\n    return (\n        <TokenTitle className={cx({ 'PaymentInitStatus-title': true })}>\n            <FormattedMessage id={'pisp.paymentInitStatus.title'} />\n            <center>\n                {getTitleComponent()}\n                <PaymentStatusSubTitle\n                    transferStatus={transferStatus}\n                    seconds={seconds}\n                    pispName={pispName}\n                    hidePSR44Timer={hidePSR44Timer}\n                    removePSR44Timer={removePSR44Timer}\n                />\n            </center>\n        </TokenTitle>\n    );\n};\n\nPaymentStatusTitle.propTypes = {\n    transferStatus: PropTypes.string,\n    pispName: PropTypes.string,\n    seconds: PropTypes.number,\n    hidePSR44Timer: PropTypes.bool,\n    removePSR44Timer: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const actingAs = tokenRequestService.getTppActingAs();\n    const { payload } = tokenRequestService.getTppReturnData();\n    const tppName =\n        payload['tpp-name'] || tokenRequestService.getTppProfile()?.tppName;\n\n    return {\n        hidePSR44Timer: Boolean(\n            tokenRequestService.getTppFeature(featureConfig.HIDE_PSR44_TIMER),\n        ),\n        removePSR44Timer: Boolean(\n            tokenRequestService.getTppFeature(featureConfig.REMOVE_PSR44_TIMER),\n        ),\n        pispName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            'merchant',\n    };\n};\n\nexport default connect(mapStateToProps, null)(PaymentStatusTitle);\n","import React, { Fragment, Component } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './PaymentInitStatus.css';\nimport CopyIcon from 'components/App/Icons/CopyIcon.js';\nimport PaymentStatusTitle from './PaymentStatusTitle.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    formatCurrency,\n    getCurrentDateTimeString,\n    formatDate,\n    filterDestinationAccount,\n    copyOnClipboard,\n    getInternalTransferStatus,\n} from 'util/index';\nimport {\n    defaultAppName,\n    successfulStatusCodes,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport { goToTpp } from 'actions/shared';\n\nconst cx = classNames.bind(style);\n\nclass PaymentInitStatus extends Component {\n    constructor(props) {\n        super(props);\n        this.state = { seconds: props.hidePSR44Timer ? 20 : 10 };\n    }\n\n    async componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n\n        if (!this.props.removePSR44Timer) {\n            this.intervalId = setInterval(this.countdown, 1000);\n        }\n    }\n\n    countdown = () => {\n        const timeoutFunc = this.props.goToTpp;\n        const { seconds } = this.state;\n        if (seconds < 1) {\n            clearInterval(this.intervalId);\n            timeoutFunc();\n        } else {\n            this.setState({\n                seconds: seconds - 1,\n            });\n        }\n    };\n\n    render() {\n        const {\n            goToTpp,\n            total,\n            destinations,\n            refId,\n            transferStatus,\n            dateTime,\n            pispName,\n            pispAlias,\n            selectedBankName,\n            transferId,\n            hidePSR44Timer,\n            removePSR44Timer,\n        } = this.props;\n        const { seconds } = this.state;\n        const destinationAccount = filterDestinationAccount(destinations[0]);\n        const statusCode = getInternalTransferStatus(transferStatus);\n\n        const transferStatusMessage = this.props.intl.formatMessage(\n            {\n                id: `pisp.paymentInitStatus.status_code.${statusCode}`,\n                defaultMessage: '',\n            },\n            {\n                MERCHANT_NAME: pispName,\n            },\n        );\n\n        const continueToMerchant =\n            hidePSR44Timer || removePSR44Timer || seconds === 0;\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Pisp-PaymentInitStatus-subcontainer')}\n                    noMargin>\n                    <div\n                        className={cx({\n                            'TokenContainer-margin': true,\n                            'PaymentInitStatus-margin': true,\n                        })}>\n                        <PaymentStatusTitle\n                            transferStatus={transferStatus}\n                            seconds={seconds}\n                        />\n                    </div>\n                    <div className={cx('PaymentInitStatus-data')}>\n                        <TokenTitle sub>\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.paymentInitStatus.amount'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('Colored-Text')}>\n                                        {total}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={\n                                            'pisp.paymentInitStatus.beneficiary'\n                                        }\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    {pispName ? (\n                                        <strong>{pispName}</strong>\n                                    ) : (\n                                        <strong>{pispAlias}</strong>\n                                    )}\n                                </div>\n                            </div>\n                            {Object.keys(destinationAccount).map(key => {\n                                return (\n                                    <div\n                                        key={key}\n                                        className={cx(\n                                            'PaymentInitStatus-data-row',\n                                        )}>\n                                        <div\n                                            className={cx(\n                                                'PaymentInitStatus-data-row-title',\n                                            )}>\n                                            <FormattedMessage\n                                                tagName={'span'}\n                                                id={`pisp.paymentInitStatus.destination.${key}`}\n                                            />\n                                        </div>\n                                        <div\n                                            className={cx(\n                                                'PaymentInitStatus-data-row-detail',\n                                            )}>\n                                            <span>\n                                                <strong>\n                                                    {destinationAccount[key]}\n                                                </strong>\n                                            </span>\n                                        </div>\n                                    </div>\n                                );\n                            })}\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.paymentInitStatus.bankName'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span\n                                        className={cx(\n                                            'PaymentInitStatus-BankName',\n                                        )}>\n                                        <strong>{selectedBankName}</strong>\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.paymentInitStatus.status'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-TransferStatus',\n                                    )}>\n                                    <span\n                                        className={cx(\n                                            'Colored-Text TransferStatus',\n                                        )}>\n                                        {successfulStatusCodes.includes(\n                                            transferStatus,\n                                        ) ? (\n                                                <FormattedMessage\n                                                    tagName={'span'}\n                                                    id={`pisp.paymentInitStatus.status_title.${transferStatus}`}\n                                                />\n                                            ) : transferStatusMessage ? (\n                                                [transferStatusMessage]\n                                            ) : (\n                                                <FormattedMessage\n                                                    id={\n                                                        'pisp.paymentInitStatus.status_code.BANK_ERROR'\n                                                    }\n                                                    values={{\n                                                        MERCHANT_NAME: pispName,\n                                                    }}\n                                                />\n                                            )}\n                                    </span>\n                                </div>\n                            </div>\n                            {transferId ? (\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row',\n                                    )}>\n                                    <div\n                                        style={{\n                                            width: 'max-content !important',\n                                        }}\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-title',\n                                        )}>\n                                        <span\n                                            style={{\n                                                width: 'max-content',\n                                            }}>\n                                            <FormattedMessage\n                                                tagName={'span'}\n                                                id={\n                                                    'pisp.paymentInitStatus.transferId'\n                                                }\n                                            />\n                                        </span>\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-detail',\n                                        )}>\n                                        <span className={cx('TransferID')}>\n                                            <strong id=\"refId\">\n                                                {transferId}{' '}\n                                            </strong>\n                                            <CopyIcon\n                                                className={cx(\n                                                    'PaymentInitStatus-CopyTransferId',\n                                                )}\n                                                ariaLabel={this.props.intl.formatMessage(\n                                                    {\n                                                        id:\n                                                            'pisp.paymentInitStatus.copyTransferId',\n                                                    },\n                                                )}\n                                                onKeyPress={() =>\n                                                    copyOnClipboard(transferId)\n                                                }\n                                                onClick={() =>\n                                                    copyOnClipboard(transferId)\n                                                }\n                                            />\n                                        </span>\n                                    </div>\n                                </div>\n                            ) : null}\n                            {dateTime ? (\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row',\n                                    )}>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'pisp.paymentInitStatus.date'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {dateTime}\n                                        </span>\n                                    </div>\n                                </div>\n                            ) : null}\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'pisp.paymentInitStatus.refId'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId} </strong>\n                                        <CopyIcon\n                                            className={cx(\n                                                'PaymentInitStatus-CopyRefId',\n                                            )}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                        </TokenTitle>\n                    </div>\n                </TokenContainer>\n\n                <TokenButtonsWrapper>\n                    <Button\n                        type=\"primary\"\n                        text={\n                            continueToMerchant\n                                ? this.props.intl.formatMessage(\n                                    {\n                                        id:\n                                              'common.button.continueToMerchant',\n                                    },\n                                    { MERCHANT_NAME: pispName },\n                                )\n                                : this.props.intl.formatMessage(\n                                    {\n                                        id:\n                                              'common.button.returningInSeconds',\n                                    },\n                                    { SECONDS: seconds },\n                                )\n                        }\n                        onClick={goToTpp}\n                    />\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nPaymentInitStatus.propTypes = {\n    total: PropTypes.string.isRequired,\n    goToTpp: PropTypes.func,\n    destinations: PropTypes.array,\n    intl: intlShape.isRequired,\n    refId: PropTypes.string.isRequired,\n    dateTime: PropTypes.string.isRequired,\n    transferStatus: PropTypes.string.isRequired,\n    pispName: PropTypes.string,\n    pispAlias: PropTypes.string.isRequired,\n    selectedBankName: PropTypes.string,\n    transferId: PropTypes.string,\n    setDisplayFooterShadow: PropTypes.func,\n    hidePSR44Timer: PropTypes.bool,\n    removePSR44Timer: PropTypes.bool,\n};\n\nconst mapStateToProps = (\n    { tokenService, tokenRequestService, sharedService },\n    ownProps,\n) => {\n    const total = formatCurrency(\n        tokenService.getAmount(),\n        tokenService.getCurrency(),\n        ownProps.intl.formatNumber,\n    );\n    const { payload } = tokenRequestService.getTppReturnData();\n    const dateTime =\n        formatDate(tokenService.getExecutionDate()) ??\n        getCurrentDateTimeString();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const tppName =\n        payload['tpp-name'] || tokenRequestService.getTppProfile()?.tppName;\n    const actingAs = tokenRequestService.getTppActingAs();\n    const selectedBankName =\n        payload['bank-name'] || sharedService?.getSelectedBankName();\n    return {\n        total,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n            defaultAppName,\n        hidePSR44Timer: Boolean(\n            tokenRequestService.getTppFeature(featureConfig.HIDE_PSR44_TIMER),\n        ),\n        removePSR44Timer: Boolean(\n            tokenRequestService.getTppFeature(featureConfig.REMOVE_PSR44_TIMER),\n        ),\n        pispName: actingAs?.displayName || tppName || actingAs?.secondaryName,\n        pispAlias: actingAs?.secondaryName || tppAlias?.value,\n        selectedBankName,\n        destinations: tokenService.getDestinations(),\n        refId: tokenService.getRefId(),\n        dateTime,\n        transferStatus: payload['transfer-status'],\n        transferId: payload['transfer-id'],\n    };\n};\n\nconst mapDispatchToProps = {\n    goToTpp,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PaymentInitStatus);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport {\n    LOADING_STEP,\n    APP_APPROVAL,\n    SPLASH_STEP,\n    PISP_ENTER_ALIAS,\n    PISP_APP_INSTALL,\n    PISP_CAPTURE_CREDENTIALS,\n    PISP_TRANSFER_OVERVIEW,\n    PISP_CONSENT_BANK_FIRST,\n    PISP_SELECT_BANK_BANK_FIRST,\n    PISP_STANDING_ORDER_CONSENT_BANK_FIRST,\n    PISP_BULK_TRANSFER_CONSENT_BANK_FIRST,\n    PISP_PAYMENT_INIT_STATUS,\n} from 'config/constants';\nimport PispAliasInput from 'components/App/Pisp/PispAliasInput';\nimport PispTransferOverview from 'components/App/Pisp/PispTransferOverview';\nimport PispAppNotifier from 'components/App/Pisp/PispAppNotifier';\nimport PispAppInstall from 'components/App/Pisp/PispAppInstall';\nimport Loading from 'components/App/Shared/Loading';\nimport SplashScreen from 'components/App/Shared/SplashScreen';\nimport Background from 'components/App/Background';\nimport ConsentBankFirstFlow from './ConsentBankFirstFlow';\nimport PispBankSelectorFirst from './PispBankSelectorFirst';\nimport CaptureCredentials from 'components/App/Shared/CaptureCredentials';\nimport StandingOrderConsentBankFirstFlow from './StandingOrderConsentBankFirstFlow';\nimport BulkTransferConsentBankFirstFlow from './BulkTransferConsentBankFirstFlow';\nimport PaymentInitStatus from './PaymentInitStatus';\n\nclass Pisp extends Component {\n    constructor(props) {\n        super(props);\n    }\n    static getStepComponent(currentStep) {\n        const steps = {\n            [PISP_ENTER_ALIAS]: <PispAliasInput />,\n            [PISP_TRANSFER_OVERVIEW]: <PispTransferOverview />,\n            [APP_APPROVAL]: <PispAppNotifier />,\n            [PISP_APP_INSTALL]: <PispAppInstall />,\n            [PISP_BULK_TRANSFER_CONSENT_BANK_FIRST]: (\n                <BulkTransferConsentBankFirstFlow />\n            ),\n            [PISP_SELECT_BANK_BANK_FIRST]: <PispBankSelectorFirst />,\n            [PISP_CONSENT_BANK_FIRST]: <ConsentBankFirstFlow />,\n            [PISP_STANDING_ORDER_CONSENT_BANK_FIRST]: (\n                <StandingOrderConsentBankFirstFlow />\n            ),\n            [PISP_CAPTURE_CREDENTIALS]: <CaptureCredentials />,\n            [PISP_PAYMENT_INIT_STATUS]: <PaymentInitStatus />,\n        };\n        return steps[currentStep];\n    }\n\n    static getStepComponentWithoutBackground(currentStep) {\n        const stepsWithoutBackground = {\n            [LOADING_STEP]: <Loading />,\n            [SPLASH_STEP]: <SplashScreen />,\n        };\n        return stepsWithoutBackground[currentStep];\n    }\n\n    render() {\n        if (\n            this.props.previousStep === SPLASH_STEP &&\n            !this.props.fadeOutProp\n        ) {\n            return <SplashScreen stepToSet={this.props.currentStep} />;\n        }\n\n        const { currentStep } = this.props;\n        const component = Pisp.getStepComponent(currentStep) ? (\n            <Background> {Pisp.getStepComponent(currentStep)} </Background>\n        ) : (\n            Pisp.getStepComponentWithoutBackground(currentStep)\n        );\n\n        return <>{component}</>;\n    }\n}\n\nPisp.propTypes = {\n    currentStep: PropTypes.string.isRequired,\n    previousStep: PropTypes.string,\n    fadeOutProp: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    currentStep: sharedService.getCurrentStep(),\n    previousStep: sharedService.getPreviousStep(),\n    fadeOutProp: sharedService.getFadeOutProp(),\n});\n\nexport default connect(mapStateToProps)(Pisp);\n","import React, { Component, Fragment, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport style from './Consent.css';\nimport CopyIcon from '../Icons/CopyIcon.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport ChangeButton from '../Pisp/Button.js';\nimport {\n    backToBankSelector,\n    proceedToBankForVrp,\n    declineTerms,\n} from 'actions/vrp';\nimport { setBank } from 'actions/shared';\nimport {\n    copyOnClipboard,\n    hideConsentText,\n    formatCurrency,\n    convertToReadableDate,\n    sanitizeHTML,\n} from 'util/index';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TermsLoader from '../Terms/TermsLoader';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    CUSTOM_TPP_FEATURES as featureConfig,\n    DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n    defaultAppName,\n} from 'config/constants';\nimport HrefToPopup from '../Shared/HrefToPopup.js';\n\nconst cx = classNames.bind(style);\n\nclass VrpConsentBankFirstFlow extends Component {\n    constructor(props) {\n        super(props);\n        this.contentRef = createRef();\n        this.consentTextRef = createRef();\n    }\n\n    displayUserInfo(userInfo, userType) {\n        const bankIbanOrAccNo = this.props.isFasterPayment\n            ? userInfo?.accountNumber\n            : userInfo?.iban;\n        const bankBicOrSc = this.props.isFasterPayment\n            ? userInfo?.sortCode\n            : userInfo?.bic;\n        return (\n            <>\n                {userInfo?.name && (\n                    <div className={cx('Consent-data-row')}>\n                        <div className={cx('Consent-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={`vrp.consent.${userType}.legalName`}\n                            />\n                        </div>\n                        <div className={cx('Consent-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {userInfo.name}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n                {bankIbanOrAccNo && (\n                    <div className={cx('Consent-data-row')}>\n                        <div className={cx('Consent-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={\n                                    this.props.isFasterPayment\n                                        ? `vrp.consent.${userType}.accountNumber`\n                                        : `vrp.consent.${userType}.iban`\n                                }\n                            />\n                        </div>\n                        <div className={cx('Consent-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {bankIbanOrAccNo}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n                {bankBicOrSc && (\n                    <div className={cx('Consent-data-row')}>\n                        <div className={cx('Consent-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={\n                                    this.props.isFasterPayment\n                                        ? `vrp.consent.${userType}.sortCode`\n                                        : `vrp.consent.${userType}.bic`\n                                }\n                            />\n                        </div>\n                        <div className={cx('Consent-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {bankBicOrSc}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n            </>\n        );\n    }\n\n    render() {\n        const {\n            declineTerms,\n            pispName,\n            pispAlias,\n            maxAmountPerPayment,\n            businessName,\n            backToBankSelector,\n            refId,\n            defaultBankId,\n            description,\n            modifyPreSelectedBank,\n            proceedToBankForVrp,\n            periodicLimits,\n            debtorInfo,\n            creditorInfo,\n            selectedBankName,\n            creditorBankName,\n            expiration,\n        } = this.props;\n        const expireDate = new Date();\n        expireDate.setDate(\n            expireDate.getDate() + DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n        );\n\n        const messageVariableValues = {\n            BUSINESS_NAME: `<strong>${businessName}</strong>`,\n            DISPLAY_NAME: pispName ? pispName : pispAlias,\n            EXPIRATION_DATE: `<strong>${convertToReadableDate(\n                expireDate,\n            )}</strong>`,\n        };\n\n        const consentText = this.props.intl.formatMessage(\n            {\n                id: 'vrp.consent.text',\n                defaultMessage: ' ',\n            },\n            messageVariableValues,\n        );\n\n        const hideConsentTextBlock = hideConsentText(consentText);\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Pisp-Consent-subcontainer')}\n                    innerRef={this.contentRef}\n                    noMargin>\n                    <div className=\"TokenContainer-margin\">\n                        <TokenTitle>\n                            <FormattedMessage id={'vrp.consent.title'} />\n                        </TokenTitle>\n                        <TokenTitle sub>\n                            <FormattedMessage\n                                id={'vrp.consent.subtitle1'}\n                                tagName={'p'}\n                            />\n                        </TokenTitle>\n                    </div>\n                    <div className={cx('Consent-data')}>\n                        <TokenTitle sub>\n                            {periodicLimits &&\n                                periodicLimits.map((periodicLimit, index) => (\n                                    <div\n                                        key={index}\n                                        className={cx('Consent-data-row')}>\n                                        <div\n                                            className={cx(\n                                                'Consent-data-row-title',\n                                            )}>\n                                            <FormattedMessage\n                                                tagName={'span'}\n                                                id={'vrp.consent.maxAmountPer'}\n                                                values={{\n                                                    PERIOD_TYPE:\n                                                        periodicLimit.periodType,\n                                                }}\n                                            />\n                                        </div>\n                                        <div\n                                            className={cx(\n                                                'Consent-data-row-detail',\n                                            )}>\n                                            <span\n                                                className={cx('Colored-Text')}>\n                                                {periodicLimit.maximumAmount}\n                                            </span>\n                                        </div>\n                                    </div>\n                                ))}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.maxAmountPerPayment'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Colored-Text')}>\n                                        {maxAmountPerPayment}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.refId'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId} </strong>\n                                        <CopyIcon\n                                            className={cx('Consent-CopyRefId')}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id: 'vrp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            {description && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'vrp.consent.description'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Description')}>\n                                            {description}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                            {creditorBankName && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'vrp.consent.payee.bankName'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Colored-Text')}>\n                                            {creditorBankName}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                            {this.displayUserInfo(creditorInfo, 'payee')}\n                            <div className={cx('Consent-data-row')}>\n                                <div className={cx('Consent-data-row-title')}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.payer.bankName'}\n                                    />\n                                </div>\n                                <div className={cx('Consent-data-row-detail')}>\n                                    <span className={cx('Consent-BankName')}>\n                                        <strong>{selectedBankName}</strong>\n                                    </span>\n                                    {(defaultBankId === '' ||\n                                        modifyPreSelectedBank) && (\n                                        <ChangeButton\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.ariaLabel',\n                                                },\n                                            )}\n                                            onClick={() => backToBankSelector()}\n                                            className={cx('ChangeBank')}\n                                            text={this.props.intl.formatMessage(\n                                                {\n                                                    id:\n                                                        'pisp.consent.changeBank.label',\n                                                },\n                                            )}\n                                        />\n                                    )}\n                                </div>\n                            </div>\n                            {debtorInfo &&\n                                this.displayUserInfo(debtorInfo, 'payer')}\n                            {expiration && (\n                                <div className={cx('Consent-data-row')}>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'vrp.consent.expiration'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'Consent-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {expiration}\n                                        </span>\n                                    </div>\n                                </div>\n                            )}\n                        </TokenTitle>\n                    </div>\n                    {!hideConsentTextBlock && (\n                        <HrefToPopup\n                            contentRef={this.consentTextRef}\n                            fallbackToOverlay>\n                            <div\n                                className={cx({\n                                    'Consent-details': true,\n                                })}\n                                ref={this.consentTextRef}\n                                dangerouslySetInnerHTML={{\n                                    __html: sanitizeHTML(consentText),\n                                }}\n                            />\n                        </HrefToPopup>\n                    )}\n                    <TermsLoader />\n                </TokenContainer>\n\n                <TokenButtonsWrapper>\n                    <Button\n                        status={Button.STATUS_IDLE}\n                        onClick={proceedToBankForVrp}\n                        scrollRef={this.contentRef}\n                        text={<FormattedMessage id={'common.button.accept'} />}\n                    />\n                    {defaultBankId !== '' || modifyPreSelectedBank ? (\n                        <Button\n                            type={Button.TYPE_GHOST_WARNING}\n                            onClick={declineTerms}\n                            text={\n                                <FormattedMessage\n                                    id={'common.button.decline'}\n                                />\n                            }\n                        />\n                    ) : (\n                        <Button\n                            type={Button.TYPE_GHOST}\n                            onClick={backToBankSelector}\n                            status={Button.STATUS_IDLE}\n                            text={\n                                <FormattedMessage id={'common.button.back'} />\n                            }\n                        />\n                    )}\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nVrpConsentBankFirstFlow.propTypes = {\n    declineTerms: PropTypes.func.isRequired,\n    pispName: PropTypes.string.isRequired,\n    pispAlias: PropTypes.string.isRequired,\n    maxAmountPerPayment: PropTypes.string,\n    intl: intlShape.isRequired,\n    businessName: PropTypes.string.isRequired,\n    backToBankSelector: PropTypes.func.isRequired,\n    proceedToBankForVrp: PropTypes.func.isRequired,\n    selectedBank: PropTypes.object,\n    refId: PropTypes.string.isRequired,\n    setBank: PropTypes.func,\n    defaultBankId: PropTypes.string,\n    vrpRequestId: PropTypes.string.isRequired,\n    description: PropTypes.string,\n    modifyPreSelectedBank: PropTypes.bool,\n    setDisplayFooterShadow: PropTypes.func,\n    periodicLimits: PropTypes.array,\n    isFasterPayment: PropTypes.bool,\n    creditorInfo: PropTypes.object,\n    debtorInfo: PropTypes.object,\n    selectedBankName: PropTypes.string,\n    creditorBankName: PropTypes.string,\n    expiration: PropTypes.string,\n};\n\nconst mapStateToProps = (\n    { tokenRequestService, sharedService, vrpService },\n    ownProps,\n) => {\n    const currency = vrpService.getVrpCurrency();\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const vrpRequestId = vrpService.getVrpRequestId();\n    const maxAmountPerPayment = formatCurrency(\n        vrpService.getMaxIndividualAmount(),\n        currency,\n        ownProps.intl.formatNumber,\n    );\n    const selectedBank = sharedService.getSelectedBank();\n    const defaultBankId = tokenRequestService.getDefaultBankId() || '';\n    const description = vrpService.getDescription();\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    const periodicLimits = vrpService\n        .getPeriodicLimits()\n        .map(periodicLimit => {\n            return {\n                ...periodicLimit,\n                maximumAmount: formatCurrency(\n                    periodicLimit.maximumAmount,\n                    currency,\n                    ownProps.intl.formatNumber,\n                ),\n            };\n        });\n    return {\n        pispName: tppName,\n        pispAlias: tppAlias?.value,\n        businessName:\n            tokenRequestService.getTppFeature(featureConfig.PIS_APP_NAME) ||\n            defaultAppName,\n        selectedBankName: sharedService.getSelectedBankName(),\n        selectedBank,\n        refId: vrpService.getVrpRefId(),\n        defaultBankId,\n        vrpRequestId,\n        description,\n        modifyPreSelectedBank,\n        maxAmountPerPayment,\n        periodicLimits,\n        isFasterPayment: vrpService.getLocalInstrument() === 'FASTER_PAYMENTS',\n        creditorInfo: vrpService.getCreditorInfo(),\n        debtorInfo: vrpService.getDebtorInfo(),\n        creditorBankName: vrpService.getCreditorBankName(),\n        expiration: vrpService.getExpirationDate(),\n    };\n};\n\nconst mapDispatchToProps = {\n    backToBankSelector,\n    proceedToBankForVrp,\n    setBank,\n    declineTerms,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(VrpConsentBankFirstFlow);\n","import React from 'react';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport { setBankAndProceedToConsent, backToBankSelector } from 'actions/vrp';\nimport BankSelectorFirst from '../Shared/BankSelectorFirst';\n\n// Higher order component BankSelector for AISP\nconst VrpBankSelectorFirst = props => <BankSelectorFirst {...props} />;\n\nVrpBankSelectorFirst.propTypes = {\n    setBankAndProceedToConsent: PropTypes.func,\n    backToBankSelector: PropTypes.func,\n};\n\nconst mapDispatchToProps = {\n    setBankAndProceedToConsent,\n    backToBankSelector,\n};\n\nexport default connect(null, mapDispatchToProps)(VrpBankSelectorFirst);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport { FormattedMessage } from 'react-intl';\nimport {\n    unsuccessfulVrpStatusCodes,\n    successfulVrpStatusCodes,\n    pendingVrpStatusCodes,\n} from 'config/constants';\nimport SuccessIcon from '../Icons/SuccessIcon';\nimport FailureIcon from '../Icons/FailureIcon';\nimport ClockIcon from '../Icons/ClockIcon';\nimport style from '../Pisp/PaymentStatusTitle.css';\nimport classNames from 'classnames/bind';\nimport { connect } from 'reducers';\n\nconst cx = classNames.bind(style);\n\nconst Successful = ({ vrpConsentStatus, seconds, pispName }) => {\n    return (\n        <center>\n            <TokenTitle\n                className={cx({\n                    'PaymentInitStatus-status--success': true,\n                })}>\n                <div>\n                    <SuccessIcon\n                        title=\"success\"\n                        className={cx('PaymentInitStatus-status-icon')}\n                    />\n                </div>\n                <b className=\"Vrp-init-status-title\">\n                    <FormattedMessage\n                        tagName={'span'}\n                        className=\"Vrp-init-status-title\"\n                        id={`vrp.initStatus.status_title.${vrpConsentStatus}`}\n                    />\n                </b>\n            </TokenTitle>\n            <TokenTitle sub>\n                <b>\n                    <FormattedMessage id={'vrp.initStatus.doNotCloseMessage'} />\n                </b>\n            </TokenTitle>\n            <TokenTitle\n                role=\"alert\"\n                aria-live={seconds === 10 ? 'polite' : 'off'}\n                sub>\n                <FormattedMessage\n                    id={`vrp.initStatus.status_message.${vrpConsentStatus}`}\n                    values={{\n                        MERCHANT_NAME: pispName,\n                        SECONDS: seconds,\n                    }}\n                />\n            </TokenTitle>\n        </center>\n    );\n};\n\nSuccessful.propTypes = {\n    vrpConsentStatus: PropTypes.string,\n    seconds: PropTypes.number,\n    pispName: PropTypes.string,\n};\n\nconst Unsuccessful = ({ vrpConsentStatus, seconds, pispName }) => {\n    return (\n        <center>\n            <TokenTitle\n                className={cx({\n                    'PaymentInitStatus-status--error': true,\n                })}>\n                <div>\n                    <FailureIcon\n                        title=\"failure\"\n                        className={cx('PaymentInitStatus-status-icon')}\n                    />\n                </div>\n                <b className=\"Vrp-init-status-title\">\n                    <FormattedMessage\n                        tagName={'span'}\n                        className=\"Vrp-init-status-title\"\n                        id={`vrp.initStatus.status_title.${vrpConsentStatus}`}\n                    />\n                </b>\n            </TokenTitle>\n            <TokenTitle role=\"alert\" aria-live={'polite'} sub>\n                <FormattedMessage\n                    id={`vrp.initStatus.status_message.${vrpConsentStatus}`}\n                    values={{\n                        MERCHANT_NAME: pispName,\n                    }}\n                />\n                <TokenTitle sub>\n                    <b>\n                        <FormattedMessage\n                            id={'vrp.initStatus.doNotCloseMessage'}\n                        />\n                    </b>\n                </TokenTitle>\n                <TokenTitle\n                    role=\"alert\"\n                    aria-live={seconds === 10 ? 'polite' : 'off'}\n                    sub>\n                    <FormattedMessage\n                        id={'vrp.initStatus.subTitle'}\n                        values={{\n                            MERCHANT_NAME: pispName,\n                            SECONDS: seconds,\n                        }}\n                    />\n                </TokenTitle>\n            </TokenTitle>\n        </center>\n    );\n};\n\nUnsuccessful.propTypes = {\n    vrpConsentStatus: PropTypes.string,\n    seconds: PropTypes.number,\n    pispName: PropTypes.string,\n};\n\nconst Submitted = ({ vrpConsentStatus, seconds, pispName }) => {\n    return (\n        <center>\n            <TokenTitle\n                className={cx({\n                    'PaymentInitStatus-status--submitted': true,\n                })}>\n                <div>\n                    <ClockIcon\n                        title=\"submitted\"\n                        className={cx('PaymentInitStatus-status-icon')}\n                    />\n                </div>\n                <b className=\"Vrp-init-status-title\">\n                    <FormattedMessage\n                        tagName={'span'}\n                        className=\"Vrp-init-status-title\"\n                        id={`vrp.initStatus.status_title.${vrpConsentStatus}`}\n                    />\n                </b>\n            </TokenTitle>\n            <TokenTitle sub>\n                <b>\n                    <FormattedMessage id={'vrp.initStatus.doNotCloseMessage'} />\n                </b>\n            </TokenTitle>\n            <TokenTitle\n                role=\"alert\"\n                aria-live={seconds === 10 ? 'polite' : 'off'}\n                sub>\n                <FormattedMessage\n                    id={`vrp.initStatus.status_message.${vrpConsentStatus}`}\n                    values={{\n                        MERCHANT_NAME: pispName,\n                        SECONDS: seconds,\n                    }}\n                />\n            </TokenTitle>\n        </center>\n    );\n};\n\nSubmitted.propTypes = {\n    vrpConsentStatus: PropTypes.string,\n    seconds: PropTypes.number,\n    pispName: PropTypes.string,\n};\n\nconst VrpConsentInitStatusSubTitle = ({\n    vrpConsentStatus,\n    seconds,\n    pispName,\n}) => {\n    if (successfulVrpStatusCodes.includes(vrpConsentStatus)) {\n        return (\n            <Successful\n                vrpConsentStatus={vrpConsentStatus}\n                seconds={seconds}\n                pispName={pispName}\n            />\n        );\n    } else if (pendingVrpStatusCodes.includes(vrpConsentStatus)) {\n        return (\n            <Submitted\n                vrpConsentStatus={vrpConsentStatus}\n                seconds={seconds}\n                pispName={pispName}\n            />\n        );\n    } else if (unsuccessfulVrpStatusCodes.includes(vrpConsentStatus)) {\n        return (\n            <Unsuccessful\n                vrpConsentStatus={vrpConsentStatus}\n                seconds={seconds}\n                pispName={pispName}\n            />\n        );\n    }\n    return <></>;\n};\n\nVrpConsentInitStatusSubTitle.propTypes = {\n    vrpConsentStatus: PropTypes.string,\n    seconds: PropTypes.number,\n    pispName: PropTypes.string,\n};\n\nconst VrpConsentInitStatusTitle = ({ vrpConsentStatus, pispName, seconds }) => {\n    return (\n        <TokenTitle className={cx({ 'PaymentInitStatus-title': true })}>\n            <FormattedMessage id={'vrp.initStatus.title'} />\n            <VrpConsentInitStatusSubTitle\n                vrpConsentStatus={vrpConsentStatus}\n                seconds={seconds}\n                pispName={pispName}\n            />\n        </TokenTitle>\n    );\n};\n\nVrpConsentInitStatusTitle.propTypes = {\n    vrpConsentStatus: PropTypes.string,\n    pispName: PropTypes.string,\n    seconds: PropTypes.number,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n\n    return {\n        pispName: tppName || tppAlias || 'merchant',\n    };\n};\n\nexport default connect(mapStateToProps, null)(VrpConsentInitStatusTitle);\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport style from '../Pisp/PaymentInitStatus.css';\nimport CopyIcon from '../Icons/CopyIcon.js';\nimport { connect } from 'reducers';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport VrpConsentInitStatusTitle from './VrpConsentInitStatusTitle.js';\nimport { goToTpp } from 'actions/shared';\nimport { copyOnClipboard, formatCurrency } from 'util/index';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport {\n    CUSTOM_TPP_FEATURES as featureConfig,\n    DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n} from 'config/constants';\n\nconst cx = classNames.bind(style);\n\nclass VrpConsentInitStatus extends Component {\n    constructor(props) {\n        super(props);\n        this.state = { seconds: 10 };\n    }\n    async componentDidMount() {\n        this.props.setDisplayFooterShadow(false);\n        this.intervalId = setInterval(this.countdown, 1000);\n    }\n\n    countdown = () => {\n        const timeoutFunc = this.props.goToTpp;\n        const { seconds } = this.state;\n        if (seconds < 1) {\n            clearInterval(this.intervalId);\n            timeoutFunc();\n        } else {\n            this.setState({\n                seconds: seconds - 1,\n            });\n        }\n    };\n\n    displayUserInfo(userInfo, userType) {\n        const bankIbanOrAccNo = this.props.isFasterPayment\n            ? userInfo?.accountNumber\n            : userInfo?.iban;\n        const bankBicOrSc = this.props.isFasterPayment\n            ? userInfo?.sortCode\n            : userInfo?.bic;\n        return (\n            <>\n                {userInfo?.name && (\n                    <div className={cx('PaymentInitStatus-data-row')}>\n                        <div className={cx('PaymentInitStatus-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={`vrp.consent.${userType}.legalName`}\n                            />\n                        </div>\n                        <div\n                            className={cx('PaymentInitStatus-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {userInfo.name}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n                {bankIbanOrAccNo && (\n                    <div className={cx('PaymentInitStatus-data-row')}>\n                        <div className={cx('PaymentInitStatus-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={\n                                    this.props.isFasterPayment\n                                        ? `vrp.consent.${userType}.accountNumber`\n                                        : `vrp.consent.${userType}.iban`\n                                }\n                            />\n                        </div>\n                        <div\n                            className={cx('PaymentInitStatus-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {bankIbanOrAccNo}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n                {bankBicOrSc && (\n                    <div className={cx('PaymentInitStatus-data-row')}>\n                        <div className={cx('PaymentInitStatus-data-row-title')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={\n                                    this.props.isFasterPayment\n                                        ? `vrp.consent.${userType}.sortCode`\n                                        : `vrp.consent.${userType}.bic`\n                                }\n                            />\n                        </div>\n                        <div\n                            className={cx('PaymentInitStatus-data-row-detail')}>\n                            <strong className={cx('Colored-Text')}>\n                                {bankBicOrSc}\n                            </strong>\n                        </div>\n                    </div>\n                )}\n            </>\n        );\n    }\n\n    render() {\n        const {\n            pispName,\n            pispAlias,\n            maxAmountPerPayment,\n            refId,\n            description,\n            periodicLimits,\n            debtorInfo,\n            creditorInfo,\n            selectedBankName,\n            creditorBankName,\n            expiration,\n            initStatus,\n            goToTpp,\n        } = this.props;\n        const { seconds } = this.state;\n        const expireDate = new Date();\n        expireDate.setDate(\n            expireDate.getDate() + DEFAULT_ACCESS_TOKEN_EXPIRATION_DAYS,\n        );\n\n        return (\n            <Fragment>\n                <TokenContainer\n                    className={cx('Vrp-PaymentInitStatus-subcontainer')}\n                    noMargin>\n                    <div\n                        className={cx({\n                            'TokenContainer-margin': true,\n                            'PaymentInitStatus-margin': true,\n                        })}>\n                        <VrpConsentInitStatusTitle\n                            vrpConsentStatus={initStatus}\n                            seconds={seconds}\n                        />\n                    </div>\n                    <div className={cx('PaymentInitStatus-data')}>\n                        <TokenTitle sub>\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.initStatus.status'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('Vrp-status')}>\n                                        <strong>{initStatus}</strong>\n                                    </span>\n                                </div>\n                            </div>\n                            {periodicLimits &&\n                                periodicLimits.map((periodicLimit, index) => (\n                                    <div\n                                        key={index}\n                                        className={cx(\n                                            'PaymentInitStatus-data-row',\n                                        )}>\n                                        <div\n                                            className={cx(\n                                                'PaymentInitStatus-data-row-title',\n                                            )}>\n                                            <FormattedMessage\n                                                tagName={'span'}\n                                                id={'vrp.consent.maxAmountPer'}\n                                                values={{\n                                                    PERIOD_TYPE:\n                                                        periodicLimit.periodType,\n                                                }}\n                                            />\n                                        </div>\n                                        <div\n                                            className={cx(\n                                                'PaymentInitStatus-data-row-detail',\n                                            )}>\n                                            <span\n                                                className={cx('Colored-Text')}>\n                                                {periodicLimit.maximumAmount}\n                                            </span>\n                                        </div>\n                                    </div>\n                                ))}\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.maxAmountPerPayment'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('Colored-Text')}>\n                                        {maxAmountPerPayment}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.refId'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('RefID')}>\n                                        <strong id=\"refId\">{refId} </strong>\n                                        <CopyIcon\n                                            className={cx('Consent-CopyRefId')}\n                                            ariaLabel={this.props.intl.formatMessage(\n                                                {\n                                                    id: 'vrp.consent.copyRefId',\n                                                },\n                                            )}\n                                            onKeyPress={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                            onClick={() =>\n                                                copyOnClipboard(refId)\n                                            }\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            {description && (\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row',\n                                    )}>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'vrp.consent.description'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-detail',\n                                        )}>\n                                        <strong className={cx('Description')}>\n                                            {description}\n                                        </strong>\n                                    </div>\n                                </div>\n                            )}\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.payee.bankName'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <strong className={cx('Colored-Text')}>\n                                        {creditorBankName}\n                                    </strong>\n                                </div>\n                            </div>\n                            {this.displayUserInfo(creditorInfo, 'payee')}\n                            <div className={cx('PaymentInitStatus-data-row')}>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-title',\n                                    )}>\n                                    <FormattedMessage\n                                        tagName={'span'}\n                                        id={'vrp.consent.payer.bankName'}\n                                    />\n                                </div>\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row-detail',\n                                    )}>\n                                    <span className={cx('Consent-BankName')}>\n                                        <strong>{selectedBankName}</strong>\n                                    </span>\n                                </div>\n                            </div>\n                            {debtorInfo &&\n                                this.displayUserInfo(debtorInfo, 'payer')}\n                            {expiration && (\n                                <div\n                                    className={cx(\n                                        'PaymentInitStatus-data-row',\n                                    )}>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-title',\n                                        )}>\n                                        <FormattedMessage\n                                            tagName={'span'}\n                                            id={'vrp.consent.expiration'}\n                                        />\n                                    </div>\n                                    <div\n                                        className={cx(\n                                            'PaymentInitStatus-data-row-detail',\n                                        )}>\n                                        <span className={cx('Colored-Text')}>\n                                            {expiration}\n                                        </span>\n                                    </div>\n                                </div>\n                            )}\n                        </TokenTitle>\n                    </div>\n                </TokenContainer>\n                <TokenButtonsWrapper>\n                    <Button\n                        type=\"primary\"\n                        text={\n                            seconds === 0\n                                ? this.props.intl.formatMessage(\n                                    {\n                                        id:\n                                              'common.button.continueToMerchant',\n                                    },\n                                    {\n                                        MERCHANT_NAME: pispName\n                                            ? pispName\n                                            : pispAlias,\n                                    },\n                                )\n                                : this.props.intl.formatMessage(\n                                    {\n                                        id:\n                                              'common.button.returningInSeconds',\n                                    },\n                                    { SECONDS: seconds },\n                                )\n                        }\n                        onClick={goToTpp}\n                    />\n                </TokenButtonsWrapper>\n            </Fragment>\n        );\n    }\n}\n\nVrpConsentInitStatus.propTypes = {\n    goToTpp: PropTypes.func.isRequired,\n    pispName: PropTypes.string.isRequired,\n    pispAlias: PropTypes.string.isRequired,\n    maxAmountPerPayment: PropTypes.string,\n    intl: intlShape.isRequired,\n    selectedBank: PropTypes.object,\n    refId: PropTypes.string.isRequired,\n    vrpRequestId: PropTypes.string.isRequired,\n    description: PropTypes.string,\n    setDisplayFooterShadow: PropTypes.func,\n    periodicLimits: PropTypes.array,\n    isFasterPayment: PropTypes.bool,\n    creditorInfo: PropTypes.object,\n    debtorInfo: PropTypes.object,\n    selectedBankName: PropTypes.string,\n    creditorBankName: PropTypes.string,\n    expiration: PropTypes.string,\n    initStatus: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = (\n    { tokenRequestService, sharedService, vrpService },\n    ownProps,\n) => {\n    const currency = vrpService.getVrpCurrency();\n    const { tppName } = tokenRequestService.getTppProfile();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const vrpRequestId = vrpService.getVrpRequestId();\n    const maxAmountPerPayment = formatCurrency(\n        vrpService.getMaxIndividualAmount(),\n        currency,\n        ownProps.intl.formatNumber,\n    );\n    const selectedBank = sharedService.getSelectedBank();\n    const description = vrpService.getDescription();\n    const modifyPreSelectedBank = tokenRequestService.getTppFeature(\n        featureConfig.MODIFY_PRE_SELECTED_BANK,\n        false,\n    );\n    const periodicLimits = vrpService\n        .getPeriodicLimits()\n        .map(periodicLimit => {\n            return {\n                ...periodicLimit,\n                maximumAmount: formatCurrency(\n                    periodicLimit.maximumAmount,\n                    currency,\n                    ownProps.intl.formatNumber,\n                ),\n            };\n        });\n    return {\n        pispName: tppName,\n        pispAlias: tppAlias.value,\n        selectedBankName: sharedService.getSelectedBankName(),\n        selectedBank,\n        refId: vrpService.getVrpRefId(),\n        vrpRequestId,\n        description,\n        modifyPreSelectedBank,\n        maxAmountPerPayment,\n        periodicLimits,\n        isFasterPayment: vrpService.getLocalInstrument() === 'FASTER_PAYMENTS',\n        creditorInfo: vrpService.getCreditorInfo(),\n        debtorInfo: vrpService.getDebtorInfo(),\n        creditorBankName: vrpService.getCreditorBankName(),\n        expiration: vrpService.getExpirationDate(),\n        initStatus: vrpService.getStatus(),\n    };\n};\n\nconst mapDispatchToProps = {\n    goToTpp,\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps,\n)(VrpConsentInitStatus);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport {\n    LOADING_STEP,\n    SPLASH_STEP,\n    VRP_SELECT_BANK_FIRST,\n    VRP_CONSENT_BANK_FIRST,\n    VRP_CONSENT_INIT_STATUS,\n} from 'config/constants';\nimport Loading from 'components/App/Shared/Loading';\nimport SplashScreen from 'components/App/Shared/SplashScreen';\nimport Background from 'components/App/Background';\nimport VrpConsentBankFirstFlow from './VrpConsentBankFirstFlow';\nimport VrpBankSelectorFirst from './VrpBankSelectorFirst';\nimport VrpConsentInitStatus from './VrpConsentInitStatus';\n\nclass Vrp extends Component {\n    constructor(props) {\n        super(props);\n    }\n    static getStepComponent(currentStep) {\n        const steps = {\n            [VRP_SELECT_BANK_FIRST]: <VrpBankSelectorFirst />,\n            [VRP_CONSENT_BANK_FIRST]: <VrpConsentBankFirstFlow />,\n            [VRP_CONSENT_INIT_STATUS]: <VrpConsentInitStatus />,\n        };\n        return steps[currentStep];\n    }\n\n    static getStepComponentWithoutBackground(currentStep) {\n        const stepsWithoutBackground = {\n            [LOADING_STEP]: <Loading />,\n            [SPLASH_STEP]: <SplashScreen />,\n        };\n        return stepsWithoutBackground[currentStep];\n    }\n\n    render() {\n        if (\n            this.props.previousStep === SPLASH_STEP &&\n            !this.props.fadeOutProp\n        ) {\n            return <SplashScreen stepToSet={this.props.currentStep} />;\n        }\n\n        const { currentStep } = this.props;\n        const component = Vrp.getStepComponent(currentStep) ? (\n            <Background> {Vrp.getStepComponent(currentStep)} </Background>\n        ) : (\n            Vrp.getStepComponentWithoutBackground(currentStep)\n        );\n\n        return <>{component}</>;\n    }\n}\n\nVrp.propTypes = {\n    currentStep: PropTypes.string.isRequired,\n    previousStep: PropTypes.string,\n    fadeOutProp: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    currentStep: sharedService.getCurrentStep(),\n    previousStep: sharedService.getPreviousStep(),\n    fadeOutProp: sharedService.getFadeOutProp(),\n});\n\nexport default connect(mapStateToProps)(Vrp);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './DefaultErrorPage.css';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport { FormattedMessage } from 'react-intl';\nimport iconError from 'assets/icon-error.svg';\n\nconst cx = classNames.bind(style);\n\nconst DefaultErrorPage = ({ error, setDisplayFooterShadow }) => {\n    const errorText =\n        error && error.intlKey ? (\n            <FormattedMessage\n                id={`common.exception.${error.intlKey}`}\n                values={error.intlValues}\n            />\n        ) : (\n            <FormattedMessage id={'common.errorPage.generic'} />\n        );\n\n    const errorTitle =\n        error && error.intlTitleKey ? (\n            <p className={cx('ErrorPage-title-strong')}>\n                <FormattedMessage\n                    id={`common.errorPage.${error.intlTitleKey}`}\n                />\n            </p>\n        ) : (\n            <>\n                <p className={cx('ErrorPage-title-strong')}>\n                    <FormattedMessage id={'common.errorPage.error'} />\n                </p>\n                <p>\n                    <FormattedMessage id={'common.errorPage.title1'} />\n                    <br />\n                    <FormattedMessage id={'common.errorPage.title2'} />\n                </p>\n            </>\n        );\n\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    return (\n        <TokenContainer\n            className={cx('ErrorPage-subcontainer')}\n            noMargin\n            noScrollable>\n            <div className={cx('ErrorPage-body')}>\n                <div className={cx('ErrorPage-wrapper')}>\n                    <div className={cx('ErrorPage-title')}>\n                        <img src={iconError} />\n                        {errorTitle}\n                    </div>\n                    <div className={cx('ErrorPage-subtitle')}>\n                        <p>{errorText}</p>\n                    </div>\n                </div>\n            </div>\n        </TokenContainer>\n    );\n};\n\nDefaultErrorPage.propTypes = {\n    error: PropTypes.object,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => {\n    return {\n        error: sharedService.getError(),\n    };\n};\n\nexport default connect(mapStateToProps)(DefaultErrorPage);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './GPHSBCErrorPage.css';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport { errorMessageKeys } from 'config/constants';\nimport FailureIcon from '../Icons/FailureIcon';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst getErrorMessageKey = errorMessage => {\n    let errorMessageKey = errorMessageKeys['DEFAULT'];\n    Object.keys(errorMessageKeys).forEach(function (key) {\n        if (errorMessage.toUpperCase().includes(key)) {\n            errorMessageKey = errorMessageKeys[key];\n        }\n    });\n    return errorMessageKey;\n};\n\nconst GPHSBCErrorPage = ({ setDisplayFooterShadow, isTokenError, error }) => {\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    const gpHsbcErrorMessageId = isTokenError\n        ? 'common.gpHsbc.errorPage.TOKEN_ERROR'\n        : `common.gpHsbc.errorPage.${getErrorMessageKey(error.message)}`;\n\n    return (\n        <TokenContainer noMargin noScrollable>\n            <div className={cx('CustomErrorPage-container-gp')}>\n                <div className={cx('CustomErrorPage-subcontainer-gp')}>\n                    <div className={cx('CustomErrorPage-title-container-gp')}>\n                        <div>\n                            <FailureIcon\n                                title=\"failure\"\n                                className={cx('CustomErrorPage-cross-icon-gp')}\n                            />\n                        </div>\n                        <div className={cx('CustomErrorPage-title-gp')}>\n                            <FormattedMessage\n                                tagName={'span'}\n                                id={'common.gpHsbc.errorPage.title'}\n                            />\n                        </div>\n                    </div>\n                    <div className={cx('CustomErrorPage-body-text-gp')}>\n                        <FormattedMessage\n                            tagName={'span'}\n                            id={gpHsbcErrorMessageId}\n                        />\n                    </div>\n                </div>\n            </div>\n        </TokenContainer>\n    );\n};\n\nGPHSBCErrorPage.propTypes = {\n    isTokenError: PropTypes.bool,\n    error: PropTypes.object,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => {\n    return {\n        isTokenError: sharedService.getErrorSource(),\n        error: sharedService.getError(),\n    };\n};\n\nexport default connect(mapStateToProps)(GPHSBCErrorPage);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport style from './HSBCErrorPage.css';\nimport classNames from 'classnames/bind';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport { errorMessageKeys } from 'config/constants';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst getErrorMessageKey = errorMessage => {\n    let errorMessageKey = errorMessageKeys['DEFAULT'];\n    Object.keys(errorMessageKeys).forEach(function (key) {\n        if (errorMessage.toUpperCase().includes(key)) {\n            errorMessageKey = errorMessageKeys[key];\n        }\n    });\n    return errorMessageKey;\n};\n\nconst HSBCErrorPage = ({ setDisplayFooterShadow, isTokenError, error }) => {\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    const hsbcErrorMessageId = isTokenError\n        ? 'common.hsbc.errorPage.TOKEN_ERROR'\n        : `common.hsbc.errorPage.${getErrorMessageKey(error.message)}`;\n\n    return (\n        <TokenContainer noScrollable>\n            <div className={cx('CustomErrorPage-title-hsbc')}>\n                <FormattedMessage\n                    tagName={'span'}\n                    id={'common.hsbc.errorPage.title'}\n                />\n            </div>\n            <div className={cx('CustomErrorPage-sub-title-hsbc')}>\n                <FormattedMessage tagName={'span'} id={hsbcErrorMessageId} />\n            </div>\n        </TokenContainer>\n    );\n};\n\nHSBCErrorPage.propTypes = {\n    isTokenError: PropTypes.bool,\n    error: PropTypes.object,\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nconst mapStateToProps = ({ sharedService }) => {\n    return {\n        isTokenError: sharedService.getErrorSource(),\n        error: sharedService.getError(),\n    };\n};\n\nexport default connect(mapStateToProps)(HSBCErrorPage);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'reducers';\nimport { terminateFlow } from 'actions/shared';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { FormattedMessage } from 'react-intl';\nimport { isPopup, getURLParameter } from 'util/index';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from 'config/constants';\nimport Background from 'components/App/Background';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport DefaultErrorPage from './DefaultErrorPage';\nimport GPHSBCErrorPage from './GPHSBCErrorPage';\nimport HSBCErrorPage from './HSBCErrorPage';\n\nconst ErrorPage = ({\n    displayCustomErrorPage,\n    terminateFlow,\n    isRedirect,\n    tppName,\n    error,\n    tppCategory,\n}) => {\n    const displayButton =\n        (isPopup() || isRedirect) &&\n        !(error?.redirectBack === false) &&\n        tppName;\n    const onClickHandler = () => {\n        const encTraceID = getURLParameter('trace-id');\n        const encTokenTraceID = getURLParameter('token-trace-id');\n        const traceId = encTraceID && decodeURIComponent(encTraceID);\n        const tokenTraceID =\n            encTokenTraceID && decodeURIComponent(encTokenTraceID);\n\n        terminateFlow({\n            error: error?.code || 'server_error',\n            message: error?.message,\n            'trace-id': traceId || tokenTraceID,\n        });\n    };\n\n    const ErrorPage = () => {\n        if (displayCustomErrorPage) {\n            switch (tppCategory) {\n                case 'HSBC':\n                    return <HSBCErrorPage />;\n                case 'GP-HSBC':\n                    return <GPHSBCErrorPage />;\n            }\n        }\n        return <DefaultErrorPage />;\n    };\n\n    return (\n        <Background>\n            {ErrorPage()}\n            {displayButton && (\n                <TokenButtonsWrapper>\n                    <Button\n                        type=\"primary\"\n                        text={\n                            <FormattedMessage\n                                id={'common.button.continueToMerchant'}\n                                values={{ MERCHANT_NAME: tppName }}\n                            />\n                        }\n                        onClick={onClickHandler}\n                    />\n                </TokenButtonsWrapper>\n            )}\n        </Background>\n    );\n};\n\nErrorPage.propTypes = {\n    isRedirect: PropTypes.bool,\n    terminateFlow: PropTypes.func.isRequired,\n    tppName: PropTypes.string,\n    displayCustomErrorPage: PropTypes.bool,\n    tppCategory: PropTypes.string,\n    error: PropTypes.object,\n};\n\nconst mapStateToProps = ({ sharedService, tokenRequestService }) => {\n    const tppCategory = tokenRequestService.getTppFeature(\n        featureConfig.CATEGORY,\n    );\n    const displayCustomErrorPage = tokenRequestService.getTppFeature(\n        featureConfig.CUSTOM_ERROR,\n    );\n    const tppAlias = tokenRequestService.getTppAlias();\n    const tppName = tokenRequestService.getTppProfile()?.tppName;\n    const actingAs = tokenRequestService.getTppActingAs();\n    return {\n        tppName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias?.value,\n        error: sharedService.getError(),\n        isRedirect: sharedService.getIsRedirect(),\n        tppCategory,\n        displayCustomErrorPage,\n    };\n};\n\nconst mapDispatchToProps = { terminateFlow };\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ErrorPage);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { connect } from 'reducers';\nimport style from './RedirectTpp.css';\nimport classNames from 'classnames/bind';\nimport { argbToRgba } from 'util/index';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport { redirectToTpp } from 'actions/shared';\nimport { FormattedMessage, intlShape } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst RedirectTpp = ({\n    tppName,\n    redirectToTpp,\n    footer,\n    hideFooter,\n    intl,\n    isError,\n}) => {\n    return (\n        <div className={cx('RedirectTpp')}>\n            <TokenContainer className={cx('RedirectTpp-subcontainer')}>\n                <TokenTitle>\n                    <FormattedMessage\n                        id={`common.redirectTpp.${\n                            (isError && 'errTitle') || 'title'\n                        }`}\n                    />\n                </TokenTitle>\n                <FormattedMessage\n                    id={`common.redirectTpp.${\n                        (isError && 'errText') || 'text'\n                    }`}\n                    tagName={'p'}\n                    values={{\n                        TPP_NAME: tppName,\n                    }}\n                />\n                <Button\n                    onClick={() => redirectToTpp()}\n                    text={intl.formatMessage(\n                        {\n                            id: 'common.redirectTpp.button',\n                        },\n                        {\n                            TPP_NAME: tppName,\n                        },\n                    )}\n                />\n            </TokenContainer>\n            {(!hideFooter && (\n                <span className={cx('RedirectTpp-footer')}>{footer}</span>\n            )) ||\n                null}\n        </div>\n    );\n};\n\nRedirectTpp.propTypes = {\n    footer: PropTypes.node,\n    hideFooter: PropTypes.bool.isRequired,\n    color: PropTypes.string,\n    redirectToTpp: PropTypes.func.isRequired,\n    tppName: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    isError: PropTypes.bool,\n};\n\nRedirectTpp.defaultProps = {\n    hideFooter: false,\n    isError: false,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const hasCustomization = tokenRequestService.hasCustomization();\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    const footer =\n        (hasCustomization && (\n            <span>\n                powered by <strong>Token</strong>\n            </span>\n        )) ||\n        `© ${new Date().getFullYear()} Token.io, Ltd. All rights reserved.`;\n    const actingAs = tokenRequestService.getTppActingAs();\n    const isError = tokenRequestService.isTppRedirectError();\n    const tppName = tokenRequestService.getTppProfile()?.tppName;\n    const tppAlias = tokenRequestService.getTppAlias();\n\n    return {\n        footer,\n        color: argbToRgba(colors['color-primary']),\n        tppName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias?.value,\n        isError,\n    };\n};\n\nconst mapDispatchToProps = {\n    redirectToTpp,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RedirectTpp);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { connect } from 'reducers';\nimport style from './RedirectOptions.css';\nimport classNames from 'classnames/bind';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from 'config/constants';\nimport { redirectToBankUrl, goToTppAfterBackButton } from 'actions/shared';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport { FooterText } from 'components/App/Shared/FooterText';\n\nconst cx = classNames.bind(style);\n\nconst RedirectOptions = ({\n    tppName,\n    footer,\n    intl,\n    bankName,\n    redirectToBankUrl,\n    goToTppAfterBackButton,\n}) => (\n    <div className={cx('RedirectOptions')}>\n        <TokenContainer className={cx('RedirectOptions-subcontainer')}>\n            <TokenTitle>\n                <FormattedMessage id=\"common.redirectOptions.title\" />\n            </TokenTitle>\n            <FormattedMessage\n                id=\"common.redirectOptions.text\"\n                tagName={'p'}\n                values={{\n                    TPP_NAME: tppName,\n                    BANK_NAME: bankName,\n                }}\n            />\n            <Button\n                onClick={async () => {\n                    await redirectToBankUrl();\n                }}\n                text={intl.formatMessage(\n                    {\n                        id: 'common.redirectOptions.redirectBank',\n                    },\n                    {\n                        BANK_NAME: bankName,\n                    },\n                )}\n            />\n            <br />\n            <Button\n                onClick={async () => {\n                    await goToTppAfterBackButton();\n                }}\n                text={intl.formatMessage(\n                    {\n                        id: 'common.redirectOptions.redirectTpp',\n                    },\n                    {\n                        TPP_NAME: tppName,\n                    },\n                )}\n            />\n        </TokenContainer>\n        {(!!footer && (\n            <span className={cx('RedirectOptions-footer')}>{footer}</span>\n        )) ||\n            null}\n    </div>\n);\n\nRedirectOptions.propTypes = {\n    footer: PropTypes.node,\n    hideFooter: PropTypes.bool.isRequired,\n    tppName: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    bankName: PropTypes.string,\n    goToTppAfterBackButton: PropTypes.func.isRequired,\n    redirectToBankUrl: PropTypes.func.isRequired,\n};\n\nRedirectOptions.defaultProps = {\n    hideFooter: false,\n};\n\nconst mapStateToProps = ({ tokenRequestService, sharedService }) => {\n    const customFooterText = tokenRequestService.getTppFeature(\n        featureConfig.FOOTER_TEXT,\n    );\n    const footer = customFooterText ? <FooterText /> : '';\n    const tppName = tokenRequestService.getTppProfile()?.tppName;\n    const actingAs = tokenRequestService.getTppActingAs();\n    const bankName = sharedService.getSelectedBankName();\n    return {\n        footer,\n        tppName: actingAs?.displayName || tppName,\n        bankName,\n    };\n};\n\nconst mapDispatchToProps = {\n    goToTppAfterBackButton,\n    redirectToBankUrl,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RedirectOptions);\n","import { SpinnerWithLockBig } from '@token-io/lib-web-components/src/Components/Spinner';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { argbToRgba } from 'util/index';\nimport './BankSpinner.css';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport Background from 'components/App/Background';\n\nconst Spinner_default = ({ bank, color, tppName, isAisp }) => (\n    <SpinnerWithLockBig\n        color={color}\n        label={\n            <FormattedMessage\n                id={'common.bankSpinner.label'}\n                tagName={'span'}\n                values={{ BANK_NAME: bank.name }}\n            />\n        }\n        message={\n            <Fragment>\n                <FormattedMessage\n                    id={'common.bankSpinner.title1'}\n                    tagName={'span'}\n                />\n                <FormattedMessage\n                    id={'common.bankSpinner.title2'}\n                    tagName={'strong'}\n                    values={{ BANK_NAME: bank.name }}\n                />\n                <span className=\"no-before\">\n                    <FormattedMessage\n                        id={\n                            isAisp\n                                ? 'common.bankSpinner.title3'\n                                : 'common.bankSpinner.title4'\n                        }\n                        tagName={'span'}\n                        values={{ TPP_NAME: tppName }}\n                    />\n                </span>\n            </Fragment>\n        }\n    />\n);\n\nSpinner_default.propTypes = {\n    bank: PropTypes.object,\n    color: PropTypes.string,\n    tppName: PropTypes.string,\n    isAisp: PropTypes.bool,\n};\n\nconst BankSpinner = ({ displayLogoOnBankRedirectScreen }) => {\n    return displayLogoOnBankRedirectScreen ? (\n        <Background>\n            <Spinner />\n        </Background>\n    ) : (\n        <Spinner />\n    );\n};\n\nBankSpinner.propTypes = {\n    displayLogoOnBankRedirectScreen: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ sharedService, tokenRequestService }) => {\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    const { tppName } = tokenRequestService.getTppProfile();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const tppAlias = tokenRequestService.getTppAlias();\n    const isAisp = sharedService.isAisp();\n    const displayLogoOnBankRedirectScreen = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_LOGO_ON_BANK_REDIRECT_SCREEN,\n        false,\n    );\n    return {\n        tppName:\n            actingAs?.displayName ||\n            tppName ||\n            actingAs?.secondaryName ||\n            tppAlias.value,\n        bank: sharedService.getSelectedBank(),\n        color:\n            argbToRgba(colors['color-spinner']) ||\n            argbToRgba(colors['color-primary']),\n        displayLogoOnBankRedirectScreen,\n        isAisp,\n    };\n};\n\nconst Spinner = connect(mapStateToProps)(Spinner_default);\n\nexport default connect(mapStateToProps)(BankSpinner);\n","import { SpinnerWithLockBig } from '@token-io/lib-web-components/src/Components/Spinner';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { argbToRgba } from 'util/index';\nimport {\n    defaultColors,\n    CUSTOM_TPP_FEATURES as featureConfig,\n} from 'config/constants';\nimport Background from 'components/App/Background';\n\nconst Spinner = ({ tppName, color }) => (\n    <SpinnerWithLockBig\n        color={color}\n        label={\n            <FormattedMessage\n                id={'common.redirectTppSpinner.label'}\n                tagName={'span'}\n            />\n        }\n        message={\n            <Fragment>\n                <FormattedMessage\n                    id={'common.redirectTppSpinner.title1'}\n                    tagName={'span'}\n                    values={{\n                        TPP_NAME: tppName,\n                    }}\n                />\n            </Fragment>\n        }\n    />\n);\n\nSpinner.propTypes = {\n    bank: PropTypes.object,\n    color: PropTypes.string,\n    tppName: PropTypes.string,\n};\n\nconst RedirectTppSpinner = ({\n    tppName,\n    color,\n    displayLogoOnBankRedirectScreen,\n}) => {\n    return displayLogoOnBankRedirectScreen ? (\n        <Background>\n            <Spinner tppName={tppName} color={color} />\n        </Background>\n    ) : (\n        <Spinner tppName={tppName} color={color} />\n    );\n};\n\nRedirectTppSpinner.propTypes = {\n    tppName: PropTypes.string,\n    color: PropTypes.string,\n    displayLogoOnBankRedirectScreen: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ tokenRequestService }) => {\n    const colors = {\n        ...defaultColors,\n        ...tokenRequestService.getTppFeature(featureConfig.CUSTOM_COLORS),\n    };\n    const { tppName } = tokenRequestService.getTppProfile();\n    const actingAs = tokenRequestService.getTppActingAs();\n    const displayLogoOnBankRedirectScreen = tokenRequestService.getTppFeature(\n        featureConfig.DISPLAY_LOGO_ON_BANK_REDIRECT_SCREEN,\n        false,\n    );\n    return {\n        tppName: actingAs?.displayName || tppName,\n        color:\n            argbToRgba(colors['color-spinner']) ||\n            argbToRgba(colors['color-primary']),\n        displayLogoOnBankRedirectScreen,\n    };\n};\n\nexport default connect(mapStateToProps)(RedirectTppSpinner);\n","import React, { useState } from 'react';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport classNames from 'classnames/bind';\nimport style from './BankRedirect.css';\nimport { redirectToBankUrl } from 'actions/shared';\n\nconst cx = classNames.bind(style);\n\nconst BankRedirect = ({ bank, intl, redirectToBankUrl, isRedirectReady }) => {\n    const [isRedirecting, setRedirecting] = useState(false);\n    return (\n        <div className={cx('BankRedirect')}>\n            <TokenContainer className={cx('BankRedirect-subcontainer')}>\n                <TokenTitle>\n                    <FormattedMessage id={'common.bankRedirect.title1'} />\n                </TokenTitle>\n                <FormattedMessage\n                    id={'common.bankRedirect.title2'}\n                    tagName={'p'}\n                    values={{\n                        BANK_NAME: bank.name,\n                    }}\n                />\n                <Button\n                    onClick={async () => {\n                        setRedirecting(true);\n                        await redirectToBankUrl();\n                    }}\n                    text={intl.formatMessage(\n                        {\n                            id: 'common.bankRedirect.button',\n                        },\n                        {\n                            BANK_NAME: bank.name,\n                        },\n                    )}\n                    status={\n                        (!isRedirectReady && Button.STATUS_DISABLED) ||\n                        (isRedirecting && Button.STATUS_LOADING) ||\n                        Button.STATUS_IDLE\n                    }\n                />\n            </TokenContainer>\n        </div>\n    );\n};\n\nBankRedirect.propTypes = {\n    bank: PropTypes.object,\n    redirectToBankUrl: PropTypes.func.isRequired,\n    intl: intlShape.isRequired,\n    isRedirectReady: PropTypes.bool,\n};\n\nconst mapStateToProps = ({ sharedService, tokenService }) => ({\n    bank: sharedService.getSelectedBank(),\n    isRedirectReady: !!tokenService.getBankRedirectUrl(),\n});\n\nconst mapDispatchToProps = {\n    redirectToBankUrl,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BankRedirect);\n","import React, { createRef, useState } from 'react';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport { connect } from 'reducers';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, intlShape } from 'react-intl';\nimport classNames from 'classnames/bind';\nimport style from './CsrfMismatch.css';\nimport { copyToClipboard } from 'util/index';\n\nconst cx = classNames.bind(style);\n\nconst CsrfMismatch = ({ intl, redirectUrl }) => {\n    const [isCopied, setCopied] = useState(false);\n    const ref = createRef();\n    return (\n        <div className={cx('CsrfMismatch')}>\n            <TokenContainer className={cx('CsrfMismatch-subcontainer')}>\n                <strong>\n                    <FormattedMessage\n                        id={'common.csrfMismatch.title1'}\n                        tagName={'p'}\n                    />\n                </strong>\n                <div\n                    className={cx('CsrfMismatch-redirectUrl')}\n                    onMouseUp={() => {\n                        copyToClipboard(ref.current);\n                        setCopied(true);\n                    }}>\n                    <textarea\n                        ref={ref}\n                        className={cx('CsrfMismatch-copyArea')}\n                        value={redirectUrl}\n                        readOnly\n                    />\n                    {redirectUrl}\n                </div>\n                <div\n                    className={cx({\n                        ['CsrfMismatch-copyStatus']: true,\n                        ['CsrfMismatch-copyStatus-visible']: isCopied,\n                    })}>\n                    <FormattedMessage\n                        id={'common.csrfMismatch.copiedMessage'}\n                    />\n                </div>\n                <Button\n                    onClick={() => {\n                        copyToClipboard(ref.current);\n                        setCopied(true);\n                    }}\n                    text={intl.formatMessage({\n                        id: 'common.csrfMismatch.copyUrl',\n                    })}\n                />\n            </TokenContainer>\n        </div>\n    );\n};\n\nCsrfMismatch.propTypes = {\n    redirectUrl: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n};\n\nconst mapStateToProps = ({ sharedService }) => ({\n    redirectUrl: sharedService.getBrowserRedirectUrl(),\n});\n\nexport default connect(mapStateToProps)(CsrfMismatch);\n","export default __webpack_public_path__ + \"assets/favicon.9cf61c2f9c.png\";","import React, { Fragment, useEffect } from 'react';\nimport classNames from 'classnames/bind';\nimport PropTypes from 'prop-types';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport style from './TermsAndCondition.css';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst TermsAndCondition = ({ setDisplayFooterShadow }) => {\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    const onClick = () => {\n        window.close();\n    };\n\n    return (\n        <Fragment>\n            <div className=\"TermsAndCondition-div\">\n                <TokenContainer className={cx('TermsAndCondition-container')}>\n                    <TokenTitle>\n                        <FormattedMessage id={'terms.title'} />\n                    </TokenTitle>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.para1.title'} />:\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.para1.text.heading'} />\n                            :\n                        </p>\n                        <ol className={cx('points-content', 'bulleted-points')}>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.para1.text.point1'}\n                                />\n                            </li>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.para1.text.point2'}\n                                />\n                            </li>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.para1.text.point3'}\n                                />\n                            </li>\n                        </ol>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.para2.title'} />:\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.para2.text'} /> <br />\n                            <FormattedMessage\n                                id={'terms.para2.address.heading'}\n                            />{' '}\n                            :{' '}\n                            <FormattedMessage id={'terms.para2.address.text'} />\n                            <br />\n                            Email :{' '}\n                            <a\n                                href=\"mailto:info@token.io\"\n                                className={cx('termsLink')}>\n                                {' '}\n                                <FormattedMessage\n                                    id={'terms.para2.email.text'}\n                                />{' '}\n                            </a>\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.para3.title'} />:\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.para3.text'} />\n                            <a\n                                href=\"https://token.io/privacy-policy\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage id={'terms.para3.title'} />\n                            </a>\n                            .\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.para4.title'} />:\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage\n                                id={'terms.para4.subpara1.part1'}\n                            />\n                            <a\n                                href=\"mailto:info@token.io\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.para4.subpara1.email'}\n                                />\n                            </a>\n                            <FormattedMessage\n                                id={'terms.para4.subpara1.part2'}\n                            />\n                            <br />\n                            <br />\n                            <FormattedMessage\n                                id={'terms.para4.subpara2.part1'}\n                            />\n                            <a\n                                href=\"mailto:complaint.info@financial-ombudsman.org.uk\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.para4.subpara2.email'}\n                                />\n                            </a>\n                            .\n                            <FormattedMessage\n                                id={'terms.para4.subpara2.part2'}\n                            />\n                            <br />\n                            <br />\n                            <FormattedMessage\n                                id={'terms.para4.subpara3.text'}\n                            />\n                        </p>\n                    </div>\n                </TokenContainer>\n            </div>\n            <TokenButtonsWrapper>\n                <Button\n                    type=\"primary\"\n                    text={<FormattedMessage id={'terms.button'} />}\n                    onClick={onClick}\n                />\n            </TokenButtonsWrapper>\n        </Fragment>\n    );\n};\n\nTermsAndCondition.propTypes = {\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nexport default TermsAndCondition;\n","export default __webpack_public_path__ + \"assets/enfucelogo.4c59ac024f.png\";","import React, { Fragment, useEffect } from 'react';\nimport classNames from 'classnames/bind';\nimport PropTypes from 'prop-types';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport style from './TermsAndCondition.css';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst EnfuseTermsAndCondition = ({ setDisplayFooterShadow }) => {\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    const onClick = () => {\n        window.close();\n    };\n\n    return (\n        <Fragment>\n            <div className=\"TermsAndCondition-div\">\n                <TokenContainer className={cx('TermsAndCondition-container')}>\n                    <TokenTitle>\n                        <FormattedMessage id={'terms.enfuse.title'} />\n                    </TokenTitle>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.enfuse.para1.title'} />\n                            :\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage\n                                id={'terms.enfuse.para1.text.heading'}\n                            />\n                            :\n                        </p>\n                        <ol className={cx('points-content', 'bulleted-points')}>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para1.text.point1'}\n                                />\n                            </li>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para1.text.point2'}\n                                />\n                            </li>\n                            <li>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para1.text.point3'}\n                                />\n                            </li>\n                        </ol>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.enfuse.para2.title'} />\n                            :\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage\n                                id={'terms.enfuse.para2.subpara1.text'}\n                            />{' '}\n                            <br />\n                            Email:\n                            <a\n                                href=\"mailto:support@enfuce.com\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={\n                                        'terms.enfuse.para2.subpara1.email.text'\n                                    }\n                                />\n                            </a>\n                            <br />\n                            <br />\n                            <FormattedMessage\n                                id={'terms.enfuse.para2.subpara2.text'}\n                            />\n                            <br />\n                            Email:\n                            <a\n                                href=\"mailto:info@token.io\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={\n                                        'terms.enfuse.para2.subpara2.email.text'\n                                    }\n                                />\n                            </a>\n                            <br />\n                            <br />\n                            <FormattedMessage\n                                id={'terms.enfuse.para2.subpara3.text'}\n                            />\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.enfuse.para3.title'} />\n                            :\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.enfuse.para3.text'} />\n                            <a\n                                href=\"https://token.io/privacy-policy\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para3.link'}\n                                />\n                            </a>\n                            .\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.enfuse.para4.title'} />\n                            :\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage\n                                id={'terms.enfuse.para4.subpara1.text.part1'}\n                            />\n                            <a\n                                href=\"mailto:info@token.io\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para4.subpara1.email'}\n                                />\n                            </a>\n                            <FormattedMessage\n                                id={'terms.enfuse.para4.subpara1.text.part2'}\n                            />\n                            <br />\n                            <br />\n                            <FormattedMessage\n                                id={'terms.enfuse.para4.subpara2.text'}\n                            />\n                            Email:\n                            <a\n                                href=\"mailto:kirjaamo@finanssivalvonta.fi\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.enfuse.para4.subpara2.email'}\n                                />\n                            </a>\n                            .\n                        </p>\n                    </div>\n                </TokenContainer>\n            </div>\n            <TokenButtonsWrapper>\n                <Button\n                    type=\"primary\"\n                    text={<FormattedMessage id={'terms.button'} />}\n                    onClick={onClick}\n                />\n            </TokenButtonsWrapper>\n        </Fragment>\n    );\n};\n\nEnfuseTermsAndCondition.propTypes = {\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nexport default EnfuseTermsAndCondition;\n","import React, { useEffect } from 'react';\nimport classNames from 'classnames/bind';\nimport PropTypes from 'prop-types';\nimport TokenContainer from '@token-io/lib-web-components/src/Components/Layout/TokenContainer';\nimport TokenTitle from '@token-io/lib-web-components/src/Components/Layout/TokenTitle';\nimport Button from '@token-io/lib-web-components/src/Components/Button';\nimport TokenButtonsWrapper from '../Shared/TokenButtonsWrapper.js';\nimport style from './TermsAndCondition.css';\nimport { FormattedMessage } from 'react-intl';\n\nconst cx = classNames.bind(style);\n\nconst GMBHTermsAndConditions = ({ setDisplayFooterShadow }) => {\n    useEffect(() => {\n        setDisplayFooterShadow(false);\n    }, []);\n\n    const onClick = () => {\n        window.close();\n    };\n\n    return (\n        <>\n            <div className=\"TermsAndCondition-div\">\n                <TokenContainer className={cx('TermsAndCondition-container')}>\n                    <TokenTitle>\n                        <FormattedMessage id={'terms.gmbh.title'} />\n                    </TokenTitle>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.gmbh.para1.title'} />\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para1.heading'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para1.p1'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para1.p2'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para1.p3'} />\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.gmbh.para2.title'} />\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para2.p1'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para2.p2'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para2.p3'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para2.p4'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage\n                                id={'terms.gmbh.para2.email.label'}\n                            />\n                            <a\n                                href=\"mailto:info@token.io\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.gmbh.para2.email.value'}\n                                />\n                            </a>\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.gmbh.para3.title'} />\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para3.p1.s1'} />\n                            <a\n                                href=\"https://token.io/privacy-policy\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.gmbh.para3.p1.link'}\n                                />\n                            </a>\n                            .\n                        </p>\n                    </div>\n                    <div className={cx('term')}>\n                        <h4 className={cx('points-header')}>\n                            <FormattedMessage id={'terms.gmbh.para4.title'} />\n                        </h4>\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para4.p1'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para4.p2'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para4.p3.s1'} />\n                            <a\n                                href=\"https://www.bafin.buergerservice-bund.de/Formular/BasisKonto\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.gmbh.para4.p3.link'}\n                                />\n                            </a>\n                            <FormattedMessage id={'terms.gmbh.para4.p3.s2'} />\n                            <a\n                                href=\"mailto:poststelle@bafin.de\"\n                                className={cx('termsLink')}>\n                                <FormattedMessage\n                                    id={'terms.gmbh.para4.p3.email'}\n                                />\n                            </a>\n                            <FormattedMessage id={'terms.gmbh.para4.p3.s3'} />\n                        </p>\n                        <br />\n                        <p className={cx('points-content')}>\n                            <FormattedMessage id={'terms.gmbh.para4.p4'} />\n                        </p>\n                    </div>\n                </TokenContainer>\n            </div>\n            <TokenButtonsWrapper>\n                <Button\n                    type=\"primary\"\n                    text={<FormattedMessage id={'terms.button'} />}\n                    onClick={onClick}\n                />\n            </TokenButtonsWrapper>\n        </>\n    );\n};\n\nGMBHTermsAndConditions.propTypes = {\n    setDisplayFooterShadow: PropTypes.func,\n};\n\nexport default GMBHTermsAndConditions;\n","import React, { Component } from 'react';\nimport Background from '../Background';\nimport TermsAndCondition from './TermsAndCondition';\nimport { connect } from 'reducers';\nimport enfuceTpplogo from 'assets/enfucelogo.png';\nimport PropTypes from 'prop-types';\nimport EnfuseTermsAndCondition from './EnfuseTermsAndConition';\nimport GMBHTermsAndConditions from './GMBHTermsAndConditions';\nimport { CUSTOM_TPP_FEATURES as featureConfig } from 'config/constants';\n\nclass Terms extends Component {\n    render() {\n        const { isEnfuse, isGmbh } = this.props;\n        if (isGmbh) {\n            return (\n                <div>\n                    <Background>\n                        <GMBHTermsAndConditions />\n                    </Background>\n                </div>\n            );\n        } else if (isEnfuse) {\n            return (\n                <div>\n                    <Background enfuseLogo={enfuceTpplogo}>\n                        <EnfuseTermsAndCondition />\n                    </Background>\n                </div>\n            );\n        } else {\n            return (\n                <div>\n                    <Background>\n                        <TermsAndCondition />\n                    </Background>\n                </div>\n            );\n        }\n    }\n}\n\nTerms.propTypes = {\n    isEnfuse: PropTypes.bool,\n    isGmbh: PropTypes.bool,\n};\nconst mapStateToProps = ({ tokenRequestService, sharedService }) => {\n    const selectedCountry = sharedService.getSelectedCountry();\n    const isEnfuse =\n        tokenRequestService.getTppFeature(\n            featureConfig.IS_ENFUSE_LICENSE_TPP,\n            false,\n        ) && selectedCountry !== 'GB';\n    const isGmbh = tokenRequestService.getTppFeature(\n        featureConfig.IS_TPP_GMBH,\n        false,\n    );\n    return {\n        isEnfuse,\n        isGmbh,\n    };\n};\n\nexport default connect(mapStateToProps)(Terms);\n","import { hot } from 'react-hot-loader/root';\nimport { App, throwError, TokenException } from '@token-io/lib-web-app';\nimport React from 'react';\nimport './main.css';\nimport Root from 'components/App';\nimport reducer, {\n    getRedactedState,\n    getSanitizedState,\n    getServices,\n} from 'reducers';\nimport {\n    ROUTE_AISP,\n    ROUTE_BANK_LOADING,\n    ROUTE_BANK_REDIRECT,\n    ROUTE_REDIRECT_TO_TPP,\n    TPP_LOADING,\n    ROUTE_REDIRECT_OPTIONS,\n    ROUTE_CSRF_MISMATCH,\n    ROUTE_CONFIG,\n    ROUTE_ERROR,\n    ROUTE_LOADING,\n    ROUTE_SPLASH,\n    ROUTE_PISP,\n    ROUTE_VRP,\n    SENTRY_DSN,\n    TOKEN_ENV,\n    TOKEN_BANK_POPUP,\n    TOKEN_BANK_POPUP_CLOSE,\n    defaultLocale,\n    gitSha,\n    languages,\n    sendErrorReports,\n    hotModule,\n} from 'config/constants';\nimport {\n    EXCEPTION_UNSUPPORTED_MESSAGING_API,\n    EXCEPTION_INVALID_PATH,\n} from 'config/exceptions';\nimport TokenCommunicator from 'services/TokenCommunicator';\nimport {\n    initiateBankCallbackFlow,\n    initiateRedirectFlow,\n    initiatePaymentInitStatus,\n    handlePopState,\n    validateContext,\n    allowUserToGoBack,\n    blockUserToGoBack,\n    initiateCredentialsFlow,\n} from 'actions/shared';\nimport { validateBrowserSession } from 'actions/helpers';\nimport { handleInitiation, initiateBankCallbackFlowV2 } from 'actions/vrp';\nimport { changeRoute } from 'actions/shared/route';\nimport WebAppConfig from 'components/WebAppConfig';\nimport Aisp from 'components/App/Aisp';\nimport Pisp from 'components/App/Pisp';\nimport Vrp from 'components/App/Vrp';\nimport ErrorPage from 'components/App/Shared/ErrorPage';\nimport Loading from 'components/App/Shared/Loading';\nimport RedirectTpp from 'components/App/Shared/RedirectTpp';\nimport RedirectOptions from 'components/App/Shared/RedirectOptions';\nimport BankSpinner from 'components/App/Shared/BankSpinner';\nimport RedirectTppSpinner from 'components/App/Shared/RedirectTppSpinner';\nimport BankRedirect from 'components/App/Shared/BankRedirect';\nimport CsrfMismatch from 'components/App/Shared/CsrfMismatch';\nimport SplashScreen from 'components/App/Shared/SplashScreen';\nimport {\n    addCustomCss,\n    syncLocalStorageVersion,\n    isPopup,\n    isContextIframe,\n    getInitialReduxState,\n    buildPathReqEx,\n    sessionStorageWrapper,\n    setHtmlLanguageAttribute,\n} from 'util/index';\nimport { enableIframePassthrough } from 'actions/shared/api';\nimport { ROUTE_TERMS_CONDITIONS } from './config/constants';\nimport 'assets/favicon.png';\nimport Terms from './components/App/Terms';\n\nenableIframePassthrough();\n\nconst storeCallback = async store => {\n    module.hot?.accept('reducers', () => store.replaceReducer(reducer));\n    try {\n        const isCtxPopup = isPopup();\n        const isCtxIframe = isContextIframe();\n\n        if (isCtxPopup || isCtxIframe) {\n            const path = window?.location?.pathname?.split('/');\n            if (isCtxPopup) {\n                TokenCommunicator.setup(store.dispatch);\n                if (!path[1]) {\n                    TokenCommunicator.dispatchMessage('POPUP_IS_OPEN');\n                }\n            } else if (isCtxIframe) {\n                TokenCommunicator.setupIframe(store.dispatch);\n                if (!path[1]) {\n                    TokenCommunicator.dispatchMessage('WEB_APP_IFRAME_IS_OPEN');\n                }\n            }\n        } else {\n            // Redirect\n            TokenCommunicator.setupBankPopup(store.dispatch);\n        }\n        await validateBrowserSession(store);\n    } catch (e) {\n        store.dispatch(\n            throwError(\n                new TokenException(\n                    EXCEPTION_UNSUPPORTED_MESSAGING_API,\n                    'Messaging API is not supported',\n                ),\n            ),\n        );\n    }\n};\n\nconst RootApp = (hotModule && hot(Root)) || Root;\n\nconst options = {\n    root: RootApp,\n    rootId: 'app',\n    store: {\n        reducer,\n        getServices,\n        devToolsEnabled: TOKEN_ENV !== 'prd',\n        initialState: getInitialReduxState(),\n        afterCreate: storeCallback,\n        beforeSave: getSanitizedState,\n        useSessionStorage: true,\n    },\n    i18n: {\n        defaultLocale,\n        locales: languages.map(l => l.code),\n        getLocale: state => state.shared.locale,\n        getLocalesData: () => {\n            return languages.reduce((p, n) => {\n                const locale = n.code?.slice(0, 2);\n                return {\n                    ...p,\n                    [locale]: require(`./config/locales/${locale}.json`),\n                };\n            }, {});\n        },\n        getCustomTranslations: state =>\n            state.tokenRequest?.tpp?.configurations?.translations,\n    },\n    history: {\n        stateSanitizer: getSanitizedState,\n        onPopState: (e, store) => {\n            if (sessionStorageWrapper.get('blockUserToGoBack') === true) {\n                return false;\n            } else {\n                store.dispatch(handlePopState(e.state));\n            }\n        },\n    },\n    sentry: sendErrorReports && {\n        dsn: SENTRY_DSN,\n        env: TOKEN_ENV,\n        release: gitSha,\n        stateRedactor: getRedactedState,\n    },\n    tracerConfig: {},\n    env: TOKEN_ENV,\n};\n\nconst initApp = async () => {\n    try {\n        syncLocalStorageVersion();\n        const state = sessionStorageWrapper.get('reduxState');\n        if (state) {\n            const tokenRequestId = state.tokenRequest?.request.id;\n            const vrpConsentId = state.vrp?.request.vrpId;\n            if (state.tokenRequest?.tpp?.configurations?.colors) {\n                if (tokenRequestId) {\n                    await addCustomCss(tokenRequestId);\n                } else if (vrpConsentId) {\n                    await addCustomCss(vrpConsentId, 'VRP_CONSENT');\n                }\n            }\n\n            // Sets the language and translation attributes of the <html> tag.\n            setHtmlLanguageAttribute(state.shared.locale);\n            document.documentElement.setAttribute('translate', 'no');\n        }\n    } catch (e) {\n        console.error(e); // eslint-disable-line\n    }\n\n    const app = new App(options);\n    app.handleDefault(() =>\n        throwError(\n            new TokenException(EXCEPTION_INVALID_PATH, 'Path is invalid'),\n        ),\n    )\n        .handle(/terms/, () => changeRoute(ROUTE_TERMS_CONDITIONS), {\n            restoreState: true,\n            beforeLoad: state => {\n                return state;\n            },\n        })\n        .handle(buildPathReqEx('/(app/?)?$'), validateContext)\n        .handle(buildPathReqEx('/app/config$'), () => changeRoute(ROUTE_CONFIG))\n        .handle(buildPathReqEx('/app/request-token'), () =>\n            initiateRedirectFlow(),\n        )\n        .handle(buildPathReqEx('/app/initiation'), () => handleInitiation())\n        .handle(\n            buildPathReqEx('/app/v2/callback'),\n            initiateBankCallbackFlowV2,\n            {\n                restoreState: true,\n                beforeLoad: state => {\n                    blockUserToGoBack();\n                    if (state) {\n                        state.shared.route.route.current.id = 'ROUTE_LOADING';\n                    }\n                    return state;\n                },\n            },\n        )\n        .handle(\n            buildPathReqEx('/app/pisp/confirmation$'),\n            initiatePaymentInitStatus,\n            {\n                restoreState: true,\n                beforeLoad: state => {\n                    blockUserToGoBack();\n                    if (state) {\n                        state.shared.route.route.current.id = 'ROUTE_LOADING';\n                    }\n                    return state;\n                },\n            },\n        )\n        .handle(\n            buildPathReqEx('/app/auth/callback$'),\n            initiateBankCallbackFlow,\n            {\n                restoreState: true,\n                beforeLoad: state => {\n                    blockUserToGoBack();\n                    if (window.name === TOKEN_BANK_POPUP) {\n                        TokenCommunicator.setup();\n                        TokenCommunicator.dispatchMessage(\n                            TOKEN_BANK_POPUP_CLOSE,\n                            window.location.href,\n                        );\n                        setTimeout(window.close, 100);\n                    }\n                    if (state) {\n                        state.shared.route.route.current.id = 'ROUTE_LOADING';\n                    }\n                    return state;\n                },\n            },\n        )\n        .handle(\n            buildPathReqEx('/app/auth/credentials$'),\n            initiateCredentialsFlow,\n            {\n                restoreState: false,\n                beforeLoad: state => {\n                    allowUserToGoBack();\n                    if (state) {\n                        state.shared.route.route.current.id = 'ROUTE_LOADING';\n                    }\n                    return state;\n                },\n            },\n        )\n        .register(ROUTE_TERMS_CONDITIONS, <Terms />)\n        .register(ROUTE_CONFIG, <WebAppConfig />)\n        .register(ROUTE_AISP, <Aisp />)\n        .register(ROUTE_PISP, <Pisp />)\n        .register(ROUTE_VRP, <Vrp />)\n        .register(ROUTE_ERROR, <ErrorPage />)\n        .register(ROUTE_LOADING, <Loading />)\n        .register(ROUTE_SPLASH, <SplashScreen />)\n        .register(ROUTE_BANK_LOADING, <BankSpinner />)\n        .register(ROUTE_BANK_REDIRECT, <BankRedirect />)\n        .register(ROUTE_REDIRECT_TO_TPP, <RedirectTpp />)\n        .register(ROUTE_CSRF_MISMATCH, <CsrfMismatch />)\n        .register(ROUTE_REDIRECT_OPTIONS, <RedirectOptions />)\n        .register(TPP_LOADING, <RedirectTppSpinner />)\n        .render();\n};\n\ninitApp();\n","// Configure Webpack's public path before asset imports so static assets\n// are loaded from the runtime-configured CDN.\nif (typeof window !== 'undefined') {\n    const assetPrefix = window.BROWSER_ENV?.assetPrefix;\n    // eslint-disable-next-line camelcase, no-undef\n    __webpack_public_path__ = assetPrefix ? `${assetPrefix}/` : '/';\n}\n","export default __webpack_public_path__ + \"assets/ngp-bkau.e5a27a243c.png\";","export default __webpack_public_path__ + \"assets/ngp-giba.2253db6a43.png\";","export default __webpack_public_path__ + \"assets/ngp-opsk.e1cd22b5f4.png\";","export default __webpack_public_path__ + \"assets/ngp-ubswa.526fd47dfa.png\";","export default __webpack_public_path__ + \"assets/ngp-vbwi.423d17614f.png\";","export default __webpack_public_path__ + \"assets/ngp-axab.cc778dc312.png\";","export default __webpack_public_path__ + \"assets/ngp-bbru.ad3dd3b038.png\";","export default __webpack_public_path__ + \"assets/ngp-ftno.6cd507a205.png\";","export default __webpack_public_path__ + \"assets/ngp-gkcc.7e9cd56f6c.png\";","export default __webpack_public_path__ + \"assets/stet-parb.cbb82a4946.png\";","export default __webpack_public_path__ + \"assets/ngp-rzbb.9bfb125efe.png\";","export default __webpack_public_path__ + \"assets/ngp-stsa.cb4181bcd7.png\";","export default __webpack_public_path__ + \"assets/ngp-uncrb.e5a27a243c.png\";","export default __webpack_public_path__ + \"assets/cobs-agba.29dbbfb9d8.png\";","export default __webpack_public_path__ + \"assets/cobs-gibacz.c6303bdb62.png\";","export default __webpack_public_path__ + \"assets/cobs-rzbc.9bfb125efe.png\";","export default __webpack_public_path__ + \"assets/ngp-coba.725dcef20f.png\";","export default __webpack_public_path__ + \"assets/ngp-deutdedb.d576d1acbe.png\";","export default __webpack_public_path__ + \"assets/ngp-hyve.e5a27a243c.png\";","export default __webpack_public_path__ + \"assets/ngp-ingdd.c558eb4dd9.png\";","export default __webpack_public_path__ + \"assets/ngp-ubswd.c45b86ec23.png\";","export default __webpack_public_path__ + \"assets/ngp-ndeadk.3d56681ec4.png\";","export default __webpack_public_path__ + \"assets/ngp-eeuh.28d48c008e.png\";","export default __webpack_public_path__ + \"assets/ngp-habaee.1c580c2de1.png\";","export default __webpack_public_path__ + \"assets/ngp-lhvb.ba2da801bc.png\";","export default __webpack_public_path__ + \"assets/ngp-parxee.4c8d37f7cc.png\";","export default __webpack_public_path__ + \"assets/ngp-bcoe.bd9c37580e.png\";","export default __webpack_public_path__ + \"assets/ngp-cgdi.a6a9fa3c06.png\";","export default __webpack_public_path__ + \"assets/ngp-inal.10c8da42c7.png\";","export default __webpack_public_path__ + \"assets/ngp-ucja.48a6d69972.png\";","export default __webpack_public_path__ + \"assets/stet-cmcies.258258e041.png\";","export default __webpack_public_path__ + \"assets/ngp-hand.53ffce24de.png\";","export default __webpack_public_path__ + \"assets/ngp-ndeafi.3d56681ec4.png\";","export default __webpack_public_path__ + \"assets/stet-cmci.efef334169.png\";","export default __webpack_public_path__ + \"assets/stet-nord.b258676ede.png\";","export default __webpack_public_path__ + \"assets/ngp-cbi-01005.779888a8d1.png\";","export default __webpack_public_path__ + \"assets/ngp-cbi-03069.d679a884f1.png\";","export default __webpack_public_path__ + \"assets/ngp-cbi-03111.02f5b9a8b9.png\";","export default __webpack_public_path__ + \"assets/ngp-cbi-05034.f7c5d423bf.png\";","export default __webpack_public_path__ + \"assets/ngp-cbvi.73a4ed6c6b.png\";","export default __webpack_public_path__ + \"assets/ngp-habalt.0304a5f2b7.png\";","export default __webpack_public_path__ + \"assets/ngp-indu.6e035456b4.png\";","export default __webpack_public_path__ + \"assets/ngp-habalv.5679b7ebdf.png\";","export default __webpack_public_path__ + \"assets/ngp-mult.dd975840e9.png\";","export default __webpack_public_path__ + \"assets/ngp-parx.852f0062eb.png\";","export default __webpack_public_path__ + \"assets/ngp-unla.f73e04389b.png\";","export default __webpack_public_path__ + \"assets/ngp-abna.ae7c35486d.png\";","export default __webpack_public_path__ + \"assets/ngp-ingb.e38b5393f2.png\";","export default __webpack_public_path__ + \"assets/ngp-rabo.d987805a17.png\";","export default __webpack_public_path__ + \"assets/ngp-actv.8d22d43142.png\";","export default __webpack_public_path__ + \"assets/ngp-bapa.fc4ad3a13f.png\";","export default __webpack_public_path__ + \"assets/ngp-besc.5b66c1f8db.png\";","export default __webpack_public_path__ + \"assets/ngp-cgdipt.e85207071d.png\";","export default __webpack_public_path__ + \"assets/ngp-tota.458c110062.png\";","export default __webpack_public_path__ + \"assets/ngp-handse.2bb3940a4b.png\";","export default __webpack_public_path__ + \"assets/ngp-sebbco.73a4ed6c6b.png\";","export default __webpack_public_path__ + \"assets/ngp-sebbpr.2e51b5a009.png\";","export default __webpack_public_path__ + \"assets/ngp-swed.f1daab378d.png\";","export default __webpack_public_path__ + \"assets/ngp-aban.c43f7336f0.png\";","export default __webpack_public_path__ + \"assets/ngp-bacxsl.e1a632172f.png\";","export default __webpack_public_path__ + \"assets/ngp-haab.9b7a60e5a8.png\";","export default __webpack_public_path__ + \"assets/ngp-hdel.1c3edfb45a.png\";","export default __webpack_public_path__ + \"assets/ngp-kspk.cbb85365d4.png\";","var map = {\n\t\"./\": 9023,\n\t\"./af\": 38501,\n\t\"./af.js\": 38501,\n\t\"./agq\": 78251,\n\t\"./agq.js\": 78251,\n\t\"./ak\": 97346,\n\t\"./ak.js\": 97346,\n\t\"./am\": 25156,\n\t\"./am.js\": 25156,\n\t\"./ar\": 36857,\n\t\"./ar.js\": 36857,\n\t\"./ars\": 58396,\n\t\"./ars.js\": 58396,\n\t\"./as\": 40426,\n\t\"./as.js\": 40426,\n\t\"./asa\": 75495,\n\t\"./asa.js\": 75495,\n\t\"./ast\": 58124,\n\t\"./ast.js\": 58124,\n\t\"./az\": 92225,\n\t\"./az.js\": 92225,\n\t\"./bas\": 31082,\n\t\"./bas.js\": 31082,\n\t\"./be\": 75275,\n\t\"./be.js\": 75275,\n\t\"./bem\": 92496,\n\t\"./bem.js\": 92496,\n\t\"./bez\": 62517,\n\t\"./bez.js\": 62517,\n\t\"./bg\": 18413,\n\t\"./bg.js\": 18413,\n\t\"./bh\": 784,\n\t\"./bh.js\": 784,\n\t\"./bm\": 98723,\n\t\"./bm.js\": 98723,\n\t\"./bn\": 5254,\n\t\"./bn.js\": 5254,\n\t\"./bo\": 72997,\n\t\"./bo.js\": 72997,\n\t\"./br\": 19442,\n\t\"./br.js\": 19442,\n\t\"./brx\": 93520,\n\t\"./brx.js\": 93520,\n\t\"./bs\": 26721,\n\t\"./bs.js\": 26721,\n\t\"./ca\": 73982,\n\t\"./ca.js\": 73982,\n\t\"./ccp\": 83102,\n\t\"./ccp.js\": 83102,\n\t\"./ce\": 66194,\n\t\"./ce.js\": 66194,\n\t\"./cgg\": 22051,\n\t\"./cgg.js\": 22051,\n\t\"./chr\": 46935,\n\t\"./chr.js\": 46935,\n\t\"./ckb\": 46188,\n\t\"./ckb.js\": 46188,\n\t\"./cs\": 40580,\n\t\"./cs.js\": 40580,\n\t\"./cu\": 19714,\n\t\"./cu.js\": 19714,\n\t\"./cy\": 52006,\n\t\"./cy.js\": 52006,\n\t\"./da\": 28829,\n\t\"./da.js\": 28829,\n\t\"./dav\": 8171,\n\t\"./dav.js\": 8171,\n\t\"./de\": 62401,\n\t\"./de.js\": 62401,\n\t\"./dje\": 24665,\n\t\"./dje.js\": 24665,\n\t\"./dsb\": 24717,\n\t\"./dsb.js\": 24717,\n\t\"./dua\": 36318,\n\t\"./dua.js\": 36318,\n\t\"./dv\": 66616,\n\t\"./dv.js\": 66616,\n\t\"./dyo\": 12564,\n\t\"./dyo.js\": 12564,\n\t\"./dz\": 60604,\n\t\"./dz.js\": 60604,\n\t\"./ebu\": 37406,\n\t\"./ebu.js\": 37406,\n\t\"./ee\": 90392,\n\t\"./ee.js\": 90392,\n\t\"./el\": 37767,\n\t\"./el.js\": 37767,\n\t\"./en\": 46569,\n\t\"./en.js\": 46569,\n\t\"./eo\": 34042,\n\t\"./eo.js\": 34042,\n\t\"./es\": 56414,\n\t\"./es.js\": 56414,\n\t\"./et\": 39071,\n\t\"./et.js\": 39071,\n\t\"./eu\": 20808,\n\t\"./eu.js\": 20808,\n\t\"./ewo\": 73205,\n\t\"./ewo.js\": 73205,\n\t\"./fa\": 90867,\n\t\"./fa.js\": 90867,\n\t\"./ff\": 70826,\n\t\"./ff.js\": 70826,\n\t\"./fi\": 1851,\n\t\"./fi.js\": 1851,\n\t\"./fil\": 87927,\n\t\"./fil.js\": 87927,\n\t\"./fo\": 22625,\n\t\"./fo.js\": 22625,\n\t\"./fr\": 83334,\n\t\"./fr.js\": 83334,\n\t\"./fur\": 45825,\n\t\"./fur.js\": 45825,\n\t\"./fy\": 71179,\n\t\"./fy.js\": 71179,\n\t\"./ga\": 8834,\n\t\"./ga.js\": 8834,\n\t\"./gd\": 28653,\n\t\"./gd.js\": 28653,\n\t\"./gl\": 94629,\n\t\"./gl.js\": 94629,\n\t\"./gsw\": 86451,\n\t\"./gsw.js\": 86451,\n\t\"./gu\": 48862,\n\t\"./gu.js\": 48862,\n\t\"./guw\": 38329,\n\t\"./guw.js\": 38329,\n\t\"./guz\": 28894,\n\t\"./guz.js\": 28894,\n\t\"./gv\": 34011,\n\t\"./gv.js\": 34011,\n\t\"./ha\": 44289,\n\t\"./ha.js\": 44289,\n\t\"./haw\": 32552,\n\t\"./haw.js\": 32552,\n\t\"./he\": 44893,\n\t\"./he.js\": 44893,\n\t\"./hi\": 81977,\n\t\"./hi.js\": 81977,\n\t\"./hr\": 11480,\n\t\"./hr.js\": 11480,\n\t\"./hsb\": 32649,\n\t\"./hsb.js\": 32649,\n\t\"./hu\": 52333,\n\t\"./hu.js\": 52333,\n\t\"./hy\": 67657,\n\t\"./hy.js\": 67657,\n\t\"./ia\": 48984,\n\t\"./ia.js\": 48984,\n\t\"./id\": 38859,\n\t\"./id.js\": 38859,\n\t\"./ig\": 31758,\n\t\"./ig.js\": 31758,\n\t\"./ii\": 64368,\n\t\"./ii.js\": 64368,\n\t\"./in\": 30693,\n\t\"./in.js\": 30693,\n\t\"./index\": 89169,\n\t\"./index.js\": 54524,\n\t\"./io\": 99974,\n\t\"./io.js\": 99974,\n\t\"./is\": 48338,\n\t\"./is.js\": 48338,\n\t\"./it\": 70075,\n\t\"./it.js\": 70075,\n\t\"./iu\": 70548,\n\t\"./iu.js\": 70548,\n\t\"./iw\": 58750,\n\t\"./iw.js\": 58750,\n\t\"./ja\": 67159,\n\t\"./ja.js\": 67159,\n\t\"./jbo\": 77581,\n\t\"./jbo.js\": 77581,\n\t\"./jgo\": 23588,\n\t\"./jgo.js\": 23588,\n\t\"./ji\": 41215,\n\t\"./ji.js\": 41215,\n\t\"./jmc\": 92990,\n\t\"./jmc.js\": 92990,\n\t\"./jv\": 68646,\n\t\"./jv.js\": 68646,\n\t\"./jw\": 99365,\n\t\"./jw.js\": 99365,\n\t\"./ka\": 92422,\n\t\"./ka.js\": 92422,\n\t\"./kab\": 46846,\n\t\"./kab.js\": 46846,\n\t\"./kaj\": 27542,\n\t\"./kaj.js\": 27542,\n\t\"./kam\": 60407,\n\t\"./kam.js\": 60407,\n\t\"./kcg\": 17735,\n\t\"./kcg.js\": 17735,\n\t\"./kde\": 77594,\n\t\"./kde.js\": 77594,\n\t\"./kea\": 55607,\n\t\"./kea.js\": 55607,\n\t\"./khq\": 24018,\n\t\"./khq.js\": 24018,\n\t\"./ki\": 61230,\n\t\"./ki.js\": 61230,\n\t\"./kk\": 97348,\n\t\"./kk.js\": 97348,\n\t\"./kkj\": 59948,\n\t\"./kkj.js\": 59948,\n\t\"./kl\": 44369,\n\t\"./kl.js\": 44369,\n\t\"./kln\": 36343,\n\t\"./kln.js\": 36343,\n\t\"./km\": 76482,\n\t\"./km.js\": 76482,\n\t\"./kn\": 99087,\n\t\"./kn.js\": 99087,\n\t\"./ko\": 64728,\n\t\"./ko.js\": 64728,\n\t\"./kok\": 16895,\n\t\"./kok.js\": 16895,\n\t\"./ks\": 99692,\n\t\"./ks.js\": 99692,\n\t\"./ksb\": 84108,\n\t\"./ksb.js\": 84108,\n\t\"./ksf\": 25536,\n\t\"./ksf.js\": 25536,\n\t\"./ksh\": 15166,\n\t\"./ksh.js\": 15166,\n\t\"./ku\": 62090,\n\t\"./ku.js\": 62090,\n\t\"./kw\": 14944,\n\t\"./kw.js\": 14944,\n\t\"./ky\": 30750,\n\t\"./ky.js\": 30750,\n\t\"./lag\": 30924,\n\t\"./lag.js\": 30924,\n\t\"./lb\": 17372,\n\t\"./lb.js\": 17372,\n\t\"./lg\": 22343,\n\t\"./lg.js\": 22343,\n\t\"./lkt\": 47167,\n\t\"./lkt.js\": 47167,\n\t\"./ln\": 23384,\n\t\"./ln.js\": 23384,\n\t\"./lo\": 70191,\n\t\"./lo.js\": 70191,\n\t\"./lrc\": 53491,\n\t\"./lrc.js\": 53491,\n\t\"./lt\": 32682,\n\t\"./lt.js\": 32682,\n\t\"./lu\": 45465,\n\t\"./lu.js\": 45465,\n\t\"./luo\": 38440,\n\t\"./luo.js\": 38440,\n\t\"./luy\": 55054,\n\t\"./luy.js\": 55054,\n\t\"./lv\": 34464,\n\t\"./lv.js\": 34464,\n\t\"./mas\": 68547,\n\t\"./mas.js\": 68547,\n\t\"./mer\": 23016,\n\t\"./mer.js\": 23016,\n\t\"./mfe\": 8330,\n\t\"./mfe.js\": 8330,\n\t\"./mg\": 79434,\n\t\"./mg.js\": 79434,\n\t\"./mgh\": 30040,\n\t\"./mgh.js\": 30040,\n\t\"./mgo\": 87245,\n\t\"./mgo.js\": 87245,\n\t\"./mi\": 94580,\n\t\"./mi.js\": 94580,\n\t\"./mk\": 82782,\n\t\"./mk.js\": 82782,\n\t\"./ml\": 54047,\n\t\"./ml.js\": 54047,\n\t\"./mn\": 65921,\n\t\"./mn.js\": 65921,\n\t\"./mo\": 95666,\n\t\"./mo.js\": 95666,\n\t\"./mr\": 12197,\n\t\"./mr.js\": 12197,\n\t\"./ms\": 81478,\n\t\"./ms.js\": 81478,\n\t\"./mt\": 52743,\n\t\"./mt.js\": 52743,\n\t\"./mua\": 23137,\n\t\"./mua.js\": 23137,\n\t\"./my\": 64164,\n\t\"./my.js\": 64164,\n\t\"./mzn\": 19875,\n\t\"./mzn.js\": 19875,\n\t\"./nah\": 84371,\n\t\"./nah.js\": 84371,\n\t\"./naq\": 65412,\n\t\"./naq.js\": 65412,\n\t\"./nb\": 89150,\n\t\"./nb.js\": 89150,\n\t\"./nd\": 84680,\n\t\"./nd.js\": 84680,\n\t\"./nds\": 37527,\n\t\"./nds.js\": 37527,\n\t\"./ne\": 95999,\n\t\"./ne.js\": 95999,\n\t\"./nl\": 64288,\n\t\"./nl.js\": 64288,\n\t\"./nmg\": 1150,\n\t\"./nmg.js\": 1150,\n\t\"./nn\": 28330,\n\t\"./nn.js\": 28330,\n\t\"./nnh\": 76728,\n\t\"./nnh.js\": 76728,\n\t\"./no\": 98585,\n\t\"./no.js\": 98585,\n\t\"./nqo\": 48186,\n\t\"./nqo.js\": 48186,\n\t\"./nr\": 62158,\n\t\"./nr.js\": 62158,\n\t\"./nso\": 41852,\n\t\"./nso.js\": 41852,\n\t\"./nus\": 80746,\n\t\"./nus.js\": 80746,\n\t\"./ny\": 52131,\n\t\"./ny.js\": 52131,\n\t\"./nyn\": 42881,\n\t\"./nyn.js\": 42881,\n\t\"./om\": 26654,\n\t\"./om.js\": 26654,\n\t\"./or\": 47655,\n\t\"./or.js\": 47655,\n\t\"./os\": 7152,\n\t\"./os.js\": 7152,\n\t\"./pa\": 57577,\n\t\"./pa.js\": 57577,\n\t\"./pap\": 6517,\n\t\"./pap.js\": 6517,\n\t\"./pl\": 97902,\n\t\"./pl.js\": 97902,\n\t\"./prg\": 97579,\n\t\"./prg.js\": 97579,\n\t\"./ps\": 41335,\n\t\"./ps.js\": 41335,\n\t\"./pt\": 8470,\n\t\"./pt.js\": 8470,\n\t\"./qu\": 39516,\n\t\"./qu.js\": 39516,\n\t\"./rm\": 97587,\n\t\"./rm.js\": 97587,\n\t\"./rn\": 4118,\n\t\"./rn.js\": 4118,\n\t\"./ro\": 96181,\n\t\"./ro.js\": 96181,\n\t\"./rof\": 10883,\n\t\"./rof.js\": 10883,\n\t\"./ru\": 61003,\n\t\"./ru.js\": 61003,\n\t\"./rw\": 3213,\n\t\"./rw.js\": 3213,\n\t\"./rwk\": 82896,\n\t\"./rwk.js\": 82896,\n\t\"./sah\": 82228,\n\t\"./sah.js\": 82228,\n\t\"./saq\": 65475,\n\t\"./saq.js\": 65475,\n\t\"./sbp\": 88219,\n\t\"./sbp.js\": 88219,\n\t\"./sc\": 50820,\n\t\"./sc.js\": 50820,\n\t\"./scn\": 22368,\n\t\"./scn.js\": 22368,\n\t\"./sd\": 90897,\n\t\"./sd.js\": 90897,\n\t\"./sdh\": 45877,\n\t\"./sdh.js\": 45877,\n\t\"./se\": 6658,\n\t\"./se.js\": 6658,\n\t\"./seh\": 29104,\n\t\"./seh.js\": 29104,\n\t\"./ses\": 55041,\n\t\"./ses.js\": 55041,\n\t\"./sg\": 34552,\n\t\"./sg.js\": 34552,\n\t\"./sh\": 64165,\n\t\"./sh.js\": 64165,\n\t\"./shi\": 70482,\n\t\"./shi.js\": 70482,\n\t\"./si\": 62246,\n\t\"./si.js\": 62246,\n\t\"./sk\": 34428,\n\t\"./sk.js\": 34428,\n\t\"./sl\": 90729,\n\t\"./sl.js\": 90729,\n\t\"./sma\": 95479,\n\t\"./sma.js\": 95479,\n\t\"./smi\": 85887,\n\t\"./smi.js\": 85887,\n\t\"./smj\": 27506,\n\t\"./smj.js\": 27506,\n\t\"./smn\": 98270,\n\t\"./smn.js\": 98270,\n\t\"./sms\": 11721,\n\t\"./sms.js\": 11721,\n\t\"./sn\": 39399,\n\t\"./sn.js\": 39399,\n\t\"./so\": 15248,\n\t\"./so.js\": 15248,\n\t\"./sq\": 34750,\n\t\"./sq.js\": 34750,\n\t\"./sr\": 80763,\n\t\"./sr.js\": 80763,\n\t\"./ss\": 32820,\n\t\"./ss.js\": 32820,\n\t\"./ssy\": 6933,\n\t\"./ssy.js\": 6933,\n\t\"./st\": 17889,\n\t\"./st.js\": 17889,\n\t\"./sv\": 40703,\n\t\"./sv.js\": 40703,\n\t\"./sw\": 48616,\n\t\"./sw.js\": 48616,\n\t\"./syr\": 90014,\n\t\"./syr.js\": 90014,\n\t\"./ta\": 85645,\n\t\"./ta.js\": 85645,\n\t\"./te\": 67889,\n\t\"./te.js\": 67889,\n\t\"./teo\": 31776,\n\t\"./teo.js\": 31776,\n\t\"./tg\": 97487,\n\t\"./tg.js\": 97487,\n\t\"./th\": 4550,\n\t\"./th.js\": 4550,\n\t\"./ti\": 35269,\n\t\"./ti.js\": 35269,\n\t\"./tig\": 20780,\n\t\"./tig.js\": 20780,\n\t\"./tk\": 26307,\n\t\"./tk.js\": 26307,\n\t\"./tl\": 48794,\n\t\"./tl.js\": 48794,\n\t\"./tn\": 68944,\n\t\"./tn.js\": 68944,\n\t\"./to\": 75815,\n\t\"./to.js\": 75815,\n\t\"./tr\": 75124,\n\t\"./tr.js\": 75124,\n\t\"./ts\": 74651,\n\t\"./ts.js\": 74651,\n\t\"./tt\": 69266,\n\t\"./tt.js\": 69266,\n\t\"./twq\": 65808,\n\t\"./twq.js\": 65808,\n\t\"./tzm\": 95393,\n\t\"./tzm.js\": 95393,\n\t\"./ug\": 99666,\n\t\"./ug.js\": 99666,\n\t\"./uk\": 16950,\n\t\"./uk.js\": 16950,\n\t\"./ur\": 16045,\n\t\"./ur.js\": 16045,\n\t\"./uz\": 82021,\n\t\"./uz.js\": 82021,\n\t\"./vai\": 33684,\n\t\"./vai.js\": 33684,\n\t\"./ve\": 33031,\n\t\"./ve.js\": 33031,\n\t\"./vi\": 67019,\n\t\"./vi.js\": 67019,\n\t\"./vo\": 48945,\n\t\"./vo.js\": 48945,\n\t\"./vun\": 63125,\n\t\"./vun.js\": 63125,\n\t\"./wa\": 57938,\n\t\"./wa.js\": 57938,\n\t\"./wae\": 62395,\n\t\"./wae.js\": 62395,\n\t\"./wo\": 51020,\n\t\"./wo.js\": 51020,\n\t\"./xh\": 22842,\n\t\"./xh.js\": 22842,\n\t\"./xog\": 98090,\n\t\"./xog.js\": 98090,\n\t\"./yav\": 7436,\n\t\"./yav.js\": 7436,\n\t\"./yi\": 79040,\n\t\"./yi.js\": 79040,\n\t\"./yo\": 10230,\n\t\"./yo.js\": 10230,\n\t\"./yue\": 49825,\n\t\"./yue.js\": 49825,\n\t\"./zgh\": 15649,\n\t\"./zgh.js\": 15649,\n\t\"./zh\": 27896,\n\t\"./zh.js\": 27896,\n\t\"./zu\": 38003,\n\t\"./zu.js\": 38003\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 946;","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_token_io_lib_webpack\"] = self[\"webpackChunk_token_io_lib_webpack\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(30759)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","replaceState","state","type","throwError","error","createReducer","initialState","actionHandlers","arguments","length","undefined","action","hasOwnProperty","flattenObject","obj","_context","prefix","_reduceInstanceProperty","_Object$keys","call","flattened","key","_context2","value","prefixedKey","_concatInstanceProperty","concat","_Object$assign","removeKey","_ref","_context3","_objectWithoutProperties","_mapInstanceProperty","_toPropertyKey","ConnectedIntlProvider","currentLocale","updatedMessages","children","_useState","useState","_useState2","_slicedToArray","messages","setMessages","_useState3","_useState4","locale","setLocale","useEffect","React","IntlProvider","propTypes","PropTypes","isRequired","options","connect","_ref2","customTranslations","defaultMessages","_sliceInstanceProperty","getLocale","defaultLocale","getCustomTranslations","getLocalesData","_i","_Object$entries","_Object$entries2","_context4","_Object$entries$_i","_key$split$filter","_filterInstanceProperty","split","Boolean","_key$split$filter2","_toArray","localeKey","rest","getUpdatedMessages","ErrorBoundary","_Component","_classCallCheck","_callSuper","_inherits","_createClass","info","this","setState","hasError","props","Component","mapDispatchToProps","createThunkMiddleware","getServices","dispatch","getState","next","App","pathValue","window","location","pathname","_setUpSentry","_addLocaleData","_this$options$i18n","_this$options$i18n$lo","i18n","locales","_forEachInstanceProperty","addLocaleData","require","path","paths","push","defaultAction","route","component","routes","_renderApp","_handlePath","_createStore","_executePath","root","render","Provider","store","_App","document","getElementById","rootId","_this","sentry","init","dsn","environment","env","release","beforeSend","event","_this$options$sentry$","_this$options$sentry","_this$_getPersistedSt","_this$options$store$a","_this$options$store","_this2","composeEnhancers","compose","devToolsEnabled","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","stateRedactor","stateSanitizer","errorHandler","persistedState","_getPersistedState","createStore","reducer","applyMiddleware","apply","_toConsumableArray","console","history","_ref3","result","_typeof","ignore","replace","step","pushState","back","data","_excluded","redacted","redact","addBreadcrumb","category","message","captureException","extra","reduxState","middlewares","afterCreate","onpopstate","_this2$options$histor","onPopState","subscribe","_saveState","_this3","_step","_iterator","_createForOfIteratorHelper","_ret","_loop","_step$value","test","restoreState","_options$beforeLoad","_retrieve","beforeLoad","v","s","n","done","err","f","_executePath2","_asyncToGenerator","_regeneratorRuntime","_callee","prev","abrupt","t0","stop","_this$options$store$b","_this$options$store2","beforeSave","useSessionStorage","sessionStorage","localStorage","setItem","_JSON$stringify","warn","storage","JSON","parse","getItem","TokenException","intlValues","intlKey","name","ReduxService","selectors","_bindInstanceProperty","acc","service","_objectSpread","_defineProperty","selector","mapStateToProps","mergeProps","mapDispatch","wrappedMapState","ownProps","wrapMapStateToProps","safeMapDispatch","isFunction","actions","dispatched","k","_args","_context5","wrapObject","injectIntl","reduxConnect","_context6","combineReducers","appReducer","browserEnv","BROWSER_ENV","TOKEN_WEB_APP_IFRAME_NAME","LS_VERSION","localStorageVersion","TOKEN_ENV","tokenEnv","hotModule","gitSha","webAppUrl","tokenRootUrl","sdkErrorLoggingEnabled","sendErrorReports","appNotificationInterval","sendTraceSpans","timeouts","appNotificationTimeout","decoupleAuthorizationInterval","decoupleAuthorizationTimeout","tokenRequestResultInterval","tokenRequestResultTimeout","defaultColors","defaultAppName","TOKEN_PROVIDER","CUSTOM_TPP_FEATURES","REQUEST_TYPE","EXTERNAL_TOKEN_REQUEST_STATUS","WEB_APP_EVENTS","WEB_APP_INITIALIZED","WEB_APP_BANK_SELECTED","WEB_APP_CONSENT_ACCEPTED","WEB_APP_CONSENT_DECLINED","WEB_APP_BANK_CALLBACK","WEB_APP_RETURN_TO_TPP_SUCCESS","WEB_APP_RETURN_TO_TPP_FAILURE","WEB_APP_CREDENTIALS_REQUIRED","WEB_APP_CREDENTIALS_CAPTURED","WEB_APP_USER_REDIRECTED_TO_BANK","WEB_APP_PAYMENT_CONFIRMATION_DISPLAYED","INTERNAL_TOKEN_REQUEST_STATUS","PROCESSED","REJECTED","PROCESSED_NO_CALLBACK","PENDING_WEB_APP_INVOKED","PENDING_WEB_APP_BANK_SELECTED","PENDING_WEB_APP_CONSENT_ACCEPTED","PENDING_WEB_APP_CONSENT_DECLINED","PROCESSED_COMPLETED_PAYMENT_CONFIRMATION_PAGE_DISPLAYED","PROCESSED_FAILED_PAYMENT_ERROR_PAGE_DISPLAYED","PENDING_CONSENT_SENT_TO_BANK","PROCESSING_CONSENT_ACCEPTED_BY_BANK","PROCESSING_CALLBACK_INITIATED_BY_TPP","PENDING_REDIRECT_URL_SENT","PENDING_WEB_APP_SENT_USER_TO_BANK","PENDING_TOKEN_CREATED_NOT_AUTHORIZED","PENDING_CREDENTIALS_REQUIRED","PENDING_FURTHER_CREDENTIALS_REQUIRED_1","PENDING_FURTHER_CREDENTIALS_REQUIRED_2","INTERNAL_TOKEN_REQUEST_STATUS_MAP","INTERNAL_TOKEN_REQUEST_STATUS_REASON","_INTERNAL_TOKEN_REQUE2","PENDING_CREDENTIALS_TOKEN_REQUEST_STATUS","INIT_BANK_AUTH_STATUS","CREDENTIAL_FIELD_TYPE","TPP_INTEGRATION_ADDRESS","tppIntegrationUrl","TOKEN_API_ADDRESS","tokenApiUrl","TOKEN_REQUEST_PATH","GET_BANK_STATUS","VRP_REQUEST_PATH","REDACTED_VALUE","DEFAULT_DEV_KEY","TOKEN_TYPE_TRANSFER","TOKEN_TYPE_VRP","TOKEN_TYPE_ACCESS","TOKEN_TYPE_STANDING_ORDER","TOKEN_TYPE_BULK_TRANSFER","ROUTE_CONFIG","ROUTE_LOADING","ROUTE_ERROR","ROUTE_AISP","ROUTE_PISP","ROUTE_VRP","ROUTE_BANK_LOADING","ROUTE_BANK_REDIRECT","ROUTE_REDIRECT_TO_TPP","ROUTE_REDIRECT_OPTIONS","ROUTE_CSRF_MISMATCH","POPUP_SUCCESS","POPUP_FAILURE","TOKEN_BANK_POPUP_IS_OPEN","TOKEN_BANK_POPUP_CLOSE","AISP_CONSENT_BANK_FIRST","AISP_ENTER_ALIAS","AISP_APP_INSTALL","AISP_CONFIRM_FUNDS_CONSENT_BANK_FIRST","AISP_SELECT_BANK_BANK_FIRST","AISP_CAPTURE_CREDENTIALS","ROUTE_TERMS_CONDITIONS","PISP_BULK_TRANSFER_CONSENT_BANK_FIRST","PISP_ENTER_ALIAS","PISP_APP_INSTALL","PISP_TRANSFER_OVERVIEW","PISP_CONSENT_BANK_FIRST","PISP_STANDING_ORDER_CONSENT_BANK_FIRST","PISP_SELECT_BANK_BANK_FIRST","PISP_PAYMENT_INIT_STATUS","PISP_CAPTURE_CREDENTIALS","VRP_CONSENT_BANK_FIRST","VRP_SELECT_BANK_FIRST","VRP_CONSENT_INIT_STATUS","LOADING_STEP","SPLASH_STEP","TPP_LOADING","APP_APPROVAL","regexp","CREDITOR_ADDRESS","CREDITOR_ADDRESS_FIELD","RETURN_REFUND_CLASS","BANK_OUTAGE","REGEXP_BLOCK_USER_ON_PATHS","match","REGEXP_EXTRACT_TOKEN_REQUEST_ID","REGEXP_DIRECT_CREDENTIALS_FLOW","STEPS_WITHOUT_LOGO","ROUTES_WITHOUT_BACK_BUTTON","STEPS_WITHOUT_BACK_BUTTON","AISP_GUEST_UNSUPPORTED","BANKS_WITHOUT_SUBTITLE","languages","months","TYPE_2_ALIAS","banksWithBranches","Sparkasse","Volksbank","ALIAS_COUNTRY_LIST","uitst","REGIONS","gb","eu","schemes","sepa","fasterPayments","elixir","swift","sepaInstant","euDomesticNonEuro","successfulVrpStatusCodes","unsuccessfulVrpStatusCodes","pendingVrpStatusCodes","processedVrpStatusCodes","unsuccessfulStatusCodes","successfulStatusCodes","submittedStatusCodes","errorMessageKeys","DEFAULT","ACCESS_DENIED","PERMISSION_DENIED","FAILURE_GENERIC","POLISH_API_DELIVER_MODES","STANDARD_D2","STANDARD_D1","URGENT_D1","EXPRESS_D0","INTERNAL_TRANSFER_STATUS_GROUPS","UNSUCCESSFUL","INSUFFICIENT_FUNDS","VRP_CONSENT_STATUS","PAYMENT_TYPE_GET_BANKS_OPTIONS","BANK_SELECTION_PRESETS","CUSTOM_HEADERS","TRANSIENT","INITIATED_BY","MEMBER_ID","INTL_EXCEPTION_REQUEST_FAILED","INTL_EXCEPTION_APP_NOTIFICATION_TIMEOUT","INTL_EXCEPTION_NO_LINKED_ACCOUNTS","INTL_EXCEPTION_WEB_CRYPTO","INTL_EXCEPTION_INDEXED_DB","INTL_EXCEPTION_LOCALSTORAGE","EXCEPTION_TOKEN_REQUEST_STATUS_EXTERNAL","redirectBack","EXPIRED","EXCEPTION_TOKEN_REQUEST_RESTRICTED","intlTitleKey","EXCEPTION_SERVICE_TEMPORARILY_UNAVAILABLE","EXCEPTION_TOKEN_REQUEST_STATUS_INTERNAL","ignoreIfSameSession","EXCEPTION_VRP_REQUEST","EXCEPTION_NO_DESTINATION","EXCEPTION_BANK_FLOW_FAILURE","EXCEPTION_INVALID_PATH","EXCEPTION_UPDATE_VRP_CONSENT_BANK","EXCEPTION_INITIATE_BANK_AUTH","EXCEPTION_ACCESS_DENIED","isNull","generateNonce","Math","random","toString","substring","_len","fns","Array","_key","x","keyDefaults","fetchPagingKey","fetchDataKey","idKey","titleKey","dataKey","extraKey","formatDataList","source","customFormat","paging","page","perPage","pageCount","formatFunction","item","rawData","formattedData","title","getUserAgent","UAParser","getResult","os","version","browser","getAriaLabelForList","listClass","_includesInstanceProperty","join","developerKeys","yodlee1234","icefire","xcordis123","virtusa123","sbsi123","paymentworld123","finacle123","creditagricole123","cardlytics123","swipppay123","caxton123","thehouseshop123","squirrel123","fairfx123","elephant123","jeton9678","aptap1432","mastercard","volantetest","couttstest","cma9test","sturents","thinkmoney","centrefordentistry","anpost","sbhr","vertbase","saltedge","toshl","blackpepper","elavon","ghana","binarapps","smartym","straal","sumup","etherbank","infosys","airwallex","soldo","coop","northmill","mandatoryFieldsConfig","transfer","creditorName","debtorName","debtorAccount","debtorBic","creditorAddress","stet","creditorAgent","polishApi","deliveryMode","bban","standingOrder","access","iban","currency","set","get","remove","removeItem","clear","overallCredentials","flickerCode","decoupledFlow","staticImages","captureCredentials","psuMessages","fieldType","customConsentText","defaultRefundText","destinations","supportedPaymentNetworks","destination","filtered","schemeConfig","paymentNetwork","camelToSnakeCase","_Set","isNullOrUndefined","configurations","featureKey","defaultValue","_configurations2","_configurations3","_configurations4","_configurations5","featureKeySplit","configKey","_configurations","shift","prototype","currentTokenReqId","getTokenReqIdFromURL","oldTokenRequestId","sessionStorageWrapper","blockUserOnURLPaths","_window$location$href","href","dkFromURL","getURLParameter","dkFromSession","getDevKeyFromSession","isDirectCredsFlow","REGEXPS","entity","_entity$regexp","blockUserOnPath","curr","isPropertiesNullOrEmpty","find","attr","_someInstanceProperty","_Object$values","el","mandatoryFields","requiredMandatoryFields","_mandatoryFields$inst","_mandatoryFields$inst2","_creditorAcc$customer","_creditorAcc$customer2","_mandatoryFields$stet","_mandatoryFields$stet2","_mandatoryFields$inst3","_mandatoryFields$inst4","_mandatoryFields$inst5","_mandatoryFields$inst6","_mandatoryFields$inst7","_mandatoryFields$inst8","_requiredMandatoryFie","_mandatoryConfig$type","_mandatoryFields$inst9","_mandatoryFields$inst0","_mandatoryFields$inst1","_mandatoryFields$inst10","_requiredMandatoryFie2","_mandatoryConfig$type2","_requiredMandatoryFie3","_mandatoryConfig$type3","_requiredMandatoryFie4","_mandatoryConfig$type4","_mandatoryConfig$type5","_requiredMandatoryFie5","_mandatoryConfig$type6","_mandatoryConfig$type7","_requiredMandatoryFie6","_mandatoryConfig$type8","_mandatoryFields$sour","_requiredMandatoryFie7","_mandatoryConfig$type9","creditorAcc","instructions","transferDestinations","creditorLegalNames","customerData","legalNames","stetMetadata","beneficiary","sourceBIC","bic","account","fields","mandatoryConfig","polishApiMetadata","accountIdentifier","isMobile","uaParser","device","isPopup","opener","isContextIframe","frames","getWebappContext","context","self","top","isAnyIframe","validateBrowserCompatibility","localStorageWrapper","crypto","msCrypto","indexedDB","poll","fn","interval","timeout","timeoutException","cancelled","cancelledCb","startTime","Date","getTime","sent","_Promise","_setTimeout","_x","_x2","_x3","_x4","_x5","_x6","pollUntil","_callee3","validate","failOnReject","_executePoll","executePoll","_ref4","_callee2","reject","currentTime","_x8","_x9","_x7","getUserDeviceMetadata","ua","application","applicationVersion","formatCurrency","_parseFloat","toFixed","style","extractDateFromISO","isoDate","_context1","_context10","_context11","_context12","date","year","getFullYear","month","_padStartInstanceProperty","String","getMonth","day","getDate","formattedDate","formatDate","_context13","_context14","_context15","str","flagFromCountryCode","country","offset","_codePointAtInstanceProperty","_String$fromCodePoint","formatCountries","_context16","_context18","_context19","countries","formatMessage","_Map","countryCode","msg","_context17","toLowerCase","defaultMessage","_sortInstanceProperty","r","formatCountry","_context20","formatCountriesPhone","c","_context21","iso2","toUpperCase","dialCode","normalizeMoney","amount","Number","transformAccounts","accounts","formatNumber","a","balance","current","mapAccount","findId","list","lastVal","getHashValue","hash","search","addCustomCss","tokenRequestId","requestType","memberInfo","_context32","queryParams","memberId","realmId","subTppId","url","getAttribute","createElement","setAttribute","addEventListener","head","append","removeCustomCss","argbToRgba","argb","syncLocalStorageVersion","copyToClipboard","element","classList","add","select","execCommand","copyOnClipboard","refId","textArea","body","appendChild","getBankRawData","banks","bank","formatBankBranchData","bankName","banksData","identifier","filterDestinationAccount","destinationAccount","_context33","_context34","accountSchemes","scheme","formatAccountFields","_context35","_context36","_context37","buildPathReqEx","flags","RegExp","formatAsKeyValuePair","arr","i","getDestinationPaymentRail","paymentMethods","supportedTransferDestinationTypes","internationalPaymentMethods","internationalPaymentMethodsBanks","hasEnoughSupportedTypes","hasInternationalPaymentMethod","_everyInstanceProperty","method","isInternationalPaymentMethodUsed","getBankDoesRequireDebtorAccount","tokenType","paymentRail","_bank$mandatoryFields","_bank$mandatoryFields2","_bank$mandatoryFields3","_bank$mandatoryFields4","_bank$mandatoryFields5","_bank$mandatoryFields6","_bank$mandatoryFields7","_bank$mandatoryFields8","paymentCategory","_mandatoryConfig$stan","_mandatoryConfig$tran","getDeveloperId","customDevKey","deepTrim","_context41","_Array$isArray","_obj$key","_trimInstanceProperty","removeEmpty","prop","_Object$keys3","getLocalTppConfig","_ref8","_callee7","params","response","_context43","axios","headers","_x13","_x14","_x15","deepMergeObjects","target","getDeviceId","deviceId","uuidv4","sanitizeHTML","html","_html$replace","withImageTag","DOMPurify","sanitize","ALLOWED_TAGS","ALLOWED_ATTR","convertToReadableDate","toLocaleDateString","weekday","letter","hideConsentText","_customConsentText$tr","keyExists","_Object$keys4","setHtmlLanguageAttribute","documentElement","navigator","language","userLanguage","createRoute","previous","SET_TOKEN_TYPE","SET_LOCALE","steps","SET_CURRENT_ROUTE","THROW_ERROR","ADD_STEP","isTokenError","_action$error$options","_action$error$options2","SET_ERROR_MESSAGE","errorMessage","CLEAR_ERROR_MESSAGE","SET_ERROR_SOURCE","TERMINATE_FLOW","csrfMismatch","redirectUrl","SET_BROWSER_REDIRECT_URL","clearSelectedBank","selectedBank","selectedBankInfo","defaultBanklist","recentBanks","SET_COUNTRIES","SET_BANKS","ADD_BANKS","CLEAR_BANKS","SET_SELECTED_BANK","CLEAR_SELECTED_BANK","SET_SELECTED_BANK_INFO","bankInfo","CLEAR_BANK_STATUS","bankStatus","SET_BANK_STATUS","isLive","SET_TOP_BANKS","topBanks","CLEAR_TOP_BANKS","SET_RECENT_BANKS","SET_BANKS_WITH_SUB_BRANCHES","status","CLEAR_BANKS_WITH_SUB_BRANCHES","SET_SUB_BRANCHES","banksBranchList","branchList","ADD_SUB_BRANCHES","CLEAR_SUB_BRANCHES","isRedirect","SET_REDIRECT","oneStepSupport","SET_ONE_STEP_SUPPORT","defaultCountry","SET_DEFAULT_COUNTRY","selectedCountry","SET_SELECTED_COUNTRY","_action$selectedCount","SET_CUSTOM_DEV_KEY","_action$devKey","devKey","fadeOutProp","SET_DISPLAY_FADE_OUT_ANIMATION","isTransfer","isAisp","isVrp","isStandingOrder","isBulkTransfer","getCountries","getBanks","getIsRedirect","getTokenType","getSelectedBank","getSelectedBankId","_getState$banks$selec","getSelectedBankName","_getState$banks$selec2","getSelectedCountry","getSelectedBankInfo","supportsGuestCheckout","_getState$banks$selec3","supportsAisGuestCheckout","_getState$banks$selec4","getBankStatus","getRoute","getCurrentRoute","getSteps","getPreviousStep","getCurrentStep","getPreviousHistoryStep","getCurrentHistoryStep","_context7","getError","getErrorMessage","getBrowserRedirectUrl","getDoesBankSupportOneStep","getTopBanks","getRecentBanks","getDefaultCountry","getCustomDevKey","getFadeOutProp","getBanksWithBranches","getBanksBranchList","getErrorSource","getRedactedState","members","ADD_MEMBER","member","CLEAR_MEMBERS","SET_TEMP_MEMBER","tempMember","SET_ALIAS","alias","clearAccounts","selectedAccountIds","SET_ACCOUNTS","SET_SELECTED_ACCOUNT_IDS","accountIds","ADD_SELECTED_ACCOUNT_ID","accountId","getPairedMembers","getSelectedAccountIds","getMemberAccounts","getTempMember","getAlias","hasAlias","hasTempMember","hasPairedMembers","getFirstPairedMember","getSelectedAccounts","getBankMemberAccounts","bankId","getFirstAccount","getAccount","customization","SET_CUSTOMIZATION_ID","tpp","tppAlias","actingAs","profile","SET_PROFILE","SET_RESELLER_PROFILE","resellerProfile","SET_HIDE_CONSENT","hideConsent","SET_TPP_SOURCE","tppSource","SET_USE_BANK_REDIRECTION_SCREEN","useBankRedirectionScreen","SET_TPP_REDIRECT_URL","SET_TPP_CONFIGURATIONS","bankSelectionPreset","featureConfig","SET_TPP_OVERALL_TRANSLATIONS","translations","SET_TPP_RETURN_DATA","tppReturnData","SET_TPP_REQUESTED_INFO","properties","request","SET_TOKEN_REQUEST_ID","SET_TOKEN_REQUEST_OPTIONS","tokenRequestOptions","SET_REDIRECT_URL","SET_REDIRECT_STATE","redirectState","SET_TOKEN_REQUEST_SIGNATURE","tokenRequestSignature","signature","SET_DESTINATION_COUNTRY","destinationCountry","SET_DESCRIPTION","description","SET_REQUEST_COUNTRIES","SET_TOKEN_EXPIRATION","tokenExpiration","SET_LINKING_REQUEST_ID","linkingRequestId","SET_AUTH_REQUEST_ID","authRequestId","SET_USE_CREDENTIAL_FLOW","useCredentialFlow","SET_TOKEN_PAYLOAD","payload","tokenPayload","defaults","SET_DEFAULT_BANK_ID","defaultBankId","SET_DEFAULT_ALIAS","defaultAlias","getRequestPayload","getRequestId","getRequestOptions","getUseCredentialFlow","getRequestRedirectUrl","getRequestRedirectState","getDestinationCountry","getDescription","getRequestCountries","getTokenExpiration","getLinkingRequestId","hasCustomization","hasCustomColors","getFeatureFromTppConfig","getTppAlias","getTppProfile","getTppActingAs","getRealmIdFromMemberInfo","_getState$tpp$propert3","getTppMemberAndRealmId","_getState$tpp$propert","_getState$tpp$alias","_getState$tpp$propert2","_getState$tpp","_getState$tpp$profile","isSourceApp","isSourceWebapp","getTppRedirectUrl","isTppRedirectError","_getState$tpp$redirec","getHideConsent","getDefaultBankId","getDefaultAlias","isIOSType2Flow","getTppReturnData","getAuthRequestId","getTokenRequestSignature","getTppConfigurations","getOverallRegionalConfigurations","_getState$tpp$configu","regionalConfigurations","getTppFeature","feature","hasTppFeatures","getResellerName","_getState$tpp$reselle","tppName","isSubTpp","_getState$tpp$propert4","subTppRefId","email","executionDate","setTransferDestinationsUrl","remittanceReference","confirmFunds","returnRefundAccount","SET_DESTINATION_ACCOUNT","SET_PAYMENT_ACCOUNT","sourceAccountId","CLEAR_PAYMENT_ACCOUNT","SET_RECEIPT_EMAIL","receiptEmail","CLEAR_INSTRUCTIONS_SOURCE","SET_INSTRUCTIONS_SOURCE_IBAN","_action$source","_action$source$iban","_action$source2","_action$source2$bic","_state$instructions","ibanValue","bicValue","SET_MANDATORY_TRANSFER_FIELDS","_action$transfer","_action$transfer$inst","_action$transfer$inst2","_action$transfer$inst3","_action$transfer2","_action$transfer2$ins","_action$transfer2$ins2","_action$transfer2$ins3","_action$transfer2$ins4","_action$transfer3","_action$transfer3$ins","_action$transfer3$ins2","_action$transfer3$ins3","_action$transfer3$ins4","_action$transfer4","_action$transfer4$ins","_action$transfer4$ins2","_action$transfer4$ins3","_action$transfer5","_action$transfer5$ins","_action$transfer5$ins2","_state$instructions2","_state$instructions3","_state$instructions3$","_state$instructions4","_state$instructions4$","_state$instructions5","_state$instructions5$","_state$instructions6","_state$instructions6$","_state$instructions7","_state$instructions7$","_state$instructions7$2","_state$instructions8","_state$instructions8$","_state$destinations","_state$destinations2","_state$destinations2$","_state$destinations3","debtorLegalNames","beneficiaryLegalNames","beneficiaryAddress","address","SET_MANDATORY_STET_TRANSFER_METADATA","_state$instructions9","_state$instructions0","_state$instructions0$","stetTransferMetadata","metadata","providerTransferMetadata","SET_MANDATORY_POLISH_API_TRANSFER_METADATA","_state$instructions1","_state$instructions10","_state$instructions11","polishApiTransferMetadata","resources","SET_MANDATORY_ACCESS_FIELDS","frequency","startDate","endDate","_action$source3","_action$source3$iban","_action$source4","_action$source4$bic","_state$instructions12","SET_MANDATORY_STANDING_ORDER_FIELDS","_action$transfer6","_action$transfer6$ins","_action$transfer6$ins2","_action$transfer6$ins3","_action$transfer7","_action$transfer7$ins","_action$transfer7$ins2","_action$transfer7$ins3","_action$transfer7$ins4","_action$transfer8","_action$transfer8$ins","_action$transfer8$ins2","_action$transfer8$ins3","_action$transfer9","_action$transfer9$ins","_action$transfer9$ins2","_action$transfer9$ins3","_action$transfer9$ins4","_state$instructions13","_state$instructions14","_state$instructions15","_state$instructions16","_state$instructions17","_state$instructions18","_state$instructions19","_state$instructions20","_state$instructions21","_state$instructions22","_state$instructions23","_state$instructions24","_state$destinations4","_state$destinations5","_state$destinations5$","_state$destinations6","SET_MANDATORY_STET_STANDING_ORDER_METADATA","_state$instructions25","_state$instructions26","_state$instructions27","stetStandingOrderMetadata","providerStandingOrderMetadata","SET_MANDATORY_POLISH_API_STANDING_ORDER_METADATA","_state$instructions28","_state$instructions29","_state$instructions30","polishApiStandingOrderMetaData","bulkTransfer","totalAmount","transfers","_action$source5","_action$source5$iban","_action$source6","vrp","SET_VRP_LOCAL_INSTRUMENT","localInstrument","token","SET_REF_ID","SET_RESOLVED_PAYLOAD","resolvedPayload","SET_BANK_REDIRECT_URL","bankRedirectUrl","SET_TOKEN_ID","tokenId","SET_CREDENTIALS","credentials","SET_INIT_BANK_AUTH_STATUS","initiateBankAuthStatus","SET_TOKEN_TRACE_ID","traceId","getRefId","getTokenId","getResolvedPayload","getBankRedirectUrl","getSourceAccountId","getAmount","getCurrency","getRemittanceReference","getReturnRefundAccountFlag","getDestinations","getTransferTypeDestinations","getSupportedPaymentNetworks","getInstructions","getCafFlag","getDefaultIban","receiptRequested","getReceiptEmail","getExecutionDate","getSetTransferDestinationsUrl","getResources","getResourceTypeList","getStandingOrderAmount","getStandingOrderCurrency","getStandingOrderFrequency","getStandingOrderStartDate","getStandingOrderEndDate","getStandingOrderRemittanceReference","getStandingOrderReturnRefundAccountFlag","getStandingOrderDestinations","getStandingOrderInstructions","getAccountNumber","consent","accountNumber","getBulkTransferAmount","getBulkTransferCurrency","getBulkTransferSource","getBulkTransfers","getCredentials","getBankAuthStatus","getTraceId","SET_VRP_ID","vrpId","SET_VRP_REF_ID","vrpRefId","consentDetails","SET_VRP_CURRENCY","SET_VRP_STATUS","SET_VRP_DEBTOR_INFO","debtorInfo","SET_VRP_CREDITOR_INFO","creditorInfo","SET_VRP_PERIODIC_LIMITS","periodicLimits","SET_VRP_EXPIRATION_DATE","expirationDate","SET_PISP_CONSENT_ACCEPTED","flag","pispConsentAccepted","SET_VRP_DESCRIPTION","SET_MAX_AMOUNT","maxIndividualAmount","getVrpRequestId","getVrpRefId","getStatus","getPeriodicLimits","getMaxIndividualAmount","getCreditorBankName","getDebtorInfo","getCreditorInfo","getLocalInstrument","getExpirationDate","getVrpCurrency","getPispConsentAccepted","shared","user","tokenRequest","reduxService","getRootReducer","getConnect","getSanitizedState","changeRoute","setStep","nextStep","currentStep","sharedService","replaceStepsCurrent","addStep","backOrGoTo","create","baseURL","Pragma","Expires","tokenRequestService","_tokenRequestService$","_event","TppIntegrationClient","resourceId","eventType","t1","internalStatus","extraData","isTokenRequest","promises","storeWebappEvent","TOKEN_REQUEST_ID","statusReasonInformation","group","TOKEN","appNotificationId","cancelTokenRequest","invalidateNotificationRequest","_formatResources","webAppClient","origin","setTempMember","getTokenClient","TokenClient","developerKey","getInstantDevKey","loggingEnabled","customResponseInterceptor","onFulfilled","_res$headers","_res$config","res","config","onRejected","_err$response","_err$response$headers","_err$response2","setCustomHeaders","Token","saveBankToLocalStorage","getBankFromLocalStorage","getTppConfigurationsForVrp","vrpConsentId","aliases","realm","_aliases","_aliases$filter","tppConfigurations","verified","unverified","val","log","declineVrpConsent","updateVrpRequest","updateOptions","bank_id","vrp_consent_id","pisp_consent_accepted","vrpConsent","_ref5","_callee4","productType","resp","_replaceAllInstanceProperty","fetchVrpConsent","_ref6","_callee5","_context8","fetchTokenRequest","_ref7","_callee6","_context9","fetchProfilePicture","profilePicture","imgData","_context0","getProfilePicture","_x0","_x1","setMemberReceiptEmail","_ref9","_callee8","setReceiptContact","_x10","_x11","getMemberProfileById","_ref0","_callee9","utilMember","getProfileName","_x12","replaceExistingAccessToken","_ref1","_callee0","aispAlias","aispMember","existingToken","_yield$member$replace","resolveAlias","getActiveAccessToken","replaceAccessToken","_x16","pollForTokenRequestResult","_ref10","_callee10","notificationId","tppMemberId","addInvalidateNotificationOnClose","_callee1","fetchTokenRequestResultWithStatus","removeInvalidateNotificationOnClose","finish","_x17","_x18","_x19","cancelPollForTokenRequestResult","_ref12","_callee11","invalidateNotification","_ref13","_callee12","getBlockingInvalidateNotificationFunction","_x20","removeEventListener","addCancelTokenOnClose","_ref14","_callee13","clientMember","cancelToken","getBlockingCancelTokenFunction","_x21","_x22","removeCancelTokenOnClose","createTemporaryMember","_ref15","_callee14","_x23","updateMember","_ref16","_callee15","cryptoEngine","update","signer","updateSignature","operations","addKey","publicKey","Util","strKey","level","algorithm","expiresAtMs","createSigner","getKeyId","signJson","t2","keyId","_x24","_x25","_x26","createTempMember","_ref17","_callee16","engine","generateKey","getMember","setMiscHeaders","_x27","_x28","_x29","_ref19","_callee17","_ref18","userService","MemoryCryptoEngine","_x30","_x31","getTempMemberLS","_ref21","_callee18","_ref20","BrowserCryptoEngine","_x32","_x33","getAndValidateAccounts","withBalance","_ref22","_callee20","_context23","getAccounts","clearMembers","logoutFromLocalStorage","BANK_NAME","_ref23","_callee19","_context22","getBalance","t3","_x35","_x34","fetchCustomerTrackingMetadata","_ref24","_callee21","_ipAddress","ipAddress","_context24","userAgent","_ref25","_callee22","_context25","_x36","_x37","getDirectBankAuthUrl","_ref26","_callee23","_context26","BANK_ID","_x38","_x39","updateTokenRequest","_ref27","_callee24","_ref28","from","_args24","_context27","fromMemberId","_x40","triggerCreateAndEndorseTokenNotification","_ref29","_callee25","deviceMetadata","receiptContact","_context28","contact","_x41","_x42","_x43","_x44","initBankAuth","_ref30","_callee26","initBankAuthRequest","_context29","_x45","initiateBankAuthorization","_ref32","_callee27","_ref31","requestId","developerId","tokenRedirectUrl","customRedirectURL","_e$response","_context30","terminateFlow","_x46","_x47","AccessTokenHelper","formatResources","resourceList","unflattened","unpackResources","fundsConfirmation","setResources","builder","forAccount","forAccountBalance","transactions","forAccountTransactions","forAccountTransferDestinations","forAccountFundsConfirmation","standingOrders","forAccountStandingOrders","setAispTokenType","initiateAispFlow","loginFromLocalStorage","setCountriesList","acceptTermsBankFirstFlow","tokenService","isDefaultBank","_yield$dispatch","defaultBank","yieldBanks","ids","setBankAndProceedToConsent","setBank","requestAccess","isSelectedBankLive","isBankLive","setBankStatus","backToBankSelector","setTokenRequestStatus","requestStatus","setRecentBank","setOneStepSupport","proceedToBank","noApp","supportsCheckoutFlowV2","redirectToBankV2","supportsAppless","redirectToBank","clearBank","clearInstructionsSource","localStorageBank","guest","defaultAliasValue","provider","initiateBankAuthFlow","setBankInfo","getBankInfo","t4","t5","setLinkingRequestId","storeLinkingRequest","t6","t7","t8","t9","t10","t11","validateAlias","accessTokenBuilder","_yield$member$endorse","createAccessTokenBuilderFromTokenRequest","execute","_indexOfInstanceProperty","endorseToken","completeFlow","completeFlowFromApp","firstAlias","showBankRedirectionScreen","bankLinkingUri","encodeURIComponent","setupBankRedirectUrl","applessAisp","accessToken","customerTrackingMetadata","addCustomerTrackingMetadata","linkAccounts","createAccessTokenBuilder","setTokenRequestId","setToAlias","setActingAs","setDescription","setExpiresAtMs","setTransferTokenType","setStandingOrderTokenType","setBulkTransferTokenType","setDestinations","setAccounts","setReceiptEmail","setInstructionsSourceIban","setTokenRequestSignature","initiatePispFlow","fetchTransferDestinationUrl","destinationUrl","callBacktUrl","queryString","doesTppSupportRecentBanks","isFirstRecentBankSelected","_yield$dispatch2","_banks","_defaultBank","isFirstRecentBank","goToTransferOverview","_tokenService$getDest","_yield$dispatch3","requestPayload","_requestPayload$trans","getTokenRequest","transferBody","fetchBankBranches","removeCheckForTokenReqRejection","requestPayment","requiresOneStepPayment","oneStepTransfer","prepareGuestTransfer","clearBankAndBack","pispTransferOverview","_policy$singleSignatu","_policy$singleSignatu2","appCallbackUrl","_yield$member$prepare","policy","createTransferTokenBuilderFromTokenRequest","setAccountId","buildPayload","getAppCallbackUrl","prepareToken","singleSignature","keyLevel","signTokenPayload","createToken","_policy$singleSignatu3","_policy$singleSignatu4","_yield$member$prepare2","urlParams","_policy$singleSignatu5","_policy$singleSignatu6","_policy$singleSignatu7","_policy$singleSignatu8","_member","createStandingOrderTokenBuilderFromTokenRequest","createBulkTransferTokenBuilderFromTokenRequest","_URL","authorizationUrl","_URLSearchParams","setAuthRequestId","setResolvedPayload","transferId","transferStatus","_yield$member$prepare3","_member2","_tokenRequestSignature","setTokenId","signTokenRequestState","redeemStandingOrderToken","redeemBulkTransferToken","redeemToken","authorizationDetails","_tokenService$getInst","_tokenService$getInst2","_tokenService$getInst3","returnRefundAccountFlag","pispAlias","createTransferTokenBuilder","setRefId","setReceiptRequested","addDestinations","addTransferDestinations","setExecutionDate","setProviderTransferMetadata","setConfirmFunds","setRemittanceReference","setReturnRefundAccount","setSourceAccountGuest","setSource","_ref34","_ref33","_tokenService$getStan","_tokenService$getStan2","_tokenService$getStan3","createStandingOrderTokenBuilder","setProviderMetadata","_ref36","_ref35","createBulkTransferTokenBuilder","assign","_globalThis","reload","forceReload","getOverallTppConfigurations","memberProps","tppConfigurationsFromTI","_regionalConfiguratio","overallLocalTppConfig","doesTranslationsExist","doesRegionalConfigurationsExist","_Object$keys2","colors","noBack","oldRequestId","currentRequestId","validateBrowserSession","_store$getState","_store$getState$token","_store$getState$token2","notAllowUserToGoBack","actionIfTokenReqProcessed","fetchLatestTokenReq","sameSession","_id","_source","_destination","_origin","_messages","_self","_setId","_onReceiveMessage","_decodeMessage","m","_findInstanceProperty","weak","popupId","callback","_dispatchMessage","d","postMessage","_encodeMessage","_onMessage","w","_offMessage","_findIndexInstanceProperty","_spliceInstanceProperty","_dispatchRequest","success","failure","typeRes","nonce","cancelInterval","clearInterval","typeReq","_setInterval","_setupResponse","_proxyRequest","_proxyMessage","_destroy","setId","dispatchMessage","onMessage","offMessage","dispatchRequest","setupResponse","proxyRequest","proxyMessage","destroy","Dom","applyStyle","applyAttrs","attrs","applyWindowAttrs","contains","className","availTop","screen","availLeft","availWidth","availHeight","width","round","height","left","center","moveTo","resizeTo","innerHTML","HTMLElement","text","textContent","isAChildOf","_parent","_child","parentNode","TOKEN_BANK_POPUP","POPUP_VISIBILITY_CHANGE","POPUP_SHOW","POPUP_IS_LOADED","onload","_element","_overlayIframe","_postie","_frameLoaded","_onOverlayLoaded","_overlayCloseAction","_attrs","frameBorder","position","display","zIndex","popupFrameAttrs","src","_updateStyles","_overlayIframeLoaded","Node","_isVisible","getComputedStyle","_onLoad","removeChild","_bindListeners","Postie","contentWindow","show","right","bottom","hide","isVisible","isLoaded","onLoad","onCloseAction","bindOverlayCloseAction","popupName","_popup","_onLoadCallback","_onVisibilityChange","_popupName","_keepalive","_hide","close","_setupKeepAlive","visible","_isOpen","_dispatchKeepAlive","_unbindListeners","_show","isIE","isEdge","isSaf","screenLeft","screenX","screenTop","screenY","outerWidth","outerHeight","floor","open","_popupInit","_waitUntilPopupIsInitialized","closed","showPopup","hidePopup","isOpen","onVisibilityChange","getPopup","_onVisibilityChangeCallback","TokenPopup","postie","requestMessages","returnMessages","dispatchBankPopupVisibility","_setupBankPopupMessages","parent","_overlay","_bankPopup","_isBankCallback","onBankPopupClose","hideOverlay","verifyOpener","TokenCommunicator","setupMessages","initiatePopupFlow","setupKeepAlive","setup","setupIframe","setupBankPopup","bankUrl","TokenOverlayController","bankPopup","TokenBankPopup","sendMessage","setCredentials","setInitBankAuthStatus","requiredCredentials","failureCb","bankAuthStatus","handleFinalScaStatus","scaStatus","blockUserToGoBack","completeFlowV2","initiateCredentialsCallback","_response$credentialF","_response$credentialF2","_response$credentialF3","credentialFields","formatCredentials","credentialValues","prevAuthStatus","dontUseWebApp","standingOrderBody","accessBody","resourceTypeList","initiateCredentialsFlow","setCustomDevKey","fetchTokenRequestData","GLOBAL_TOKEN_REQUEST","isBankCallback","fetchTokenRequestInfo","setErrorSource","setRedirect","setCountries","setBanks","saveRecentBanks","addBanks","setTppReturnData","setSelectedBank","setSelectedCountry","addMember","setAlias","setErrorMessage","clearErrorMessage","setTppSource","setMemberProperties","setCustomizationId","setUseBankRedirectionScreen","setTppRedirectUrl","setTokenRequestOptions","setRedirectState","setRedirectUrl","setDefaultBankId","setDefaultAlias","setDestinationCountry","setRequestCountries","setTokenExpiration","setTopBanks","setBankRedirectUrl","setHideConsent","setBrowserRedirectUrl","setDefaultCountry","setDevKey","setBankBranchList","setBankWithSubBranches","clearBankWithSubBranches","setTppConfigurations","setTppOverallTranslations","setResellerProfile","setUseCredentialFlow","setTppProfile","validateContext","allowUserToGoBack","setCountry","setTranslations","_result","externalStatus","_EXCEPTION_TOKEN_REQU","_EXCEPTION_TOKEN_REQU2","_EXCEPTION_TOKEN_REQU3","getTransferDetails","returnTransferData","externalRequestStatus","validateTokenRequestExternalStatus","_EXCEPTION_TOKEN_REQU4","validateTokenRequestExpiredStatus","_EXCEPTION_TOKEN_REQU5","handleDeprecatedTokenRequest","to","bankCallback","setTokenRequestDetails","storeRecentBanks","initiateBankCallbackFlow","b64Credentials","handleError","decodeURIComponent","base64url","displayCustomErrorPage","errorCode","initiatePaymentInitStatus","_ref11","customErrorTextHtml","_tokenRequest$request","_tokenRequest$request2","_JSON$parse","popupStatus","tokenRequestResponse","_requestPayload$actin","_payloadMember$alias","requestOptions","payloadMember","memberProperties","tppProfile","overallTppConfigs","tppConfigs","_transferBody$instruc","_transferBody$instruc2","customizationId","callbackState","_requestPayload$useCr","_requestPayload$acces","_requestPayload$acces2","_requestPayload$acces3","_destinations","updateCustomization","accountResourceList","lifetimeAmount","bulkTransferBody","tokenRequestUrl","browserNavigation","bankAuthUrl","handleInvalidBankId","bankOptions","_options$ids","_options$ids2","restProps","excMessage","_paymentRail$","rawBanksData","merchantName","_regionalConfiguratio2","selectedRegion","region","_keysInstanceProperty","getFilteredBanks","_options$ids3","_filteredBanks2","supportedCountriesWithBanksByTpp","hideDefaultCountriesAndBanks","tppMember","filteredBanks","_filteredBanks","_filteredBanks$","b","_options$country","getFilteredBankIds","_supportedCountriesWi","allowedBankIds","bankIds","getBankFeaturePaymentType","paymentTypeOptions","getBanksByChunks","_options$ids4","chunkSize","totalIds","chunks","optionsWithIds","_yield$Token$getBanks","bankPromises","bankChunks","_excluded2","chunk","_yield$Token$getBanks2","_flatInstanceProperty","_options$perPage","_options$sort","tppConfiguredBankIds","paymentTypeOption","fetchOptions","sort","bankFeatures","_excluded3","BANK_CHUNK_SIZE","_excluded4","_ref37","_ref39","fetchCountries","_ref40","_ref42","_ref41","_sharedService$getSel","customAliasLabel","_yield$Token$provisio","bankAlias","realmMember","_yield$Token$provisio2","provisionDeviceLow","notYou","_ref48","_callee29","_ref47","_context39","cleanUp","_ref50","_callee30","_context40","_ref52","_callee31","_ref51","_yield$guest$notifyEn","_yield$pollForTokenRe","_tokenRequestService$2","_requestId","_receiptContact","_receiptEmail","_bankId","_yield$triggerCreateA","_notificationId","_yield$pollForTokenRe2","_tokenId","_signature","redeemer","notifyEndorseAndAddKey","_ref54","_callee33","_ref53","tokenReqResponse","statusResponse","validateResponse","_ref55","_fn","_callee32","_tokenRequest$request3","_tokenRequest$request4","_context42","returnToTpp","_x48","_x49","_ref57","_callee34","_ref56","_context44","_x50","_x51","declineTerms","_ref58","_callee35","_context45","addCheckForTokenReqRejection","_x52","_ref59","terminate","goToTpp","_ref61","_callee36","_ref60","_tokenRequestService$3","_context46","tppRedirecturl","_context47","parseUrl","query","stringify","redirectToTpp","_x53","_x54","_ref63","_callee37","_ref62","_tokenReqResponse","_tokenRequest$request5","_tokenRequest$request6","_context48","_x55","_x56","_ref65","_callee38","_ref64","selectedBankId","doesTppSupportPsr44Flow","doesBankSupportOneStep","_sharedService$getSel2","_context49","_x57","_x58","_ref67","_callee39","_ref66","isAispFlow","forwardCurrentParams","finalRedirectURL","_context50","_x59","_x60","_ref68","_ref69","tppRedirectUrl","_ref71","_callee40","_ref70","_context51","redirectToBankUrl","_x61","_x62","_ref73","_callee41","_ref72","_context52","_x63","_x64","_ref76","_callee43","_context54","clearAllKeys","_ref77","_callee44","_context55","_x67","_ref79","_callee45","_ref78","_context56","parsedBanks","allowedCountriesWithBanks","isCountriesPresentInTppConfig","_context58","p","isBankPermitted","permittedCountry","permittedBanks","_context57","_x68","_x69","recentBankReducer","_ref80","_context59","_context60","existing","_ref82","_callee46","_ref81","_context61","_x70","_x71","getCountry","_ref83","_callee47","_context62","findBankLogoData","logoUri","_context63","_context64","images","filterBanksHavingBranches","_ref84","banksWithBranchesList","newBanks","_context65","createBank","_context66","_ref86","_callee48","_ref85","_tokenRequestService$4","_countryList","_countryList2","aliasName","customCountriesList","countryList","_context68","aliasValue","_context67","_context69","_x72","_x73","_ref88","_callee49","_ref87","_requestPayload$to2","_context70","_x74","_x75","onCloseDialogClick","currentRoute","ConnectedApp","setVrpId","setVrpRefId","setVrpStatus","setVrpCreditorInfo","setVrpDebtorInfo","setVrpPeriodicLimit","setVrpExpirationDate","setPispConsentAccepted","setVrpDescription","setVrpLocalInstrument","setVrpMaxAmount","setVrpTokenType","setCurrency","validateVRPConsent","_vrpConsent$initiatio","initiation","updateAndValidateVrpConsent","vrpService","authentication","fetchVrpConsentInfo","_vrpConsent$initiatio2","_tppConfigResp$realm","_vrpConsent$initiatio3","_vrpConsent$initiatio4","_vrpConsent$authentic","_vrpConsent$authentic2","_vrpConsent$initiatio5","_vrpConsent$initiatio6","_vrpConsent$initiatio7","_vrpConsent$initiatio8","_vrpConsent$initiatio9","_vrpConsent$initiatio0","_vrpConsent$initiatio1","_vrpConsent$initiatio10","_vrpConsent$initiatio11","_vrpConsent$initiatio12","_vrpConsent$initiatio13","_vrpConsent$initiatio14","_vrpConsent$initiatio15","_vrpConsent$initiatio16","_vrpConsent$initiatio17","_vrpConsent$initiatio18","_vrpConsent$initiatio19","_vrpConsent$initiatio20","_vrpConsent$initiatio21","tppConfigResp","onBehalfOfId","callbackUrl","creditor","debtor","maximumIndividualAmount","remittanceInformationPrimary","endDateTime","initiateVrpFlow","initiateBankCallbackFlowV2","initiateVrpBankCallbackFlow","initiateVrpSetupRedirectFlow","proceedToBankForVrp","isConsentValid","terminateVrpFlow","_defaultBank2","_React$Component","WebAppConfig","withStatic","values","withAutoFocus","AutoFocusWrapper","_React$PureComponent2","_comp","_this4","autoFocus","focusTimeout","focus","clearTimeout","_extends","ref","withValue","ValueWrapper","_React$PureComponent3","_this5","setValue","isSelected","setKeyDown","useCustomData","multiple","setValueFunc","final","_this6","_this$props3","customSetValue","onChange","doneCallback","keyCode","onKeyUp","onKeyDown","onKeyEnter","onKeyEsc","onKeySpacebar","allowDeselect","withFocusState","FocusStateWrapper","_React$PureComponent4","_this7","focused","hover","setFocus","setHover","onFocusChange","createContainer","displayName","_ref7$className","defaultClass","wrapper","_ref8$className","classProp","Fragment","cx","classNames","viewBox","strokeWidth","SpinnerSVG","_ref$color","color","fill","strokeMiterlimit","cy","stroke","strokeDasharray","transform","SpinnerSmall","SpinnerImage","white","spinnerWhite","spinner","SpinnerWithLockSVG","_ref5$color","xmlns","y","rx","fillRule","clipRule","mask","SpinnerWithLockBig","_ref6$label","label","justifyContent","Spinner","STATUS_IDLE","STATUS_DISABLED","STATUS_LOADING","STATUS_SUCCESS","STATUS_ERROR","TYPE_TEXT","TYPE_EMAIL","TYPE_PASSWORD","TYPE_NUMBER","TextInput","inputFieldClass","placeholder","prepend","onClick","inputType","spinnerColor","activeDescendant","ariaLabel","tabFocused","onMouseEnter","onMouseLeave","onFocus","onBlur","autoComplete","iconSuccess","defaultProps","TextInputComposer","EmailInputComposer","withValidatorWrapper","_React$PureComponent","isValid","customIsValid","setValidation","getIsValid","EmailValidator","_isValid","setValidationFunc","_this$props","onValidityChange","customSetValidation","stateIsValid","_this$props2","ROW_TYPE_1_COL","ROW_TYPE_2_COL","ROW_SIZE_STANDARD","ROW_SIZE_LARGE","AbstractList","size","keyDown","keyUp","onMouseOver","withPointer","tabIndex","ariaExpanded","ariaHidden","role","blur","stopPropagation","preventDefault","onMouseMove","child","ListRow","ariaSelected","ListCell","appendItem","onError","bankDefaultLogo","alt","dropdown","ListCellLoader","timer","_Date$now","List","loadingFirstBatch","loadingMore","border","selected","setSelected","setSearch","searchTerm","rowClass","CellComponent","showFocusOutline","over","selectedIndex","preventScroll","now","scroll","triggerChange","index","ANCHOR_TOP","ANCHOR_BOTTOM","ALIGN_LEFT","ALIGN_RIGHT","Overlay","overlayContainer","overlayClass","evtHandlers","onMouseUp","evt","rect","dummy","anchor","align","rectPosition","getBoundingClientRect","styleWidth","createPortal","portalClass","scrollX","scrollY","SimpleScroll","_PureComponent","container","overflow","handleScroll","scrollTop","offsetUp","offsetTop","offsetDown","offsetHeight","scrollBy","prevProps","maxHeight","PureComponent","AbstractDropdown","handleClickContainer","setDropDownState","isTabKeyPressed","prevState","disabled","labelClass","scrollClass","displayClass","selectedClass","unselectedClass","showCaret","dropDownState","dropdownClasses","labelClasses","displayClasses","iconDropdownCaret","TYPE_PRIMARY","TYPE_SECONDARY","TYPE_DELETE","TYPE_GHOST","TYPE_GHOST_WARNING","TYPE_SUCCESS","Button","loadingText","withForward","icon","tabStatus","isTabFoucused","WITH_FORWARD","WITH_ICON","TokenContainer","toDraw","noMargin","noScrollable","innerRef","TokenTitle","sub","backArrow","_ref$arrowColor","arrowColor","TokenSubtitle","TokenButtonsContainer","alignment","ButtonVisibilityWrapper","scrollRef","isButtonFlagEnabled","visibleStatus","setVisibleStatus","setInnerRef","_useState5","FormattedMessage","_useState6","buttonText","setButtonText","fetchButtonStatus","useLayoutEffect","scrollElement","updateVisiblity","scrollHeight","clientHeight","elementPosition","abs","isInViewport","buttonStatus","TokenButtonsWrapper","displayShadow","buttonAlignment","alignButtonsVertically","count","_child$props","_child$props2","buttonType","isTypeGhost","StaticDataProvider","fetchData","getValue","getData","term","searchFunc","_searchFunc","startsWith","_startsWithInstanceProperty","includes","startedWith","included","found","customData","stateData","_this$props4","_this$state","startsWithRegex","includesRegex","AliasInput","loading","bankSupportedType","countryTelData","selectedType","continuePress","continuePressPhone","checkType","nextProps","aliasError","setDisplayFooterShadow","nextPhone","updateAlias","intl","Dropdown","param","renderDoubleInput","aliasTypes","renderSwitch","_this$props$bankInfo","fullLogoUri","ALIAS_TYPES","supportsGuest","initiateGuestFlow","intlShape","_ref44","_ref43","AispAliasInput","APPROVAL","POWERED_BY_TOKEN","approval","approval2x","approval3x","poweredByToken","poweredByToken2x","poweredByToken3x","TokenImage","img","srcSet","AppNotifier","strings","cancelApproval","_ref46","_callee28","_ref45","_context38","aispNoApp","pispNoApp","_ref49","hasDefaultBankId","hasDefaultAlias","AispAppNotifier","appName","APP_NAME","AppInstall","goToBankSelector","tagName","installIcon","googlePlayIcon","rel","appStoreIcon","AispAppInstall","FlickerCode","newCode","minlen","q","len","_parseInt","toHex","substr","luhndata","getPayload","luhnsum","quersumme","xorsum","checksum","FlickerClass","newSpeed","stopFlicker","changeInterval","tanFlicker","_interval","startFlicker","newSize","image","symbols","dataBits","_this$symbols","_this$symbols2","sync","refreshLeds","_timer","leds","toLineStart","prepare","tanCode","initializeDataBits","newInterval","led","start","FlickerImage","flickerCodeInstance","flickerImage","getCode","led0Ref","useRef","led1Ref","led2Ref","led3Ref","led4Ref","imageRef","speed","setSpeed","setSize","currentSpeedPercentage","currentSizePercentage","startTanBeamer","cellSpacing","cellPadding","Nouislider","orientation","format","range","min","max","onUpdate","updateSize","updateSpeed","EyeIcon","setPasswordVisible","BsEyeSlashFill","BsEyeFill","dataTip","validateInput","setVisibility","setTabFocus","isPassword","TextInput__inner","CaptureCredentials","credentialsValue","_data$id","_data$id$toUpperCase","_e$target$value","TextInput__inner__input","_data$options","customOptions","option","_option$value","_option$value$split$f","_option$value$split$f2","scaCode","slctdValue","_data$options2","handleOptionChange","dropDown","selectedOption","segregateCredentials","pollResult","_componentDidMount","emptyCredentials","jsonStringifiedError","axiosError","errorText","paymentFailure","_this$state2","declinePayment","getButtonStatusOnCredsPage","dangerouslySetInnerHTML","__html","displayOptions","displayCredentialField","confirm","TokenBackground","TokenBackgroundHeader","TokenBackgroundTitle","logo","alignAtCenter","noPrepend","Header","Title","Content","Footer","CustomFooterText","_ref$customFooterText","customFooterText","tppLogo","resellerLogo","tppImg","resellerImg","isSpinner","FooterText","tppLogoPayload","resellerLogoPayload","Loading","displaySplashScreen","stepsUntilNow","platformIsIos","platform","isBankCallbackUrl","hasSessionRefreshed","LanguageSwitcher","getPreferredLang","_entriesInstanceProperty","lang","defaultLang","LeftChevron","svgClassName","xmlnsXlink","HomeIconSvg","bgColor","svgHeight","svgWidth","_ref$scale","scale","_ref$svgColor","svgColor","backgroundColor","HomeIcon","ConsentBackToTppOverlay","declineConsent","handleOverlay","productName","initialX","initialY","initialOverlayHeight","_setInitialOverlayHeight","currentOverlayHeight","setCurrentOverlayHeight","toggleRef","_useState7","_useState8","showTransition","setShowTransition","initialOverlayHeightRef","onMouseDownHandler","_getTouches","firstTouch","getTouches","clientX","clientY","onMouseMoveHandler","_e$touches","_e$touches2","currentX","touches","currentY","diffX","diffY","prevHeight","newHeight","_e$originalEvent","originalEvent","initialHeight","mousemove","mousedown","touchstart","touchmove","CSSTransition","in","MERCHANT_NAME","DISPLAY_NAME","PRODUCT_NAME","secondaryName","TokenBackgroundBackButton","displayOverlay","setDisplayOverlay","Background","displayBackButton","displayShadowTppConfig","displayFooterShadow","pagesWithoutBackButton","displayHeaderBackButton","EmptyBackgroundTitle","footer","displayFooterText","customLogo","enfuseLogo","BankOutageError","iconError","InfiniteScroll","checkScroll","_checkScroll","checkingScroll","onScroll","ICON_ALIGN_LEFT","ICON_ALIGN_RIGHT","AbstractSearch","searchFieldRef","setSearchFocus","input","searchInputClass","iconAlignment","customInputOnChange","customInputValue","searchInputClasses","listClasses","iconSearch","activeElementIndex","onKeyEscape","Search","AsyncDataProvider","end","fetchTimer","customLoading","fetchOnMount","_fetchData","isLoadingMore","_formatDataList","dataList","getLoading","pageSize","oldState","_this$props5","_this$state3","RadioButton","ListCellRadio","highlighted","RecentBankList","RadioList","RightChevron","TopBanks","searchInputFocused","hasTransferDestinationsUrlOnly","BankSelectorFirst","displayRecentBanks","displayBankOutageError","showMore","handleCountryChange","setPaging","searchRef","clearBankStatus","previouslySelectedCountry","selectedItem","skipDismiss","fetchTopBanks","fetchBanks","dismissBankOutageError","displayButtonContainer","requestCountries","_recentBanks","recentBanksList","setDisplayBankOutageError","showBankSelectorTitle","TPP_NAME","htmlFor","searching","nextPage","proceed","transferTypeDestinations","tppMemberAndRealmId","resellerName","pagingCallback","_ref38","banksResponse","_formatDataList2","_context31","memberCountries","AispBankSelectorFirst","SmallSpinner","Custom_spinner","CheckIcon","FaCheck","CrossIconCircle","FaRegTimesCircle","CrossIcon","FeedbackIcon","displaySpinner","preCondition","TextInput__inner__loader","Custom__spinner","InvalidIbanText","Invalid_iban_warning_text","handleCheckIban","handleValidIban","handleInvalidIban","_error$response","_error$response2","_error$response3","MandatoryFields","_resourceTypeList$sou","_resourceTypeList$sou2","_resourceTypeList$sou3","_parentState$source","_parentState$source$a","_parentState$source$a2","_resourceTypeList$sou4","parentState","getIbanIsValid","handleMandatoryFields","isIbanValid","setIsIbanValid","defaultIban","setDefaultIban","displayIbanSpinner","setDisplayIbanSpinner","currentIban","captureCurrency","_parentState$source2","Mandatory_field","required","captureSourceIban","_parentState$source3","defaultCurrency","field","HrefToPopup","contentRef","defaultUrls","manipulateAnchorTag","node","_node$tagName","tagId","tabURL","removeAttribute","manipulateAnchorTags","_node$childNodes","childNodes","LINK_URLS_WITH_TAG_ID","TermsLoader","tAndCRef","fallbackToOverlay","ConsentBankFirstFlow","_this$props$requiredM","_this$props$requiredM2","_mandatoryFieldsConfi","setMandatoryAccessFields","consentTextRef","createRef","aispName","businessName","modifyPreSelectedBank","expireDate","setDate","_this2$state$mandator","_this2$state$mandator2","_this2$state$mandator3","messageVariableValues","BUSINESS_NAME","EXPIRATION_DATE","consentText","hideConsentTextBlock","handleIbanValidation","checkMandatoryFieldsPresent","isIbanMandatory","_selectedBank$mandato","ConfirmFundsConsentBankFirstFlow","bankAccount","domestic","_defaultIban$","_defaultIban$$bankAcc","_defaultIban$$bankAcc2","SplashScreen","inProp","stepToSet","timeoutRef","setFadeOutProp","splashScreenHtml","tppSplashLogo","productLogo","tppSplashImg","productImg","productIdentifier","TokenSplash","tppSplashLogoPayload","productLogoPayload","Aisp","getStepComponent","getStepComponentWithoutBackground","PispAliasInput","PispTransferOverview","isLoading","paymentAccount","proceedWithCheckout","total","amountLimit","setPaymentAccount","goToBankSelection","accs","showIcon","AMOUNT","setPaymentAccountId","PispAppNotifier","PispAppInstall","EditIcon","onKeyPress","FaRegEdit","cursor","outline","args","_state$instructions$s","_state$instructions$s2","_state$instructions2$","_state$instructions2$2","sourceLegalName","_state$instructions5$2","_state$instructions5$3","_state$instructions6$2","_state$instructions6$3","_state$instructions8$2","_state$instructions9$","beneficiaryLegalName","_this$props$state","_this$props$state$ins","_this$props$state$ins2","_this$props$state$ins3","_this$props$state$ins4","_this$props$state$ins5","handleBeneficiaryName","_this$props2$state","_this$props2$state$in","_this$props2$state$in2","_this$props2$state$in3","_this$props2$state$in4","handleDebtorBBAN","_this$props3$state","_this$props3$state$in","_this$props3$state$in2","_this$props3$state$in3","_this$props3$state$in4","handleDebtorName","_this$props4$state","_this$props4$state$in","_this$props4$state$in2","handleDebtorBic","_instructions$transfe","_instructions$transfe2","_creditorData$legalNa","_instructions$source","_instructions$source$","_instructions$source$2","_instructions$source2","_instructions$source3","_instructions$source4","_instructions$source5","_instructions$source6","_instructions$source7","_instructions$source8","creditorData","defaultCreditorName","defaultDebtorName","defaultDebtorBic","defaultSourceBBAN","displayCreditorName","displayDebtorName","displayDebtorBic","displayDebtorBBAN","StetMandatoryFields","_state$stetMetadata","_state$stetMetadata2","_state$stetMetadata2$","bicFi","_state$stetMetadata3","_state$stetMetadata4","_state$stetMetadata4$","_this$props$state$ste","_this$props$state$ste2","_this$props$state$ste3","handleCreditorAgentName","_this$props$state2","_this$props$state2$st","_this$props$state2$st2","_this$props$state2$st3","handleCreditorAgentBicFi","transferMetadata","_transferMetadata$ben","_transferMetadata$ben2","_transferMetadata$ben3","_transferMetadata$ben4","defaultCreditorAgentName","defaultCreditorAgentBicFi","displayCreditorAgentName","displayCreditorAgentBicFi","PolishApiMandatoryFields","CopyIcon","FaCopy","_obj$instructions","_obj$instructions$sou","setMandatoryTransferFields","stetFields","polishapiFields","setMandatoryProviderTransferMetadata","ibanInputDisplay","defaultIbanDisplay","ibanWithCountry","checkSubBranch","iconDisplay","_this$props$defaultIb","_this$props$defaultBi","defaultBic","selectedBankName","validBranchNumber","branchNumber","selectedBankHavingSubbranch","_instructions$metadat","_instructions$metadat2","_instructions$metadat3","_instructions$metadat4","pispName","displayBeneficiaryDetails","REFUND_ACCOUNT","showBeneficiaryDetails","ChangeButton","addRefundTextIfNotPresent","_selectedBank$mandato2","paymentType","PispBankSelectorFirst","StandingOrderConsentBankFirstFlow","setMandatoryStandingOrderFields","setMandatoryProviderStandingOrderMetadata","BulkTransferConsentBankFirstFlow","bulkTransfers","SuccessIcon","FaCheckCircle","FailureIcon","FaTimesCircle","PendingIcon","AiOutlineClockCircle","Successful","Unsuccessful","Submitted","ClockIcon","PaymentStatusSubTitle","seconds","hidePSR44Timer","removePSR44Timer","SECONDS","PaymentStatusTitle","PaymentInitStatus","timeoutFunc","intervalId","countdown","dateTime","statusCode","transferCode","transferStatusGroups","getInternalTransferStatus","transferStatusMessage","continueToMerchant","_formatDate","getHours","getMinutes","getSeconds","Pisp","previousStep","VrpConsentBankFirstFlow","userInfo","userType","bankIbanOrAccNo","isFasterPayment","bankBicOrSc","sortCode","maxAmountPerPayment","creditorBankName","expiration","periodicLimit","PERIOD_TYPE","periodType","maximumAmount","displayUserInfo","vrpRequestId","VrpBankSelectorFirst","vrpConsentStatus","VrpConsentInitStatusSubTitle","VrpConsentInitStatusTitle","VrpConsentInitStatus","initStatus","Vrp","DefaultErrorPage","errorTitle","GPHSBCErrorPage","errorMessageKey","gpHsbcErrorMessageId","HSBCErrorPage","hsbcErrorMessageId","ErrorPage","tppCategory","displayButton","encTraceID","encTokenTraceID","tokenTraceID","RedirectTpp","hideFooter","isError","RedirectOptions","goToTppAfterBackButton","_ref89","_callee50","_context71","_x76","Spinner_default","BankSpinner","displayLogoOnBankRedirectScreen","RedirectTppSpinner","BankRedirect","isRedirectReady","isRedirecting","setRedirecting","CsrfMismatch","isCopied","setCopied","readOnly","TermsAndCondition","EnfuseTermsAndCondition","GMBHTermsAndConditions","Terms","isEnfuse","isGmbh","enfuceTpplogo","_endsWithInstanceProperty","domain","enableIframePassthrough","storeCallback","_module$hot","isCtxPopup","isCtxIframe","_window","_window$location","_window$location$path","hot","accept","replaceReducer","Root","getInitialReduxState","l","_n$code","_state$tokenRequest","_state$tokenRequest$t","_state$tokenRequest$t2","_ref75","_callee42","_ref74","_context53","_x65","_x66","tracerConfig","initApp","_state$tokenRequest2","_state$vrp","_state$tokenRequest3","_state$tokenRequest3$","_state$tokenRequest3$2","handleDefault","handle","_requestPayload$to","_requestPayload$acces4","_requestPayload$acces5","_requestPayload$trans2","_destinations2","Context","register","_window$BROWSER_ENV","assetPrefix","__webpack_public_path__","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","definition","defineProperty","enumerable","g","globalThis","Function","hmd","Symbol","toStringTag","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""}