{"version":3,"file":"js/page.ebaba0b9.js","mappings":"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","sources":["webpack://energy-subscription-front/./src/components/HelpButton.vue","webpack://energy-subscription-front/./src/components/CustomModal.vue","webpack://energy-subscription-front/src/components/CustomModal.vue","webpack://energy-subscription-front/./src/components/CustomModal.vue?6685","webpack://energy-subscription-front/./src/components/CustomModal.vue?f787","webpack://energy-subscription-front/src/components/HelpButton.vue","webpack://energy-subscription-front/./src/components/HelpButton.vue?5cba","webpack://energy-subscription-front/./src/components/HelpButton.vue?a033","webpack://energy-subscription-front/./src/components/layout/FullWidthLayout.vue","webpack://energy-subscription-front/src/components/layout/FullWidthLayout.vue","webpack://energy-subscription-front/./src/components/layout/FullWidthLayout.vue?fa77","webpack://energy-subscription-front/./src/components/layout/FullWidthLayout.vue?4b37","webpack://energy-subscription-front/./src/views/bankDetails/bankDetailsPage.vue","webpack://energy-subscription-front/./src/components/RequiredFieldsWarning.vue","webpack://energy-subscription-front/src/components/RequiredFieldsWarning.vue","webpack://energy-subscription-front/./src/components/RequiredFieldsWarning.vue?ee90","webpack://energy-subscription-front/./src/components/RequiredFieldsWarning.vue?fbbd","webpack://energy-subscription-front/src/views/bankDetails/bankDetailsPage.vue","webpack://energy-subscription-front/./src/views/bankDetails/bankDetailsPage.vue?3ba3","webpack://energy-subscription-front/./src/views/bankDetails/bankDetailsPage.vue?75df","webpack://energy-subscription-front/./src/views/billing/billingPage.vue","webpack://energy-subscription-front/./src/views/billing/PaymentTypeSelector.vue","webpack://energy-subscription-front/src/views/billing/PaymentTypeSelector.vue","webpack://energy-subscription-front/./src/views/billing/PaymentTypeSelector.vue?388c","webpack://energy-subscription-front/./src/views/billing/PaymentTypeSelector.vue?10f5","webpack://energy-subscription-front/src/views/billing/billingPage.vue","webpack://energy-subscription-front/./src/views/billing/billingPage.vue?a412","webpack://energy-subscription-front/./src/views/billing/billingPage.vue?c664","webpack://energy-subscription-front/./src/views/contract/contractPage.vue","webpack://energy-subscription-front/./src/views/contract/ContractSummary.vue","webpack://energy-subscription-front/src/views/contract/ContractSummary.vue","webpack://energy-subscription-front/./src/views/contract/ContractSummary.vue?406b","webpack://energy-subscription-front/./src/views/contract/ContractSummary.vue?41b0","webpack://energy-subscription-front/src/views/contract/contractPage.vue","webpack://energy-subscription-front/./src/views/contract/contractPage.vue?0e44","webpack://energy-subscription-front/./src/views/contract/contractPage.vue?7758","webpack://energy-subscription-front/./src/views/contractActivation/contractActivationPage.vue","webpack://energy-subscription-front/./src/store/subscription/contractActivation/constant.ts","webpack://energy-subscription-front/./src/views/contractActivation/activationSteps.vue","webpack://energy-subscription-front/src/views/contractActivation/activationSteps.vue","webpack://energy-subscription-front/./src/views/contractActivation/activationSteps.vue?57af","webpack://energy-subscription-front/./src/views/contractActivation/activationSteps.vue?4c36","webpack://energy-subscription-front/src/views/contractActivation/contractActivationPage.vue","webpack://energy-subscription-front/./src/views/contractActivation/contractActivationPage.vue?febc","webpack://energy-subscription-front/./src/views/contractActivation/contractActivationPage.vue?f383","webpack://energy-subscription-front/./src/views/contractSigning/contractSigningPage.vue","webpack://energy-subscription-front/src/views/contractSigning/contractSigningPage.vue","webpack://energy-subscription-front/./src/views/contractSigning/contractSigningPage.vue?1c02","webpack://energy-subscription-front/./src/views/contractSigning/contractSigningPage.vue?da32","webpack://energy-subscription-front/./src/views/email/editEmailPage.vue","webpack://energy-subscription-front/src/views/email/editEmailPage.vue","webpack://energy-subscription-front/./src/views/email/editEmailPage.vue?ee00","webpack://energy-subscription-front/./src/views/email/editEmailPage.vue?05b8","webpack://energy-subscription-front/./src/views/email/emailValidationSentPage.vue","webpack://energy-subscription-front/../../src/DefaultReconnectPolicy.ts","webpack://energy-subscription-front/../../src/ILogger.ts","webpack://energy-subscription-front/../../src/Errors.ts","webpack://energy-subscription-front/../../src/HttpClient.ts","webpack://energy-subscription-front/../../src/Loggers.ts","webpack://energy-subscription-front/../../src/Utils.ts","webpack://energy-subscription-front/../../src/FetchHttpClient.ts","webpack://energy-subscription-front/../../src/XhrHttpClient.ts","webpack://energy-subscription-front/../../src/DefaultHttpClient.ts","webpack://energy-subscription-front/../../src/HeaderNames.ts","webpack://energy-subscription-front/../../src/ITransport.ts","webpack://energy-subscription-front/../../src/AbortController.ts","webpack://energy-subscription-front/../../src/LongPollingTransport.ts","webpack://energy-subscription-front/../../src/ServerSentEventsTransport.ts","webpack://energy-subscription-front/../../src/WebSocketTransport.ts","webpack://energy-subscription-front/../../src/HttpConnection.ts","webpack://energy-subscription-front/../../src/TextMessageFormat.ts","webpack://energy-subscription-front/../../src/HandshakeProtocol.ts","webpack://energy-subscription-front/../../src/IHubProtocol.ts","webpack://energy-subscription-front/../../src/Subject.ts","webpack://energy-subscription-front/../../src/HubConnection.ts","webpack://energy-subscription-front/../../src/JsonHubProtocol.ts","webpack://energy-subscription-front/../../src/HubConnectionBuilder.ts","webpack://energy-subscription-front/src/views/email/emailValidationSentPage.vue","webpack://energy-subscription-front/./src/views/email/emailValidationSentPage.vue?0d2b","webpack://energy-subscription-front/./src/views/email/emailValidationSentPage.vue?929f","webpack://energy-subscription-front/./src/views/housing/housingPage.vue","webpack://energy-subscription-front/./src/views/housing/GridOperatorSelector.vue","webpack://energy-subscription-front/src/views/housing/GridOperatorSelector.vue","webpack://energy-subscription-front/./src/views/housing/GridOperatorSelector.vue?53fc","webpack://energy-subscription-front/./src/views/housing/GridOperatorSelector.vue?c5ad","webpack://energy-subscription-front/./src/components/NumberInput.vue","webpack://energy-subscription-front/src/components/NumberInput.vue","webpack://energy-subscription-front/./src/components/NumberInput.vue?e57c","webpack://energy-subscription-front/./src/components/NumberInput.vue?4037","webpack://energy-subscription-front/./src/views/housing/GsrnEanInput.vue","webpack://energy-subscription-front/src/views/housing/GsrnEanInput.vue","webpack://energy-subscription-front/./src/views/housing/GsrnEanInput.vue?f788","webpack://energy-subscription-front/./src/views/housing/GsrnEanInput.vue?7529","webpack://energy-subscription-front/src/views/housing/housingPage.vue","webpack://energy-subscription-front/./src/views/housing/housingPage.vue?edc9","webpack://energy-subscription-front/./src/views/housing/housingPage.vue?b141","webpack://energy-subscription-front/./src/views/offer/offerPage.vue","webpack://energy-subscription-front/./src/views/offer/ProductTypeSelector.vue","webpack://energy-subscription-front/./src/views/offer/ProductTypeIcon.vue","webpack://energy-subscription-front/src/views/offer/ProductTypeIcon.vue","webpack://energy-subscription-front/./src/views/offer/ProductTypeIcon.vue?6f48","webpack://energy-subscription-front/./src/views/offer/ProductTypeIcon.vue?2b24","webpack://energy-subscription-front/src/views/offer/ProductTypeSelector.vue","webpack://energy-subscription-front/./src/views/offer/ProductTypeSelector.vue?594e","webpack://energy-subscription-front/./src/views/offer/ProductTypeSelector.vue?5ca5","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelector.vue","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelectorItem.vue","webpack://energy-subscription-front/src/views/offer/BatteryPlanSelectorItem.vue","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelectorItem.vue?c14a","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelectorItem.vue?04fa","webpack://energy-subscription-front/src/views/offer/BatteryPlanSelector.vue","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelector.vue?65c1","webpack://energy-subscription-front/./src/views/offer/BatteryPlanSelector.vue?e1ee","webpack://energy-subscription-front/./src/views/offer/BatteryPlanInfo.vue","webpack://energy-subscription-front/./src/views/offer/TenantLogo.vue","webpack://energy-subscription-front/./src/views/offer/DSILogo.vue","webpack://energy-subscription-front/src/views/offer/DSILogo.vue","webpack://energy-subscription-front/./src/views/offer/DSILogo.vue?56b8","webpack://energy-subscription-front/./src/views/offer/DSILogo.vue?314e","webpack://energy-subscription-front/./src/views/offer/MSBLogo.vue","webpack://energy-subscription-front/src/views/offer/MSBLogo.vue","webpack://energy-subscription-front/./src/views/offer/MSBLogo.vue?2f7d","webpack://energy-subscription-front/./src/views/offer/MSBLogo.vue?a017","webpack://energy-subscription-front/./src/views/offer/MSBText.vue","webpack://energy-subscription-front/src/views/offer/MSBText.vue","webpack://energy-subscription-front/./src/views/offer/MSBText.vue?b1a5","webpack://energy-subscription-front/./src/views/offer/MSBText.vue?55e8","webpack://energy-subscription-front/src/views/offer/TenantLogo.vue","webpack://energy-subscription-front/./src/views/offer/TenantLogo.vue?b3e4","webpack://energy-subscription-front/./src/views/offer/TenantLogo.vue?2f7f","webpack://energy-subscription-front/src/views/offer/BatteryPlanInfo.vue","webpack://energy-subscription-front/./src/views/offer/BatteryPlanInfo.vue?d342","webpack://energy-subscription-front/./src/views/offer/BatteryPlanInfo.vue?fed1","webpack://energy-subscription-front/src/views/offer/offerPage.vue","webpack://energy-subscription-front/./src/views/offer/offerPage.vue?2204","webpack://energy-subscription-front/./src/views/offer/offerPage.vue?359f","webpack://energy-subscription-front/./src/assets/images/billingTypes/ sync ^\\.\\/.*\\.png$","webpack://energy-subscription-front/./src/assets/images/helpModals/ sync ^\\.\\/.*\\.png$"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"help-button-container\"},[_c('b-tooltip',{attrs:{\"delay\":500,\"label\":_vm.header,\"multilined\":_vm.multilined,\"position\":\"is-left\",\"type\":\"is-primary\"}},[_c('b-button',{staticClass:\"help-button\",attrs:{\"rounded\":\"\",\"type\":\"is-primary\"},on:{\"click\":_vm.toggleModal}},[_c('span',{staticClass:\"icon is-small has-text-white\"},[_c('i',{staticClass:\"mdi mdi-help\"})])])],1),_c('custom-modal',{attrs:{\"isOpen\":_vm.isModalOpened,\"title\":\"\"},on:{\"close\":function($event){_vm.isModalOpened = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.header)+\" \")]},proxy:true},{key:\"footer\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.footer)+\" \")]},proxy:true}])},[_c('p',{staticClass:\"modal-body\",domProps:{\"innerHTML\":_vm._s(_vm.body)}}),(_vm.hasImage())?_c('b-image',{attrs:{\"alt\":_vm.image,\"responsive\":true,\"src\":_vm.getImageUrl()}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-modal',{attrs:{\"active\":_vm.isOpen,\"aria-modal\":\"\",\"aria-role\":\"dialog\",\"has-modal-card\":\"\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"modal-card\"},[_c('header',{staticClass:\"modal-card-head\"},[_c('p',{staticClass:\"modal-card-title modal-card-long-title\"},[_vm._t(\"header\")],2),_c('button',{staticClass:\"delete\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('close')}}})]),_c('section',{staticClass:\"modal-card-body\"},[_vm._t(\"default\")],2),_c('footer',{staticClass:\"modal-card-foot\"},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <b-modal\n :active=\"isOpen\"\n aria-modal\n aria-role=\"dialog\"\n has-modal-card\n @close=\"$emit('close')\"\n >\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title modal-card-long-title\">\n <slot name=\"header\"></slot>\n </p>\n <button class=\"delete\" type=\"button\" @click=\"$emit('close')\" />\n </header>\n <section class=\"modal-card-body\">\n <slot></slot>\n </section>\n <footer class=\"modal-card-foot\">\n <slot name=\"footer\"></slot>\n </footer>\n </div>\n </b-modal>\n</template>\n\n<script>\nexport default {\n name: \"CustomModal\",\n props: {\n isOpen: {\n type: Boolean,\n required: true,\n },\n title: {\n type: String,\n required: false,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.modal-card-long-title {\n flex-shrink: 1;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomModal.vue?vue&type=template&id=00038a94&scoped=true&\"\nimport script from \"./CustomModal.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomModal.vue?vue&type=style&index=0&id=00038a94&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00038a94\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"help-button-container\">\n <b-tooltip\n :delay=\"500\"\n :label=\"header\"\n :multilined=\"multilined\"\n position=\"is-left\"\n type=\"is-primary\"\n >\n <b-button\n class=\"help-button\"\n rounded\n type=\"is-primary\"\n @click=\"toggleModal\"\n >\n <span class=\"icon is-small has-text-white\">\n <i class=\"mdi mdi-help\" />\n </span>\n </b-button>\n </b-tooltip>\n <custom-modal\n :isOpen=\"isModalOpened\"\n title=\"\"\n @close=\"isModalOpened = false\"\n >\n <template v-slot:header>\n {{ header }}\n </template>\n <p class=\"modal-body\" v-html=\"body\"></p>\n <b-image\n v-if=\"hasImage()\"\n :alt=\"image\"\n :responsive=\"true\"\n :src=\"getImageUrl()\"\n ></b-image>\n <template v-slot:footer>\n {{ footer }}\n </template>\n </custom-modal>\n </div>\n</template>\n\n<script>\nimport CustomModal from \"@/components/CustomModal\";\n\nexport default {\n name: \"help-button\",\n components: { CustomModal },\n props: {\n header: String,\n body: String,\n footer: String,\n image: String,\n multilined: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n isModalOpened: false,\n };\n },\n methods: {\n toggleModal() {\n this.isModalOpened = !this.isModalOpened;\n },\n hasImage() {\n return !!this.image;\n },\n getImageUrl() {\n return this.image\n ? require(`@/assets/images/helpModals/${this.image}.png`)\n : null;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.help-button-container {\n display: flex;\n align-items: center;\n justify-content: center;\n\n .help-button {\n height: 1.5rem !important;\n width: 1.5rem !important;\n font-size: 1rem !important;\n padding: 0;\n }\n}\n\n.modal-body {\n font-weight: normal;\n line-height: 1.5;\n font-size: 1rem;\n}\n\n.b-image-wrapper {\n padding-top: 20px;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelpButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelpButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelpButton.vue?vue&type=template&id=bc2eee4a&scoped=true&\"\nimport script from \"./HelpButton.vue?vue&type=script&lang=js&\"\nexport * from \"./HelpButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HelpButton.vue?vue&type=style&index=0&id=bc2eee4a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc2eee4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fullWidthLayout\"},[_c('MainHeader',{attrs:{\"with-back-button\":_vm.withBackButton,\"with-help-button\":_vm.withHelpButton},on:{\"on-go-back\":function($event){return _vm.$emit('on-go-back')},\"on-help\":function($event){return _vm.$emit('on-help')}}}),_c('MainContent',{attrs:{\"without-padding\":_vm.withoutPadding}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"fullWidthLayout\">\n <MainHeader\n :with-back-button=\"withBackButton\"\n :with-help-button=\"withHelpButton\"\n @on-go-back=\"$emit('on-go-back')\"\n @on-help=\"$emit('on-help')\"\n />\n <MainContent :without-padding=\"withoutPadding\">\n <slot />\n </MainContent>\n </div>\n</template>\n\n<script>\nimport MainHeader from \"@/components/layout/MainHeader\";\nimport MainContent from \"@/components/layout/MainContent\";\n\nexport default {\n name: \"FullWidthLayout\",\n props: {\n withoutPadding: {\n type: Boolean,\n default: false,\n },\n withBackButton: {\n type: Boolean,\n default: false,\n },\n withHelpButton: {\n type: Boolean,\n default: false,\n },\n },\n components: { MainContent, MainHeader },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.fullWidthLayout {\n display: grid;\n width: 100vw;\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n grid-template-columns: 0 1fr;\n grid-template-rows: $desktop-height-main-header 0 1fr;\n}\n\n@include media(\"<tablet\") {\n .fullWidthLayout {\n grid-template-rows: $mobile-height-main-header 0 1fr;\n }\n}\n\n.content {\n overflow-y: auto;\n overflow-x: hidden;\n background: #fff;\n z-index: 4;\n padding: 2rem 0;\n grid-column-start: 2;\n grid-column-end: 2;\n grid-row-start: 3;\n grid-row-end: 3;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FullWidthLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FullWidthLayout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FullWidthLayout.vue?vue&type=template&id=020b81f3&scoped=true&\"\nimport script from \"./FullWidthLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./FullWidthLayout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FullWidthLayout.vue?vue&type=style&index=0&id=020b81f3&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"020b81f3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container is-fluid\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-half-desktop is-full-tablet\"},[_c('div',{staticClass:\"block holder-information\"},[_c('b-message',{attrs:{\"type\":\"is-info\"}},[_vm._v(_vm._s(_vm.$t(\"bankDetails.paymentInformationUsedForMonthlyInstallment\"))+\" \")]),_c('h5',{staticClass:\"title is-5\"},[_vm._v(_vm._s(_vm.$t(\"bankDetails.holderInformation\")))]),_c('div',{staticClass:\"holder-information-inputs\"},[(_vm.isIndividualClient)?[_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.holderFamilyName')}`,\"maxlength\":_vm.MAX_LENGTH_HOLDER_FAMILY_NAME,\"validation-errors\":_vm.holderFamilyNameErrors,\"value\":_vm.holderFamilyName,\"name\":\"holderFamilyName\"},on:{\"input\":_vm.setHolderFamilyName}}),_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.holderFirstName')}`,\"maxlength\":_vm.MAX_LENGTH_HOLDER_FIRST_NAME,\"validation-errors\":_vm.holderFirstNameErrors,\"value\":_vm.holderFirstName,\"name\":\"holderFirstName\"},on:{\"input\":_vm.setHolderFirstName}})]:[_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.holderCompanyName')}`,\"maxlength\":_vm.MAX_LENGTH_HOLDER_COMPANY_NAME,\"validation-errors\":_vm.holderCompanyNameErrors,\"value\":_vm.holderCompanyName,\"name\":\"holderCompanyName\"},on:{\"input\":_vm.setHolderCompanyName}})]],2)],1),_c('div',{staticClass:\"block address-information\"},[_c('h2',{staticClass:\"title is-5\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"bankDetails.billingAddress\"))+\" \")]),_c('div',{staticClass:\"block\",attrs:{\"cy-id\":\"switch-isBillingAddressSameAsPhysical\"}},[_c('b-switch',{attrs:{\"value\":_vm.isBillingAddressSameAsPhysical,\"name\":\"isBillingAddressSameAsPhysical\"},on:{\"input\":_vm.setIsBillingAddressSameAsPhysical}},[_vm._v(\" \"+_vm._s(_vm.$t(\"bankDetails.isBillingAddressSameAsPhysical\"))+\" \")])],1),(!_vm.isBillingAddressSameAsPhysical)?[_c('div',{staticClass:\"block\"},[_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.streetNumber')}`,\"maxlength\":_vm.MAX_LENGTH_STREET_NUMBER,\"required\":false,\"validation-errors\":_vm.streetNumberErrors,\"value\":_vm.streetNumber,\"name\":\"streetNumber\"},on:{\"input\":_vm.setStreetNumber}}),_c('custom-select',{attrs:{\"can-be-empty\":true,\"label\":`${_vm.$t('bankDetails.streetNumberSuffix')}`,\"options\":_vm.getStreetNumberSuffixOptions,\"validation-errors\":[],\"value\":_vm.streetNumberSuffix,\"name\":\"streetNumberSuffix\"},on:{\"input\":_vm.setStreetNumberSuffix}}),_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.street')}`,\"validation-errors\":_vm.streetErrors,\"value\":_vm.street,\"name\":\"street\"},on:{\"input\":_vm.setStreet}}),_c('custom-input',{attrs:{\"has-counter\":true,\"label\":`${_vm.$t('bankDetails.postCode')}`,\"maxlength\":_vm.MAX_LENGTH_POST_CODE,\"validation-errors\":_vm.postCodeErrors,\"value\":_vm.postCode,\"name\":\"postCode\"},on:{\"input\":_vm.setPostCode}}),_c('custom-input',{attrs:{\"label\":`${_vm.$t('bankDetails.city')}`,\"validation-errors\":_vm.cityErrors,\"value\":_vm.city,\"name\":\"city\"},on:{\"input\":_vm.setCity}})],1)]:_vm._e()],2),_c('div',{staticClass:\"block account-information\"},[_c('h5',{staticClass:\"title is-5 block\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"bankDetails.accountInformation\"))+\" \")]),_c('custom-input',{directives:[{name:\"mask\",rawName:\"v-mask\",value:('AA## XXXX XXXX XXXX XXXX XXXX XXX'),expression:\"'AA## XXXX XXXX XXXX XXXX XXXX XXX'\"}],attrs:{\"has-counter\":true,\"maxlength\":_vm.MAX_LENGTH_IBAN,\"validation-errors\":_vm.ibanErrors,\"value\":_vm.iban,\"name\":\"iban\"},on:{\"input\":_vm.setIban}},[_c('template',{slot:\"label\"},[_c('div',{staticClass:\"field-label-with-helper\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"bankDetails.iban\"))+\" * \"),_c('help-button',{attrs:{\"body\":_vm.ibanHelp.body,\"header\":_vm.ibanHelp.header,\"cy-id\":\"bankDetailsIban-helpModal\",\"image\":\"iban\"}})],1)])],2),_c('custom-input',{attrs:{\"has-counter\":true,\"label\":`${_vm.$t('bankDetails.bic')}`,\"maxlength\":_vm.MAX_LENGTH_BIC,\"validation-errors\":_vm.bicErrors,\"value\":_vm.bic,\"name\":\"bic\"},on:{\"input\":_vm.setBic}})],1),(!_vm.isBankDetailsStepValid)?_c('required-fields-warning'):_vm._e(),_c('navigation-buttons',{attrs:{\"next-route\":_vm.nextStep,\"previous-route\":_vm.previousStep,\"isStepValidated\":_vm.isBankDetailsStepValid}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"block\"},[_c('b-message',{attrs:{\"cy-id\":\"requiredFieldsWarning\",\"type\":\"is-warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"common.forValidThisStepPleaseInquireAllField\"))+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"block\">\n <b-message cy-id=\"requiredFieldsWarning\" type=\"is-warning\">\n {{ $t(\"common.forValidThisStepPleaseInquireAllField\") }}\n </b-message>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"required-fields-warning\",\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RequiredFieldsWarning.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RequiredFieldsWarning.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RequiredFieldsWarning.vue?vue&type=template&id=3edf3bf9&scoped=true&\"\nimport script from \"./RequiredFieldsWarning.vue?vue&type=script&lang=js&\"\nexport * from \"./RequiredFieldsWarning.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3edf3bf9\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"container is-fluid\">\n <div class=\"columns\">\n <div class=\"column is-half-desktop is-full-tablet\">\n <div class=\"block holder-information\">\n <b-message type=\"is-info\"\n >{{ $t(\"bankDetails.paymentInformationUsedForMonthlyInstallment\") }}\n </b-message>\n <h5 class=\"title is-5\">{{ $t(\"bankDetails.holderInformation\") }}</h5>\n <div class=\"holder-information-inputs\">\n <template v-if=\"isIndividualClient\">\n <custom-input\n :label=\"`${$t('bankDetails.holderFamilyName')}`\"\n :maxlength=\"MAX_LENGTH_HOLDER_FAMILY_NAME\"\n :validation-errors=\"holderFamilyNameErrors\"\n :value=\"holderFamilyName\"\n name=\"holderFamilyName\"\n @input=\"setHolderFamilyName\"\n />\n <custom-input\n :label=\"`${$t('bankDetails.holderFirstName')}`\"\n :maxlength=\"MAX_LENGTH_HOLDER_FIRST_NAME\"\n :validation-errors=\"holderFirstNameErrors\"\n :value=\"holderFirstName\"\n name=\"holderFirstName\"\n @input=\"setHolderFirstName\"\n />\n </template>\n <template v-else>\n <custom-input\n :label=\"`${$t('bankDetails.holderCompanyName')}`\"\n :maxlength=\"MAX_LENGTH_HOLDER_COMPANY_NAME\"\n :validation-errors=\"holderCompanyNameErrors\"\n :value=\"holderCompanyName\"\n name=\"holderCompanyName\"\n @input=\"setHolderCompanyName\"\n />\n </template>\n </div>\n </div>\n <div class=\"block address-information\">\n <h2 class=\"title is-5\">\n {{ $t(\"bankDetails.billingAddress\") }}\n </h2>\n <div class=\"block\" cy-id=\"switch-isBillingAddressSameAsPhysical\">\n <b-switch\n :value=\"isBillingAddressSameAsPhysical\"\n name=\"isBillingAddressSameAsPhysical\"\n @input=\"setIsBillingAddressSameAsPhysical\"\n >\n {{ $t(\"bankDetails.isBillingAddressSameAsPhysical\") }}\n </b-switch>\n </div>\n <template v-if=\"!isBillingAddressSameAsPhysical\">\n <div class=\"block\">\n <custom-input\n :label=\"`${$t('bankDetails.streetNumber')}`\"\n :maxlength=\"MAX_LENGTH_STREET_NUMBER\"\n :required=\"false\"\n :validation-errors=\"streetNumberErrors\"\n :value=\"streetNumber\"\n name=\"streetNumber\"\n @input=\"setStreetNumber\"\n />\n <custom-select\n :can-be-empty=\"true\"\n :label=\"`${$t('bankDetails.streetNumberSuffix')}`\"\n :options=\"getStreetNumberSuffixOptions\"\n :validation-errors=\"[]\"\n :value=\"streetNumberSuffix\"\n name=\"streetNumberSuffix\"\n @input=\"setStreetNumberSuffix\"\n />\n <custom-input\n :label=\"`${$t('bankDetails.street')}`\"\n :validation-errors=\"streetErrors\"\n :value=\"street\"\n name=\"street\"\n @input=\"setStreet\"\n />\n <custom-input\n :has-counter=\"true\"\n :label=\"`${$t('bankDetails.postCode')}`\"\n :maxlength=\"MAX_LENGTH_POST_CODE\"\n :validation-errors=\"postCodeErrors\"\n :value=\"postCode\"\n name=\"postCode\"\n @input=\"setPostCode\"\n />\n <custom-input\n :label=\"`${$t('bankDetails.city')}`\"\n :validation-errors=\"cityErrors\"\n :value=\"city\"\n name=\"city\"\n @input=\"setCity\"\n />\n </div>\n </template>\n </div>\n <div class=\"block account-information\">\n <h5 class=\"title is-5 block\">\n {{ $t(\"bankDetails.accountInformation\") }}\n </h5>\n <custom-input\n :has-counter=\"true\"\n :maxlength=\"MAX_LENGTH_IBAN\"\n :validation-errors=\"ibanErrors\"\n :value=\"iban\"\n name=\"iban\"\n v-mask=\"'AA## XXXX XXXX XXXX XXXX XXXX XXX'\"\n @input=\"setIban\"\n >\n <template slot=\"label\">\n <div class=\"field-label-with-helper\">\n {{ $t(\"bankDetails.iban\") }} *\n <help-button\n :body=\"ibanHelp.body\"\n :header=\"ibanHelp.header\"\n cy-id=\"bankDetailsIban-helpModal\"\n image=\"iban\"\n />\n </div>\n </template>\n </custom-input>\n <custom-input\n :has-counter=\"true\"\n :label=\"`${$t('bankDetails.bic')}`\"\n :maxlength=\"MAX_LENGTH_BIC\"\n :validation-errors=\"bicErrors\"\n :value=\"bic\"\n name=\"bic\"\n @input=\"setBic\"\n />\n </div>\n <required-fields-warning v-if=\"!isBankDetailsStepValid\" />\n <navigation-buttons\n :next-route=\"nextStep\"\n :previous-route=\"previousStep\"\n :isStepValidated=\"isBankDetailsStepValid\"\n ></navigation-buttons>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapActions, mapGetters, mapMutations } from \"vuex\";\nimport {\n MAX_LENGTH_BIC,\n MAX_LENGTH_HOLDER_COMPANY_NAME,\n MAX_LENGTH_HOLDER_FAMILY_NAME,\n MAX_LENGTH_HOLDER_FIRST_NAME,\n MAX_LENGTH_IBAN,\n} from \"@/store/subscription/bankDetails/constant\";\nimport {\n MAX_LENGTH_POST_CODE,\n MAX_LENGTH_STREET_NUMBER,\n} from \"@/store/subscription/housing/constants\";\nimport CustomInput from \"@/components/CustomInput\";\nimport CustomSelect from \"@/components/CustomSelect\";\nimport NavigationButtons from \"@/components/NavigationButtons\";\nimport RequiredFieldsWarning from \"@/components/RequiredFieldsWarning\";\nimport HelpButton from \"@/components/HelpButton\";\nimport { RouteName } from \"@/store/navigation/type\";\n\nexport default {\n name: \"bankDetailsPage\",\n components: {\n RequiredFieldsWarning,\n NavigationButtons,\n CustomInput,\n CustomSelect,\n HelpButton,\n },\n data() {\n return {\n MAX_LENGTH_HOLDER_FIRST_NAME,\n MAX_LENGTH_HOLDER_FAMILY_NAME,\n MAX_LENGTH_HOLDER_COMPANY_NAME,\n MAX_LENGTH_IBAN,\n MAX_LENGTH_BIC,\n MAX_LENGTH_STREET_NUMBER,\n MAX_LENGTH_POST_CODE,\n previousStep: RouteName.Billing,\n nextStep: RouteName.Contract,\n ibanHelp: {\n header: this.$t(\"bankDetails.ibanHelp.header\"),\n body: this.$t(\"bankDetails.ibanHelp.body\"),\n },\n };\n },\n computed: {\n ...mapGetters(\"subscription/contactInformation\", {\n isIndividualClient: \"isIndividualClient\",\n }),\n ...mapGetters(\"subscription/bankDetails\", {\n isBankDetailsStepValid: \"isBankDetailsStepValid\",\n\n holderFirstName: \"getHolderFirstName\",\n holderFirstNameErrors: \"getHolderFirstNameErrors\",\n\n holderFamilyName: \"getHolderFamilyName\",\n holderFamilyNameErrors: \"getHolderFamilyNameErrors\",\n\n isBillingAddressSameAsPhysical: \"getIsBillingAddressSameAsPhysical\",\n\n streetNumber: \"getStreetNumber\",\n streetNumberErrors: \"getStreetNumberErrors\",\n\n streetNumberSuffix: \"getStreetNumberSuffix\",\n streetNumberSuffixes: \"getStreetNumberSuffixes\",\n\n street: \"getStreet\",\n streetErrors: \"getStreetErrors\",\n\n postCode: \"getPostCode\",\n postCodeErrors: \"getPostCodeErrors\",\n\n city: \"getCity\",\n cityErrors: \"getCityErrors\",\n\n holderCompanyName: \"getHolderCompanyName\",\n\n holderCompanyNameErrors: \"getHolderCompanyNameErrors\",\n iban: \"getIban\",\n ibanErrors: \"getIbanErrors\",\n\n bic: \"getBic\",\n bicErrors: \"getBicErrors\",\n }),\n getStreetNumberSuffixOptions() {\n return this.streetNumberSuffixes.map((streetNumberSuffix) => ({\n name: this.$t(`streetNumberSuffix.${streetNumberSuffix}`),\n value: streetNumberSuffix,\n }));\n },\n },\n methods: {\n ...mapMutations(\"subscription/bankDetails\", [\n \"setHolderFirstName\",\n \"setHolderFamilyName\",\n \"setHolderCompanyName\",\n \"setStreetNumber\",\n \"setStreetNumberSuffix\",\n \"setStreet\",\n \"setPostCode\",\n \"setCity\",\n \"setIban\",\n \"setBic\",\n ]),\n ...mapActions(\"subscription/bankDetails\", [\n \"setIsBillingAddressSameAsPhysical\",\n ]),\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.field-label-with-helper {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./bankDetailsPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./bankDetailsPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./bankDetailsPage.vue?vue&type=template&id=226f3749&scoped=true&\"\nimport script from \"./bankDetailsPage.vue?vue&type=script&lang=js&\"\nexport * from \"./bankDetailsPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./bankDetailsPage.vue?vue&type=style&index=0&id=226f3749&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"226f3749\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container is-fullhd billing-page-container\"},[_c('payment-type-selector',{attrs:{\"selected\":_vm.paymentType,\"types\":_vm.paymentTypes},on:{\"select\":_vm.selectPaymentType}}),_c('navigation-buttons',{attrs:{\"nextRoute\":_vm.nextStep,\"previousRoute\":_vm.previousStep,\"isStepValidated\":_vm.isBillingStepValid}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"payment-type-selector\"},_vm._l((_vm.types),function(type){return _c('div',{key:type,class:[\n 'payment-type-container',\n {\n selected: _vm.checkIfPaymentTypeSelected(type),\n },\n ],attrs:{\"cy-id\":`paymentType-${type}`},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('select', type)}}},[_c('h2',{staticClass:\"title is-5\"},[_vm._v(_vm._s(_vm.getPaymentTypeTitle(type)))]),_c('div',{staticClass:\"payment-type-inner-container b-radio radio\"},[_c('div',{staticClass:\"payment-type-info\"},[_c('b-radio',{attrs:{\"native-value\":type},model:{value:(_vm.getSelectedPaymentType),callback:function ($$v) {_vm.getSelectedPaymentType=$$v},expression:\"getSelectedPaymentType\"}},[_c('div',{staticClass:\"name\"},[_vm._v(\" \"+_vm._s(_vm.getPaymentTypeName(type))+\" \")])]),_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.getPaymentTypeDescription(type))+\" \")])],1),_c('div',{staticClass:\"payment-type-image-container\"},[_c('div',{staticClass:\"image\"},[_c('b-image',{attrs:{\"alt\":_vm.getPaymentTypeName(type),\"responsive\":true,\"src\":_vm.getPaymentTypeImageUrl(type),\"ratio\":\"721by281\"},on:{\"load\":function($event){_vm.isImageLoaded = true}}})],1),_c('div',{class:['legend-container', { 'is-visible': _vm.isImageLoaded }]},[_c('div',{staticClass:\"legend-item billing\"},[_c('div',{staticClass:\"legend-item-color\"}),_c('div',{staticClass:\"legend-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"billing.legendItems.billing\"))+\" \")])]),_c('div',{staticClass:\"legend-item production\"},[_c('div',{staticClass:\"legend-item-color\"}),_c('div',{staticClass:\"legend-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"billing.legendItems.production\"))+\" \")])])])])])])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"payment-type-selector\">\n <div\n v-for=\"type in types\"\n :key=\"type\"\n :class=\"[\n 'payment-type-container',\n {\n selected: checkIfPaymentTypeSelected(type),\n },\n ]\"\n :cy-id=\"`paymentType-${type}`\"\n @click.prevent=\"$emit('select', type)\"\n >\n <h2 class=\"title is-5\">{{ getPaymentTypeTitle(type) }}</h2>\n <div class=\"payment-type-inner-container b-radio radio\">\n <div class=\"payment-type-info\">\n <b-radio v-model=\"getSelectedPaymentType\" :native-value=\"type\">\n <div class=\"name\">\n {{ getPaymentTypeName(type) }}\n </div>\n </b-radio>\n <div class=\"description\">\n {{ getPaymentTypeDescription(type) }}\n </div>\n </div>\n <div class=\"payment-type-image-container\">\n <div class=\"image\">\n <b-image\n :alt=\"getPaymentTypeName(type)\"\n :responsive=\"true\"\n :src=\"getPaymentTypeImageUrl(type)\"\n ratio=\"721by281\"\n @load=\"isImageLoaded = true\"\n ></b-image>\n </div>\n <div :class=\"['legend-container', { 'is-visible': isImageLoaded }]\">\n <div class=\"legend-item billing\">\n <div class=\"legend-item-color\"></div>\n <div class=\"legend-item-name\">\n {{ $t(\"billing.legendItems.billing\") }}\n </div>\n </div>\n <div class=\"legend-item production\">\n <div class=\"legend-item-color\"></div>\n <div class=\"legend-item-name\">\n {{ $t(\"billing.legendItems.production\") }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"payment-type-selector\",\n props: [\"types\", \"selected\"],\n data() {\n return {\n isImageLoaded: false,\n };\n },\n computed: {\n getPaymentTypeTitle() {\n return (paymentType) =>\n this.$t(`billing.paymentType.${paymentType}.title`);\n },\n getPaymentTypeName() {\n return (paymentType) =>\n this.$t(`billing.paymentType.${paymentType}.name`);\n },\n getPaymentTypeImageUrl() {\n return (paymentType) =>\n require(`@/assets/images/billingTypes/${paymentType}.png`);\n },\n getPaymentTypeDescription() {\n return (paymentType) =>\n this.$t(`billing.paymentType.${paymentType}.description`);\n },\n checkIfPaymentTypeSelected() {\n return (paymentType) => this.selected === paymentType;\n },\n getSelectedPaymentType() {\n return this.selected;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.title.is-5 {\n margin-bottom: 0;\n}\n\n.payment-type-selector {\n .payment-type-container {\n &:last-child {\n border-bottom: 2px solid whitesmoke;\n }\n\n .payment-type-inner-container {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n cursor: pointer;\n padding: 2rem 0;\n margin-right: 0 !important;\n\n .payment-type-info,\n .payment-type-image-container {\n width: 50%;\n }\n\n .payment-type-info {\n padding-right: 1.5rem;\n\n .name {\n font-family: Quicksand;\n font-size: 1.75rem;\n color: $primary;\n font-weight: bold;\n letter-spacing: 2px;\n padding-left: 0.5rem;\n }\n\n .description {\n font-size: 0.9rem;\n margin-top: 0.75rem;\n padding-left: 2.5rem;\n }\n }\n\n .payment-type-image-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-width: 550px;\n\n .legend-container {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 1.75rem;\n opacity: 0;\n\n &.is-visible {\n opacity: 1;\n }\n\n .legend-item {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 5%;\n font-size: 0.95rem;\n\n &.billing {\n .legend-item-color {\n background-color: #009dbf;\n }\n }\n\n &.production {\n .legend-item-color {\n background-color: #ffdb95;\n }\n }\n\n .legend-item-color {\n height: 0.9rem;\n width: 0.9rem;\n border-radius: 100%;\n margin: 0 0.5rem;\n }\n }\n }\n }\n }\n }\n}\n\n@include media(\"<tablet\") {\n .payment-type-selector {\n .payment-type-container {\n margin: 0 -2rem;\n padding: 0 2rem;\n border-bottom: none !important;\n\n .payment-type-inner-container {\n flex-direction: column;\n\n .payment-type-info,\n .payment-type-image-container {\n width: 100%;\n }\n\n .payment-type-info {\n padding: 0;\n margin-bottom: 1rem;\n }\n\n .payment-type-image-container {\n max-width: none;\n padding: 5%;\n\n .legend-container {\n .legend-item {\n padding: 0 9%;\n }\n }\n }\n }\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentTypeSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentTypeSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaymentTypeSelector.vue?vue&type=template&id=18e56648&scoped=true&\"\nimport script from \"./PaymentTypeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./PaymentTypeSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PaymentTypeSelector.vue?vue&type=style&index=0&id=18e56648&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18e56648\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"container is-fullhd billing-page-container\">\n <payment-type-selector\n :selected=\"paymentType\"\n :types=\"paymentTypes\"\n @select=\"selectPaymentType\"\n ></payment-type-selector>\n <navigation-buttons\n :nextRoute=\"nextStep\"\n :previousRoute=\"previousStep\"\n :isStepValidated=\"isBillingStepValid\"\n ></navigation-buttons>\n </div>\n</template>\n\n<script>\nimport { RouteName } from \"../../store/navigation/type\";\nimport { mapGetters, mapMutations } from \"vuex\";\nimport PaymentTypeSelector from \"./PaymentTypeSelector\";\nimport NavigationButtons from \"../../components/NavigationButtons\";\n\nexport default {\n name: \"billingPage\",\n components: { NavigationButtons, PaymentTypeSelector },\n data() {\n return {\n previousStep: RouteName.Housing,\n nextStep: RouteName.BankDetails,\n };\n },\n computed: {\n ...mapGetters(\"subscription/billing\", {\n paymentType: \"getPaymentType\",\n paymentTypes: \"getPaymentTypes\",\n isBillingStepValid: \"isBillingStepValid\",\n }),\n },\n methods: {\n ...mapMutations(\"subscription/billing\", {\n selectPaymentType: \"setPaymentType\",\n }),\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.billing-page-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 0 2rem;\n margin-left: 0;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./billingPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./billingPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./billingPage.vue?vue&type=template&id=58e4bdea&scoped=true&\"\nimport script from \"./billingPage.vue?vue&type=script&lang=js&\"\nexport * from \"./billingPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./billingPage.vue?vue&type=style&index=0&id=58e4bdea&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58e4bdea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('div',{staticClass:\"container is-fullhd contract-page-container\"},[_c('div',{staticClass:\"columns is-multiline\"},[_c('div',{staticClass:\"column is-full\"},[_c('div',{staticClass:\"block\"},[_c('contract-summary')],1),(!_vm.isValidatedEmail)?_c('div',{staticClass:\"content has-text-centered\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"contract.forFinishContractValidEmail\")))]),_c('b-button',{attrs:{\"disabled\":!_vm.isSubscriptionValidForSave ||\n _vm.isSaveSubscriptionLoading ||\n _vm.isSendEmailValidationLoading,\"loading\":_vm.isSaveSubscriptionLoading || _vm.isSendEmailValidationLoading,\"cy-id\":\"button-validEmail\",\"type\":\"is-primary\"},on:{\"click\":_vm.saveFormAndSendMailValidation}},[_vm._v(_vm._s(_vm.$t(\"contract.validEmail\"))+\" \")])],1):[_c('div',{staticClass:\"block\"},[_c('b-message',{staticClass:\"validateEmail-message\",attrs:{\"has-icon\":\"\",\"icon\":\"check\",\"icon-size\":\"is-small\",\"type\":\"is-success\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.validatedEmailAddress\"))+\" \")])],1),_c('div',{staticClass:\"block content\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"contractSigning.pleaseConfirmReadingConditionOfSale\"))+\" \"),_c('a',{attrs:{\"href\":_vm.getUrlConditionOfSale,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"contractSigning.conditionOfSale\")))])])]),_c('div',{staticClass:\"field\"},[_c('b-checkbox',{attrs:{\"value\":_vm.termsAndConditions,\"cy-id\":\"checkboxConditionOfSale\"},on:{\"input\":_vm.setTermsAndConditions}},[_vm._v(_vm._s(_vm.$t(\"contractSigning.declareHaveReadConditionOfSaleAndAccept\"))+\" \")])],1),_c('div',{staticClass:\"field\"},[_c('b-checkbox',{attrs:{\"value\":_vm.solarPanelsInstalled,\"cy-id\":\"checkboxSolarPanelsInstalled\"},on:{\"input\":_vm.setSolarPanelsInstalled}},[_vm._v(_vm._s(_vm.$t( `contractSigning.${_vm.tenant}.declareHaveInstalledSolarPanels` ))+\" \")])],1),_c('div',{staticClass:\"block has-text-right\"},[_c('b-button',{attrs:{\"disabled\":!_vm.isSubscriptionValidForSign,\"cy-id\":\"signButton\",\"type\":\"is-primary\"},on:{\"click\":_vm.redirectToContractSigning}},[_vm._v(_vm._s(_vm.$t(\"contractSigning.signButton\"))+\" \")])],1)]],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"subscription-summary-container\"},[_c('h2',{staticClass:\"title is-5\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.pleaseCheckBeforeSigning\"))+\" \")]),_c('div',{staticClass:\"columns is-multiline is-variable is-4\"},[_c('div',{staticClass:\"column is-half-desktop is-full-tablet client-information-container\"},[_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"header-inner-container\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.clientInformation\"))+\" \")])]),_c('div',{staticClass:\"body\"},[_c('div',{staticClass:\"info-section\"},[(_vm.isProfessionalClient)?_c('div',{staticClass:\"info-item\",attrs:{\"cy-id\":\"companyNameContent\"}},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.companyName\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.companyName)+\" \")])]):_vm._e(),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.familyName\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.familyName)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.firstName\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.firstName)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.email\"))+\" \")]),_c('div',{staticClass:\"info-item-value\",attrs:{\"cy-id\":\"emailAddress\"}},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.email)+\" \")])])]),_c('div',{staticClass:\"info-section\"},[_c('div',{staticClass:\"info-item is-column\"},[_c('div',{staticClass:\"info-item-name has-text-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.billingAddress\"))+\" \")]),_c('div',{staticClass:\"info-item-value\",attrs:{\"cy-id\":\"billingAddress\"}},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.billingAddress)+\" \")])])]),_c('div',{staticClass:\"info-section\"},[_c('div',{staticClass:\"info-item is-column\"},[_c('div',{staticClass:\"info-item-name has-text-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.physicalAddress\"))+\" \")]),_c('div',{staticClass:\"info-item-value\",attrs:{\"cy-id\":\"physicalAddress\"}},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.physicalAddress)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.pdlNumber\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.pdlNumber)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.gridOperator\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.gridOperator)+\" \")])])])])])]),_c('div',{staticClass:\"column is-half-desktop is-full-tablet offer-information-container\"},[_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"header\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.offerInformation\"))+\" \")]),_c('div',{staticClass:\"body\"},[_c('div',{staticClass:\"info-section\"},[_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.offer\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.offerInformation.offerType)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.tariffType\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.offerInformation.tariffType)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.contractedPower\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.offerInformation.contractedPower)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(`contract.${_vm.tenant}.batteryCapacity`))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.offerInformation.batteryCapacity)+\" \")])])]),_c('div',{staticClass:\"info-section has-text-justified is-flex is-flex-grow-1 is-justify-content-flex-end\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.contractAdditionalInfo\"))+\" \")])])])]),_c('div',{staticClass:\"column is-full payment-information-container\"},[_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"header\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.paymentInformation\"))+\" \")]),_c('div',{staticClass:\"body\"},[_c('div',{staticClass:\"info-section\"},[_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.billingType\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.paymentInformation.billingType)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.paymentType\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.paymentInformation.paymentType)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('div',{staticClass:\"info-item-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.contractDeliveryType\"))+\" \")]),_c('div',{staticClass:\"info-item-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.paymentInformation.contractDeliveryType)+\" \")])])])])])])]),(!_vm.isSubscriptionValid)?_c('div',{staticClass:\"block\"},[_c('b-message',{attrs:{\"cy-id\":\"message-invalidSubscription\",\"type\":\"is-warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"contract.pleaseFillAllInfo\"))+\" \"),_c('div',{staticClass:\"content\"},[_c('ul',_vm._l((_vm.getIncompleteSteps),function(incompleteStep,index){return _c('li',{key:index,attrs:{\"cy-id\":`${incompleteStep}Incomplete`}},[_vm._v(\" \"+_vm._s(_vm.$t(`contract.incompleteStep.${incompleteStep}`))+\" \")])}),0)])])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"subscription-summary-container\">\n <h2 class=\"title is-5\">\n {{ $t(\"contract.pleaseCheckBeforeSigning\") }}\n </h2>\n <div class=\"columns is-multiline is-variable is-4\">\n <div\n class=\"column is-half-desktop is-full-tablet client-information-container\"\n >\n <div class=\"inner-container\">\n <div class=\"header\">\n <div class=\"header-inner-container\">\n {{ $t(\"contract.clientInformation\") }}\n </div>\n </div>\n <div class=\"body\">\n <div class=\"info-section\">\n <div\n v-if=\"isProfessionalClient\"\n class=\"info-item\"\n cy-id=\"companyNameContent\"\n >\n <div class=\"info-item-name\">\n {{ $t(\"contract.companyName\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.clientInformation.companyName }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.familyName\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.clientInformation.familyName }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.firstName\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.clientInformation.firstName }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.email\") }}\n </div>\n <div class=\"info-item-value\" cy-id=\"emailAddress\">\n {{ contractSummary.clientInformation.email }}\n </div>\n </div>\n </div>\n <div class=\"info-section\">\n <div class=\"info-item is-column\">\n <div class=\"info-item-name has-text-weight-bold\">\n {{ $t(\"contract.billingAddress\") }}\n </div>\n <div class=\"info-item-value\" cy-id=\"billingAddress\">\n {{ contractSummary.clientInformation.billingAddress }}\n </div>\n </div>\n </div>\n <div class=\"info-section\">\n <div class=\"info-item is-column\">\n <div class=\"info-item-name has-text-weight-bold\">\n {{ $t(\"contract.physicalAddress\") }}\n </div>\n <div class=\"info-item-value\" cy-id=\"physicalAddress\">\n {{ contractSummary.clientInformation.physicalAddress }}\n </div>\n </div>\n\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.pdlNumber\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.clientInformation.pdlNumber }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.gridOperator\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.clientInformation.gridOperator }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"column is-half-desktop is-full-tablet offer-information-container\"\n >\n <div class=\"inner-container\">\n <div class=\"header\">\n {{ $t(\"contract.offerInformation\") }}\n </div>\n <div class=\"body\">\n <div class=\"info-section\">\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.offer\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.offerInformation.offerType }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.tariffType\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.offerInformation.tariffType }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.contractedPower\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.offerInformation.contractedPower }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(`contract.${tenant}.batteryCapacity`) }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.offerInformation.batteryCapacity }}\n </div>\n </div>\n </div>\n <div\n class=\"info-section has-text-justified is-flex is-flex-grow-1 is-justify-content-flex-end\"\n >\n {{ $t(\"contract.contractAdditionalInfo\") }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-full payment-information-container\">\n <div class=\"inner-container\">\n <div class=\"header\">\n {{ $t(\"contract.paymentInformation\") }}\n </div>\n <div class=\"body\">\n <div class=\"info-section\">\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.billingType\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.paymentInformation.billingType }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.paymentType\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.paymentInformation.paymentType }}\n </div>\n </div>\n <div class=\"info-item\">\n <div class=\"info-item-name\">\n {{ $t(\"contract.contractDeliveryType\") }}\n </div>\n <div class=\"info-item-value\">\n {{ contractSummary.paymentInformation.contractDeliveryType }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-if=\"!isSubscriptionValid\" class=\"block\">\n <b-message cy-id=\"message-invalidSubscription\" type=\"is-warning\">\n {{ $t(\"contract.pleaseFillAllInfo\") }}\n <div class=\"content\">\n <ul>\n <li\n v-for=\"(incompleteStep, index) in getIncompleteSteps\"\n :key=\"index\"\n :cy-id=\"`${incompleteStep}Incomplete`\"\n >\n {{ $t(`contract.incompleteStep.${incompleteStep}`) }}\n </li>\n </ul>\n </div>\n </b-message>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport { ClientType } from \"@/store/subscription/contactInformation/type\";\n\nexport default {\n name: \"contract-summary\",\n data() {\n return {\n ClientType,\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n computed: {\n ...mapGetters(\"subscription\", {\n isSubscriptionValid: \"isSubscriptionValidForSave\",\n }),\n ...mapGetters(\"subscription/contract\", {\n contractSummary: \"getContractSummary\",\n }),\n ...mapGetters(\"subscription/contactInformation\", {\n isContactInformationStepValid: \"isContactInformationStepValid\",\n isProfessionalClient: \"isProfessionalClient\",\n clientType: \"getClientType\",\n }),\n ...mapGetters(\"subscription/housing\", {\n isHousingStepValid: \"isHousingStepValid\",\n }),\n ...mapGetters(\"subscription/offer\", {\n isOfferStepValid: \"isOfferStepValid\",\n }),\n ...mapGetters(\"subscription/billing\", {\n isBillingStepValid: \"isBillingStepValid\",\n }),\n ...mapGetters(\"subscription/bankDetails\", {\n isBankDetailsStepValid: \"isBankDetailsStepValid\",\n }),\n getIncompleteSteps() {\n const incompleteSteps = [];\n if (!this.isOfferStepValid) {\n incompleteSteps.push(\"offer\");\n }\n if (!this.isContactInformationStepValid) {\n incompleteSteps.push(\"contactInformation\");\n }\n if (!this.isHousingStepValid) {\n incompleteSteps.push(\"housing\");\n }\n if (!this.isBillingStepValid) {\n incompleteSteps.push(\"billing\");\n }\n if (!this.isBankDetailsStepValid) {\n incompleteSteps.push(\"bankDetails\");\n }\n return incompleteSteps;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.subscription-summary-container {\n .client-information-container,\n .offer-information-container,\n .payment-information-container {\n height: auto;\n\n .inner-container {\n position: relative;\n height: 100%;\n display: flex;\n flex-direction: column;\n padding-top: 2.5rem;\n overflow: hidden;\n\n .header {\n position: absolute;\n top: 0;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n color: $white;\n background-color: $primary;\n font-size: 1.3rem;\n height: 3.5rem;\n padding: 0 0.75rem;\n font-weight: 600;\n border-radius: 1rem;\n }\n\n .body {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n padding: 0.5rem 1rem;\n padding-top: 1.25rem;\n border: 2px solid $primary;\n border-bottom-right-radius: 1rem;\n border-bottom-left-radius: 1rem;\n\n .info-section {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n padding: 0.5rem 0;\n }\n\n .info-item {\n display: flex;\n\n &.is-column {\n flex-direction: column;\n\n .info-item-value {\n margin-left: 0;\n }\n }\n\n .info-item-name {\n font-style: italic;\n font-weight: 400;\n }\n\n .info-item-value {\n margin-left: 0.3rem;\n font-weight: 500;\n }\n }\n }\n }\n }\n\n .offer-information-container {\n .inner-container {\n .header {\n background-color: $grey;\n }\n\n .body {\n border-color: $grey;\n\n .info-item {\n flex-grow: 1;\n }\n }\n }\n }\n}\n\n@include media(\"<tablet\") {\n .subscription-summary-container {\n .info-item {\n flex-direction: column;\n padding: 0.25rem 0;\n\n .info-item-value {\n margin: 0 !important;\n }\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContractSummary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContractSummary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContractSummary.vue?vue&type=template&id=5383f42d&scoped=true&\"\nimport script from \"./ContractSummary.vue?vue&type=script&lang=js&\"\nexport * from \"./ContractSummary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContractSummary.vue?vue&type=style&index=0&id=5383f42d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5383f42d\",\n null\n \n)\n\nexport default component.exports","<template>\n <section>\n <div class=\"container is-fullhd contract-page-container\">\n <div class=\"columns is-multiline\">\n <div class=\"column is-full\">\n <div class=\"block\">\n <contract-summary />\n </div>\n <div v-if=\"!isValidatedEmail\" class=\"content has-text-centered\">\n <p>{{ $t(\"contract.forFinishContractValidEmail\") }}</p>\n <b-button\n :disabled=\"\n !isSubscriptionValidForSave ||\n isSaveSubscriptionLoading ||\n isSendEmailValidationLoading\n \"\n :loading=\"\n isSaveSubscriptionLoading || isSendEmailValidationLoading\n \"\n cy-id=\"button-validEmail\"\n type=\"is-primary\"\n @click=\"saveFormAndSendMailValidation\"\n >{{ $t(\"contract.validEmail\") }}\n </b-button>\n </div>\n <template v-else>\n <div class=\"block\">\n <b-message\n class=\"validateEmail-message\"\n has-icon\n icon=\"check\"\n icon-size=\"is-small\"\n type=\"is-success\"\n >\n {{ $t(\"contract.validatedEmailAddress\") }}\n </b-message>\n </div>\n <div class=\"block content\">\n <p>\n {{ $t(\"contractSigning.pleaseConfirmReadingConditionOfSale\") }}\n <a :href=\"getUrlConditionOfSale\" target=\"_blank\">{{\n $t(\"contractSigning.conditionOfSale\")\n }}</a>\n </p>\n </div>\n <div class=\"field\">\n <b-checkbox\n :value=\"termsAndConditions\"\n cy-id=\"checkboxConditionOfSale\"\n @input=\"setTermsAndConditions\"\n >{{\n $t(\"contractSigning.declareHaveReadConditionOfSaleAndAccept\")\n }}\n </b-checkbox>\n </div>\n <div class=\"field\">\n <b-checkbox\n :value=\"solarPanelsInstalled\"\n cy-id=\"checkboxSolarPanelsInstalled\"\n @input=\"setSolarPanelsInstalled\"\n >{{\n $t(\n `contractSigning.${tenant}.declareHaveInstalledSolarPanels`\n )\n }}\n </b-checkbox>\n </div>\n <div class=\"block has-text-right\">\n <b-button\n :disabled=\"!isSubscriptionValidForSign\"\n cy-id=\"signButton\"\n type=\"is-primary\"\n @click=\"redirectToContractSigning\"\n >{{ $t(\"contractSigning.signButton\") }}\n </b-button>\n </div>\n </template>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nimport { mapActions, mapGetters, mapMutations } from \"vuex\";\nimport { RouteName } from \"@/store/navigation/type\";\nimport ContractSummary from \"./ContractSummary\";\n\nexport default {\n name: \"contractPage\",\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n legalStorageBaseUrl: `${process.env.VUE_APP_AZURE_STORAGE_BASE_URL}/legal`,\n };\n },\n components: { ContractSummary },\n computed: {\n ...mapGetters(\"subscription\", {\n isSubscriptionValidForSave: \"isSubscriptionValidForSave\",\n isSubscriptionValidForSign: \"isSubscriptionValidForSign\",\n isSaveSubscriptionLoading: \"isSaveSubscriptionLoading\",\n }),\n ...mapGetters(\"subscription/emailValidation\", {\n isValidatedEmail: \"isValidatedEmail\",\n isSendEmailValidationLoading: \"isSendEmailValidationLoading\",\n }),\n ...mapGetters(\"subscription/contract\", {\n termsAndConditions: \"getTermsAndConditions\",\n }),\n ...mapGetters(\"subscription/contract\", {\n solarPanelsInstalled: \"getSolarPanelsInstalled\",\n }),\n ...mapGetters(\"subscription/contactInformation\", {\n isProfessionalClient: \"isProfessionalClient\",\n }),\n\n getUrlConditionOfSale() {\n if (this.tenant === \"MYL\") {\n return \"https://www.mylight-systems.com/fournisseur-producteur-denergie\";\n } else {\n return this.isProfessionalClient\n ? \"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte-pro/conditions-generales-de-vente-pro/\"\n : \"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte/conditions-generales-de-vente/\";\n }\n },\n },\n methods: {\n ...mapMutations(\"subscription/contract\", [\"setTermsAndConditions\"]),\n ...mapMutations(\"subscription/contract\", [\"setSolarPanelsInstalled\"]),\n ...mapActions(\"subscription\", [\"saveSubscription\"]),\n ...mapActions(\"subscription/emailValidation\", [\"sendValidationEmail\"]),\n redirectToContractSigning() {\n this.$router.push({ name: RouteName.ContractSigning });\n },\n saveFormAndSendMailValidation() {\n this.saveSubscription()\n .then((subscriptionId) => {\n this.sendValidationEmail(subscriptionId)\n .then(() => {\n this.$router.push({ name: RouteName.EmailValidationSent });\n })\n .catch((error) => {\n console.error(error);\n });\n })\n .catch((error) => {\n console.error(error);\n });\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.contract-page-container {\n padding: 0 2rem;\n margin: auto;\n}\n\n.validateEmail-message :deep(.media-left) {\n .icon {\n height: 1.5rem;\n width: 1.5rem;\n }\n\n .mdi:before {\n font-size: 24px !important;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contractPage.vue?vue&type=template&id=6ea0803f&scoped=true&\"\nimport script from \"./contractPage.vue?vue&type=script&lang=js&\"\nexport * from \"./contractPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contractPage.vue?vue&type=style&index=0&id=6ea0803f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ea0803f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"contractActivationPage\"}},[_c('MainLayout',{scopedSlots:_vm._u([{key:\"sidebar\",fn:function(){return [_c('ActivationSteps',{attrs:{\"activationStatus\":_vm.getContractActivationStatus}})]},proxy:true},{key:\"content\",fn:function(){return [_c('section',[_c('div',{staticClass:\"container is-fullhd contract-activation-page-container\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-half-desktop is-full-tablet\"},[_c('div',{staticClass:\"details-info-container\"},[_c('div',{staticClass:\"info-item as-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.details\"))+\" \")]),_c('div',{staticClass:\"info-item\"},[_c('span',{staticClass:\"info-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.familyName\")))]),_c('span',{staticClass:\"info-value\"},[_vm._v(_vm._s(_vm.contractSummary.clientInformation.familyName))])]),_c('div',{staticClass:\"info-item\"},[_c('span',{staticClass:\"info-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.firstName\")))]),_c('span',{staticClass:\"info-value\"},[_vm._v(_vm._s(_vm.contractSummary.clientInformation.firstName))])]),_c('div',{staticClass:\"info-item\"},[_c('span',{staticClass:\"info-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.address\")))]),_c('span',{staticClass:\"info-value\"},[_vm._v(\" \"+_vm._s(_vm.contractSummary.clientInformation.physicalAddress)+\" \")])]),_c('div',{staticClass:\"info-item\"},[_c('span',{staticClass:\"info-name\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.pdlNumber\")))]),_c('span',{staticClass:\"info-value\"},[_vm._v(_vm._s(_vm.contractSummary.clientInformation.pdlNumber))])])]),_c('div',{staticClass:\"contract-info-container\"},[_c('div',{staticClass:\"info-item as-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.contract\"))+\" \")]),_c('div',{staticClass:\"info-item\"},[(_vm.isDownloadContractLoading)?_c('span',[_c('span',{staticClass:\"download-contract-button loading\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.contractDownloading\")))])]):_c('span',{staticClass:\"download-contract-button\",attrs:{\"cy-id\":\"contractActivation-downloadContract\"},on:{\"click\":_vm.downloadContract}},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.contractName\", { contractName: _vm.contractSummary.contractSigningInformation .contractName, })))])])]),_c('div',{staticClass:\"status-info-container\",attrs:{\"cy-id\":`contractActivation-statusInfo-${_vm.getContractActivationStatus}`}},[_c('div',{staticClass:\"info-item as-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.status\"))+\" \")]),_c('div',{staticClass:\"info-item as-subtitle\"},[_vm._v(\" \"+_vm._s(_vm.getContractActivationStatusTitle)+\" \")]),_c('div',{staticClass:\"info-item content\"},[(_vm.getContractActivationStatusDescriptionBegin)?_c('p',{staticClass:\"has-text-justified\"},[_vm._v(\" \"+_vm._s(_vm.getContractActivationStatusDescriptionBegin)+\" \")]):_vm._e(),(_vm.isPendingActivation)?_c('p',{staticClass:\"activate-contract-button-container has-text-centered\"},[_c('b-button',{attrs:{\"disabled\":_vm.isActivateContractLoading,\"loading\":_vm.isActivateContractLoading,\"cy-id\":\"contractActivation-activateContract\",\"type\":\"is-primary\"},on:{\"click\":_vm.activateContract}},[_vm._v(_vm._s(_vm.$t(\"contractActivation.activateContractButton\"))+\" \")])],1):_vm._e(),(_vm.getContractActivationStatusDescriptionEnd)?_c('p',[_c('b-message',{attrs:{\"type\":\"is-warning\"}},[_vm._v(\" \"+_vm._s(_vm.getContractActivationStatusDescriptionEnd)+\" \")])],1):_vm._e()]),(_vm.isPendingActivation)?_c('div',{staticClass:\"info-item activate-contract-button-container\"}):_vm._e()]),(_vm.tenant === 'DOM')?_c('div',{staticClass:\"additional-info-container\"},[_c('b-message',{attrs:{\"type\":\"is-info\"}},[_c('i18n',{attrs:{\"path\":\"contractActivation.linkToFaq\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":\"https://www.domuneo.com/energie-stockage/comprendr-ma-facture-faq/\",\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"contractActivation.faq\"))+\" \")])]},proxy:true}],null,false,904046835)})],1)],1):_vm._e()])])])])]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const RETRACTION_PERIOD = 14;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-steps',{attrs:{\"has-navigation\":false,\"value\":_vm.activationStatus,\"animated\":\"\",\"vertical\":\"\"}},[_c('b-step-item',{attrs:{\"clickable\":false,\"value\":'SIGNED',\"label\":\"Signé\",\"step\":\"1\"}}),_c('b-step-item',{attrs:{\"clickable\":false,\"value\":'PENDING_ACTIVATION',\"label\":\"Activable\",\"step\":\"2\"}}),_c('b-step-item',{attrs:{\"clickable\":false,\"value\":'ACTIVATION_REQUESTED',\"label\":\"En cours\",\"step\":\"3\"}}),_c('b-step-item',{attrs:{\"clickable\":false,\"value\":'GRID_EXTRACTION_ACTIVATED',\"icon\":\"check-bold\",\"label\":\"En service\",\"step\":\"4\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <b-steps :has-navigation=\"false\" :value=\"activationStatus\" animated vertical>\n <b-step-item :clickable=\"false\" :value=\"'SIGNED'\" label=\"Signé\" step=\"1\" />\n <b-step-item\n :clickable=\"false\"\n :value=\"'PENDING_ACTIVATION'\"\n label=\"Activable\"\n step=\"2\"\n />\n <b-step-item\n :clickable=\"false\"\n :value=\"'ACTIVATION_REQUESTED'\"\n label=\"En cours\"\n step=\"3\"\n />\n <b-step-item\n :clickable=\"false\"\n :value=\"'GRID_EXTRACTION_ACTIVATED'\"\n icon=\"check-bold\"\n label=\"En service\"\n step=\"4\"\n />\n </b-steps>\n</template>\n\n<script>\nexport default {\n name: \"activationSteps\",\n props: {\n activationStatus: String,\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.b-steps :deep(.steps) {\n margin: 0 auto;\n width: 100%;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./activationSteps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./activationSteps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./activationSteps.vue?vue&type=template&id=7f966734&scoped=true&\"\nimport script from \"./activationSteps.vue?vue&type=script&lang=js&\"\nexport * from \"./activationSteps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./activationSteps.vue?vue&type=style&index=0&id=7f966734&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f966734\",\n null\n \n)\n\nexport default component.exports","<template>\n <div id=\"contractActivationPage\">\n <MainLayout>\n <template v-slot:sidebar>\n <ActivationSteps :activationStatus=\"getContractActivationStatus\" />\n </template>\n <template v-slot:content>\n <section>\n <div class=\"container is-fullhd contract-activation-page-container\">\n <div class=\"columns\">\n <div class=\"column is-half-desktop is-full-tablet\">\n <div class=\"details-info-container\">\n <div class=\"info-item as-title\">\n {{ $t(\"contractActivation.details\") }}\n </div>\n <div class=\"info-item\">\n <span class=\"info-name\">\n {{ $t(\"contractActivation.familyName\") }}</span\n >\n <span class=\"info-value\">{{\n contractSummary.clientInformation.familyName\n }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-name\">\n {{ $t(\"contractActivation.firstName\") }}</span\n >\n <span class=\"info-value\">{{\n contractSummary.clientInformation.firstName\n }}</span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-name\">\n {{ $t(\"contractActivation.address\") }}</span\n >\n <span class=\"info-value\">\n {{ contractSummary.clientInformation.physicalAddress }}\n </span>\n </div>\n <div class=\"info-item\">\n <span class=\"info-name\">\n {{ $t(\"contractActivation.pdlNumber\") }}</span\n >\n <span class=\"info-value\">{{\n contractSummary.clientInformation.pdlNumber\n }}</span>\n </div>\n </div>\n <div class=\"contract-info-container\">\n <div class=\"info-item as-title\">\n {{ $t(\"contractActivation.contract\") }}\n </div>\n <div class=\"info-item\">\n <span v-if=\"isDownloadContractLoading\">\n <span class=\"download-contract-button loading\">\n {{ $t(\"contractActivation.contractDownloading\") }}</span\n >\n </span>\n <span\n v-else\n class=\"download-contract-button\"\n cy-id=\"contractActivation-downloadContract\"\n @click=\"downloadContract\"\n >\n {{\n $t(\"contractActivation.contractName\", {\n contractName:\n contractSummary.contractSigningInformation\n .contractName,\n })\n }}</span\n >\n </div>\n </div>\n <div\n :cy-id=\"`contractActivation-statusInfo-${getContractActivationStatus}`\"\n class=\"status-info-container\"\n >\n <div class=\"info-item as-title\">\n {{ $t(\"contractActivation.status\") }}\n </div>\n <div class=\"info-item as-subtitle\">\n {{ getContractActivationStatusTitle }}\n </div>\n <div class=\"info-item content\">\n <p\n v-if=\"getContractActivationStatusDescriptionBegin\"\n class=\"has-text-justified\"\n >\n {{ getContractActivationStatusDescriptionBegin }}\n </p>\n <p\n v-if=\"isPendingActivation\"\n class=\"activate-contract-button-container has-text-centered\"\n >\n <b-button\n :disabled=\"isActivateContractLoading\"\n :loading=\"isActivateContractLoading\"\n cy-id=\"contractActivation-activateContract\"\n type=\"is-primary\"\n @click=\"activateContract\"\n >{{ $t(\"contractActivation.activateContractButton\") }}\n </b-button>\n </p>\n <p v-if=\"getContractActivationStatusDescriptionEnd\">\n <b-message type=\"is-warning\">\n {{ getContractActivationStatusDescriptionEnd }}\n </b-message>\n </p>\n </div>\n <div\n v-if=\"isPendingActivation\"\n class=\"info-item activate-contract-button-container\"\n ></div>\n </div>\n <div v-if=\"tenant === 'DOM'\" class=\"additional-info-container\">\n <b-message type=\"is-info\">\n <i18n path=\"contractActivation.linkToFaq\" tag=\"p\">\n <template v-slot:link>\n <a\n href=\"https://www.domuneo.com/energie-stockage/comprendr-ma-facture-faq/\"\n target=\"_blank\"\n >\n {{ $t(\"contractActivation.faq\") }}\n </a>\n </template>\n </i18n>\n </b-message>\n </div>\n </div>\n </div>\n </div>\n </section>\n </template>\n </MainLayout>\n </div>\n</template>\n\n<script>\nimport { mapActions, mapGetters } from \"vuex\";\nimport { ContractSigningStatus } from \"@/store/subscription/contractSigning/type\";\nimport moment from \"moment\";\nimport { RETRACTION_PERIOD } from \"@/store/subscription/contractActivation/constant\";\nimport MainLayout from \"@/components/layout/MainLayout\";\nimport ActivationSteps from \"@/views/contractActivation/activationSteps\";\n\nexport default {\n name: \"contract-activation-page\",\n components: {\n MainLayout,\n ActivationSteps,\n },\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n computed: {\n ...mapGetters(\"subscription/contract\", {\n contractSummary: \"getContractSummary\",\n }),\n ...mapGetters(\"subscription/contractActivation\", {\n isActivateContractLoading: \"getActivateContractLoading\",\n isDownloadContractLoading: \"getDownloadContractLoading\",\n canReachContractActivationPage: \"canReachContractActivationPage\",\n }),\n getContractActivationStatus() {\n return this.contractSummary.contractSigningInformation\n .contractSigningStatus;\n },\n isSigned() {\n switch (this.getContractActivationStatus) {\n case ContractSigningStatus.SIGNED_CONTRACT_DOWNLOAD_FAILED:\n case ContractSigningStatus.SIGNED_CONTRACT_PERSISTENCE_FAILED:\n case ContractSigningStatus.CONFIRMATION_EMAIL_FAILED:\n case ContractSigningStatus.SIGNED:\n return true;\n default:\n return false;\n }\n },\n isActivationRequested() {\n return (\n this.getContractActivationStatus ===\n ContractSigningStatus.ACTIVATION_REQUESTED\n );\n },\n isPendingActivation() {\n return (\n this.getContractActivationStatus ===\n ContractSigningStatus.PENDING_ACTIVATION\n );\n },\n isGridExtractionActivated() {\n return (\n this.getContractActivationStatus ===\n ContractSigningStatus.GRID_EXTRACTION_ACTIVATED\n );\n },\n getOpeningActivationDate() {\n return moment(\n this.contractSummary.contractSigningInformation.signatureDate\n )\n .add(RETRACTION_PERIOD, \"days\")\n .format(\"L\");\n },\n getActivationDate() {\n return moment(\n this.contractSummary.contractSigningInformation.activationDate\n ).format(\"L\");\n },\n getContractActivationStatusTitle() {\n if (this.isSigned) {\n return this.$t(`contractActivation.steps.SIGNED.title`);\n }\n return this.$t(\n `contractActivation.steps['${this.getContractActivationStatus}'].title`\n );\n },\n getContractActivationStatusDescriptionBegin() {\n if (this.isSigned) {\n return this.$t(\"contractActivation.steps.SIGNED.description\", {\n openingActivationDate: this.getOpeningActivationDate,\n });\n }\n if (this.isPendingActivation) {\n return this.$t(\n \"contractActivation.steps.PENDING_ACTIVATION.beginDescription\"\n );\n }\n if (this.isActivationRequested) {\n return this.$t(\n \"contractActivation.steps.ACTIVATION_REQUESTED.description\",\n {\n activationDate: this.getActivationDate,\n gridOperator: this.contractSummary.clientInformation.gridOperator,\n }\n );\n }\n if (this.isGridExtractionActivated) {\n const tenant =\n process.env.VUE_APP_TENANT === \"MYL\"\n ? this.$t(\"common.mylight150\")\n : this.$t(\"common.Domuneo\");\n\n return this.$t(\n \"contractActivation.steps.GRID_EXTRACTION_ACTIVATED.description\",\n { tenant }\n );\n }\n return null;\n },\n getContractActivationStatusDescriptionEnd() {\n if (this.isPendingActivation) {\n return this.$t(\n \"contractActivation.steps.PENDING_ACTIVATION.endDescription\"\n );\n }\n return null;\n },\n },\n methods: {\n ...mapActions(\"subscription/contractActivation\", [\n \"activateContract\",\n \"downloadContract\",\n ]),\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n#contractActivationPage {\n display: grid;\n width: 100vw;\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n grid-template-columns: 200px 1fr;\n grid-template-rows: $desktop-height-main-header 0 1fr;\n}\n\n@include media(\"<tablet\") {\n #contractActivationPage {\n grid-template-rows: $mobile-height-main-header 60px 1fr;\n }\n}\n\n.contract-activation-page-container {\n padding: 0 2rem;\n margin-left: 0;\n\n .info-item {\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.75rem;\n padding-left: 0.5rem;\n\n &.as-title {\n font-weight: 500;\n font-size: 1.25rem;\n margin-bottom: 0.5rem;\n padding-left: 0;\n }\n\n &.as-subtitle {\n font-size: 1.15rem;\n text-decoration: underline;\n padding: 0.5rem;\n }\n\n .info-name {\n padding-right: 0.25rem;\n }\n }\n\n .details-info-container {\n margin-bottom: 2rem;\n }\n\n .contract-info-container {\n margin-bottom: 2rem;\n\n .download-contract-button {\n text-decoration: underline;\n cursor: pointer;\n color: $primary;\n\n &:hover {\n color: $black;\n }\n\n &.loading {\n cursor: pointer;\n text-decoration: none;\n color: $grey;\n }\n }\n }\n\n .status-info-container {\n margin-bottom: 1.5rem;\n\n .activate-contract-button-container {\n margin: 1.5rem 0;\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractActivationPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractActivationPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contractActivationPage.vue?vue&type=template&id=62739023&scoped=true&\"\nimport script from \"./contractActivationPage.vue?vue&type=script&lang=js&\"\nexport * from \"./contractActivationPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contractActivationPage.vue?vue&type=style&index=0&id=62739023&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62739023\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('FullWidthLayout',{attrs:{\"with-back-button\":true,\"without-padding\":true,\"data-cy\":\"contractSigningPage\"},on:{\"on-go-back\":_vm.redirectToContractPage,\"on-help\":_vm.openHelpModal}},[(_vm.isLoadingYousign)?_c('div',{staticClass:\"container is-fluid contract-signing-process has-text-centered\"},[_c('p',{staticClass:\"contract-signing-title\"},[_vm._v(_vm._s(_vm.contractSigningStatusMessage))]),_c('b-loading',{attrs:{\"active\":_vm.isContractSigningLoading,\"is-full-page\":false}})],1):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoadingYousign),expression:\"!isLoadingYousign\"}],attrs:{\"id\":\"iframe-container\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <FullWidthLayout\n :with-back-button=\"true\"\n :without-padding=\"true\"\n data-cy=\"contractSigningPage\"\n @on-go-back=\"redirectToContractPage\"\n @on-help=\"openHelpModal\"\n >\n <div\n v-if=\"isLoadingYousign\"\n class=\"container is-fluid contract-signing-process has-text-centered\"\n >\n <p class=\"contract-signing-title\">{{ contractSigningStatusMessage }}</p>\n <b-loading :active=\"isContractSigningLoading\" :is-full-page=\"false\">\n </b-loading>\n </div>\n <div v-show=\"!isLoadingYousign\" id=\"iframe-container\"></div>\n </FullWidthLayout>\n</template>\n\n<script>\nimport FullWidthLayout from \"@/components/layout/FullWidthLayout\";\nimport { mapActions, mapGetters } from \"vuex\";\nimport { RouteName } from \"../../store/navigation/type\";\n\nexport default {\n name: \"ContractSigningPage\",\n data() {\n return {\n helpModalOpen: false,\n isLoadingYousign: true,\n yousign: null,\n };\n },\n async created() {\n this.saveSubscription()\n .then(async () => {\n const requestId = this._uid;\n await this.startContractSigningProcess(requestId);\n })\n .catch((error) => {\n console.error(error);\n this.stopContractSigningProgressPolling();\n this.redirectToContractPage();\n });\n },\n components: { FullWidthLayout },\n computed: {\n ...mapGetters(\"subscription/contractSigning\", {\n contractSigningStatusMessage: \"getContractSigningStatusMessage\",\n\n contractSigningProcessLoading: \"getContractSigningProcessLoading\",\n contractSigningProgressLoading: \"getContractSigningProgressLoading\",\n\n isYousignSignatureUrlValid: \"isYousignSignatureUrlValid\",\n getYousignIframeUrl: \"getYousignIframeUrl\",\n }),\n ...mapGetters(\"subscription\", {\n subscriptionId: \"getSubscriptionId\",\n }),\n isContractSigningLoading() {\n return (\n this.contractSigningProcessLoading ||\n this.contractSigningProgressLoading\n );\n },\n },\n methods: {\n ...mapActions(\"subscription/contractSigning\", [\n \"startContractSigningProcess\",\n \"stopContractSigningProgressPolling\",\n ]),\n ...mapActions(\"subscription\", [\"saveSubscription\"]),\n redirectToContractPage() {\n this.$router.push({ name: RouteName.Contract });\n },\n openHelpModal() {\n this.helpModalOpen = true;\n },\n },\n watch: {\n getYousignIframeUrl: function (signatureUrl) {\n if (!signatureUrl) return;\n try {\n const isYousignSandbox =\n String(process.env.VUE_APP_YOUSIGN_IS_SANDBOX).toLowerCase() ===\n \"true\";\n this.yousign = new Yousign({\n signatureLink: isYousignSandbox\n ? `${signatureUrl}&disable_domain_validation=true`\n : signatureUrl,\n iframeContainerId: \"iframe-container\",\n isSandbox: isYousignSandbox ? true : false,\n });\n this.isLoadingYousign = false;\n\n const iframe = document.getElementById(\"yousign-iframe\");\n if (iframe) {\n iframe.style.width = \"100%\";\n iframe.style.height = \"100%\";\n }\n\n this.yousign.onSuccess(() => {\n this.$router.push({\n name: RouteName.ContractActivation,\n query: { fromYousign: \"true\" },\n });\n }, 5000);\n } catch (err) {\n this.isLoadingYousign = false;\n }\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.contract-signing-process {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n\n .contract-signing-title {\n font-size: 1.1rem;\n margin-bottom: 8rem;\n }\n}\n\n#yousign-iframe {\n width: 100% !important;\n height: 100% !important;\n}\n\n#iframe-container {\n width: 100%;\n height: 100%; /* Hauteur de la fenêtre visible */\n position: relative;\n overflow: hidden;\n}\n\n.example-arrow-icon {\n vertical-align: top;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractSigningPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./contractSigningPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./contractSigningPage.vue?vue&type=template&id=321175c6&scoped=true&\"\nimport script from \"./contractSigningPage.vue?vue&type=script&lang=js&\"\nexport * from \"./contractSigningPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contractSigningPage.vue?vue&type=style&index=0&id=321175c6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"321175c6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('FullWidthLayout',[_c('section',[_c('div',{staticClass:\"container is-fluid\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-half\"},[_c('div',{staticClass:\"block\"},[_c('custom-input',{attrs:{\"disabled\":_vm.oldEmailaddressFieldDisabled,\"label\":_vm.$t('email.oldEmailAddress'),\"value\":_vm.email,\"name\":\"oldEmailAddress\"}}),_c('custom-input',{attrs:{\"label\":_vm.$t('email.newEmailAddress'),\"validation-errors\":_vm.newEmailAddressErrors,\"name\":\"newEmailAddress\"},model:{value:(_vm.newEmailAddress),callback:function ($$v) {_vm.newEmailAddress=$$v},expression:\"newEmailAddress\"}}),_c('custom-input',{attrs:{\"label\":_vm.$t('email.confirmNewEmailAddress'),\"validation-errors\":_vm.confirmNewEmailAddressErrors,\"name\":\"confirmNewEmailAddress\"},model:{value:(_vm.confirmNewEmailAddress),callback:function ($$v) {_vm.confirmNewEmailAddress=$$v},expression:\"confirmNewEmailAddress\"}})],1),_c('div',{staticClass:\"block has-text-centered\"},[_c('b-button',{attrs:{\"disabled\":!_vm.isUpdateEmailIsValid,\"loading\":_vm.isUpdateSubscriptionEmailLoading ||\n _vm.isSendEmailValidationForUpdateEmailLoading,\"cy-id\":\"modifyEmailAndSendEmailValidation\",\"size\":\"is-medium\",\"type\":\"is-primary\"},on:{\"click\":_vm.modifyEmailAndSendEmailValidation}},[_vm._v(_vm._s(_vm.$t(\"email.modifyEmailAndSendEmailValidation\"))+\" \")])],1),(_vm.updateSubscriptionEmailError)?_c('b-message',{attrs:{\"cy-id\":\"updateSubscriptionEmailError\",\"type\":\"is-danger\"}},[_vm._v(\" \"+_vm._s(_vm.getUpdateErrorMessage)+\" \")]):_vm._e(),(_vm.sendEmailValidationForUpdateEmailError)?_c('b-message',{attrs:{\"cy-id\":\"sendingEmailError\",\"type\":\"is-danger\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"email.errors.sendingEmail\"))+\" \")]):_vm._e()],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <FullWidthLayout>\n <section>\n <div class=\"container is-fluid\">\n <div class=\"columns is-centered\">\n <div class=\"column is-half\">\n <div class=\"block\">\n <custom-input\n :disabled=\"oldEmailaddressFieldDisabled\"\n :label=\"$t('email.oldEmailAddress')\"\n :value=\"email\"\n name=\"oldEmailAddress\"\n />\n <custom-input\n v-model=\"newEmailAddress\"\n :label=\"$t('email.newEmailAddress')\"\n :validation-errors=\"newEmailAddressErrors\"\n name=\"newEmailAddress\"\n />\n <custom-input\n v-model=\"confirmNewEmailAddress\"\n :label=\"$t('email.confirmNewEmailAddress')\"\n :validation-errors=\"confirmNewEmailAddressErrors\"\n name=\"confirmNewEmailAddress\"\n />\n </div>\n <div class=\"block has-text-centered\">\n <b-button\n :disabled=\"!isUpdateEmailIsValid\"\n :loading=\"\n isUpdateSubscriptionEmailLoading ||\n isSendEmailValidationForUpdateEmailLoading\n \"\n cy-id=\"modifyEmailAndSendEmailValidation\"\n size=\"is-medium\"\n type=\"is-primary\"\n @click=\"modifyEmailAndSendEmailValidation\"\n >{{ $t(\"email.modifyEmailAndSendEmailValidation\") }}\n </b-button>\n </div>\n <b-message\n v-if=\"updateSubscriptionEmailError\"\n cy-id=\"updateSubscriptionEmailError\"\n type=\"is-danger\"\n >\n {{ getUpdateErrorMessage }}\n </b-message>\n <b-message\n v-if=\"sendEmailValidationForUpdateEmailError\"\n cy-id=\"sendingEmailError\"\n type=\"is-danger\"\n >\n {{ $t(\"email.errors.sendingEmail\") }}\n </b-message>\n </div>\n </div>\n </div>\n </section>\n </FullWidthLayout>\n</template>\n\n<script>\nimport { RouteName } from \"@/store/navigation/type\";\nimport FullWidthLayout from \"@/components/layout/FullWidthLayout\";\nimport { mapActions, mapGetters } from \"vuex\";\nimport CustomInput from \"@/components/CustomInput\";\nimport { stringValidators } from \"@/store/subscription/validators\";\nimport i18n from \"@/i18n\";\n\nexport default {\n name: \"EditEmailPage\",\n components: { CustomInput, FullWidthLayout },\n data() {\n return {\n oldEmailaddressFieldDisabled: true,\n newEmailAddress: \"\",\n confirmNewEmailAddress: \"\",\n };\n },\n computed: {\n ...mapGetters(\"subscription\", {\n subscriptionId: \"getSubscriptionId\",\n updateSubscriptionEmailError: \"getUpdateSubscriptionEmailError\",\n isUpdateSubscriptionEmailLoading: \"isUpdateSubscriptionEmailLoading\",\n }),\n ...mapGetters(\"subscription/contactInformation\", {\n email: \"getEmail\",\n }),\n ...mapGetters(\"subscription/emailValidation\", {\n sendEmailValidationForUpdateEmailError:\n \"getSendEmailValidationForUpdateEmailError\",\n isSendEmailValidationForUpdateEmailLoading:\n \"isSendEmailValidationForUpdateEmailLoading\",\n }),\n isNewEmailEmpty() {\n return stringValidators.isEmpty(this.newEmailAddress);\n },\n isNewEmailBadFormat() {\n return !stringValidators.isEmail(this.newEmailAddress);\n },\n isNewEmailValid() {\n return !this.isNewEmailBadFormat && !this.isNewEmailEmpty;\n },\n newEmailAddressErrors() {\n const errors = [];\n if (this.isNewEmailEmpty) {\n errors.push(i18n.t(\"common.formError.fieldMustBeInquired\"));\n } else if (this.isNewEmailBadFormat) {\n errors.push(i18n.t(\"common.formError.fieldHasBadFormat\"));\n }\n return errors;\n },\n isConfirmNewEmailEmpty() {\n return stringValidators.isEmpty(this.confirmNewEmailAddress);\n },\n isConfirmNewEmailBadFormat() {\n return this.newEmailAddress !== this.confirmNewEmailAddress;\n },\n isConfirmNewEmailValid() {\n return !this.isConfirmNewEmailEmpty && !this.isConfirmNewEmailBadFormat;\n },\n confirmNewEmailAddressErrors() {\n const errors = [];\n if (this.isConfirmNewEmailEmpty) {\n errors.push(i18n.t(\"common.formError.fieldMustBeInquired\"));\n } else if (this.isConfirmNewEmailBadFormat) {\n errors.push(i18n.t(\"common.formError.fieldHasBadFormat\"));\n }\n return errors;\n },\n isUpdateEmailIsValid() {\n return this.isNewEmailValid && this.isConfirmNewEmailValid;\n },\n isEmailAlreadyValidated() {\n if (this.updateSubscriptionEmailError === null) {\n return false;\n }\n\n return this.updateSubscriptionEmailError.some((error) => {\n return error.code === \"EMAIL_ALREADY_VALIDATED\";\n });\n },\n getUpdateErrorMessage() {\n if (this.isEmailAlreadyValidated) {\n return i18n.t(\"email.errors.EMAIL_ALREADY_VALIDATED\");\n }\n return i18n.t(\"email.errors.reSendingEmail\");\n },\n },\n methods: {\n ...mapActions(\"subscription\", [\"updateSubscriptionEmail\"]),\n ...mapActions(\"subscription/emailValidation\", [\n \"sendValidationEmailForUpdateEmail\",\n ]),\n modifyEmailAndSendEmailValidation() {\n this.updateSubscriptionEmail(this.newEmailAddress)\n .then(() => {\n this.sendValidationEmailForUpdateEmail()\n .then(() => {\n this.$router.push({ name: RouteName.EmailValidationSent });\n })\n .catch((error) => {\n console.error(error);\n });\n })\n .catch((error) => {\n console.error(error);\n });\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./editEmailPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./editEmailPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./editEmailPage.vue?vue&type=template&id=6bb049f4&scoped=true&\"\nimport script from \"./editEmailPage.vue?vue&type=script&lang=js&\"\nexport * from \"./editEmailPage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6bb049f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('FullWidthLayout',[_c('section',[_c('div',{staticClass:\"container is-fluid has-text-centered\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-half\"},[_c('div',{staticClass:\"block\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"email.validationEmailWillBeSend\", { email: _vm.email }))+\" \")])]),_c('div',{staticClass:\"block\"},[_c('b-button',{attrs:{\"cy-id\":\"button-resendEmail\",\"size\":\"is-medium\",\"type\":\"is-primary\"},on:{\"click\":_vm.reSendValidationEmail}},[_vm._v(_vm._s(_vm.$t(\"email.resendEmail\"))+\" \")])],1),(_vm.reSendEmailValidationSuccess)?_c('div',{staticClass:\"block\"},[_c('b-message',{attrs:{\"cy-id\":\"success-resend-email-message\",\"type\":\"is-success\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"email.successes.reSendingEmail\"))+\" \")])],1):_vm._e(),(_vm.reSendEmailValidationError)?_c('div',{staticClass:\"block\"},[_c('b-message',{attrs:{\"cy-id\":\"error-resend-email-message\",\"type\":\"is-danger\"}},[_vm._v(\" \"+_vm._s(_vm.getReSendErrorMessage)+\" \")])],1):_vm._e(),_c('div',{staticClass:\"block\"},[_c('b-button',{attrs:{\"cy-id\":\"button-modifyEmail\",\"size\":\"is-medium\",\"type\":\"is-primary\"},on:{\"click\":_vm.modifyEmail}},[_vm._v(_vm._s(_vm.$t(\"email.modifyEmail\"))+\" \")])],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IRetryPolicy, RetryContext } from \"./IRetryPolicy\";\r\n\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n\r\n/** @private */\r\nexport class DefaultReconnectPolicy implements IRetryPolicy {\r\n private readonly _retryDelays: (number | null)[];\r\n\r\n constructor(retryDelays?: number[]) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n\r\n public nextRetryDelayInMilliseconds(retryContext: RetryContext): number | null {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport enum LogLevel {\r\n /** Log level for very low severity diagnostic messages. */\r\n Trace = 0,\r\n /** Log level for low severity diagnostic messages. */\r\n Debug = 1,\r\n /** Log level for informational diagnostic messages. */\r\n Information = 2,\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n Warning = 3,\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n Error = 4,\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n Critical = 5,\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n None = 6,\r\n}\r\n\r\n/** An abstraction that provides a sink for diagnostic messages. */\r\nexport interface ILogger {\r\n /** Called by the framework to emit a diagnostic message.\r\n *\r\n * @param {LogLevel} logLevel The severity level of the message.\r\n * @param {string} message The message.\r\n */\r\n log(logLevel: LogLevel, message: string): void;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpTransportType } from \"./ITransport\";\r\n\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The HTTP status code represented by this error. */\r\n public statusCode: number;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage: string, statusCode: number) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message: string) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when multiple errors have occured. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The collection of errors this error is aggregating. */\r\n public innerErrors: Error[];\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message: string, innerErrors: Error[]) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n\r\n this.innerErrors = innerErrors;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortSignal } from \"./AbortController\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\n\r\n/** Represents an HTTP request. */\r\nexport interface HttpRequest {\r\n /** The HTTP method to use for the request. */\r\n method?: string;\r\n\r\n /** The URL for the request. */\r\n url?: string;\r\n\r\n /** The body content for the request. May be a string or an ArrayBuffer (for binary data). */\r\n content?: string | ArrayBuffer;\r\n\r\n /** An object describing headers to apply to the request. */\r\n headers?: MessageHeaders;\r\n\r\n /** The XMLHttpRequestResponseType to apply to the request. */\r\n responseType?: XMLHttpRequestResponseType;\r\n\r\n /** An AbortSignal that can be monitored for cancellation. */\r\n abortSignal?: AbortSignal;\r\n\r\n /** The time to wait for the request to complete before throwing a TimeoutError. Measured in milliseconds. */\r\n timeout?: number;\r\n\r\n /** This controls whether credentials such as cookies are sent in cross-site requests. */\r\n withCredentials?: boolean;\r\n}\r\n\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n */\r\n constructor(statusCode: number);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code and message.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n */\r\n constructor(statusCode: number, statusText: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and string content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: ArrayBuffer);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string | ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string | ArrayBuffer);\r\n constructor(\r\n public readonly statusCode: number,\r\n public readonly statusText?: string,\r\n public readonly content?: string | ArrayBuffer) {\r\n }\r\n}\r\n\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport abstract class HttpClient {\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string): Promise<HttpResponse>;\r\n\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string, options: HttpRequest): Promise<HttpResponse>;\r\n public get(url: string, options?: HttpRequest): Promise<HttpResponse> {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string): Promise<HttpResponse>;\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string, options: HttpRequest): Promise<HttpResponse>;\r\n public post(url: string, options?: HttpRequest): Promise<HttpResponse> {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string): Promise<HttpResponse>;\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string, options: HttpRequest): Promise<HttpResponse>;\r\n public delete(url: string, options?: HttpRequest): Promise<HttpResponse> {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP request to the specified URL, returning a {@link Promise} that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {HttpRequest} request An {@link @microsoft/signalr.HttpRequest} describing the request to send.\r\n * @returns {Promise<HttpResponse>} A Promise that resolves with an HttpResponse describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public abstract send(request: HttpRequest): Promise<HttpResponse>;\r\n\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n public getCookieString(url: string): string {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger implements ILogger {\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n public static instance: ILogger = new NullLogger();\r\n\r\n private constructor() {}\r\n\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n public log(_logLevel: LogLevel, _message: string): void {\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\n\r\nexport const VERSION: string = \"0.0.0-DEV_BUILD\";\r\n/** @private */\r\nexport class Arg {\r\n public static isRequired(val: any, name: string): void {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n public static isNotEmpty(val: string, name: string): void {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n\r\n public static isIn(val: any, values: any, name: string): void {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n public static get isBrowser(): boolean {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n public static get isWebWorker(): boolean {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n\r\n // react-native has a window but no document\r\n static get isReactNative(): boolean {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n public static get isNode(): boolean {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getDataDetail(data: any, includeContent: boolean): string {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n } else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n\r\n/** @private */\r\nexport function formatArrayBuffer(data: ArrayBuffer): string {\r\n const view = new Uint8Array(data);\r\n\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n\r\n/** @private */\r\nexport async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string, accessTokenFactory: (() => string | Promise<string>) | undefined,\r\n content: string | ArrayBuffer, options: IHttpConnectionOptions): Promise<void> {\r\n let headers: {[k: string]: string} = {};\r\n if (accessTokenFactory) {\r\n const token = await accessTokenFactory();\r\n if (token) {\r\n headers = {\r\n [\"Authorization\"]: `Bearer ${token}`,\r\n };\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent!)}.`);\r\n\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers},\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n\r\n/** @private */\r\nexport function createLogger(logger?: ILogger | LogLevel): ILogger {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n\r\n if ((logger as ILogger).log !== undefined) {\r\n return logger as ILogger;\r\n }\r\n\r\n return new ConsoleLogger(logger as LogLevel);\r\n}\r\n\r\n/** @private */\r\nexport class SubjectSubscription<T> implements ISubscription<T> {\r\n private _subject: Subject<T>;\r\n private _observer: IStreamSubscriber<T>;\r\n\r\n constructor(subject: Subject<T>, observer: IStreamSubscriber<T>) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n\r\n public dispose(): void {\r\n const index: number = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class ConsoleLogger implements ILogger {\r\n private readonly _minLevel: LogLevel;\r\n\r\n // Public for testing purposes.\r\n public out: {\r\n error(message: any): void,\r\n warn(message: any): void,\r\n info(message: any): void,\r\n log(message: any): void,\r\n };\r\n\r\n constructor(minimumLogLevel: LogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n\r\n public log(logLevel: LogLevel, message: string): void {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getUserAgentHeader(): [string, string] {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [ userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion()) ];\r\n}\r\n\r\n/** @private */\r\nexport function constructUserAgent(version: string, os: string, runtime: string, runtimeVersion: string | undefined): string {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent: string = \"Microsoft SignalR/\";\r\n\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n } else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n\r\n userAgent += `${runtime}`;\r\n\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n } else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName(): string {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion(): string | undefined {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getRuntime(): string {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n } else {\r\n return \"Browser\";\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getErrorString(e: any): string {\r\n if (e.stack) {\r\n return e.stack;\r\n } else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n\r\n/** @private */\r\nexport function getGlobalThis(): unknown {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// @ts-ignore: This will be removed from built files and is here to make the types available during dev work\r\nimport { CookieJar } from \"@types/tough-cookie\";\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis } from \"./Utils\";\r\n\r\nexport class FetchHttpClient extends HttpClient {\r\n private readonly _abortControllerType: { prototype: AbortController, new(): AbortController };\r\n private readonly _fetchType: (input: RequestInfo, init?: RequestInit) => Promise<Response>;\r\n private readonly _jar?: CookieJar;\r\n\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n } else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n } else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public async send(request: HttpRequest): Promise<HttpResponse> {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n\r\n const abortController = new this._abortControllerType();\r\n\r\n let error: any;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId: any = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout!;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n\r\n let response: Response;\r\n try {\r\n response = await this._fetchType(request.url!, {\r\n body: request.content!,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"text/plain;charset=UTF-8\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method!,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n } catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(\r\n LogLevel.Warning,\r\n `Error from HTTP request. ${e}.`,\r\n );\r\n throw e;\r\n } finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\") as string;\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n\r\n return new HttpResponse(\r\n response.status,\r\n response.statusText,\r\n payload,\r\n );\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n let cookies: string = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\n\r\nfunction deserializeContent(response: Response, responseType?: XMLHttpRequestResponseType): Promise<string | ArrayBuffer> {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\nexport class XhrHttpClient extends HttpClient {\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise<HttpResponse> {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return new Promise<HttpResponse>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.open(request.method!, request.url!, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n } else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n\r\n xhr.send(request.content || \"\");\r\n });\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n private readonly _httpClient: HttpClient;\r\n\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n public constructor(logger: ILogger) {\r\n super();\r\n\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n } else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n } else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise<HttpResponse> {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return this._httpClient.send(request);\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nexport abstract class HeaderNames {\r\n static readonly Authorization = \"Authorization\";\r\n static readonly Cookie = \"Cookie\";\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport enum HttpTransportType {\r\n /** Specifies no transport preference. */\r\n None = 0,\r\n /** Specifies the WebSockets transport. */\r\n WebSockets = 1,\r\n /** Specifies the Server-Sent Events transport. */\r\n ServerSentEvents = 2,\r\n /** Specifies the Long Polling transport. */\r\n LongPolling = 4,\r\n}\r\n\r\n/** Specifies the transfer format for a connection. */\r\nexport enum TransferFormat {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n Text = 1,\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n Binary = 2,\r\n}\r\n\r\n/** An abstraction over the behavior of transports. This is designed to support the framework and not intended for use by applications. */\r\nexport interface ITransport {\r\n connect(url: string, transferFormat: TransferFormat): Promise<void>;\r\n send(data: any): Promise<void>;\r\n stop(): Promise<void>;\r\n onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n onclose: ((error?: Error) => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController implements AbortSignal {\r\n private _isAborted: boolean = false;\r\n public onabort: (() => void) | null = null;\r\n\r\n public abort(): void {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n\r\n get signal(): AbortSignal {\r\n return this;\r\n }\r\n\r\n get aborted(): boolean {\r\n return this._isAborted;\r\n }\r\n}\r\n\r\n/** Represents a signal that can be monitored to determine if a request has been aborted. */\r\nexport interface AbortSignal {\r\n /** Indicates if the request has been aborted. */\r\n aborted: boolean;\r\n /** Set this to a handler that will be invoked when the request is aborted. */\r\n onabort: (() => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient, HttpRequest } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _accessTokenFactory: (() => string | Promise<string>) | undefined;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private readonly _pollAbort: AbortController;\r\n\r\n private _url?: string;\r\n private _running: boolean;\r\n private _receiving?: Promise<void>;\r\n private _closeError?: Error;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n public get pollAborted(): boolean {\r\n return this._pollAbort.aborted;\r\n }\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise<string>) | undefined, logger: ILogger, options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n\r\n this._running = false;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise<void> {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._url = url;\r\n\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n\r\n const pollOptions: HttpRequest = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n this._running = true;\r\n }\r\n\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n\r\n private async _getAccessToken(): Promise<string | null> {\r\n if (this._accessTokenFactory) {\r\n return await this._accessTokenFactory();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _updateHeaderToken(request: HttpRequest, token: string | null) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n return;\r\n }\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n\r\n private async _poll(url: string, pollOptions: HttpRequest): Promise<void> {\r\n try {\r\n while (this._running) {\r\n // We have to get the access token on each poll, in case it changes\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n\r\n this._running = false;\r\n } else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent!)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n } else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n } catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n } else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n } else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n\r\n public async send(data: any): Promise<void> {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url!, this._accessTokenFactory, data, this._options);\r\n }\r\n\r\n public async stop(): Promise<void> {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n\r\n try {\r\n await this._receiving;\r\n\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const deleteOptions: HttpRequest = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(deleteOptions, token);\r\n await this._httpClient.delete(this._url!, deleteOptions);\r\n\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n\r\n private _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n/** @private */\r\nexport class ServerSentEventsTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _accessTokenFactory: (() => string | Promise<string>) | undefined;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private _eventSource?: EventSource;\r\n private _url?: string;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise<string>) | undefined, logger: ILogger,\r\n options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise<void> {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n\r\n let eventSource: EventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials });\r\n } else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers: MessageHeaders = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers} } as EventSourceInit);\r\n }\r\n\r\n try {\r\n eventSource.onmessage = (e: MessageEvent) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent!)}.`);\r\n this.onreceive(e.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e: Event) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n } else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n } catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public async send(data: any): Promise<void> {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url!, this._accessTokenFactory, data, this._options);\r\n }\r\n\r\n public stop(): Promise<void> {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(e?: Error) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { WebSocketConstructor } from \"./Polyfills\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class WebSocketTransport implements ITransport {\r\n private readonly _logger: ILogger;\r\n private readonly _accessTokenFactory: (() => string | Promise<string>) | undefined;\r\n private readonly _logMessageContent: boolean;\r\n private readonly _webSocketConstructor: WebSocketConstructor;\r\n private readonly _httpClient: HttpClient;\r\n private _webSocket?: WebSocket;\r\n private _headers: MessageHeaders;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise<string>) | undefined, logger: ILogger,\r\n logMessageContent: boolean, webSocketConstructor: WebSocketConstructor, headers: MessageHeaders) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise<void> {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket: WebSocket | undefined;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n\r\n if (Platform.isNode) {\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = `${cookies}`;\r\n }\r\n\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n\r\n webSocket.onopen = (_event: Event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n\r\n webSocket.onerror = (event: Event) => {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"There was an error with the transport\";\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n\r\n webSocket.onmessage = (message: MessageEvent) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n webSocket.onclose = (event: CloseEvent) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n } else {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n\r\n public send(data: any): Promise<void> {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n\r\n public stop(): Promise<void> {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(event?: CloseEvent | Error): void {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => {};\r\n this._webSocket.onmessage = () => {};\r\n this._webSocket.onerror = () => {};\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n } else if (event instanceof Error) {\r\n this.onclose(event);\r\n } else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n\r\n private _isCloseEvent(event?: any): event is CloseEvent {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, ITransport, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\n\r\n/** @private */\r\nconst enum ConnectionState {\r\n Connecting = \"Connecting\",\r\n Connected = \"Connected\",\r\n Disconnected = \"Disconnected\",\r\n Disconnecting = \"Disconnecting\",\r\n}\r\n\r\n/** @private */\r\nexport interface INegotiateResponse {\r\n connectionId?: string;\r\n connectionToken?: string;\r\n negotiateVersion?: number;\r\n availableTransports?: IAvailableTransport[];\r\n url?: string;\r\n accessToken?: string;\r\n error?: string;\r\n}\r\n\r\n/** @private */\r\nexport interface IAvailableTransport {\r\n transport: keyof typeof HttpTransportType;\r\n transferFormats: (keyof typeof TransferFormat)[];\r\n}\r\n\r\nconst MAX_REDIRECTS = 100;\r\n\r\n/** @private */\r\nexport class HttpConnection implements IConnection {\r\n private _connectionState: ConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private readonly _httpClient: HttpClient;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n // Needs to not start with _ to be available for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private transport?: ITransport;\r\n private _startInternalPromise?: Promise<void>;\r\n private _stopPromise?: Promise<void>;\r\n private _stopPromiseResolver: (value?: PromiseLike<void>) => void = () => {};\r\n private _stopError?: Error;\r\n private _accessTokenFactory?: () => string | Promise<string>;\r\n private _sendQueue?: TransportSendQueue;\r\n\r\n public readonly features: any = {};\r\n public baseUrl: string;\r\n public connectionId?: string;\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((e?: Error) => void) | null;\r\n\r\n private readonly _negotiateVersion: number = 1;\r\n\r\n constructor(url: string, options: IHttpConnectionOptions = {}) {\r\n Arg.isRequired(url, \"url\");\r\n\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n } else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n\r\n let webSocketModule: any = null;\r\n let eventSourceModule: any = null;\r\n\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n } else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n } else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n\r\n this._httpClient = options.httpClient || new DefaultHttpClient(this._logger);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public start(): Promise<void>;\r\n public start(transferFormat: TransferFormat): Promise<void>;\r\n public async start(transferFormat?: TransferFormat): Promise<void> {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n\r\n if (this._connectionState !== ConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = ConnectionState.Connecting;\r\n\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === ConnectionState.Disconnecting) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n\r\n return Promise.reject(new Error(message));\r\n } else if (this._connectionState as any !== ConnectionState.Connected) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n\r\n this._connectionStarted = true;\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise<void> {\r\n if (this._connectionState !== ConnectionState.Connected) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport!);\r\n }\r\n\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n\r\n public async stop(error?: Error): Promise<void> {\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n\r\n this._connectionState = ConnectionState.Disconnecting;\r\n\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n\r\n private async _stopInternal(error?: Error): Promise<void> {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n\r\n try {\r\n await this._startInternalPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n\r\n this.transport = undefined;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n\r\n private async _startInternal(transferFormat: TransferFormat): Promise<void> {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n } else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n } else {\r\n let negotiateResponse: INegotiateResponse | null = null;\r\n let redirects = 0;\r\n\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === ConnectionState.Disconnecting || this._connectionState === ConnectionState.Disconnected) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n\r\n if ((negotiateResponse as any).ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n }\r\n\r\n redirects++;\r\n }\r\n while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = ConnectionState.Connected;\r\n }\r\n\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this.transport = undefined;\r\n\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _getNegotiationResponse(url: string): Promise<INegotiateResponse> {\r\n const headers: {[k: string]: string} = {};\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n\r\n const negotiateResponse = JSON.parse(response.content as string) as INegotiateResponse;\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n } catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n\r\n private _createConnectUrl(url: string, connectionToken: string | null | undefined) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n\r\n private async _createTransport(url: string, requestedTransport: HttpTransportType | ITransport | undefined, negotiateResponse: INegotiateResponse, requestedTransferFormat: TransferFormat): Promise<void> {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n\r\n const transportExceptions: any[] = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate: INegotiateResponse | undefined = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n } else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n } catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n } catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n\r\n if (this._connectionState !== ConnectionState.Connecting) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n\r\n private _constructTransport(transport: HttpTransportType): ITransport {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent!, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n\r\n private _startTransport(url: string, transferFormat: TransferFormat): Promise<void> {\r\n this.transport!.onreceive = this.onreceive;\r\n this.transport!.onclose = (e) => this._stopConnection(e);\r\n return this.transport!.connect(url, transferFormat);\r\n }\r\n\r\n private _resolveTransportOrError(endpoint: IAvailableTransport, requestedTransport: HttpTransportType | undefined, requestedTransferFormat: TransferFormat): ITransport | Error {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n } else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n } catch (ex) {\r\n return ex;\r\n }\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n\r\n private _isITransport(transport: any): transport is ITransport {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n\r\n private _stopConnection(error?: Error): void {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n\r\n this.transport = undefined;\r\n\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n\r\n this.connectionId = undefined;\r\n this._connectionState = ConnectionState.Disconnected;\r\n\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private _resolveUrl(url: string): string {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n\r\n private _resolveNegotiateUrl(url: string): string {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\n\r\nfunction transportMatches(requestedTransport: HttpTransportType | undefined, actualTransport: HttpTransportType) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n\r\n/** @private */\r\nexport class TransportSendQueue {\r\n private _buffer: any[] = [];\r\n private _sendBufferedData: PromiseSource;\r\n private _executing: boolean = true;\r\n private _transportResult?: PromiseSource;\r\n private _sendLoopPromise: Promise<void>;\r\n\r\n constructor(private readonly _transport: ITransport) {\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise<void> {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n\r\n public stop(): Promise<void> {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n\r\n private _bufferData(data: string | ArrayBuffer): void {\r\n if (this._buffer.length && typeof(this._buffer[0]) !== typeof(data)) {\r\n throw new Error(`Expected data to be of type ${typeof(this._buffer)} but was of type ${typeof(data)}`);\r\n }\r\n\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n\r\n private async _sendLoop(): Promise<void> {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n\r\n break;\r\n }\r\n\r\n this._sendBufferedData = new PromiseSource();\r\n\r\n const transportResult = this._transportResult!;\r\n this._transportResult = undefined;\r\n\r\n const data = typeof(this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n\r\n this._buffer.length = 0;\r\n\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n } catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n\r\n private static _concatBuffers(arrayBuffers: ArrayBuffer[]): ArrayBuffer {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n\r\n return result.buffer;\r\n }\r\n}\r\n\r\nclass PromiseSource {\r\n private _resolver?: () => void;\r\n private _rejecter!: (reason?: any) => void;\r\n public promise: Promise<void>;\r\n\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n\r\n public resolve(): void {\r\n this._resolver!();\r\n }\r\n\r\n public reject(reason?: any): void {\r\n this._rejecter!(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n public static RecordSeparatorCode = 0x1e;\r\n public static RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n\r\n public static write(output: string): string {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n\r\n public static parse(input: string): string[] {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n/** @private */\r\nexport interface HandshakeRequestMessage {\r\n readonly protocol: string;\r\n readonly version: number;\r\n}\r\n\r\n/** @private */\r\nexport interface HandshakeResponseMessage {\r\n readonly error: string;\r\n readonly minorVersion: number;\r\n}\r\n\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n public writeHandshakeRequest(handshakeRequest: HandshakeRequestMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n\r\n public parseHandshakeResponse(data: any): [any, HandshakeResponseMessage] {\r\n let messageData: string;\r\n let remainingData: any;\r\n\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n } else {\r\n const textData: string = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage: HandshakeResponseMessage = response;\r\n\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\n\r\n/** Defines the type of a Hub Message. */\r\nexport enum MessageType {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n Invocation = 1,\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n StreamItem = 2,\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n Completion = 3,\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n StreamInvocation = 4,\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n CancelInvocation = 5,\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n Ping = 6,\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n Close = 7,\r\n}\r\n\r\n/** Defines a dictionary of string keys and string values representing headers attached to a Hub message. */\r\nexport interface MessageHeaders {\r\n /** Gets or sets the header with the specified key. */\r\n [key: string]: string;\r\n}\r\n\r\n/** Union type of all known Hub messages. */\r\nexport type HubMessage =\r\n InvocationMessage |\r\n StreamInvocationMessage |\r\n StreamItemMessage |\r\n CompletionMessage |\r\n CancelInvocationMessage |\r\n PingMessage |\r\n CloseMessage;\r\n\r\n/** Defines properties common to all Hub messages. */\r\nexport interface HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageType} value indicating the type of this message. */\r\n readonly type: MessageType;\r\n}\r\n\r\n/** Defines properties common to all Hub messages relating to a specific invocation. */\r\nexport interface HubInvocationMessage extends HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageHeaders} dictionary containing headers attached to the message. */\r\n readonly headers?: MessageHeaders;\r\n /** The ID of the invocation relating to this message.\r\n *\r\n * This is expected to be present for {@link @microsoft/signalr.StreamInvocationMessage} and {@link @microsoft/signalr.CompletionMessage}. It may\r\n * be 'undefined' for an {@link @microsoft/signalr.InvocationMessage} if the sender does not expect a response.\r\n */\r\n readonly invocationId?: string;\r\n}\r\n\r\n/** A hub message representing a non-streaming invocation. */\r\nexport interface InvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Invocation;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a streaming invocation. */\r\nexport interface StreamInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamInvocation;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a single item produced as part of a result stream. */\r\nexport interface StreamItemMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamItem;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n\r\n /** The item produced by the server. */\r\n readonly item?: any;\r\n}\r\n\r\n/** A hub message representing the result of an invocation. */\r\nexport interface CompletionMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Completion;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The error produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly error?: string;\r\n /** The result produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly result?: any;\r\n}\r\n\r\n/** A hub message indicating that the sender is still active. */\r\nexport interface PingMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Ping;\r\n}\r\n\r\n/** A hub message indicating that the sender is closing the connection.\r\n *\r\n * If {@link @microsoft/signalr.CloseMessage.error} is defined, the sender is closing the connection due to an error.\r\n */\r\nexport interface CloseMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Close;\r\n /** The error that triggered the close, if any.\r\n *\r\n * If this property is undefined, the connection was closed normally and without error.\r\n */\r\n readonly error?: string;\r\n\r\n /** If true, clients with automatic reconnects enabled should attempt to reconnect after receiving the CloseMessage. Otherwise, they should not. */\r\n readonly allowReconnect?: boolean;\r\n}\r\n\r\n/** A hub message sent to request that a streaming invocation be canceled. */\r\nexport interface CancelInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.CancelInvocation;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n}\r\n\r\n/** A protocol abstraction for communicating with SignalR Hubs. */\r\nexport interface IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n readonly name: string;\r\n /** The version of the protocol. */\r\n readonly version: number;\r\n /** The {@link @microsoft/signalr.TransferFormat} of the protocol. */\r\n readonly transferFormat: TransferFormat;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the `input` parameter must be a string, otherwise it must be an ArrayBuffer.\r\n *\r\n * @param {string | ArrayBuffer} input A string or ArrayBuffer containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input: string | ArrayBuffer, logger: ILogger): HubMessage[];\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string or ArrayBuffer and returns it.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the result of this method will be a string, otherwise it will be an ArrayBuffer.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string | ArrayBuffer} A string or ArrayBuffer containing the serialized representation of the message.\r\n */\r\n writeMessage(message: HubMessage): string | ArrayBuffer;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IStreamResult, IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { SubjectSubscription } from \"./Utils\";\r\n\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject<T> implements IStreamResult<T> {\r\n /** @internal */\r\n public observers: IStreamSubscriber<T>[];\r\n\r\n /** @internal */\r\n public cancelCallback?: () => Promise<void>;\r\n\r\n constructor() {\r\n this.observers = [];\r\n }\r\n\r\n public next(item: T): void {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n\r\n public error(err: any): void {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n\r\n public complete(): void {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n\r\n public subscribe(observer: IStreamSubscriber<T>): ISubscription<T> {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HandshakeProtocol, HandshakeRequestMessage, HandshakeResponseMessage } from \"./HandshakeProtocol\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { CancelInvocationMessage, CompletionMessage, IHubProtocol, InvocationMessage, MessageType, StreamInvocationMessage, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { IStreamResult } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\n\r\nconst DEFAULT_TIMEOUT_IN_MS: number = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS: number = 15 * 1000;\r\n\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport enum HubConnectionState {\r\n /** The hub connection is disconnected. */\r\n Disconnected = \"Disconnected\",\r\n /** The hub connection is connecting. */\r\n Connecting = \"Connecting\",\r\n /** The hub connection is connected. */\r\n Connected = \"Connected\",\r\n /** The hub connection is disconnecting. */\r\n Disconnecting = \"Disconnecting\",\r\n /** The hub connection is reconnecting. */\r\n Reconnecting = \"Reconnecting\",\r\n}\r\n\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n private readonly _cachedPingMessage: string | ArrayBuffer;\r\n // Needs to not start with _ for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private readonly connection: IConnection;\r\n private readonly _logger: ILogger;\r\n private readonly _reconnectPolicy?: IRetryPolicy;\r\n private _protocol: IHubProtocol;\r\n private _handshakeProtocol: HandshakeProtocol;\r\n private _callbacks: { [invocationId: string]: (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => void };\r\n private _methods: { [name: string]: ((...args: any[]) => void)[] };\r\n private _invocationId: number;\r\n\r\n private _closedCallbacks: ((error?: Error) => void)[];\r\n private _reconnectingCallbacks: ((error?: Error) => void)[];\r\n private _reconnectedCallbacks: ((connectionId?: string) => void)[];\r\n\r\n private _receivedHandshakeResponse: boolean;\r\n private _handshakeResolver!: (value?: PromiseLike<{}>) => void;\r\n private _handshakeRejecter!: (reason?: any) => void;\r\n private _stopDuringStartError?: Error;\r\n\r\n private _connectionState: HubConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private _startPromise?: Promise<void>;\r\n private _stopPromise?: Promise<void>;\r\n private _nextKeepAlive: number = 0;\r\n\r\n // The type of these a) doesn't matter and b) varies when building in browser and node contexts\r\n // Since we're building the WebPack bundle directly from the TypeScript, this matters (previously\r\n // we built the bundle from the compiled JavaScript).\r\n private _reconnectDelayHandle?: any;\r\n private _timeoutHandle?: any;\r\n private _pingServerHandle?: any;\r\n\r\n private _freezeEventListener = () =>\r\n {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n\r\n /** The server timeout in milliseconds.\r\n *\r\n * If this timeout elapses without receiving any messages from the server, the connection will be terminated with an error.\r\n * The default timeout value is 30,000 milliseconds (30 seconds).\r\n */\r\n public serverTimeoutInMilliseconds: number;\r\n\r\n /** Default interval at which to ping the server.\r\n *\r\n * The default value is 15,000 milliseconds (15 seconds).\r\n * Allows the server to detect hard disconnects (like when a client unplugs their computer).\r\n * The ping will happen at most as often as the server pings.\r\n * If the server pings every 5 seconds, a value lower than 5 will ping every 5 seconds.\r\n */\r\n public keepAliveIntervalInMilliseconds: number;\r\n\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n public static create(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy): HubConnection {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n\r\n private constructor(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy) {\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n\r\n this.connection.onreceive = (data: any) => this._processIncomingData(data);\r\n this.connection.onclose = (error?: Error) => this._connectionClosed(error);\r\n\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state(): HubConnectionState {\r\n return this._connectionState;\r\n }\r\n\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId(): string | null {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl(): string {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url: string) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n\r\n this.connection.baseUrl = url;\r\n }\r\n\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n public start(): Promise<void> {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n\r\n private async _startWithStateTransitions(): Promise<void> {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n } catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n\r\n await this.connection.start(this._protocol.transferFormat);\r\n\r\n try {\r\n const handshakeRequest: HandshakeRequestMessage = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n\r\n await handshakePromise;\r\n\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n public async stop(): Promise<void> {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n\r\n private _stopInternal(error?: Error): Promise<void> {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise!;\r\n }\r\n\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult<T>} An object that yields results from the server as they are received.\r\n */\r\n public stream<T = any>(methodName: string, ...args: any[]): IStreamResult<T> {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue: Promise<void>;\r\n\r\n const subject = new Subject<T>();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation: CancelInvocationMessage = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent: CompletionMessage | StreamItemMessage | null, error?: Error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n } else {\r\n subject.complete();\r\n }\r\n } else {\r\n subject.next((invocationEvent.item) as T);\r\n }\r\n }\r\n };\r\n\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n\r\n return subject;\r\n }\r\n\r\n private _sendMessage(message: any) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n private _sendWithProtocol(message: any) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<void>} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n public send(methodName: string, ...args: any[]): Promise<void> {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n\r\n this._launchStreams(streams, sendPromise);\r\n\r\n return sendPromise;\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<T>} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n public invoke<T = any>(methodName: string, ...args: any[]): Promise<T> {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n\r\n const p = new Promise<any>((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId!] = (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n } else {\r\n resolve(invocationEvent.result);\r\n }\r\n } else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId!];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n\r\n return p;\r\n }\r\n\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n public on(methodName: string, newMethod: (...args: any[]) => void): void {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n\r\n this._methods[methodName].push(newMethod);\r\n }\r\n\r\n /** Removes all handlers for the specified hub method.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n */\r\n public off(methodName: string): void;\r\n\r\n /** Removes the specified handler for the specified hub method.\r\n *\r\n * You must pass the exact same Function instance as was previously passed to {@link @microsoft/signalr.HubConnection.on}. Passing a different instance (even if the function\r\n * body is the same) will not remove the handler.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n * @param {Function} method The handler to remove. This must be the same Function instance as the one passed to {@link @microsoft/signalr.HubConnection.on}.\r\n */\r\n public off(methodName: string, method: (...args: any[]) => void): void;\r\n public off(methodName: string, method?: (...args: any[]) => void): void {\r\n if (!methodName) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n } else {\r\n delete this._methods[methodName];\r\n }\r\n\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n public onclose(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n public onreconnecting(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n public onreconnected(callback: (connectionId?: string) => void): void {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n private _processIncomingData(data: any) {\r\n this._cleanupTimeout();\r\n\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n } else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this._resetTimeoutPeriod();\r\n }\r\n\r\n private _processHandshakeResponse(data: any): any {\r\n let responseMessage: HandshakeResponseMessage;\r\n let remainingData: any;\r\n\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n } catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n\r\n private _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n\r\n this._cleanupPingTimer();\r\n }\r\n\r\n private _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined)\r\n {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n } catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n\r\n private _invokeClientMethod(invocationMessage: InvocationMessage) {\r\n const methods = this._methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach((m) => m.apply(this, invocationMessage.arguments));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e}'.`);\r\n }\r\n\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n const message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n // We don't want to wait on the stop itself.\r\n this._stopPromise = this._stopInternal(new Error(message));\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${invocationMessage.target}' found.`);\r\n }\r\n }\r\n\r\n private _connectionClosed(error?: Error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n } else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n } else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n\r\n private _completeClose(error?: Error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private async _reconnect(error?: Error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay!);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n\r\n return;\r\n } catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n\r\n this._completeClose();\r\n }\r\n\r\n private _getNextRetryDelay(previousRetryCount: number, elapsedMilliseconds: number, retryReason: Error) {\r\n try {\r\n return this._reconnectPolicy!.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n\r\n private _cancelCallbacksWithError(error: Error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n\r\n private _cleanupPingTimer(): void {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n\r\n private _cleanupTimeout(): void {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n\r\n private _createInvocation(methodName: string, args: any[], nonblocking: boolean, streamIds: string[]): InvocationMessage {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n } else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n\r\n private _launchStreams(streams: IStreamResult<any>[], promiseQueue: Promise<void>): void {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message: string;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n } else if (err && err.toString) {\r\n message = err.toString();\r\n } else {\r\n message = \"Unknown error\";\r\n }\r\n\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n\r\n private _replaceStreamingParams(args: any[]): [IStreamResult<any>[], string[]] {\r\n const streams: IStreamResult<any>[] = [];\r\n const streamIds: string[] = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n\r\n return [streams, streamIds];\r\n }\r\n\r\n private _isObservable(arg: any): arg is IStreamResult<any> {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n\r\n private _createStreamInvocation(methodName: string, args: any[], streamIds: string[]): StreamInvocationMessage {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n\r\n private _createCancelInvocation(id: string): CancelInvocationMessage {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n\r\n private _createStreamItemMessage(id: string, item: any): StreamItemMessage {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n\r\n private _createCompletionMessage(id: string, error?: any, result?: any): CompletionMessage {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { CompletionMessage, HubMessage, IHubProtocol, InvocationMessage, MessageType, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\n\r\nconst JSON_HUB_PROTOCOL_NAME: string = \"json\";\r\n\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol implements IHubProtocol {\r\n\r\n /** @inheritDoc */\r\n public readonly name: string = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n public readonly version: number = 1;\r\n\r\n /** @inheritDoc */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Text;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n public parseMessages(input: string, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n\r\n if (!input) {\r\n return [];\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message) as HubMessage;\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n\r\n private _isInvocationMessage(message: InvocationMessage): void {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n\r\n private _isStreamItemMessage(message: StreamItemMessage): void {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n\r\n private _isCompletionMessage(message: CompletionMessage): void {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n private _assertNotEmptyString(value: any, errorMessage: string): void {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { IHubProtocol } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { HttpTransportType } from \"./ITransport\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n\r\nconst LogLevelNameMapping: {[k: string]: LogLevel} = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\n\r\nfunction parseLogLevel(name: string): LogLevel {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n } else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n /** @internal */\r\n public protocol?: IHubProtocol;\r\n /** @internal */\r\n public httpConnectionOptions?: IHttpConnectionOptions;\r\n /** @internal */\r\n public url?: string;\r\n /** @internal */\r\n public logger?: ILogger;\r\n\r\n /** If defined, this indicates the client should automatically attempt to reconnect if the connection is lost. */\r\n /** @internal */\r\n public reconnectPolicy?: IRetryPolicy;\r\n\r\n /** Configures console logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel} logLevel The minimum level of messages to log. Anything at this level, or a more severe level, will be logged.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logLevel: LogLevel): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {ILogger} logger An object implementing the {@link @microsoft/signalr.ILogger} interface, which will be used to write all log messages.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logger: ILogger): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {string} logLevel A string representing a LogLevel setting a minimum level of messages to log.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n */\r\n public configureLogging(logLevel: string): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel | string | ILogger} logging A {@link @microsoft/signalr.LogLevel}, a string representing a LogLevel, or an object implementing the {@link @microsoft/signalr.ILogger} interface.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder;\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder {\r\n Arg.isRequired(logging, \"logging\");\r\n\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n } else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n } else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * The transport will be selected automatically based on what the server and client support.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified HTTP-based transport to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {HttpTransportType} transportType The specific transport to use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, transportType: HttpTransportType): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {IHttpConnectionOptions} options An options object used to configure the connection.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, options: IHttpConnectionOptions): HubConnectionBuilder;\r\n public withUrl(url: string, transportTypeOrOptions?: IHttpConnectionOptions | HttpTransportType): HubConnectionBuilder {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n\r\n this.url = url;\r\n\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n } else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n public withHubProtocol(protocol: IHubProtocol): HubConnectionBuilder {\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n * By default, the client will wait 0, 2, 10 and 30 seconds respectively before trying up to 4 reconnect attempts.\r\n */\r\n public withAutomaticReconnect(): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {number[]} retryDelays An array containing the delays in milliseconds before trying each reconnect attempt.\r\n * The length of the array represents how many failed reconnect attempts it takes before the client will stop attempting to reconnect.\r\n */\r\n public withAutomaticReconnect(retryDelays: number[]): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {IRetryPolicy} reconnectPolicy An {@link @microsoft/signalR.IRetryPolicy} that controls the timing and number of reconnect attempts.\r\n */\r\n public withAutomaticReconnect(reconnectPolicy: IRetryPolicy): HubConnectionBuilder;\r\n public withAutomaticReconnect(retryDelaysOrReconnectPolicy?: number[] | IRetryPolicy): HubConnectionBuilder {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n } else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n } else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n public build(): HubConnection {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n\r\n return HubConnection.create(\r\n connection,\r\n this.logger || NullLogger.instance,\r\n this.protocol || new JsonHubProtocol(),\r\n this.reconnectPolicy);\r\n }\r\n}\r\n\r\nfunction isLogger(logger: any): logger is ILogger {\r\n return logger.log !== undefined;\r\n}\r\n","<template>\n <FullWidthLayout>\n <section>\n <div class=\"container is-fluid has-text-centered\">\n <div class=\"columns is-centered\">\n <div class=\"column is-half\">\n <div class=\"block\">\n <p>\n {{ $t(\"email.validationEmailWillBeSend\", { email }) }}\n </p>\n </div>\n <div class=\"block\">\n <b-button\n cy-id=\"button-resendEmail\"\n size=\"is-medium\"\n type=\"is-primary\"\n @click=\"reSendValidationEmail\"\n >{{ $t(\"email.resendEmail\") }}\n </b-button>\n </div>\n <div v-if=\"reSendEmailValidationSuccess\" class=\"block\">\n <b-message cy-id=\"success-resend-email-message\" type=\"is-success\">\n {{ $t(\"email.successes.reSendingEmail\") }}\n </b-message>\n </div>\n <div v-if=\"reSendEmailValidationError\" class=\"block\">\n <b-message cy-id=\"error-resend-email-message\" type=\"is-danger\">\n {{ getReSendErrorMessage }}\n </b-message>\n </div>\n <div class=\"block\">\n <b-button\n cy-id=\"button-modifyEmail\"\n size=\"is-medium\"\n type=\"is-primary\"\n @click=\"modifyEmail\"\n >{{ $t(\"email.modifyEmail\") }}\n </b-button>\n </div>\n </div>\n </div>\n </div>\n </section>\n </FullWidthLayout>\n</template>\n\n<script>\nimport FullWidthLayout from \"@/components/layout/FullWidthLayout\";\nimport { mapActions, mapGetters, mapMutations } from \"vuex\";\nimport { RouteName } from \"@/store/navigation/type\";\nimport i18n from \"@/i18n\";\nimport { HubConnectionBuilder } from \"@microsoft/signalr\";\n\nlet connection = null;\n\nexport default {\n name: \"EmailValidationSentPage\",\n components: { FullWidthLayout },\n computed: {\n ...mapGetters(\"subscription\", {\n subscriptionId: \"getSubscriptionId\",\n }),\n ...mapGetters(\"subscription/contactInformation\", {\n email: \"getEmail\",\n }),\n ...mapGetters(\"subscription/emailValidation\", {\n reSendEmailValidationError: \"getReSendEmailValidationError\",\n reSendEmailValidationSuccess: \"getReSendEmailValidationSuccess\",\n }),\n isEmailAlreadyValidated() {\n if (this.reSendEmailValidationError === null) {\n return false;\n }\n\n return this.reSendEmailValidationError.some((error) => {\n return error.code === \"EMAIL_ALREADY_VALIDATED\";\n });\n },\n getReSendErrorMessage() {\n if (this.isEmailAlreadyValidated) {\n return i18n.t(\"email.errors.EMAIL_ALREADY_VALIDATED\");\n }\n return i18n.t(\"email.errors.reSendingEmail\");\n },\n },\n methods: {\n ...mapActions(\"subscription/emailValidation\", [\"reSendValidationEmail\"]),\n ...mapMutations(\"subscription/emailValidation\", [\n \"setValidateEmailSuccess\",\n ]),\n modifyEmail() {\n this.$router.push({ name: RouteName.EmailEdit });\n },\n },\n created() {\n connection = new HubConnectionBuilder()\n .withUrl(`${process.env.VUE_APP_API_ENERGY_SUBSCRIPTION}/subscriptionHub`)\n .build();\n\n connection.on(\"EmailValidated\", () => {\n this.setValidateEmailSuccess();\n this.$router.push({ name: RouteName.Contract });\n });\n\n connection\n .start()\n .then(() => {\n connection.send(\"WaitingEmailValidation\", this.subscriptionId);\n })\n .catch((error) => {\n console.error(error);\n });\n },\n destroyed() {\n connection.stop();\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./emailValidationSentPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./emailValidationSentPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./emailValidationSentPage.vue?vue&type=template&id=ec7b605c&scoped=true&\"\nimport script from \"./emailValidationSentPage.vue?vue&type=script&lang=js&\"\nexport * from \"./emailValidationSentPage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ec7b605c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('div',{staticClass:\"container is-fluid\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-half-desktop is-full-tablet\"},[_c('h2',{staticClass:\"title is-5\"},[_vm._v(_vm._s(_vm.$t(\"housing.yourPointOfConsumption\")))]),_c('grid-operator-selector'),(_vm.isGridOperatorValid)?[_c('div',{staticClass:\"block\"},[_c('gsrn-ean-input'),_c('custom-select',{attrs:{\"is-empty\":_vm.isContractedPowerEmpty,\"is-valid\":_vm.isContractedPowerValid,\"label\":`${_vm.$t('housing.contractedPower')} *`,\"options\":_vm.getContractedPowerOptions,\"validation-errors\":_vm.contractedPowerErrors,\"value\":_vm.contractedPower,\"name\":\"contractedPower\"},on:{\"input\":_vm.setContractedPower}})],1),_c('h2',{staticClass:\"title is-5\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.yourAddress\"))+\" \")]),_c('div',{staticClass:\"block\"},[_c('custom-input',{attrs:{\"label\":`${_vm.$t('housing.streetNumber')}`,\"maxlength\":_vm.MAX_LENGTH_STREET_NUMBER,\"required\":false,\"validation-errors\":_vm.streetNumberErrors,\"value\":_vm.streetNumber,\"name\":\"streetNumber\"},on:{\"input\":_vm.setStreetNumber}}),_c('custom-select',{attrs:{\"can-be-empty\":true,\"label\":`${_vm.$t('housing.streetNumberSuffix')}`,\"options\":_vm.getStreetNumberSuffixOptions,\"value\":_vm.streetNumberSuffix,\"name\":\"streetNumberSuffix\"},on:{\"input\":_vm.setStreetNumberSuffix}}),_c('custom-input',{attrs:{\"label\":`${_vm.$t('housing.street')}`,\"validation-errors\":_vm.streetErrors,\"value\":_vm.street,\"name\":\"street\"},on:{\"input\":_vm.setStreet}}),_c('custom-input',{attrs:{\"has-counter\":true,\"label\":`${_vm.$t('housing.postCode')}`,\"maxlength\":_vm.MAX_LENGTH_POST_CODE,\"validation-errors\":_vm.postCodeErrors,\"value\":_vm.postCode,\"name\":\"postCode\"},on:{\"input\":_vm.setPostCode}}),_c('custom-input',{attrs:{\"label\":`${_vm.$t('housing.city')}`,\"validation-errors\":_vm.cityErrors,\"value\":_vm.city,\"name\":\"city\"},on:{\"input\":_vm.setCity}})],1),_c('h2',{staticClass:\"title is-5\"},[_vm._v(_vm._s(_vm.$t(\"housing.yourConsumption\"))+\" *\")]),_c('div',{staticClass:\"block\"},[_c('b-field',{staticClass:\"container__radio-consumption\",attrs:{\"grouped\":\"\"}},[_c('div',{staticClass:\"field\"},[_c('b-radio',{attrs:{\"native-value\":_vm.ConsumptionInformationType.EURO,\"value\":_vm.consumptionInformationType,\"name\":\"consumptionInformationType\"},on:{\"input\":_vm.setConsumptionInformationType}},[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.knowAnnualBill\"))+\" \")])],1),_c('number-input',{attrs:{\"disabled\":_vm.isConsumptionInformationEurosDisabled,\"expanded\":false,\"validation-errors\":_vm.consumptionInformationEurosErrors,\"value\":_vm.consumptionInformationEuros,\"min\":\"0\",\"name\":\"consumptionInformationEuros\",\"step\":\"1\"},on:{\"input\":_vm.setConsumptionInformationEuros}}),_c('p',{staticClass:\"control\"},[_c('span',{staticClass:\"button is-static\"},[_vm._v(\"€\")])])],1),_c('b-field',{staticClass:\"container__radio-consumption\",attrs:{\"grouped\":\"\"}},[_c('div',{staticClass:\"field\"},[_c('b-radio',{attrs:{\"native-value\":_vm.ConsumptionInformationType.WATT,\"value\":_vm.consumptionInformationType,\"name\":\"consumptionInformationType\"},on:{\"input\":_vm.setConsumptionInformationType}},[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.knowAnnualConsumption\"))+\" \")])],1),_c('number-input',{attrs:{\"disabled\":_vm.isConsumptionInformationKwhDisabled,\"expanded\":false,\"validation-errors\":_vm.consumptionInformationKwhErrors,\"value\":_vm.consumptionInformationKwh,\"min\":\"0\",\"name\":\"consumptionInformationKwh\",\"step\":\"1\"},on:{\"input\":_vm.setConsumptionInformationKwh}}),_c('p',{staticClass:\"control\"},[_c('span',{staticClass:\"button is-static\"},[_vm._v(\"kWh\")])])],1)],1),(!_vm.isHousingStepValid)?_c('div',{staticClass:\"block\"},[_c('b-message',{attrs:{\"type\":\"is-warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"common.forValidThisStepPleaseInquireAllField\"))+\" \")])],1):_vm._e()]:_vm._e(),_c('navigation-buttons',{attrs:{\"next-route\":_vm.nextStep,\"previous-route\":_vm.previousStep,\"isStepValidated\":_vm.isHousingStepValid}})],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"block\"},[_c('b-field',{attrs:{\"message\":_vm.getFieldError,\"type\":_vm.getFieldType}},[_c('template',{slot:\"label\"},[_c('div',{staticClass:\"grid-operators-select__label\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.gridOperator.title\"))+\" * \"),_c('p',{staticClass:\"grid-operators-select__info\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.gsrnEANNumberInformation\"))+\" \"),_c('a',{attrs:{\"href\":_vm.getFaqUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"housing.FAQ\")))])])]),_c('help-button',{attrs:{\"body\":_vm.getGridOperatorHelperText.body,\"header\":_vm.getGridOperatorHelperText.header,\"cy-id\":\"gridOperator-helpModal\"}})],1)]),_c('b-select',{attrs:{\"expanded\":\"\",\"disabled\":_vm.gridOperatorsError,\"loading\":_vm.gridOperatorsLoading,\"placeholder\":_vm.$t('housing.gridOperator.placeholder'),\"cy-id\":\"gridOperatorSelector-input\",\"field\":\"name\",\"name\":\"gridOperator\"},on:{\"blur\":_vm.onBlur,\"input\":_vm.onInput},model:{value:(_vm.gridOperatorSelected),callback:function ($$v) {_vm.gridOperatorSelected=$$v},expression:\"gridOperatorSelected\"}},_vm._l((_vm.gridOperators),function(gridOperator){return _c('option',{key:gridOperator.id,domProps:{\"value\":gridOperator.name}},[_vm._v(\" \"+_vm._s(gridOperator.name)+\" \")])}),0)],2),(_vm.gridOperatorsError)?_c('b-message',{attrs:{\"cy-id\":\"gridOperatorSelector-warning\",\"type\":\"is-danger\"}},[_vm._v(_vm._s(_vm.$t(`housing.gridOperator.errors.UNKNOWN_ERROR`))+\" \")]):(!_vm.isGridOperatorValid && _vm.isGridOperatorExist)?_c('b-message',{attrs:{\"cy-id\":\"gridOperatorSelector-warning\",\"type\":\"is-warning\"}},[_vm._v(_vm._s(_vm.$t(`housing.gridOperator.statuses['${this.gridOperatorStatus}']`))+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"block\">\n <b-field :message=\"getFieldError\" :type=\"getFieldType\">\n <template slot=\"label\">\n <div class=\"grid-operators-select__label\">\n <div>\n {{ $t(\"housing.gridOperator.title\") }} *\n <p class=\"grid-operators-select__info\">\n {{ $t(\"housing.gsrnEANNumberInformation\") }}\n <a :href=\"getFaqUrl\" target=\"_blank\">{{ $t(\"housing.FAQ\") }}</a>\n </p>\n </div>\n <help-button\n :body=\"getGridOperatorHelperText.body\"\n :header=\"getGridOperatorHelperText.header\"\n cy-id=\"gridOperator-helpModal\"\n />\n </div>\n </template>\n <b-select\n expanded\n v-model=\"gridOperatorSelected\"\n :disabled=\"gridOperatorsError\"\n :loading=\"gridOperatorsLoading\"\n :placeholder=\"$t('housing.gridOperator.placeholder')\"\n cy-id=\"gridOperatorSelector-input\"\n field=\"name\"\n name=\"gridOperator\"\n @blur=\"onBlur\"\n @input=\"onInput\"\n >\n <option\n v-for=\"gridOperator in gridOperators\"\n :key=\"gridOperator.id\"\n :value=\"gridOperator.name\"\n >\n {{ gridOperator.name }}\n </option>\n </b-select>\n </b-field>\n <b-message\n v-if=\"gridOperatorsError\"\n cy-id=\"gridOperatorSelector-warning\"\n type=\"is-danger\"\n >{{ $t(`housing.gridOperator.errors.UNKNOWN_ERROR`) }}\n </b-message>\n <b-message\n v-else-if=\"!isGridOperatorValid && isGridOperatorExist\"\n cy-id=\"gridOperatorSelector-warning\"\n type=\"is-warning\"\n >{{ $t(`housing.gridOperator.statuses['${this.gridOperatorStatus}']`) }}\n </b-message>\n </div>\n</template>\n\n<script>\nimport { mapGetters, mapMutations } from \"vuex\";\nimport HelpButton from \"@/components/HelpButton\";\nimport { GridOperatorEnum } from \"@/store/subscription/housing/type\";\n\nexport default {\n name: \"grid-operator-selector\",\n components: { HelpButton },\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n gridOperatorSelected: \"\",\n isVisited: false,\n };\n },\n mounted() {\n this.gridOperatorSelected =\n this.gridOperator?.name ?? GridOperatorEnum.ENEDIS;\n },\n computed: {\n ...mapGetters(\"subscription/gridOperator\", {\n gridOperators: \"getGridOperators\",\n gridOperatorsLoading: \"getGridOperatorsLoading\",\n gridOperatorsError: \"getGridOperatorsError\",\n }),\n ...mapGetters(\"subscription/housing\", {\n gridOperator: \"getGridOperator\",\n isGridOperatorValid: \"isGridOperatorValid\",\n gridOperatorStatus: \"getGridOperatorStatus\",\n }),\n getFaqUrl() {\n return this.tenant === \"MYL\"\n ? \"https://www.mylight-systems.com/faqs\"\n : \"https://www.domuneo.com/energie-stockage/comprendr-ma-facture-faq/\";\n },\n isGridOperatorExist() {\n return this.gridOperator !== null;\n },\n getFieldType() {\n if (this.isGridOperatorValid) {\n return \"is-success\";\n }\n if (this.isGridOperatorExist) {\n return \"is-warning\";\n }\n if (this.isVisited) {\n return \"is-danger\";\n }\n return \"\";\n },\n getFieldError() {\n if (this.isVisited && !this.isGridOperatorExist) {\n return this.$t(\"common.formError.fieldMustBeInquired\");\n }\n return \"\";\n },\n getGridOperatorHelperText() {\n return {\n header: this.$t(\"housing.gridOperator.help.header\"),\n body: this.$t(\"housing.gridOperator.help.body\", {\n url:\n this.tenant === \"MYL\"\n ? \"https://www.mylight-systems.com/faqs/puis-je-souscrire-a-votre-offre-quel-que-soit-mon-lieu-de-residence/\"\n : \"https://www.domuneo.com/energie-stockage/comprendr-ma-facture-faq/\",\n }),\n };\n },\n },\n methods: {\n ...mapMutations(\"subscription/housing\", [\"setGridOperatorId\"]),\n onInput(value) {\n const gridOperator = this.gridOperators.find((obj) => obj.name === value);\n this.setGridOperatorId(gridOperator ? gridOperator.id : null);\n },\n onBlur() {\n this.isVisited = true;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.grid-operators-select {\n &__label {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n }\n\n &__info {\n font-size: 0.75rem;\n font-weight: normal;\n margin-bottom: 0.5em;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GridOperatorSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GridOperatorSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GridOperatorSelector.vue?vue&type=template&id=095e716b&scoped=true&\"\nimport script from \"./GridOperatorSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./GridOperatorSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GridOperatorSelector.vue?vue&type=style&index=0&id=095e716b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"095e716b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-field',{staticClass:\"custom-input\",attrs:{\"expanded\":_vm.expanded,\"label\":_vm.getLabel,\"message\":_vm.getMessage,\"type\":_vm.getType}},[(_vm.$slots.label)?_c('template',{slot:\"label\"},[_vm._t(\"label\")],2):_vm._e(),_c('b-input',{attrs:{\"cy-id\":`numberInput-${_vm.name}`,\"disabled\":_vm.disabled,\"has-counter\":_vm.hasCounter,\"maxlength\":_vm.maxlength,\"min\":_vm.min,\"name\":_vm.name,\"step\":_vm.step,\"value\":_vm.value,\"type\":\"number\"},on:{\"blur\":function($event){_vm.isActive = true},\"input\":function($event){return _vm.$emit('input', $event)}},nativeOn:{\"keypress\":function($event){return _vm.lockDecimal.apply(null, arguments)}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <b-field\n :expanded=\"expanded\"\n :label=\"getLabel\"\n :message=\"getMessage\"\n :type=\"getType\"\n class=\"custom-input\"\n >\n <template v-if=\"$slots.label\" slot=\"label\">\n <slot name=\"label\" />\n </template>\n <b-input\n :cy-id=\"`numberInput-${name}`\"\n :disabled=\"disabled\"\n :has-counter=\"hasCounter\"\n :maxlength=\"maxlength\"\n :min=\"min\"\n :name=\"name\"\n :step=\"step\"\n :value=\"value\"\n type=\"number\"\n @blur=\"isActive = true\"\n @input=\"$emit('input', $event)\"\n @keypress.native=\"lockDecimal\"\n ></b-input>\n </b-field>\n</template>\n\n<script>\nimport commonInput from \"@/mixins/commonInput\";\n\nexport default {\n name: \"number-input\",\n mixins: [commonInput],\n props: {\n min: String,\n step: String,\n },\n methods: {\n lockDecimal(evt) {\n const charCode = evt.which ? evt.which : evt.keyCode;\n if ((charCode >= 43 && charCode <= 46) || charCode === 101) {\n evt.preventDefault();\n return false;\n }\n return true;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NumberInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NumberInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NumberInput.vue?vue&type=template&id=460af29c&scoped=true&\"\nimport script from \"./NumberInput.vue?vue&type=script&lang=js&\"\nexport * from \"./NumberInput.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"460af29c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('custom-input',{attrs:{\"debounce-mode\":true,\"disabled\":_vm.loadingValidationGsrnEan,\"loading\":_vm.loadingValidationGsrnEan,\"maxlength\":_vm.maxLengthGsrnEan,\"validation-errors\":_vm.gsrnEANNumberErrors,\"value\":_vm.gsrnEANNumber,\"name\":\"gsrnEANNumber\"},on:{\"debounce\":_vm.debounceGsrnEANNumber,\"input\":_vm.setGsrnEANNumber}},[_c('template',{slot:\"label\"},[_c('div',{staticClass:\"gsrn-ean-input__label\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t(\"housing.gsrnEANNumber\"))+\" * \"),_c('p',{staticClass:\"gsrn-ean-input__info\"},[_vm._v(\" \"+_vm._s(_vm.$t(`housing.gsrnEANNumberInfo.${_vm.gridOperatorEnum}`))+\" \")])]),_c('help-button',{attrs:{\"body\":_vm.gsrnHelp.body,\"header\":_vm.gsrnHelp.header,\"cy-id\":\"housingGsrn-helpModal\",\"image\":\"gsrn\"}})],1)])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <custom-input\n :debounce-mode=\"true\"\n :disabled=\"loadingValidationGsrnEan\"\n :loading=\"loadingValidationGsrnEan\"\n :maxlength=\"maxLengthGsrnEan\"\n :validation-errors=\"gsrnEANNumberErrors\"\n :value=\"gsrnEANNumber\"\n name=\"gsrnEANNumber\"\n @debounce=\"debounceGsrnEANNumber\"\n @input=\"setGsrnEANNumber\"\n >\n <template slot=\"label\">\n <div class=\"gsrn-ean-input__label\">\n <div>\n {{ $t(\"housing.gsrnEANNumber\") }} *\n <p class=\"gsrn-ean-input__info\">\n {{ $t(`housing.gsrnEANNumberInfo.${gridOperatorEnum}`) }}\n </p>\n </div>\n <help-button\n :body=\"gsrnHelp.body\"\n :header=\"gsrnHelp.header\"\n cy-id=\"housingGsrn-helpModal\"\n image=\"gsrn\"\n />\n </div>\n </template>\n </custom-input>\n</template>\n\n<script>\nimport {\n MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS,\n MAX_LENGTH_GSRN_EAN_NUMBER_ES,\n} from \"@/store/subscription/housing/constants\";\nimport { mapActions, mapGetters, mapMutations } from \"vuex\";\nimport CustomInput from \"@/components/CustomInput\";\nimport HelpButton from \"@/components/HelpButton\";\nimport { GridOperatorEnum } from \"@/store/subscription/housing/type\";\n\nexport default {\n name: \"GsrnEanInput\",\n components: {\n CustomInput,\n HelpButton,\n },\n data() {\n return {\n maxLengthGsrnEan: MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS,\n MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS,\n MAX_LENGTH_GSRN_EAN_NUMBER_ES,\n gsrnHelp: {\n header: this.$t(\"housing.gsrnHelp.header\"),\n body: this.$t(\"housing.gsrnHelp.body\"),\n },\n };\n },\n computed: {\n ...mapGetters(\"subscription/housing\", {\n gsrnEANNumber: \"getGsrnEANNumber\",\n gridOperator: \"getGridOperator\",\n gridOperatorEnum: \"getGridOperatorEnum\",\n gsrnEANNumberErrors: \"getGsrnEANNumberErrors\",\n loadingValidationGsrnEan: \"getLoadingValidationGsrnEan\",\n isGsrnEANNumberEmpty: \"isGsrnEANNumberEmpty\",\n isGsrnEANNumberBadFormat: \"isGsrnEANNumberBadFormat\",\n isGsrnEANNumberValid: \"isGsrnEANNumberValid\",\n }),\n },\n methods: {\n ...mapMutations(\"subscription/housing\", [\n \"setGsrnEANNumber\",\n \"clearErrorValidationGsrnEan\",\n \"setSuccessValidationGsrnEan\",\n ]),\n ...mapActions(\"subscription/housing\", [\"checkGsrnEan\"]),\n debounceGsrnEANNumber: function (val) {\n if (!this.isGsrnEANNumberEmpty && !this.isGsrnEANNumberBadFormat) {\n this.checkGsrnEan(val);\n }\n },\n },\n watch: {\n gsrnEANNumber: function () {\n this.setSuccessValidationGsrnEan(false);\n this.clearErrorValidationGsrnEan();\n },\n gridOperator: function () {\n this.debounceGsrnEANNumber(this.gsrnEANNumber);\n this.maxLengthGsrnEan =\n this.gridOperatorEnum === GridOperatorEnum.ENEDIS\n ? MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS\n : MAX_LENGTH_GSRN_EAN_NUMBER_ES;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.gsrn-ean-input {\n &__label {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n }\n\n &__info {\n font-size: 0.75rem;\n font-weight: normal;\n margin-bottom: 0.5em;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GsrnEanInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GsrnEanInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GsrnEanInput.vue?vue&type=template&id=637d86c4&scoped=true&\"\nimport script from \"./GsrnEanInput.vue?vue&type=script&lang=js&\"\nexport * from \"./GsrnEanInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GsrnEanInput.vue?vue&type=style&index=0&id=637d86c4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"637d86c4\",\n null\n \n)\n\nexport default component.exports","<template>\n <section>\n <div class=\"container is-fluid\">\n <div class=\"columns\">\n <div class=\"column is-half-desktop is-full-tablet\">\n <h2 class=\"title is-5\">{{ $t(\"housing.yourPointOfConsumption\") }}</h2>\n <grid-operator-selector />\n <template v-if=\"isGridOperatorValid\">\n <div class=\"block\">\n <gsrn-ean-input />\n <custom-select\n :is-empty=\"isContractedPowerEmpty\"\n :is-valid=\"isContractedPowerValid\"\n :label=\"`${$t('housing.contractedPower')} *`\"\n :options=\"getContractedPowerOptions\"\n :validation-errors=\"contractedPowerErrors\"\n :value=\"contractedPower\"\n name=\"contractedPower\"\n @input=\"setContractedPower\"\n />\n </div>\n <h2 class=\"title is-5\">\n {{ $t(\"housing.yourAddress\") }}\n </h2>\n <div class=\"block\">\n <custom-input\n :label=\"`${$t('housing.streetNumber')}`\"\n :maxlength=\"MAX_LENGTH_STREET_NUMBER\"\n :required=\"false\"\n :validation-errors=\"streetNumberErrors\"\n :value=\"streetNumber\"\n name=\"streetNumber\"\n @input=\"setStreetNumber\"\n />\n <custom-select\n :can-be-empty=\"true\"\n :label=\"`${$t('housing.streetNumberSuffix')}`\"\n :options=\"getStreetNumberSuffixOptions\"\n :value=\"streetNumberSuffix\"\n name=\"streetNumberSuffix\"\n @input=\"setStreetNumberSuffix\"\n />\n <custom-input\n :label=\"`${$t('housing.street')}`\"\n :validation-errors=\"streetErrors\"\n :value=\"street\"\n name=\"street\"\n @input=\"setStreet\"\n />\n <custom-input\n :has-counter=\"true\"\n :label=\"`${$t('housing.postCode')}`\"\n :maxlength=\"MAX_LENGTH_POST_CODE\"\n :validation-errors=\"postCodeErrors\"\n :value=\"postCode\"\n name=\"postCode\"\n @input=\"setPostCode\"\n />\n <custom-input\n :label=\"`${$t('housing.city')}`\"\n :validation-errors=\"cityErrors\"\n :value=\"city\"\n name=\"city\"\n @input=\"setCity\"\n />\n </div>\n <h2 class=\"title is-5\">{{ $t(\"housing.yourConsumption\") }} *</h2>\n <div class=\"block\">\n <b-field class=\"container__radio-consumption\" grouped>\n <div class=\"field\">\n <b-radio\n :native-value=\"ConsumptionInformationType.EURO\"\n :value=\"consumptionInformationType\"\n name=\"consumptionInformationType\"\n @input=\"setConsumptionInformationType\"\n >\n {{ $t(\"housing.knowAnnualBill\") }}\n </b-radio>\n </div>\n <number-input\n :disabled=\"isConsumptionInformationEurosDisabled\"\n :expanded=\"false\"\n :validation-errors=\"consumptionInformationEurosErrors\"\n :value=\"consumptionInformationEuros\"\n min=\"0\"\n name=\"consumptionInformationEuros\"\n step=\"1\"\n @input=\"setConsumptionInformationEuros\"\n />\n <p class=\"control\">\n <span class=\"button is-static\">€</span>\n </p>\n </b-field>\n <b-field class=\"container__radio-consumption\" grouped>\n <div class=\"field\">\n <b-radio\n :native-value=\"ConsumptionInformationType.WATT\"\n :value=\"consumptionInformationType\"\n name=\"consumptionInformationType\"\n @input=\"setConsumptionInformationType\"\n >\n {{ $t(\"housing.knowAnnualConsumption\") }}\n </b-radio>\n </div>\n <number-input\n :disabled=\"isConsumptionInformationKwhDisabled\"\n :expanded=\"false\"\n :validation-errors=\"consumptionInformationKwhErrors\"\n :value=\"consumptionInformationKwh\"\n min=\"0\"\n name=\"consumptionInformationKwh\"\n step=\"1\"\n @input=\"setConsumptionInformationKwh\"\n />\n <p class=\"control\">\n <span class=\"button is-static\">kWh</span>\n </p>\n </b-field>\n </div>\n\n <div v-if=\"!isHousingStepValid\" class=\"block\">\n <b-message type=\"is-warning\">\n {{ $t(\"common.forValidThisStepPleaseInquireAllField\") }}\n </b-message>\n </div>\n </template>\n <navigation-buttons\n :next-route=\"nextStep\"\n :previous-route=\"previousStep\"\n :isStepValidated=\"isHousingStepValid\"\n ></navigation-buttons>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nimport { mapGetters, mapMutations } from \"vuex\";\nimport {\n MAX_LENGTH_GSRN_EAN_NUMBER_ES,\n MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS,\n MAX_LENGTH_POST_CODE,\n MAX_LENGTH_STREET_NUMBER,\n} from \"@/store/subscription/housing/constants\";\nimport { RouteName } from \"@/store/navigation/type\";\nimport { ConsumptionInformationType } from \"@/store/subscription/housing/type\";\nimport CustomInput from \"../../components/CustomInput\";\nimport CustomSelect from \"../../components/CustomSelect\";\nimport GridOperatorSelector from \"./GridOperatorSelector\";\nimport NavigationButtons from \"../../components/NavigationButtons\";\nimport NumberInput from \"@/components/NumberInput\";\nimport GsrnEanInput from \"./GsrnEanInput\";\n\nexport default {\n name: \"housingPage\",\n components: {\n GsrnEanInput,\n NumberInput,\n GridOperatorSelector,\n CustomSelect,\n CustomInput,\n NavigationButtons,\n },\n data() {\n return {\n MAX_LENGTH_GSRN_EAN_NUMBER_ES,\n MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS,\n MAX_LENGTH_STREET_NUMBER,\n MAX_LENGTH_POST_CODE,\n ConsumptionInformationType: ConsumptionInformationType,\n previousStep: RouteName.ContactInformation,\n nextStep: RouteName.Billing,\n gsrnHelp: {\n header: this.$t(\"housing.gsrnHelp.header\"),\n body: this.$t(\"housing.gsrnHelp.body\"),\n },\n };\n },\n computed: {\n ...mapGetters(\"subscription/housing\", {\n isGridOperatorValid: \"isGridOperatorValid\",\n\n contractedPower: \"getContractedPower\",\n contractedPowerErrors: \"getContractedPowerErrors\",\n contractedPowers: \"getContractedPowers\",\n isContractedPowerEmpty: \"isContractedPowerEmpty\",\n isContractedPowerValid: \"isContractedPowerValid\",\n\n streetNumber: \"getStreetNumber\",\n isStreetNumberBadFormat: \"isStreetNumberBadFormat\",\n isStreetNumberValid: \"isStreetNumberValid\",\n streetNumberSuffix: \"getStreetNumberSuffix\",\n streetNumberSuffixes: \"getStreetNumberSuffixes\",\n streetNumberErrors: \"getStreetNumberErrors\",\n\n street: \"getStreet\",\n isStreetEmpty: \"isStreetEmpty\",\n isStreetValid: \"isStreetValid\",\n streetErrors: \"getStreetErrors\",\n\n postCode: \"getPostCode\",\n isPostCodeEmpty: \"isPostCodeEmpty\",\n isPostCodeBadFormat: \"isPostCodeBadFormat\",\n isPostCodeValid: \"isPostCodeValid\",\n postCodeErrors: \"getPostCodeErrors\",\n\n city: \"getCity\",\n isCityEmpty: \"isCityEmpty\",\n isCityValid: \"isCityValid\",\n cityErrors: \"getCityErrors\",\n\n consumptionInformationType: \"getConsumptionInformationType\",\n\n consumptionInformationKwh: \"getConsumptionInformationKwh\",\n isConsumptionInformationKwhEmpty: \"isConsumptionInformationKwhEmpty\",\n isConsumptionInformationKwhValid: \"isConsumptionInformationKwhValid\",\n consumptionInformationKwhErrors: \"getConsumptionInformationKwhErrors\",\n\n consumptionInformationEuros: \"getConsumptionInformationEuros\",\n isConsumptionInformationEurosEmpty: \"isConsumptionInformationEurosEmpty\",\n isConsumptionInformationEurosValid: \"isConsumptionInformationEurosValid\",\n consumptionInformationEurosErrors: \"getConsumptionInformationEurosErrors\",\n\n isHousingStepValid: \"isHousingStepValid\",\n }),\n isConsumptionInformationEurosDisabled() {\n return (\n this.consumptionInformationType !== ConsumptionInformationType.EURO\n );\n },\n isConsumptionInformationKwhDisabled() {\n return (\n this.consumptionInformationType !== ConsumptionInformationType.WATT\n );\n },\n getContractedPowerOptions() {\n return this.contractedPowers.map((contractedPower) => ({\n name: contractedPower + \" kVa\",\n value: contractedPower,\n }));\n },\n getStreetNumberSuffixOptions() {\n return this.streetNumberSuffixes.map((streetNumberSuffix) => ({\n name: this.$t(`streetNumberSuffix.${streetNumberSuffix}`),\n value: streetNumberSuffix,\n }));\n },\n },\n methods: {\n ...mapMutations(\"subscription/housing\", [\n \"setContractedPower\",\n \"setGsrnEANNumber\",\n \"setStreetNumber\",\n \"setStreetNumberSuffix\",\n \"setStreet\",\n \"setPostCode\",\n \"setCity\",\n \"setConsumptionInformationType\",\n \"setConsumptionInformationEuros\",\n \"setConsumptionInformationKwh\",\n ]),\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.container__radio-consumption :deep(.is-grouped) {\n align-items: start;\n\n input {\n width: 170px;\n }\n\n .control-label {\n width: 250px;\n }\n}\n\n@include media(\"<tablet\") {\n .container__radio-consumption :deep(.is-grouped) {\n & > .field:first-child {\n margin-bottom: 0.5rem;\n }\n\n flex-wrap: wrap;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./housingPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./housingPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./housingPage.vue?vue&type=template&id=fa97cfb6&scoped=true&\"\nimport script from \"./housingPage.vue?vue&type=script&lang=js&\"\nexport * from \"./housingPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./housingPage.vue?vue&type=style&index=0&id=fa97cfb6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa97cfb6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('div',{staticClass:\"container is-fullhd offer-page-container\"},[_c('product-type-selector'),_c('battery-plan-info'),_c('battery-plan-selector'),_c('b-message',[_c('div',{staticClass:\"content is-normal\"},[(_vm.tenant === 'MYL')?_c('p',[_c('strong',[_c('span',[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.title`)))]),_c('a',{staticClass:\"link-to\",attrs:{\"href\":\"https://www.mylight-systems.com/tarifs-mysmartbattery/\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.titleLink`)))])])]):_vm._e(),(_vm.tenant === 'DOM')?_c('p',[_c('strong',[_c('span',[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.title`)))]),_c('a',{staticClass:\"link-to\",attrs:{\"href\":\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte/grille-tarifaire-domuneo/\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.persoLink`)))]),_c('span',[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.subtitle`)))]),_c('a',{staticClass:\"link-to\",attrs:{\"href\":\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte-pro/grille-tarifaire-domuneo-pro/\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.proLink`)))])])]):_vm._e(),_c('p',[_c('span',[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.regularContent`)))]),_c('a',{staticClass:\"link-to\",attrs:{\"href\":`mailto:${_vm.getContactMailByTenant}`}},[_vm._v(_vm._s(_vm.getContactMailByTenant))]),_c('strong',[_vm._v(_vm._s(_vm.$t(`offer.infoSizeMSB.${_vm.tenant}.strongContent`)))])])])]),_c('b-message',{attrs:{\"type\":\"is-info\"}},[_c('div',{staticClass:\"content is-normal\"},[_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(`offer.infoSubscriptionMSB.${_vm.tenant}.title`)))])]),_c('ul',[_c('li',[_vm._v(\" \"+_vm._s(_vm.$t( `offer.infoSubscriptionMSB.${_vm.tenant}.haveAlreadySolutionMylight150` ))+\" \")]),_c('li',[_vm._v(\" \"+_vm._s(_vm.$t(`offer.infoSubscriptionMSB.${_vm.tenant}.areFreeCommitment`))+\" \")])])])]),_c('navigation-buttons',{attrs:{\"nextRoute\":_vm.nextStep,\"isStepValidated\":_vm.isOfferStepValid}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-type-selector-container block\"},[_c('h2',{staticClass:\"title is-5 product-type-selector-title\"},[_vm._v(\" \"+_vm._s(_vm.productTypeTitle)+\" \"),_c('help-button',{attrs:{\"body\":_vm.productTypeHelp.body,\"header\":_vm.productTypeHelp.header,\"cy-id\":\"productType-helpButton\"}})],1),_c('div',{staticClass:\"product-type-selector-inner-container\"},_vm._l((_vm.productTypes),function(productType,index){return _c('div',{key:index,staticClass:\"product-type\",attrs:{\"cy-id\":`productType-${productType}`}},[_c('div',{staticClass:\"product-type-icon-container\"},[_c('div',{staticClass:\"product-type-icon-inner-container\"},[_c('product-type-icon')],1)]),_c('div',{staticClass:\"product-type-info\"},[_c('h3',{staticClass:\"product-type-info-title\"},[_vm._v(\" \"+_vm._s(_vm.getProductTypeTitle(productType))+\" \")]),_c('ul',{staticClass:\"product-type-info-description\"},_vm._l((_vm.getProductTypeDescriptionItems(\n productType\n )),function(descriptionItem,index){return _c('li',{key:index,staticClass:\"product-type-info-description-item\"},[_c('div',{staticClass:\"description-item-icon\"},[_c('b-icon',{attrs:{\"icon\":\"check-bold\",\"type\":\"is-primary\"}})],1),_c('p',{staticClass:\"description-item-text\"},[_vm._v(_vm._s(descriptionItem))])])}),0),(_vm.tenant === 'MYL')?_c('a',{staticClass:\"product-type-info-button\",attrs:{\"href\":\"https://www.mylight-systems.com/tarifs-mysmartbattery/\",\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.$t(`offer.productTypes.${productType}.link.label`))+\" \")]):_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(`offer.productTypes.${productType}.link.label`))+\" \"),_c('a',{staticClass:\"product-type-info-button-dom\",attrs:{\"href\":\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte/grille-tarifaire-domuneo/\",\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.$t(`offer.productTypes.${productType}.link.part`))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t(`offer.productTypes.${productType}.link.linkingWord`))+\" \"),_c('a',{staticClass:\"product-type-info-button-dom\",attrs:{\"href\":\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte-pro/grille-tarifaire-domuneo-pro/\",\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.$t(`offer.productTypes.${productType}.link.pro`))+\" \")])])])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{attrs:{\"id\":\"Calque_1\",\"data-name\":\"Calque 1\",\"height\":\"63.65\",\"viewBox\":\"0 0 269.16 63.65\",\"width\":\"269.16\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('g',[_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M89,4.22l.51.2.47.37c.48.44.72.76.72,1a.84.84,0,0,0,0,.36.8.8,0,0,1,.08.32.56.56,0,0,0,.13.33V37.42a2.68,2.68,0,0,1-.85,2,2.84,2.84,0,0,1-2,.83,2.83,2.83,0,0,1-2.85-2.84V12l-2.07,1.19a2.49,2.49,0,0,1-1.44.42,2.65,2.65,0,0,1-2.43-1.45A2.57,2.57,0,0,1,78.89,10a2.61,2.61,0,0,1,1.32-1.73l6.36-3.77.2-.11L87,4.22l.31,0a.93.93,0,0,1,.57-.11h.57s.09.05.18.05A.82.82,0,0,1,89,4.22Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M97.53,22.16A22.11,22.11,0,0,1,101,9.8q3.78-5.73,9.62-5.74A9.85,9.85,0,0,1,116,5.64a14,14,0,0,1,4.19,4.16,21.69,21.69,0,0,1,3.46,12.36,21.69,21.69,0,0,1-3.46,12.36A13.83,13.83,0,0,1,116,38.68a9.87,9.87,0,0,1-5.35,1.58q-5.79,0-9.62-5.74A22.06,22.06,0,0,1,97.53,22.16Zm17.94,9.15A16,16,0,0,0,118,22.19,16.53,16.53,0,0,0,115.47,13q-2.22-3.27-4.81-3.16-2.58-.11-4.91,3.16a16.61,16.61,0,0,0-2.48,9.23,16.1,16.1,0,0,0,2.48,9.12q2.22,3.21,4.89,3.21T115.47,31.31Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M128,22.16A22.11,22.11,0,0,1,131.55,9.8q3.78-5.73,9.62-5.74a9.88,9.88,0,0,1,5.38,1.58,14.07,14.07,0,0,1,4.19,4.16,21.69,21.69,0,0,1,3.46,12.36,21.69,21.69,0,0,1-3.46,12.36,13.83,13.83,0,0,1-4.22,4.16,9.87,9.87,0,0,1-5.35,1.58q-5.79,0-9.62-5.74A22.06,22.06,0,0,1,128,22.16ZM146,31.31a16,16,0,0,0,2.48-9.12A16.53,16.53,0,0,0,146,13c-1.48-2.18-3.09-3.23-4.81-3.16s-3.36,1-4.91,3.16a16.53,16.53,0,0,0-2.48,9.23,16,16,0,0,0,2.48,9.12q2.22,3.21,4.89,3.21T146,31.31Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M173,29.39a4.16,4.16,0,0,1-3.22,1.4,4.1,4.1,0,0,1-3.21-1.39,4.91,4.91,0,0,1-1.24-3.4V26a5,5,0,0,1,1.25-3.43,4.15,4.15,0,0,1,3.24-1.41A4.07,4.07,0,0,1,173,22.5a5,5,0,0,1,1.23,3.4V26A5,5,0,0,1,173,29.39Zm-4.67-1.48a1.82,1.82,0,0,0,1.5.8,1.7,1.7,0,0,0,1.46-.78,3.28,3.28,0,0,0,.56-1.93V26a3.17,3.17,0,0,0-.6-2,1.82,1.82,0,0,0-1.5-.8,1.7,1.7,0,0,0-1.46.79,3.23,3.23,0,0,0-.56,1.92V26A3.15,3.15,0,0,0,168.33,27.91Zm1,12.48a1.09,1.09,0,0,1-.83-.31,1,1,0,0,1-.32-.7,1.29,1.29,0,0,1,.25-.74l12.41-17a.93.93,0,0,1,.84-.49,1.13,1.13,0,0,1,.85.31,1,1,0,0,1,.32.7,1.32,1.32,0,0,1-.25.75l-12.41,17A1,1,0,0,1,169.34,40.39Zm15.1-1.33a4.37,4.37,0,0,1-6.43,0,4.91,4.91,0,0,1-1.24-3.39v-.06A5,5,0,0,1,178,32.2a4.37,4.37,0,0,1,6.42,0,4.9,4.9,0,0,1,1.25,3.39v.05A5,5,0,0,1,184.44,39.06Zm-4.67-1.46a1.81,1.81,0,0,0,1.5.79,1.7,1.7,0,0,0,1.46-.78,3.23,3.23,0,0,0,.56-1.92v-.06a3.19,3.19,0,0,0-.6-2,1.78,1.78,0,0,0-1.5-.79,1.72,1.72,0,0,0-1.46.78,3.22,3.22,0,0,0-.55,1.92v.05A3.26,3.26,0,0,0,179.77,37.6Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M202.22,40.15a1.21,1.21,0,0,1-.53-.36.69.69,0,0,0-.09-.18s-.1-.09-.14-.22L197.08,28.9a1.29,1.29,0,0,1,0-1.07,1.44,1.44,0,0,1,.8-.77,1.14,1.14,0,0,1,1,0,1.51,1.51,0,0,1,.79.78l3.11,7.36,3.14-7.36a1.38,1.38,0,0,1,.74-.78,1.27,1.27,0,0,1,1.08,0,1.49,1.49,0,0,1,.79.77,1.25,1.25,0,0,1,0,1.07l-4.43,10.49a.52.52,0,0,1-.11.19l-.11.13s-.09.1-.17.17a1,1,0,0,0-.18.18.34.34,0,0,1-.14.09h0v0a.63.63,0,0,0-.22,0h-.05a1,1,0,0,1-.26,0,.9.9,0,0,1-.25,0h-.06l-.21,0v0Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M226.29,33.15a1.27,1.27,0,0,1-.39,1,1.48,1.48,0,0,1-1,.36h-8.6a3.26,3.26,0,0,0,.92,1.79,3.82,3.82,0,0,0,2.53,1.2,3.93,3.93,0,0,0,2.88-.66,1.4,1.4,0,0,1,1.08-.43,1.12,1.12,0,0,1,1,.35,1.21,1.21,0,0,1,0,1.75,6.72,6.72,0,0,1-4.78,1.78,6.39,6.39,0,0,1-4.73-2,6.86,6.86,0,0,1,0-9.54,6.17,6.17,0,0,1,4.61-2,6.35,6.35,0,0,1,4.56,1.77,6.5,6.5,0,0,1,2,4.5Zm-6.51-3.84a3.77,3.77,0,0,0-2.52,1,3.57,3.57,0,0,0-1.14,1.89h7.66a3.71,3.71,0,0,0-1.31-1.84A4.74,4.74,0,0,0,219.78,29.31Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M234.06,28.36a4.34,4.34,0,0,1,1.7-1.18,5,5,0,0,1,2-.43,1.88,1.88,0,0,1,1.31.42,1.32,1.32,0,0,1,.42,1,1.42,1.42,0,0,1-.42,1,1.36,1.36,0,0,1-1,.43c-1.67,0-3,1.36-4,4.09v5.14a1.36,1.36,0,0,1-.44,1,1.42,1.42,0,0,1-1,.42,1.43,1.43,0,0,1-1.44-1.43V28.17a1.33,1.33,0,0,1,.42-1,1.4,1.4,0,0,1,1-.41,1.45,1.45,0,0,1,1,.41,1.31,1.31,0,0,1,.44,1Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M248.12,26.74a1.47,1.47,0,0,1,1.07.43,1.39,1.39,0,0,1,.45,1,1.41,1.41,0,0,1-.45,1.05,1.45,1.45,0,0,1-1.07.45h-.67v7.55a1.44,1.44,0,0,1,1.05.44,1.49,1.49,0,0,1,.43,1.07,1.47,1.47,0,0,1-1.48,1.49,3,3,0,0,1-3-3V29.71h-.78a1.45,1.45,0,0,1-1.06-.43,1.51,1.51,0,0,1,0-2.11,1.45,1.45,0,0,1,1.06-.43h.78V22.81a1.41,1.41,0,0,1,.45-1,1.47,1.47,0,0,1,1.07-.43,1.41,1.41,0,0,1,1,.43,1.44,1.44,0,0,1,.44,1v3.93Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M267.08,33.15a1.27,1.27,0,0,1-.39,1,1.48,1.48,0,0,1-1,.36h-8.6a3.26,3.26,0,0,0,.92,1.79,3.8,3.8,0,0,0,2.53,1.2,3.93,3.93,0,0,0,2.88-.66,1.4,1.4,0,0,1,1.08-.43,1.12,1.12,0,0,1,1,.35,1.21,1.21,0,0,1,0,1.75,6.72,6.72,0,0,1-4.78,1.78,6.39,6.39,0,0,1-4.73-2,6.83,6.83,0,0,1,0-9.54,6.17,6.17,0,0,1,4.61-2,6.37,6.37,0,0,1,4.56,1.77,6.5,6.5,0,0,1,2,4.5Zm-6.51-3.84a3.77,3.77,0,0,0-2.52,1,3.57,3.57,0,0,0-1.14,1.89h7.66a3.71,3.71,0,0,0-1.31-1.84A4.74,4.74,0,0,0,260.57,29.31Z\"}})]),_c('g',[_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M91.43,62.22l-.78-2.07H86.78L86,62.22a.78.78,0,0,1-.77.56.86.86,0,0,1-.79-.39.93.93,0,0,1-.09-.81l3.52-9.37a.85.85,0,0,1,.34-.41.76.76,0,0,1,.5-.15.81.81,0,0,1,.84.56l3.52,9.37a.93.93,0,0,1-.1.81.85.85,0,0,1-.79.39A.76.76,0,0,1,91.43,62.22Zm-4-3.82H90L88.71,55Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M104.46,58.18a4.6,4.6,0,0,1-9.2,0V52.51a.85.85,0,0,1,.26-.62.83.83,0,0,1,.62-.25.88.88,0,0,1,.63.25.85.85,0,0,1,.26.62v5.67A2.85,2.85,0,0,0,99.86,61a2.76,2.76,0,0,0,2-.83,2.72,2.72,0,0,0,.82-2V52.51a.83.83,0,0,1,.27-.62.88.88,0,0,1,1.5.62Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M115.63,51.89a.84.84,0,0,1,.25.62.82.82,0,0,1-.26.63.81.81,0,0,1-.61.26h-2.53v8.5a.85.85,0,0,1-.26.62.84.84,0,0,1-.62.26.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V53.4h-2.52a.82.82,0,0,1-.62-.26.88.88,0,0,1,.62-1.5H115A.84.84,0,0,1,115.63,51.89Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M119.6,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.75,5.75,0,0,1,1.58,4,5.61,5.61,0,0,1-1.61,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.08.46A5.13,5.13,0,0,1,119.6,61.09Zm.23-4a3.94,3.94,0,0,0,1.07,2.76,3.42,3.42,0,0,0,5.13,0,4.13,4.13,0,0,0,0-5.49,3.43,3.43,0,0,0-5.15,0A3.93,3.93,0,0,0,119.83,57.05Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M134.52,54.28a3.86,3.86,0,0,0-1.17,2.8,3.65,3.65,0,0,0,1.19,2.74A3.83,3.83,0,0,0,137.28,61a4.15,4.15,0,0,0,2.66-.87.85.85,0,0,1,.65-.16.91.91,0,0,1,.62.33.92.92,0,0,1,.18.68.8.8,0,0,1-.34.59,5.78,5.78,0,0,1-3.67,1.25,5.69,5.69,0,0,1-4.11-1.68,5.59,5.59,0,0,1,0-8.09,5.94,5.94,0,0,1,7.78-.45.91.91,0,0,1,.16,1.27.86.86,0,0,1-.62.35.82.82,0,0,1-.65-.17,4.14,4.14,0,0,0-5.42.27Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M145.39,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.75,5.75,0,0,1,1.58,4,5.57,5.57,0,0,1-1.61,4,5.17,5.17,0,0,1-3.8,1.71A5.15,5.15,0,0,1,145.39,61.09Zm.23-4a3.94,3.94,0,0,0,1.07,2.76,3.42,3.42,0,0,0,5.13,0,4.1,4.1,0,0,0,0-5.49,3.43,3.43,0,0,0-5.15,0A3.93,3.93,0,0,0,145.62,57.05Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M159.58,55.3v6.6a.85.85,0,0,1-.26.61.8.8,0,0,1-.61.27.85.85,0,0,1-.62-.26.89.89,0,0,1-.25-.62V52.64a.73.73,0,0,1,.31-.7.91.91,0,0,1,.69-.18.79.79,0,0,1,.56.34l5.14,7.11V52.66a.82.82,0,0,1,.25-.61.87.87,0,0,1,1.22,0,.8.8,0,0,1,.26.61V61.9a.82.82,0,0,1-.26.62.86.86,0,0,1-.63.26.82.82,0,0,1-.63-.32.28.28,0,0,1-.08-.1Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M176.62,59.39c0-.81-.94-1.39-2.8-1.74h0a8.84,8.84,0,0,1-2.14-.67,3,3,0,0,1-1.33-1.1,2.62,2.62,0,0,1-.42-1.39,2.7,2.7,0,0,1,1.21-2.28,4.66,4.66,0,0,1,2.81-.89,4.56,4.56,0,0,1,1.43.24,6.85,6.85,0,0,1,1.09.44l.95.59a.84.84,0,0,1,.34.53.8.8,0,0,1-.63,1,.76.76,0,0,1-.62-.12,8.36,8.36,0,0,0-1.33-.76,3,3,0,0,0-1.23-.26,2.83,2.83,0,0,0-1.72.5,1.34,1.34,0,0,0-.67,1.05.86.86,0,0,0,.13.46c.3.49,1.1.85,2.4,1.09h0a10.82,10.82,0,0,1,2.19.67,3,3,0,0,1,2,2.68,2.87,2.87,0,0,1-1.3,2.42,5,5,0,0,1-3,.95,6.59,6.59,0,0,1-4.07-1.59.79.79,0,0,1-.29-.56.75.75,0,0,1,.16-.6.84.84,0,0,1,.56-.3.77.77,0,0,1,.6.19,4.79,4.79,0,0,0,3,1.22,3.16,3.16,0,0,0,1.94-.55A1.51,1.51,0,0,0,176.62,59.39Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M181.79,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.71,5.71,0,0,1,1.58,4,5.6,5.6,0,0,1-1.6,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.09.46A5.16,5.16,0,0,1,181.79,61.09Zm.24-4a3.93,3.93,0,0,0,1.06,2.76A3.37,3.37,0,0,0,185.66,61a3.32,3.32,0,0,0,2.56-1.17,3.93,3.93,0,0,0,1.06-2.74,4,4,0,0,0-1.05-2.75,3.33,3.33,0,0,0-2.57-1.17,3.39,3.39,0,0,0-2.58,1.16A4,4,0,0,0,182,57.05Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M199,58.75h0a.85.85,0,0,1-.73-.37L196,55.2v6.7a.83.83,0,0,1-.27.62.88.88,0,0,1-1.25,0,.84.84,0,0,1-.25-.62V52.51a.85.85,0,0,1,.87-.87h.05a.78.78,0,0,1,.7.36L199,56.4l3.16-4.4a.86.86,0,0,1,.72-.36h0a.91.91,0,0,1,.62.27.8.8,0,0,1,.27.6V61.9a.92.92,0,0,1-.89.88.84.84,0,0,1-.62-.26.85.85,0,0,1-.26-.62V55.2l-2.29,3.18A.84.84,0,0,1,199,58.75Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M212.46,58.75h0a.85.85,0,0,1-.73-.37l-2.28-3.18v6.7a.82.82,0,0,1-.26.62.88.88,0,0,1-1.25,0,.84.84,0,0,1-.25-.62V52.51a.85.85,0,0,1,.87-.87h.05a.78.78,0,0,1,.7.36l3.17,4.4,3.16-4.4a.86.86,0,0,1,.72-.36h0a.91.91,0,0,1,.63.27.8.8,0,0,1,.27.6V61.9a.82.82,0,0,1-.27.61.83.83,0,0,1-.63.27.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V55.2l-2.29,3.18A.84.84,0,0,1,212.46,58.75Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M227.55,62.22l-.78-2.07H222.9l-.78,2.07a.79.79,0,0,1-.77.56.85.85,0,0,1-.79-.39.9.9,0,0,1-.09-.81L224,52.21a1,1,0,0,1,.34-.41.79.79,0,0,1,.51-.15.81.81,0,0,1,.84.56l3.52,9.37a.93.93,0,0,1-.1.81.85.85,0,0,1-.79.39A.75.75,0,0,1,227.55,62.22Zm-4-3.82h2.57L224.83,55Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M238.79,51.89a.88.88,0,0,1,0,1.25.83.83,0,0,1-.62.26h-2.53v8.5a.84.84,0,0,1-.25.62.88.88,0,0,1-1.5-.62V53.4h-2.51a.82.82,0,0,1-.62-.26.88.88,0,0,1,.62-1.5h6.79A.83.83,0,0,1,238.79,51.89Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M241.79,52.51a.88.88,0,0,1,1.5-.62.85.85,0,0,1,.26.62V61.9a.88.88,0,0,1-1.51.62.84.84,0,0,1-.25-.62Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M247.62,61.09a5.93,5.93,0,0,1,0-8.08,5.22,5.22,0,0,1,7.71,0,5.72,5.72,0,0,1,1.59,4,5.61,5.61,0,0,1-1.61,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.08.46A5.13,5.13,0,0,1,247.62,61.09Zm.23-4a3.93,3.93,0,0,0,1.06,2.76,3.43,3.43,0,0,0,5.14,0,4.11,4.11,0,0,0,0-5.49,3.31,3.31,0,0,0-2.57-1.17,3.35,3.35,0,0,0-2.57,1.16A3.93,3.93,0,0,0,247.85,57.05Z\"}}),_c('path',{staticClass:\"primary-color\",attrs:{\"d\":\"M261.8,55.3v6.6a.84.84,0,0,1-.25.61.82.82,0,0,1-.61.27.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V52.64a.73.73,0,0,1,.31-.7.91.91,0,0,1,.69-.18.81.81,0,0,1,.56.34l5.14,7.11V52.66a.85.85,0,0,1,.86-.86.85.85,0,0,1,.61.25.83.83,0,0,1,.26.61V61.9a.85.85,0,0,1-.26.62.89.89,0,0,1-.63.26.83.83,0,0,1-.64-.32.48.48,0,0,1-.08-.1Z\"}})]),_c('g',[_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M60.36,9.64H53.52a18.29,18.29,0,0,0-15.18,8.08,1.48,1.48,0,0,0,2.45,1.66,15.35,15.35,0,0,1,12.73-6.77h5.36V18A15.37,15.37,0,0,1,43.53,33.32H40a1.48,1.48,0,1,0,0,3h3.54A18.33,18.33,0,0,0,61.84,18V11.13A1.49,1.49,0,0,0,60.36,9.64Z\"}}),_c('path',{staticClass:\"grey-color\",attrs:{\"d\":\"M56.75,55.23a1.48,1.48,0,0,0,0-3H53.41v-.9a1.49,1.49,0,0,0-1.48-1.49H45.67a5.88,5.88,0,0,0-5.83,5.21H23.77a2.43,2.43,0,1,1,0-4.85h6.66A5.59,5.59,0,0,0,36,44.66V25.18A24.56,24.56,0,0,0,11.49.65H1.87A1.48,1.48,0,0,0,.39,2.13v9.62A24.55,24.55,0,0,0,24.92,36.28h8.14v8.38a2.63,2.63,0,0,1-2.63,2.62H23.77a5.39,5.39,0,1,0,0,10.77H39.82a5.88,5.88,0,0,0,5.85,5.45h6.26A1.48,1.48,0,0,0,53.41,62V60.86h3.34a1.48,1.48,0,0,0,0-3H53.41V55.23ZM3.35,11.75V3.61h8.14A21.6,21.6,0,0,1,33.06,25.18v8.14H24.92A21.59,21.59,0,0,1,3.35,11.75Zm47.1,48.79H45.67a2.92,2.92,0,0,1-2.91-2.92V55.76a2.91,2.91,0,0,1,2.91-2.91h4.78Z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n id=\"Calque_1\"\n data-name=\"Calque 1\"\n height=\"63.65\"\n viewBox=\"0 0 269.16 63.65\"\n width=\"269.16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g>\n <path\n class=\"grey-color\"\n d=\"M89,4.22l.51.2.47.37c.48.44.72.76.72,1a.84.84,0,0,0,0,.36.8.8,0,0,1,.08.32.56.56,0,0,0,.13.33V37.42a2.68,2.68,0,0,1-.85,2,2.84,2.84,0,0,1-2,.83,2.83,2.83,0,0,1-2.85-2.84V12l-2.07,1.19a2.49,2.49,0,0,1-1.44.42,2.65,2.65,0,0,1-2.43-1.45A2.57,2.57,0,0,1,78.89,10a2.61,2.61,0,0,1,1.32-1.73l6.36-3.77.2-.11L87,4.22l.31,0a.93.93,0,0,1,.57-.11h.57s.09.05.18.05A.82.82,0,0,1,89,4.22Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M97.53,22.16A22.11,22.11,0,0,1,101,9.8q3.78-5.73,9.62-5.74A9.85,9.85,0,0,1,116,5.64a14,14,0,0,1,4.19,4.16,21.69,21.69,0,0,1,3.46,12.36,21.69,21.69,0,0,1-3.46,12.36A13.83,13.83,0,0,1,116,38.68a9.87,9.87,0,0,1-5.35,1.58q-5.79,0-9.62-5.74A22.06,22.06,0,0,1,97.53,22.16Zm17.94,9.15A16,16,0,0,0,118,22.19,16.53,16.53,0,0,0,115.47,13q-2.22-3.27-4.81-3.16-2.58-.11-4.91,3.16a16.61,16.61,0,0,0-2.48,9.23,16.1,16.1,0,0,0,2.48,9.12q2.22,3.21,4.89,3.21T115.47,31.31Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M128,22.16A22.11,22.11,0,0,1,131.55,9.8q3.78-5.73,9.62-5.74a9.88,9.88,0,0,1,5.38,1.58,14.07,14.07,0,0,1,4.19,4.16,21.69,21.69,0,0,1,3.46,12.36,21.69,21.69,0,0,1-3.46,12.36,13.83,13.83,0,0,1-4.22,4.16,9.87,9.87,0,0,1-5.35,1.58q-5.79,0-9.62-5.74A22.06,22.06,0,0,1,128,22.16ZM146,31.31a16,16,0,0,0,2.48-9.12A16.53,16.53,0,0,0,146,13c-1.48-2.18-3.09-3.23-4.81-3.16s-3.36,1-4.91,3.16a16.53,16.53,0,0,0-2.48,9.23,16,16,0,0,0,2.48,9.12q2.22,3.21,4.89,3.21T146,31.31Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M173,29.39a4.16,4.16,0,0,1-3.22,1.4,4.1,4.1,0,0,1-3.21-1.39,4.91,4.91,0,0,1-1.24-3.4V26a5,5,0,0,1,1.25-3.43,4.15,4.15,0,0,1,3.24-1.41A4.07,4.07,0,0,1,173,22.5a5,5,0,0,1,1.23,3.4V26A5,5,0,0,1,173,29.39Zm-4.67-1.48a1.82,1.82,0,0,0,1.5.8,1.7,1.7,0,0,0,1.46-.78,3.28,3.28,0,0,0,.56-1.93V26a3.17,3.17,0,0,0-.6-2,1.82,1.82,0,0,0-1.5-.8,1.7,1.7,0,0,0-1.46.79,3.23,3.23,0,0,0-.56,1.92V26A3.15,3.15,0,0,0,168.33,27.91Zm1,12.48a1.09,1.09,0,0,1-.83-.31,1,1,0,0,1-.32-.7,1.29,1.29,0,0,1,.25-.74l12.41-17a.93.93,0,0,1,.84-.49,1.13,1.13,0,0,1,.85.31,1,1,0,0,1,.32.7,1.32,1.32,0,0,1-.25.75l-12.41,17A1,1,0,0,1,169.34,40.39Zm15.1-1.33a4.37,4.37,0,0,1-6.43,0,4.91,4.91,0,0,1-1.24-3.39v-.06A5,5,0,0,1,178,32.2a4.37,4.37,0,0,1,6.42,0,4.9,4.9,0,0,1,1.25,3.39v.05A5,5,0,0,1,184.44,39.06Zm-4.67-1.46a1.81,1.81,0,0,0,1.5.79,1.7,1.7,0,0,0,1.46-.78,3.23,3.23,0,0,0,.56-1.92v-.06a3.19,3.19,0,0,0-.6-2,1.78,1.78,0,0,0-1.5-.79,1.72,1.72,0,0,0-1.46.78,3.22,3.22,0,0,0-.55,1.92v.05A3.26,3.26,0,0,0,179.77,37.6Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M202.22,40.15a1.21,1.21,0,0,1-.53-.36.69.69,0,0,0-.09-.18s-.1-.09-.14-.22L197.08,28.9a1.29,1.29,0,0,1,0-1.07,1.44,1.44,0,0,1,.8-.77,1.14,1.14,0,0,1,1,0,1.51,1.51,0,0,1,.79.78l3.11,7.36,3.14-7.36a1.38,1.38,0,0,1,.74-.78,1.27,1.27,0,0,1,1.08,0,1.49,1.49,0,0,1,.79.77,1.25,1.25,0,0,1,0,1.07l-4.43,10.49a.52.52,0,0,1-.11.19l-.11.13s-.09.1-.17.17a1,1,0,0,0-.18.18.34.34,0,0,1-.14.09h0v0a.63.63,0,0,0-.22,0h-.05a1,1,0,0,1-.26,0,.9.9,0,0,1-.25,0h-.06l-.21,0v0Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M226.29,33.15a1.27,1.27,0,0,1-.39,1,1.48,1.48,0,0,1-1,.36h-8.6a3.26,3.26,0,0,0,.92,1.79,3.82,3.82,0,0,0,2.53,1.2,3.93,3.93,0,0,0,2.88-.66,1.4,1.4,0,0,1,1.08-.43,1.12,1.12,0,0,1,1,.35,1.21,1.21,0,0,1,0,1.75,6.72,6.72,0,0,1-4.78,1.78,6.39,6.39,0,0,1-4.73-2,6.86,6.86,0,0,1,0-9.54,6.17,6.17,0,0,1,4.61-2,6.35,6.35,0,0,1,4.56,1.77,6.5,6.5,0,0,1,2,4.5Zm-6.51-3.84a3.77,3.77,0,0,0-2.52,1,3.57,3.57,0,0,0-1.14,1.89h7.66a3.71,3.71,0,0,0-1.31-1.84A4.74,4.74,0,0,0,219.78,29.31Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M234.06,28.36a4.34,4.34,0,0,1,1.7-1.18,5,5,0,0,1,2-.43,1.88,1.88,0,0,1,1.31.42,1.32,1.32,0,0,1,.42,1,1.42,1.42,0,0,1-.42,1,1.36,1.36,0,0,1-1,.43c-1.67,0-3,1.36-4,4.09v5.14a1.36,1.36,0,0,1-.44,1,1.42,1.42,0,0,1-1,.42,1.43,1.43,0,0,1-1.44-1.43V28.17a1.33,1.33,0,0,1,.42-1,1.4,1.4,0,0,1,1-.41,1.45,1.45,0,0,1,1,.41,1.31,1.31,0,0,1,.44,1Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M248.12,26.74a1.47,1.47,0,0,1,1.07.43,1.39,1.39,0,0,1,.45,1,1.41,1.41,0,0,1-.45,1.05,1.45,1.45,0,0,1-1.07.45h-.67v7.55a1.44,1.44,0,0,1,1.05.44,1.49,1.49,0,0,1,.43,1.07,1.47,1.47,0,0,1-1.48,1.49,3,3,0,0,1-3-3V29.71h-.78a1.45,1.45,0,0,1-1.06-.43,1.51,1.51,0,0,1,0-2.11,1.45,1.45,0,0,1,1.06-.43h.78V22.81a1.41,1.41,0,0,1,.45-1,1.47,1.47,0,0,1,1.07-.43,1.41,1.41,0,0,1,1,.43,1.44,1.44,0,0,1,.44,1v3.93Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M267.08,33.15a1.27,1.27,0,0,1-.39,1,1.48,1.48,0,0,1-1,.36h-8.6a3.26,3.26,0,0,0,.92,1.79,3.8,3.8,0,0,0,2.53,1.2,3.93,3.93,0,0,0,2.88-.66,1.4,1.4,0,0,1,1.08-.43,1.12,1.12,0,0,1,1,.35,1.21,1.21,0,0,1,0,1.75,6.72,6.72,0,0,1-4.78,1.78,6.39,6.39,0,0,1-4.73-2,6.83,6.83,0,0,1,0-9.54,6.17,6.17,0,0,1,4.61-2,6.37,6.37,0,0,1,4.56,1.77,6.5,6.5,0,0,1,2,4.5Zm-6.51-3.84a3.77,3.77,0,0,0-2.52,1,3.57,3.57,0,0,0-1.14,1.89h7.66a3.71,3.71,0,0,0-1.31-1.84A4.74,4.74,0,0,0,260.57,29.31Z\"\n />\n </g>\n <g>\n <path\n class=\"primary-color\"\n d=\"M91.43,62.22l-.78-2.07H86.78L86,62.22a.78.78,0,0,1-.77.56.86.86,0,0,1-.79-.39.93.93,0,0,1-.09-.81l3.52-9.37a.85.85,0,0,1,.34-.41.76.76,0,0,1,.5-.15.81.81,0,0,1,.84.56l3.52,9.37a.93.93,0,0,1-.1.81.85.85,0,0,1-.79.39A.76.76,0,0,1,91.43,62.22Zm-4-3.82H90L88.71,55Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M104.46,58.18a4.6,4.6,0,0,1-9.2,0V52.51a.85.85,0,0,1,.26-.62.83.83,0,0,1,.62-.25.88.88,0,0,1,.63.25.85.85,0,0,1,.26.62v5.67A2.85,2.85,0,0,0,99.86,61a2.76,2.76,0,0,0,2-.83,2.72,2.72,0,0,0,.82-2V52.51a.83.83,0,0,1,.27-.62.88.88,0,0,1,1.5.62Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M115.63,51.89a.84.84,0,0,1,.25.62.82.82,0,0,1-.26.63.81.81,0,0,1-.61.26h-2.53v8.5a.85.85,0,0,1-.26.62.84.84,0,0,1-.62.26.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V53.4h-2.52a.82.82,0,0,1-.62-.26.88.88,0,0,1,.62-1.5H115A.84.84,0,0,1,115.63,51.89Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M119.6,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.75,5.75,0,0,1,1.58,4,5.61,5.61,0,0,1-1.61,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.08.46A5.13,5.13,0,0,1,119.6,61.09Zm.23-4a3.94,3.94,0,0,0,1.07,2.76,3.42,3.42,0,0,0,5.13,0,4.13,4.13,0,0,0,0-5.49,3.43,3.43,0,0,0-5.15,0A3.93,3.93,0,0,0,119.83,57.05Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M134.52,54.28a3.86,3.86,0,0,0-1.17,2.8,3.65,3.65,0,0,0,1.19,2.74A3.83,3.83,0,0,0,137.28,61a4.15,4.15,0,0,0,2.66-.87.85.85,0,0,1,.65-.16.91.91,0,0,1,.62.33.92.92,0,0,1,.18.68.8.8,0,0,1-.34.59,5.78,5.78,0,0,1-3.67,1.25,5.69,5.69,0,0,1-4.11-1.68,5.59,5.59,0,0,1,0-8.09,5.94,5.94,0,0,1,7.78-.45.91.91,0,0,1,.16,1.27.86.86,0,0,1-.62.35.82.82,0,0,1-.65-.17,4.14,4.14,0,0,0-5.42.27Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M145.39,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.75,5.75,0,0,1,1.58,4,5.57,5.57,0,0,1-1.61,4,5.17,5.17,0,0,1-3.8,1.71A5.15,5.15,0,0,1,145.39,61.09Zm.23-4a3.94,3.94,0,0,0,1.07,2.76,3.42,3.42,0,0,0,5.13,0,4.1,4.1,0,0,0,0-5.49,3.43,3.43,0,0,0-5.15,0A3.93,3.93,0,0,0,145.62,57.05Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M159.58,55.3v6.6a.85.85,0,0,1-.26.61.8.8,0,0,1-.61.27.85.85,0,0,1-.62-.26.89.89,0,0,1-.25-.62V52.64a.73.73,0,0,1,.31-.7.91.91,0,0,1,.69-.18.79.79,0,0,1,.56.34l5.14,7.11V52.66a.82.82,0,0,1,.25-.61.87.87,0,0,1,1.22,0,.8.8,0,0,1,.26.61V61.9a.82.82,0,0,1-.26.62.86.86,0,0,1-.63.26.82.82,0,0,1-.63-.32.28.28,0,0,1-.08-.1Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M176.62,59.39c0-.81-.94-1.39-2.8-1.74h0a8.84,8.84,0,0,1-2.14-.67,3,3,0,0,1-1.33-1.1,2.62,2.62,0,0,1-.42-1.39,2.7,2.7,0,0,1,1.21-2.28,4.66,4.66,0,0,1,2.81-.89,4.56,4.56,0,0,1,1.43.24,6.85,6.85,0,0,1,1.09.44l.95.59a.84.84,0,0,1,.34.53.8.8,0,0,1-.63,1,.76.76,0,0,1-.62-.12,8.36,8.36,0,0,0-1.33-.76,3,3,0,0,0-1.23-.26,2.83,2.83,0,0,0-1.72.5,1.34,1.34,0,0,0-.67,1.05.86.86,0,0,0,.13.46c.3.49,1.1.85,2.4,1.09h0a10.82,10.82,0,0,1,2.19.67,3,3,0,0,1,2,2.68,2.87,2.87,0,0,1-1.3,2.42,5,5,0,0,1-3,.95,6.59,6.59,0,0,1-4.07-1.59.79.79,0,0,1-.29-.56.75.75,0,0,1,.16-.6.84.84,0,0,1,.56-.3.77.77,0,0,1,.6.19,4.79,4.79,0,0,0,3,1.22,3.16,3.16,0,0,0,1.94-.55A1.51,1.51,0,0,0,176.62,59.39Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M181.79,61.09a6,6,0,0,1,0-8.08,5.23,5.23,0,0,1,7.72,0,5.71,5.71,0,0,1,1.58,4,5.6,5.6,0,0,1-1.6,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.09.46A5.16,5.16,0,0,1,181.79,61.09Zm.24-4a3.93,3.93,0,0,0,1.06,2.76A3.37,3.37,0,0,0,185.66,61a3.32,3.32,0,0,0,2.56-1.17,3.93,3.93,0,0,0,1.06-2.74,4,4,0,0,0-1.05-2.75,3.33,3.33,0,0,0-2.57-1.17,3.39,3.39,0,0,0-2.58,1.16A4,4,0,0,0,182,57.05Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M199,58.75h0a.85.85,0,0,1-.73-.37L196,55.2v6.7a.83.83,0,0,1-.27.62.88.88,0,0,1-1.25,0,.84.84,0,0,1-.25-.62V52.51a.85.85,0,0,1,.87-.87h.05a.78.78,0,0,1,.7.36L199,56.4l3.16-4.4a.86.86,0,0,1,.72-.36h0a.91.91,0,0,1,.62.27.8.8,0,0,1,.27.6V61.9a.92.92,0,0,1-.89.88.84.84,0,0,1-.62-.26.85.85,0,0,1-.26-.62V55.2l-2.29,3.18A.84.84,0,0,1,199,58.75Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M212.46,58.75h0a.85.85,0,0,1-.73-.37l-2.28-3.18v6.7a.82.82,0,0,1-.26.62.88.88,0,0,1-1.25,0,.84.84,0,0,1-.25-.62V52.51a.85.85,0,0,1,.87-.87h.05a.78.78,0,0,1,.7.36l3.17,4.4,3.16-4.4a.86.86,0,0,1,.72-.36h0a.91.91,0,0,1,.63.27.8.8,0,0,1,.27.6V61.9a.82.82,0,0,1-.27.61.83.83,0,0,1-.63.27.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V55.2l-2.29,3.18A.84.84,0,0,1,212.46,58.75Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M227.55,62.22l-.78-2.07H222.9l-.78,2.07a.79.79,0,0,1-.77.56.85.85,0,0,1-.79-.39.9.9,0,0,1-.09-.81L224,52.21a1,1,0,0,1,.34-.41.79.79,0,0,1,.51-.15.81.81,0,0,1,.84.56l3.52,9.37a.93.93,0,0,1-.1.81.85.85,0,0,1-.79.39A.75.75,0,0,1,227.55,62.22Zm-4-3.82h2.57L224.83,55Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M238.79,51.89a.88.88,0,0,1,0,1.25.83.83,0,0,1-.62.26h-2.53v8.5a.84.84,0,0,1-.25.62.88.88,0,0,1-1.5-.62V53.4h-2.51a.82.82,0,0,1-.62-.26.88.88,0,0,1,.62-1.5h6.79A.83.83,0,0,1,238.79,51.89Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M241.79,52.51a.88.88,0,0,1,1.5-.62.85.85,0,0,1,.26.62V61.9a.88.88,0,0,1-1.51.62.84.84,0,0,1-.25-.62Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M247.62,61.09a5.93,5.93,0,0,1,0-8.08,5.22,5.22,0,0,1,7.71,0,5.72,5.72,0,0,1,1.59,4,5.61,5.61,0,0,1-1.61,4,5.12,5.12,0,0,1-1.72,1.25,5,5,0,0,1-2.08.46A5.13,5.13,0,0,1,247.62,61.09Zm.23-4a3.93,3.93,0,0,0,1.06,2.76,3.43,3.43,0,0,0,5.14,0,4.11,4.11,0,0,0,0-5.49,3.31,3.31,0,0,0-2.57-1.17,3.35,3.35,0,0,0-2.57,1.16A3.93,3.93,0,0,0,247.85,57.05Z\"\n />\n <path\n class=\"primary-color\"\n d=\"M261.8,55.3v6.6a.84.84,0,0,1-.25.61.82.82,0,0,1-.61.27.85.85,0,0,1-.62-.26.84.84,0,0,1-.25-.62V52.64a.73.73,0,0,1,.31-.7.91.91,0,0,1,.69-.18.81.81,0,0,1,.56.34l5.14,7.11V52.66a.85.85,0,0,1,.86-.86.85.85,0,0,1,.61.25.83.83,0,0,1,.26.61V61.9a.85.85,0,0,1-.26.62.89.89,0,0,1-.63.26.83.83,0,0,1-.64-.32.48.48,0,0,1-.08-.1Z\"\n />\n </g>\n <g>\n <path\n class=\"grey-color\"\n d=\"M60.36,9.64H53.52a18.29,18.29,0,0,0-15.18,8.08,1.48,1.48,0,0,0,2.45,1.66,15.35,15.35,0,0,1,12.73-6.77h5.36V18A15.37,15.37,0,0,1,43.53,33.32H40a1.48,1.48,0,1,0,0,3h3.54A18.33,18.33,0,0,0,61.84,18V11.13A1.49,1.49,0,0,0,60.36,9.64Z\"\n />\n <path\n class=\"grey-color\"\n d=\"M56.75,55.23a1.48,1.48,0,0,0,0-3H53.41v-.9a1.49,1.49,0,0,0-1.48-1.49H45.67a5.88,5.88,0,0,0-5.83,5.21H23.77a2.43,2.43,0,1,1,0-4.85h6.66A5.59,5.59,0,0,0,36,44.66V25.18A24.56,24.56,0,0,0,11.49.65H1.87A1.48,1.48,0,0,0,.39,2.13v9.62A24.55,24.55,0,0,0,24.92,36.28h8.14v8.38a2.63,2.63,0,0,1-2.63,2.62H23.77a5.39,5.39,0,1,0,0,10.77H39.82a5.88,5.88,0,0,0,5.85,5.45h6.26A1.48,1.48,0,0,0,53.41,62V60.86h3.34a1.48,1.48,0,0,0,0-3H53.41V55.23ZM3.35,11.75V3.61h8.14A21.6,21.6,0,0,1,33.06,25.18v8.14H24.92A21.59,21.59,0,0,1,3.35,11.75Zm47.1,48.79H45.67a2.92,2.92,0,0,1-2.91-2.92V55.76a2.91,2.91,0,0,1,2.91-2.91h4.78Z\"\n />\n </g>\n </svg>\n</template>\n\n<script>\nexport default {\n name: \"product-type-icon\",\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.primary-color {\n fill: $primary;\n}\n\n.grey-color {\n fill: $grey;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductTypeIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductTypeIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductTypeIcon.vue?vue&type=template&id=12eef10a&scoped=true&\"\nimport script from \"./ProductTypeIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductTypeIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProductTypeIcon.vue?vue&type=style&index=0&id=12eef10a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12eef10a\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"product-type-selector-container block\">\n <h2 class=\"title is-5 product-type-selector-title\">\n {{ productTypeTitle }}\n <help-button\n :body=\"productTypeHelp.body\"\n :header=\"productTypeHelp.header\"\n cy-id=\"productType-helpButton\"\n />\n </h2>\n <div class=\"product-type-selector-inner-container\">\n <div\n v-for=\"(productType, index) in productTypes\"\n :key=\"index\"\n :cy-id=\"`productType-${productType}`\"\n class=\"product-type\"\n >\n <div class=\"product-type-icon-container\">\n <div class=\"product-type-icon-inner-container\">\n <product-type-icon />\n </div>\n </div>\n <div class=\"product-type-info\">\n <h3 class=\"product-type-info-title\">\n {{ getProductTypeTitle(productType) }}\n </h3>\n <ul class=\"product-type-info-description\">\n <li\n v-for=\"(descriptionItem, index) in getProductTypeDescriptionItems(\n productType\n )\"\n :key=\"index\"\n class=\"product-type-info-description-item\"\n >\n <div class=\"description-item-icon\">\n <b-icon icon=\"check-bold\" type=\"is-primary\"></b-icon>\n </div>\n <p class=\"description-item-text\">{{ descriptionItem }}</p>\n </li>\n </ul>\n <a\n v-if=\"tenant === 'MYL'\"\n href=\"https://www.mylight-systems.com/tarifs-mysmartbattery/\"\n target=\"_blank\"\n class=\"product-type-info-button\"\n >\n {{ $t(`offer.productTypes.${productType}.link.label`) }}\n </a>\n <p v-else>\n {{ $t(`offer.productTypes.${productType}.link.label`) }}\n <a\n href=\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte/grille-tarifaire-domuneo/\"\n target=\"_blank\"\n class=\"product-type-info-button-dom\"\n >\n {{ $t(`offer.productTypes.${productType}.link.part`) }}\n </a>\n {{ $t(`offer.productTypes.${productType}.link.linkingWord`) }}\n <a\n href=\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte-pro/grille-tarifaire-domuneo-pro/\"\n target=\"_blank\"\n class=\"product-type-info-button-dom\"\n >\n {{ $t(`offer.productTypes.${productType}.link.pro`) }}\n </a>\n </p>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport HelpButton from \"../../components/HelpButton\";\nimport ProductTypeIcon from \"@/views/offer/ProductTypeIcon\";\n\nexport default {\n name: \"product-type-selector\",\n components: { ProductTypeIcon, HelpButton },\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n productTypeTitle: this.$t(\"offer.yourElectricity\"),\n productTypeHelp: {\n header: this.$t(\"offer.productTypes.help.header\"),\n body: this.$t(\"offer.productTypes.help.body\"),\n },\n };\n },\n computed: {\n ...mapGetters(\"subscription/offer\", {\n productTypes: \"getProductTypes\",\n productType: \"getProductType\",\n }),\n getProductTypeTitle() {\n return (productType) =>\n this.$t(`offer.productTypes.${productType}.title`);\n },\n getProductTypeDescriptionItems() {\n return (productType) => {\n const description = this.$t(\n `offer.productTypes.${productType}.description`\n );\n const descriptionItems = description.split(\"&&\");\n return descriptionItems;\n };\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.product-type-selector-container {\n display: flex;\n flex-direction: column;\n margin-bottom: 4rem;\n\n .product-type-selector-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .product-type-selector-inner-container {\n background-color: $lightGrey;\n padding: 2.25rem 4rem;\n\n @include media(\">tablet\", \"<desktop\") {\n padding: 2.25rem 2rem;\n }\n\n .product-type {\n display: flex;\n\n .product-type-icon-container,\n .product-type-info {\n flex-basis: 0;\n flex-grow: 1;\n }\n\n .product-type-icon-container {\n display: flex;\n align-items: center;\n\n .product-type-icon-inner-container {\n display: flex;\n width: 100%;\n margin-right: 4vw;\n max-height: 100px;\n height: 100%;\n\n & :deep(svg) {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n .product-type-info {\n &-title {\n color: $primary;\n font-size: 1.15rem;\n font-weight: bold;\n margin-bottom: 0.75rem;\n }\n\n &-description {\n margin-bottom: 0.625rem;\n &-item {\n display: flex;\n margin: 0.25rem 0;\n }\n .description-item-text {\n padding-left: 0.75rem;\n font-size: 0.95rem;\n line-height: 1.25rem;\n }\n }\n\n &-button {\n text-decoration: underline;\n color: $black;\n padding: 0.438rem 0.625rem;\n border-radius: 0.375rem;\n &:hover {\n background-color: $greyBackground;\n }\n }\n &-button-dom {\n @extend .product-type-info-button;\n padding: 0.2rem 0.2rem;\n }\n }\n }\n }\n}\n\n.product-type-footer {\n color: $grey;\n font-size: 0.95rem;\n padding-top: 1rem;\n}\n\n@include media(\"<tablet\") {\n .product-type-selector-container {\n .product-type-selector-inner-container {\n padding: 2.5%;\n\n .product-type {\n flex-direction: column;\n\n .product-type-icon-container,\n .product-type-info {\n width: 100%;\n justify-content: center;\n padding: 1.5rem;\n }\n\n .product-type-icon-container {\n border-bottom: 2px solid $white;\n\n .product-type-icon-inner-container {\n margin: 0;\n max-width: 350px;\n }\n }\n }\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductTypeSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductTypeSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductTypeSelector.vue?vue&type=template&id=3710c1a8&scoped=true&\"\nimport script from \"./ProductTypeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductTypeSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProductTypeSelector.vue?vue&type=style&index=0&id=3710c1a8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3710c1a8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"battery-plan-selector block\"},[_c('h2',{staticClass:\"title battery-plan-selector__title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"offer.selectBatteryCapacity\"))+\" \")]),_c('div',{staticClass:\"battery-plan-selector-container block\"},[_c('div',{staticClass:\"battery-plan-selector-inner-container\"},[(_vm.isBatteryPlansLoading || !!_vm.batteryPlansError)?_vm._l((6),function(n){return _c('battery-plan-selector-item',{key:n,attrs:{\"disabled\":!!_vm.batteryPlansError,\"loading\":_vm.isBatteryPlansLoading}})}):_vm._e(),_vm._l((_vm.batteryPlans),function(batteryPlan,index){return _c('battery-plan-selector-item',{key:index,attrs:{\"capacity\":batteryPlan.capacity,\"price\":batteryPlan.price,\"selected\":_vm.checkIfBatteryPlanSelected(batteryPlan)},on:{\"click\":function($event){return _vm.selectBatteryCapacity(batteryPlan.capacity)}}})})],2),(_vm.batteryPlansError)?_c('div',{staticClass:\"battery-plan-selector-error\"},[_c('b-message',{attrs:{\"cy-id\":\"batteryPlansError\",\"type\":\"is-danger\"}},[_vm._v(\" \"+_vm._s(_vm.batteryPlansError)+\" \")])],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:[\n 'battery-plan-container',\n {\n selected: _vm.selected,\n loading: _vm.loading,\n disabled: _vm.disabled,\n },\n ],attrs:{\"cy-id\":`batteryCapacity-${_vm.capacity}`},on:{\"click\":function($event){!_vm.loading && !_vm.disabled && _vm.$emit('click')}}},[_c('div',{staticClass:\"battery-plan-inner-container\"},[(_vm.loading)?_c('div',{staticClass:\"battery-plan-loading-container\"},[_c('b-loading',{attrs:{\"active\":_vm.loading,\"is-full-page\":false}})],1):(_vm.disabled)?_c('div',{staticClass:\"battery-plan-disabled-container\"},[_c('b-icon',{attrs:{\"icon\":\"close-circle-outline\",\"size\":\"is-medium\"}})],1):[_c('div',{staticClass:\"battery-plan-header\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"offer.selectedOffer\")))])]),_c('div',{staticClass:\"battery-plan-body\"},[_c('span',{staticClass:\"battery-plan-capacity\"},[_vm._v(\" \"+_vm._s(_vm.capacity)+\" \")]),_c('span',{staticClass:\"battery-plan-capacity-unit\"},[_vm._v(\"kWh\")])]),_c('div',{staticClass:\"battery-plan-footer\"},[_c('span',[_vm._v(_vm._s(_vm.price)+\" € / \"+_vm._s(_vm.$t(\"common.month\"))+\" TTC\")])])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n :class=\"[\n 'battery-plan-container',\n {\n selected,\n loading,\n disabled,\n },\n ]\"\n :cy-id=\"`batteryCapacity-${capacity}`\"\n @click=\"!loading && !disabled && $emit('click')\"\n >\n <div class=\"battery-plan-inner-container\">\n <div v-if=\"loading\" class=\"battery-plan-loading-container\">\n <b-loading :active=\"loading\" :is-full-page=\"false\" />\n </div>\n <div v-else-if=\"disabled\" class=\"battery-plan-disabled-container\">\n <b-icon icon=\"close-circle-outline\" size=\"is-medium\"></b-icon>\n </div>\n <template v-else>\n <div class=\"battery-plan-header\">\n <span>{{ $t(\"offer.selectedOffer\") }}</span>\n </div>\n <div class=\"battery-plan-body\">\n <span class=\"battery-plan-capacity\">\n {{ capacity }}\n </span>\n <span class=\"battery-plan-capacity-unit\">kWh</span>\n </div>\n <div class=\"battery-plan-footer\">\n <span>{{ price }} € / {{ $t(\"common.month\") }} TTC</span>\n </div>\n </template>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"battery-plan-selector-item\",\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n selected: {\n type: Boolean,\n default: false,\n },\n price: {\n type: Number,\n default: undefined,\n },\n capacity: {\n type: Number,\n default: undefined,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n$lightBackgroundBattery: if($tenant == \"DOM\", #ffebd7, #ccebf2);\n\n.battery-plan-container {\n user-select: none;\n text-align: center;\n margin: 1.5vw;\n padding: 1px;\n border-radius: 0.5rem;\n cursor: pointer;\n\n // Background color animation\n background: linear-gradient(\n to top,\n $primary,\n $primary 50%,\n $lightBackgroundBattery 50%\n );\n background-size: 100% 200%;\n background-position: unset;\n background-clip: content-box;\n transition: transform 0.2s 0s ease, background-position 500ms ease-out;\n\n &:hover {\n transform: scale(1.05);\n }\n\n &.loading {\n cursor: not-allowed;\n\n .battery-plan-inner-container {\n padding: 0;\n }\n }\n\n &.disabled {\n background: $lightGrey;\n cursor: not-allowed;\n\n .battery-plan-inner-container {\n -webkit-text-fill-color: unset;\n }\n }\n\n &.selected {\n // Background color animation\n background-position: bottom;\n\n .battery-plan-inner-container {\n // Text color animation\n background-position: bottom;\n\n .battery-plan-header {\n opacity: 1;\n }\n\n .battery-plan-footer {\n // Footer text color animation\n background-position: bottom;\n transition-delay: 0ms;\n }\n }\n }\n\n .battery-plan-inner-container {\n position: relative;\n display: block;\n height: 100%;\n width: 100%;\n border-radius: 0.5rem;\n padding: 1rem;\n max-width: 200px;\n margin: auto;\n\n // Text color animation\n background: linear-gradient(to top, white, white 50%, $primary 50%);\n background-size: 100% 200%;\n background-position: unset;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n transition: box-shadow 0.2s 0s ease, background-position 500ms ease-out;\n\n &:hover {\n box-shadow: 0px -1px 10px -1px rgba(0, 0, 0, 0.2);\n }\n\n .battery-plan {\n &-header,\n &-body,\n &-footer {\n display: block;\n font-family: Quicksand;\n font-weight: bold;\n }\n\n &-header {\n height: 15%;\n opacity: 0;\n text-transform: uppercase;\n font-size: 0.775rem;\n }\n\n &-body {\n height: 70%;\n\n .battery-plan-capacity {\n font-size: 3.5rem;\n line-height: 3.25rem;\n letter-spacing: 2px;\n\n &-unit {\n font-size: 2rem;\n line-height: 2.25rem;\n }\n }\n }\n\n &-footer {\n height: 15%;\n font-weight: bold;\n font-size: 1.05rem;\n // Footer text color animation\n background: linear-gradient(to top, white, white 50%, black 50%);\n background-size: 100% 200%;\n background-position: unset;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n transition: background-position 200ms ease;\n transition-delay: 300ms;\n }\n\n &-loading-container {\n height: 100%;\n width: 100%;\n\n & :deep(.loading-overlay) {\n position: relative;\n height: 100%;\n width: 100%;\n\n .loading-background {\n background: transparent;\n }\n\n .loading-icon {\n &::after {\n border-bottom-color: $primary;\n border-left-color: $primary;\n }\n }\n }\n }\n\n &-disabled-container :deep() {\n i {\n color: $grey;\n }\n }\n }\n }\n}\n\n@include media(\"<tablet\") {\n .battery-plan-container {\n .battery-plan-inner-container {\n padding: 1rem 0;\n\n .battery-plan-header {\n height: auto;\n }\n\n .battery-plan-body {\n height: 65%;\n padding-top: 0.25rem;\n }\n\n .battery-plan-footer {\n height: 20%;\n }\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanSelectorItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanSelectorItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BatteryPlanSelectorItem.vue?vue&type=template&id=5cc1dfc2&scoped=true&\"\nimport script from \"./BatteryPlanSelectorItem.vue?vue&type=script&lang=js&\"\nexport * from \"./BatteryPlanSelectorItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryPlanSelectorItem.vue?vue&type=style&index=0&id=5cc1dfc2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cc1dfc2\",\n null\n \n)\n\nexport default component.exports","<template>\n <section class=\"battery-plan-selector block\">\n <h2 class=\"title battery-plan-selector__title\">\n {{ $t(\"offer.selectBatteryCapacity\") }}\n </h2>\n <div class=\"battery-plan-selector-container block\">\n <div class=\"battery-plan-selector-inner-container\">\n <template v-if=\"isBatteryPlansLoading || !!batteryPlansError\">\n <battery-plan-selector-item\n v-for=\"n in 6\"\n :key=\"n\"\n :disabled=\"!!batteryPlansError\"\n :loading=\"isBatteryPlansLoading\"\n ></battery-plan-selector-item>\n </template>\n <battery-plan-selector-item\n v-for=\"(batteryPlan, index) in batteryPlans\"\n :key=\"index\"\n :capacity=\"batteryPlan.capacity\"\n :price=\"batteryPlan.price\"\n :selected=\"checkIfBatteryPlanSelected(batteryPlan)\"\n @click=\"selectBatteryCapacity(batteryPlan.capacity)\"\n ></battery-plan-selector-item>\n </div>\n <div v-if=\"batteryPlansError\" class=\"battery-plan-selector-error\">\n <b-message cy-id=\"batteryPlansError\" type=\"is-danger\">\n {{ batteryPlansError }}\n </b-message>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nimport { mapGetters, mapMutations } from \"vuex\";\nimport BatteryPlanSelectorItem from \"./BatteryPlanSelectorItem\";\n\nexport default {\n name: \"battery-plan-selector\",\n components: { BatteryPlanSelectorItem },\n data() {\n return {\n productTypeHelp: {\n header: \"Product type help header\",\n body: \"Text is not provided yet!\",\n footer: \"Maybe footer is unnecessary\",\n },\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n computed: {\n ...mapGetters(\"subscription/offer\", {\n isBatteryPlansLoading: \"getBatteryPlansLoading\",\n batteryPlansError: \"getBatteryPlansError\",\n batteryPlans: \"getBatteryPlans\",\n batteryCapacity: \"getBatteryCapacity\",\n }),\n checkIfBatteryPlanSelected() {\n return (batteryPlan) => this.batteryCapacity === batteryPlan.capacity;\n },\n },\n methods: {\n ...mapMutations(\"subscription/offer\", {\n selectBatteryCapacity: \"setBatteryCapacity\",\n }),\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n$fontTitleBattery: if($tenant == \"DOM\", #f39104, #018fa7);\n.battery-plan-selector {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n\n &__title {\n color: $fontTitleBattery;\n font-size: 1.8rem;\n font-family: Quicksand;\n font-weight: bold;\n letter-spacing: -0.5px;\n -webkit-text-stroke-width: 0.5px;\n margin-bottom: 2rem;\n text-align: center;\n }\n\n &-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 30rem;\n width: 100%;\n }\n\n &-inner-container {\n width: 100%;\n height: 100%;\n max-width: 750px;\n display: grid;\n grid-template: repeat(2, 50%) / repeat(3, 33.33%);\n }\n\n &-error {\n width: 100%;\n max-width: 750px;\n padding: 0 1.5vw;\n }\n}\n\n@include media(\"<tablet\") {\n .battery-plan-selector-container {\n height: 40rem;\n\n .battery-plan-selector-inner-container {\n min-width: 320px;\n grid-template: repeat(3, 33.33%) / repeat(2, 50%);\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BatteryPlanSelector.vue?vue&type=template&id=53eb4b35&scoped=true&\"\nimport script from \"./BatteryPlanSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./BatteryPlanSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryPlanSelector.vue?vue&type=style&index=0&id=53eb4b35&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53eb4b35\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"battery-info-container block\"},[_c('h2',{staticClass:\"title is-5 battery-info-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"offer.yourBattery\"))+\" \"),_c('help-button',{attrs:{\"body\":_vm.batteryOfferHelp().body,\"header\":_vm.batteryOfferHelp().header,\"multilined\":true,\"cy-id\":\"batteryOffer-helpModal\"}})],1),_c('div',{staticClass:\"battery-info-inner-container\"},[_c('div',{staticClass:\"battery-info-body\"},[_c('div',{staticClass:\"battery-info-icon-container\"},[_c('tenant-logo')],1),_c('div',{staticClass:\"battery-info-info\"},[_c('div',{staticClass:\"battery-info-info-title\"},[_vm._v(\" \"+_vm._s(_vm.$t(`offer.battery.title`))+\" \")]),_vm._l((_vm.getBatteryOfferDescriptionItems),function(descriptionItem,index){return _c('div',{key:index,staticClass:\"battery-info-info-description-item\"},[_c('div',{staticClass:\"description-item-icon\"},[_c('b-icon',{attrs:{\"icon\":\"check-bold\",\"type\":\"is-primary\"}})],1),_c('div',{staticClass:\"description-item-text\"},[_vm._v(_vm._s(descriptionItem))])])})],2)]),_c('div',{staticClass:\"battery-info-footer\"},[_vm._v(\" \"+_vm._s(_vm.$t(`offer.battery.${_vm.tenant}.footer`))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:[\n 'battery-info-icon-inner-container',\n _vm.tenant === 'MYL'\n ? 'battery-info-icon-inner-container--myl'\n : 'battery-info-icon-inner-container--dom',\n ]},[(_vm.tenant === 'MYL')?[_c('div',{staticClass:\"MSB-logo\"},[_c('MSBLogo')],1),_c('div',{staticClass:\"MSB-text\"},[_c('MSBText')],1)]:_c('div',{staticClass:\"DSI-logo\"},[_c('DSILogo')],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{staticStyle:{\"enable-background\":\"new 0 0 244 320.3\"},attrs:{\"id\":\"Calque_1\",\"version\":\"1.1\",\"viewBox\":\"0 0 244 320.3\",\"x\":\"0px\",\"xml:space\":\"preserve\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"y\":\"0px\"}},[_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M25.2,0h187.4c8.1,0,14.6,6.5,14.6,14.6v183.1c0,8.1-6.5,14.6-14.6,14.6H25.2c-8.1,0-14.6-6.5-14.6-14.6V14.6\\n\\tC10.6,6.5,17.1,0,25.2,0z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M212.6,1c7.5,0,13.6,6.1,13.6,13.6v183.1c0,7.5-6.1,13.6-13.6,13.6c0,0,0,0,0,0H25.2c-7.5,0-13.6-6.1-13.6-13.6\\n\\tl0,0V14.6C11.6,7.1,17.7,1,25.2,1c0,0,0,0,0,0H212.6 M212.6-1H25.2C16.6-1,9.6,6,9.6,14.6v183.1c0,8.6,7,15.6,15.6,15.6h187.4\\n\\tc8.6,0,15.6-7,15.6-15.6V14.6C228.2,6,221.2-1,212.6-1L212.6-1z\"}}),_c('g',[_c('defs',[_c('path',{attrs:{\"id\":\"SVGID_1_\",\"d\":\"M23.8,5.9H214c4.3,0,7.8,3.5,7.8,7.8V193c0,4.3-3.5,7.8-7.8,7.8H23.8c-4.3,0-7.8-3.5-7.8-7.8V13.7\\n\\t\\t\\tC16,9.4,19.5,5.9,23.8,5.9z\"}})]),_c('clipPath',{attrs:{\"id\":\"SVGID_2_\"}},[_c('use',{staticStyle:{\"overflow\":\"visible\"},attrs:{\"xlink:href\":\"#SVGID_1_\"}})]),_c('g',{staticClass:\"st2\"},[_c('linearGradient',{attrs:{\"id\":\"SVGID_3_\",\"gradientTransform\":\"matrix(2.1912 -0.2873 -0.1677 -1.2791 -247.4959 119.4816)\",\"gradientUnits\":\"userSpaceOnUse\",\"x1\":\"166.2501\",\"x2\":\"153.9301\",\"y1\":\"-17.3414\",\"y2\":\"47.1886\"}},[_c('stop',{staticStyle:{\"stop-color\":\"#ffffff\"},attrs:{\"offset\":\"0\"}}),_c('stop',{staticStyle:{\"stop-color\":\"#ffffff\",\"stop-opacity\":\"0\"},attrs:{\"offset\":\"0.3\"}})],1),_c('path',{staticClass:\"st3\",attrs:{\"d\":\"M81.5-36.9C195-51.8,291.2-32.4,296.3,6.4c5.1,38.8-82.8,82.3-196.3,97.2s-209.7-4.5-214.8-43.3\\n\\t\\t\\tC-119.9,21.5-32-22,81.5-36.9z\"}})],1)]),_c('path',{staticClass:\"st4\",attrs:{\"d\":\"M26.5,9.8h184.8c4.2,0,7.7,3.4,7.7,7.7v177.4c0,4.2-3.4,7.7-7.7,7.7H26.5c-4.2,0-7.7-3.4-7.7-7.7V17.5\\n\\tC18.8,13.2,22.3,9.8,26.5,9.8z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M2.8,258.7c0.6,0.4,1.2,0.8,1.8,1.1c1,0.5,2,0.9,3,1.3c1.3,0.5,2.7,0.8,4.1,1.1c1.6,0.3,3.3,0.5,5,0.4\\n\\tc3.2,0,5.5-0.5,6.9-1.4c1.9-1.4,2.6-4,1.6-6.1c-0.3-0.6-0.8-1.1-1.4-1.5c-0.7-0.4-1.4-0.8-2.2-1c-1-0.3-2-0.5-3-0.7l-6-1.1\\n\\tc-1.5-0.3-3-0.7-4.5-1.2c-1.4-0.5-2.6-1.1-3.8-2c-1.1-0.8-2-1.9-2.6-3.1c-0.7-1.4-1-2.9-1-4.4c0-1.5,0.3-3,0.8-4.4\\n\\tc0.6-1.4,1.5-2.7,2.8-3.7c1.4-1.1,3-1.9,4.7-2.4c2.3-0.7,4.6-1,6.9-0.9c1.7,0,3.5,0.1,5.2,0.3c1.3,0.2,2.5,0.4,3.7,0.8\\n\\tc0.9,0.3,1.7,0.6,2.5,1c0.6,0.3,1.1,0.6,1.4,0.8c0.5,0.4,1,0.8,1.4,1.3c0.4,0.5,0.6,1.1,0.6,1.6c0,0.8-0.3,1.7-0.8,2.3\\n\\tc-0.4,0.6-0.9,1.1-1.4,1.5c-0.5-0.5-1-0.9-1.6-1.2c-0.8-0.5-1.7-1-2.6-1.4c-2.6-1-5.4-1.5-8.2-1.5c-1.4,0-2.8,0.1-4.2,0.4\\n\\tc-1,0.2-1.9,0.5-2.7,1.1c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.7-0.5,1.4-0.4,2.2c-0.1,1.3,0.6,2.5,1.6,3.3c1.7,1,3.5,1.6,5.4,1.9l6.2,1.2\\n\\tc4,0.7,7,1.9,9,3.6c2.1,1.8,3.2,4.5,3,7.2c0,1.6-0.3,3.3-1,4.8c-0.7,1.4-1.8,2.7-3.1,3.7c-1.5,1.1-3.2,1.9-5,2.4\\n\\tc-2.3,0.6-4.6,0.9-6.9,0.8c-2,0-4.1-0.2-6.1-0.5c-1.7-0.3-3.3-0.7-4.9-1.3c-1.2-0.4-2.4-0.9-3.6-1.5c-1-0.5-1.7-0.9-2.1-1.2\\n\\tL2.8,258.7z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M38.1,234.8c-0.1-0.8,0.2-1.7,0.9-2.2c0.7-0.5,1.6-0.7,2.4-0.7c0.6,0,1.2,0.1,1.8,0.2c0.6,0.2,1,0.3,1.1,0.4\\n\\tv7.2h8c0.9-0.1,1.8,0.2,2.6,0.7c0.5,0.6,0.8,1.4,0.8,2.2c0,0.6-0.1,1.2-0.3,1.7c-0.1,0.4-0.3,0.8-0.4,1.1H44.4v12.3\\n\\tc0,0.8,0.1,1.6,0.4,2.3c0.2,0.6,0.6,1.1,1.1,1.4c0.5,0.4,1,0.6,1.6,0.8c0.6,0.1,1.3,0.2,1.9,0.2c1,0,2-0.2,3-0.5\\n\\tc0.7-0.2,1.4-0.5,2-0.9l2.5,4.2c-0.3,0.2-0.7,0.5-1.2,0.8c-0.6,0.4-1.3,0.7-2,0.9c-0.8,0.3-1.7,0.6-2.6,0.7c-1,0.2-2.1,0.3-3.1,0.3\\n\\tc-3.2,0-5.7-0.8-7.3-2.5c-1.7-1.8-2.6-4.1-2.5-6.6L38.1,234.8z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M74.1,238.9c2.1,0,4.1,0.4,6,1.1c1.8,0.7,3.4,1.7,4.8,3.1c1.4,1.3,2.4,2.9,3.2,4.6c0.8,1.8,1.2,3.8,1.2,5.8\\n\\tc0,2-0.4,3.9-1.2,5.8c-0.7,1.7-1.8,3.3-3.2,4.6c-1.4,1.3-3,2.4-4.8,3.1c-3.8,1.5-8.1,1.5-11.9,0c-1.8-0.7-3.4-1.8-4.8-3.1\\n\\tc-1.4-1.3-2.4-2.9-3.2-4.6c-0.8-1.8-1.2-3.8-1.2-5.7c0-2,0.4-4,1.2-5.8c0.7-1.7,1.8-3.3,3.2-4.6c1.4-1.3,3-2.4,4.8-3.1\\n\\tC70,239.3,72,238.9,74.1,238.9z M74.1,262.6c1.2,0,2.4-0.2,3.5-0.7c1-0.4,2-1.1,2.7-1.9c0.8-0.8,1.4-1.8,1.8-2.9\\n\\tc0.4-1.1,0.6-2.3,0.6-3.5c0-1.2-0.2-2.5-0.6-3.6c-0.4-1.1-1-2.1-1.8-2.9c-0.8-0.8-1.7-1.5-2.7-1.9c-2.2-0.9-4.8-0.9-7,0\\n\\tc-1,0.4-1.9,1.1-2.7,1.9c-0.8,0.8-1.4,1.8-1.8,2.9c-0.4,1.2-0.6,2.4-0.6,3.6c0,1.2,0.2,2.4,0.6,3.5c0.4,1.1,1,2,1.8,2.9\\n\\tc0.7,0.8,1.7,1.5,2.7,1.9C71.7,262.3,72.9,262.6,74.1,262.6L74.1,262.6z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M118.5,265.4c-0.5,0.3-1.1,0.6-1.6,0.9c-0.7,0.3-1.4,0.6-2.2,0.9c-0.9,0.3-1.9,0.5-2.8,0.7\\n\\tc-1.2,0.2-2.4,0.3-3.6,0.3c-2,0-3.9-0.3-5.8-0.9c-1.8-0.6-3.4-1.5-4.7-2.8c-1.4-1.3-2.5-2.8-3.2-4.5c-0.8-2-1.2-4.1-1.2-6.2\\n\\tc0-2.1,0.4-4.3,1.2-6.3c0.7-1.8,1.8-3.3,3.2-4.6c1.4-1.3,3-2.2,4.8-2.8c1.9-0.7,4-1,6-1c1.5,0,3.1,0.1,4.6,0.4\\n\\tc1.1,0.2,2.1,0.6,3.1,1.1c0.7,0.3,1.3,0.9,1.7,1.5c0.3,0.5,0.5,1.1,0.5,1.6c0,0.7-0.3,1.4-0.7,2c-0.4,0.5-0.9,1-1.4,1.4\\n\\tc-0.8-0.7-1.8-1.4-2.9-1.8c-1.5-0.6-3-0.9-4.6-0.9c-1.2,0-2.4,0.2-3.5,0.6c-1,0.3-2,0.9-2.8,1.7c-0.8,0.8-1.5,1.8-1.9,2.8\\n\\tc-0.5,1.3-0.7,2.6-0.7,4c0,1.4,0.2,2.8,0.7,4.1c0.4,1.1,1.1,2,2,2.8c0.9,0.7,1.8,1.3,2.9,1.6c1.2,0.4,2.4,0.5,3.6,0.5\\n\\tc1.5,0.1,3-0.2,4.4-0.8c0.8-0.3,1.5-0.7,2.3-1.1L118.5,265.4z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M122.1,229.7c-0.1-0.8,0.3-1.6,0.9-2.2c0.7-0.5,1.6-0.8,2.5-0.7c0.6,0,1.2,0.1,1.8,0.2c0.6,0.2,0.9,0.3,1.1,0.4\\n\\tv22.5c0.5-0.3,1.1-0.8,2-1.5s1.8-1.3,2.9-2.1s2.2-1.6,3.3-2.4s2.2-1.6,3.2-2.4c0.7-0.5,1.4-1,2.2-1.4c0.8-0.3,1.7-0.5,2.6-0.5\\n\\tc0.9,0,1.8,0.3,2.5,0.8c0.5,0.4,1,0.8,1.3,1.4c-0.8,0.7-1.8,1.5-3.2,2.5s-2.7,2-4.1,3s-2.7,1.9-4,2.8s-2.1,1.5-2.7,1.9\\n\\tc3.1,2.3,5.9,4.8,8.5,7.5c2.3,2.4,4.5,5,6.5,7.7h-7.8c-0.8-1-1.8-2.1-2.8-3.2s-2.2-2.2-3.4-3.3s-2.4-2.1-3.6-3.1s-2.4-1.9-3.6-2.8\\n\\tv12.5H122L122.1,229.7z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M177.5,267.2c-0.4,0.1-0.9,0.2-1.7,0.2s-1.7,0.2-2.8,0.3s-2.2,0.2-3.6,0.2s-2.7,0.1-4.1,0.1\\n\\tc-2.4,0.1-4.7-0.2-7-0.7c-1.6-0.4-3-1.1-4.3-2c-1-0.7-1.7-1.7-2.1-2.9c-0.4-1.1-0.6-2.2-0.6-3.3c0-1.4,0.2-2.7,0.7-4\\n\\tc0.5-1.1,1.2-2.1,2.2-2.9c1.2-0.8,2.6-1.4,4.1-1.7c2-0.4,4.1-0.6,6.2-0.6c1.4,0,2.7,0,4,0.1s2.2,0.2,2.8,0.2c0-1.1-0.2-2.2-0.6-3.2\\n\\tc-0.4-0.8-1-1.5-1.7-2c-0.8-0.5-1.7-0.9-2.6-1c-1.1-0.2-2.3-0.3-3.4-0.3c-1.7-0.1-3.4,0.2-5,0.7c-0.9,0.3-1.7,0.7-2.5,1.2\\n\\tc-0.3-0.3-0.6-0.7-0.9-1c-0.4-0.5-0.6-1.2-0.6-1.9c0-0.5,0.1-1,0.4-1.5c0.4-0.6,0.9-1,1.5-1.3c0.9-0.5,1.8-0.8,2.8-0.9\\n\\tc1.5-0.2,3-0.4,4.5-0.3c2,0,4,0.2,5.9,0.6c1.6,0.4,3.2,1,4.6,2c1.3,0.9,2.3,2.2,3,3.6c0.8,1.7,1.1,3.6,1.1,5.5L177.5,267.2z\\n\\t M171.3,255c-0.4-0.1-1.1-0.2-2.1-0.3c-1.5-0.2-3-0.2-4.5-0.2c-1.9-0.1-3.8,0.3-5.4,1.1c-1.2,0.8-1.8,2.1-1.7,3.5\\n\\tc0,0.6,0.1,1.2,0.4,1.8c0.3,0.6,0.7,1.1,1.2,1.4c0.7,0.4,1.5,0.7,2.4,0.9c1.2,0.2,2.5,0.3,3.8,0.3c1.3,0,2.7-0.1,4-0.2\\n\\tc1-0.1,1.7-0.2,2-0.3V255z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M187.4,272.1c0.1,0.1,0.5,0.2,1,0.4c0.6,0.2,1.2,0.4,1.9,0.6c0.9,0.2,1.8,0.4,2.6,0.5c1.1,0.2,2.2,0.2,3.3,0.2\\n\\tc1.2,0,2.5-0.1,3.7-0.4c1.2-0.3,2.3-0.8,3.2-1.5c1-0.8,1.8-1.8,2.4-3c0.7-1.6,1-3.3,0.9-5v-0.7c-1,1.1-2.3,2.1-3.7,2.8\\n\\tc-1.8,0.9-3.8,1.4-5.8,1.3c-1.9,0-3.9-0.3-5.7-1c-1.7-0.6-3.2-1.6-4.5-2.9c-1.3-1.3-2.3-2.8-2.9-4.4c-0.7-1.8-1-3.8-1-5.7\\n\\tc0-2,0.4-4,1.1-5.8c0.7-1.7,1.8-3.3,3.1-4.6c1.4-1.3,3-2.3,4.8-3c1.9-0.8,4-1.1,6.1-1.1c2,0,3.9,0.3,5.8,0.9\\n\\tc1.7,0.6,3.3,1.6,4.6,2.9c1.4,1.4,2.4,3.1,3.1,4.9c0.8,2.2,1.2,4.6,1.1,7v7.9c0.1,2.5-0.3,5.1-1.2,7.5c-0.7,1.9-1.8,3.7-3.3,5.1\\n\\tc-1.4,1.3-3.1,2.3-5,2.9c-2,0.6-4.2,0.9-6.3,0.9c-1.4,0-2.7-0.1-4.1-0.2c-1.1-0.1-2.2-0.3-3.3-0.6c-0.8-0.2-1.6-0.4-2.4-0.7\\n\\tc-0.5-0.2-0.9-0.4-1.4-0.6L187.4,272.1z M197.9,262.2c1.2,0,2.3-0.2,3.4-0.6c1-0.4,1.9-1,2.6-1.8c0.8-0.8,1.3-1.7,1.7-2.8\\n\\tc0.8-2.3,0.8-4.7,0-7c-0.4-1-1-2-1.7-2.8c-0.7-0.8-1.6-1.4-2.6-1.8c-2.2-0.9-4.7-0.9-6.9,0c-1,0.4-1.9,1.1-2.7,1.9\\n\\tc-0.7,0.8-1.3,1.8-1.7,2.8c-0.4,1.1-0.6,2.3-0.6,3.4c-0.1,2.3,0.7,4.6,2.3,6.4C193.4,261.4,195.6,262.3,197.9,262.2L197.9,262.2z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M243,265.3c-0.3,0.2-0.8,0.4-1.4,0.8c-0.8,0.4-1.5,0.7-2.3,0.9c-1.1,0.3-2.2,0.6-3.2,0.8\\n\\tc-1.3,0.2-2.7,0.3-4,0.3c-2,0-3.9-0.3-5.8-0.9c-3.5-1.2-6.4-3.8-7.9-7.3c-1.5-3.9-1.5-8.3,0-12.2c0.7-1.8,1.8-3.4,3.1-4.7\\n\\tc1.4-1.3,3-2.3,4.7-3c1.9-0.7,4-1.1,6-1.1c1.7,0,3.4,0.2,5.1,0.7c1.3,0.4,2.6,1.1,3.7,2c2.8,2.4,3.8,6.4,2.2,9.8\\n\\tc-0.6,1.1-1.4,2.1-2.5,2.7c-1.5,0.9-3.2,1.5-4.9,1.8c-2.6,0.5-5.2,0.7-7.8,0.6c-0.7,0-1.4,0-2.1,0l-2.1-0.1c0.3,1.8,1.2,3.5,2.7,4.5\\n\\tc1.9,1.3,4.2,1.9,6.5,1.7c0.9,0,1.8-0.1,2.6-0.2c1.3-0.2,2.6-0.6,3.8-1.2l1-0.5L243,265.3z M223.7,252.3c0.8,0,1.6,0.1,2.4,0.1h2.3\\n\\tc1.6,0,3.3-0.1,4.9-0.4c1-0.2,2-0.5,2.9-1c0.6-0.3,1.1-0.8,1.4-1.4c0.2-0.5,0.3-1,0.3-1.6c0.1-1.3-0.6-2.5-1.7-3.1\\n\\tc-1.3-0.7-2.7-1.1-4.2-1c-1.2,0-2.5,0.2-3.6,0.7c-1,0.4-1.9,1.1-2.6,1.9c-0.7,0.8-1.3,1.7-1.6,2.7\\n\\tC223.9,250.1,223.7,251.2,223.7,252.3L223.7,252.3z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M57.9,283.6c1.9,0,3.4,1.5,3.4,3.4c0,1.9-1.5,3.4-3.4,3.4s-3.4-1.5-3.4-3.4c0-0.9,0.4-1.7,1-2.4\\n\\tC56.1,284,57,283.6,57.9,283.6z M55,297.4c-0.1-0.8,0.2-1.5,0.8-2c0.7-0.5,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2\\n\\tc0.5,0.1,0.8,0.3,1,0.3v24.3H55V297.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M66.7,304.6c0-1.5,0.3-3,0.9-4.4c0.6-1.3,1.5-2.4,2.5-3.3c1.1-0.9,2.4-1.6,3.8-2.1c1.6-0.5,3.2-0.7,4.8-0.7\\n\\tc1.6,0,3.3,0.2,4.8,0.7c1.4,0.4,2.7,1.1,3.8,2.1c1.1,0.9,1.9,2,2.5,3.3c0.6,1.4,0.9,2.9,0.9,4.4v15h-5.6v-13.6\\n\\tc0.1-1.9-0.5-3.7-1.6-5.1c-2.8-2.3-6.8-2.3-9.6,0c-1.2,1.4-1.7,3.3-1.6,5.1v13.6h-5.7L66.7,304.6z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M97.3,313.4c0.4,0.3,0.8,0.5,1.2,0.6c0.7,0.3,1.5,0.6,2.2,0.8c1,0.3,2,0.5,3,0.7c1.2,0.2,2.4,0.3,3.7,0.3\\n\\tc1.4,0,2.9-0.2,4.2-0.7c1-0.3,1.7-1.3,1.6-2.3c0.1-0.8-0.3-1.6-1-2.1c-1.1-0.6-2.4-1-3.7-1l-3.9-0.4c-1.2-0.1-2.5-0.4-3.6-0.7\\n\\tc-1-0.3-2-0.8-2.9-1.4c-0.8-0.6-1.4-1.4-1.9-2.2c-0.5-1-0.7-2.1-0.7-3.1c0-1,0.2-2.1,0.6-3c0.5-1,1.1-1.8,2-2.5\\n\\tc1-0.8,2.2-1.4,3.5-1.7c1.7-0.4,3.5-0.7,5.2-0.6c2.7-0.1,5.4,0.3,8,1.1c1.9,0.8,2.9,1.8,2.9,3c0,0.3-0.1,0.7-0.2,1\\n\\tc-0.1,0.3-0.3,0.5-0.5,0.8c-0.2,0.2-0.4,0.4-0.6,0.6c-0.1,0.1-0.3,0.2-0.4,0.3c-0.3-0.2-0.6-0.4-0.9-0.6c-0.6-0.3-1.2-0.6-1.8-0.8\\n\\tc-0.9-0.3-1.8-0.6-2.7-0.8c-1.2-0.2-2.4-0.3-3.7-0.3c-3.8,0-5.7,1-5.8,3c0,0.8,0.4,1.6,1.1,2c1,0.5,2,0.8,3.1,0.9l5.1,0.6\\n\\tc2.3,0.2,4.5,1,6.4,2.2c1.5,1.2,2.4,3.1,2.3,5c0,2.4-1.1,4.6-3,6c-2,1.5-4.8,2.2-8.5,2.2c-1.6,0-3.2-0.1-4.9-0.4\\n\\tc-1.3-0.2-2.5-0.5-3.8-0.9c-0.9-0.3-1.8-0.6-2.6-1c-0.4-0.2-0.9-0.5-1.3-0.7L97.3,313.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M126.9,283.6c1.9,0,3.4,1.5,3.4,3.4c0,1.9-1.5,3.4-3.4,3.4c-1.9,0-3.4-1.5-3.4-3.4c0-0.9,0.4-1.8,1-2.4\\n\\tC125.1,284,126,283.6,126.9,283.6z M124.1,297.4c-0.1-0.8,0.2-1.5,0.8-2c0.7-0.4,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2\\n\\tc0.5,0.1,0.8,0.3,1,0.3v24.3h-5.6L124.1,297.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M156,285.7c-0.1-0.7,0.2-1.5,0.8-2c0.6-0.5,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2l1,0.3V306\\n\\tc0.1,2.1-0.3,4.3-1,6.3c-0.6,1.7-1.6,3.2-2.8,4.5c-1.2,1.2-2.6,2.1-4.2,2.7c-1.7,0.6-3.5,0.9-5.3,0.9c-1.8,0-3.7-0.3-5.4-1\\n\\tc-1.6-0.6-3-1.6-4.2-2.7c-1.2-1.2-2.2-2.6-2.8-4.2c-0.7-1.7-1-3.5-1-5.2c0-1.8,0.3-3.6,1-5.3c0.6-1.5,1.5-3,2.7-4.2\\n\\tc1.1-1.2,2.5-2.1,4-2.7c1.6-0.7,3.3-1,5-1c1.7,0,3.5,0.3,5.1,1.1c1.3,0.6,2.5,1.6,3.4,2.7L156,285.7z M156,307.2\\n\\tc0-1.1-0.2-2.2-0.6-3.2c-0.4-0.9-0.9-1.8-1.6-2.6c-0.7-0.7-1.5-1.3-2.4-1.7c-2.9-1.3-6.4-0.6-8.6,1.7c-0.7,0.7-1.2,1.6-1.6,2.5\\n\\tc-0.4,1-0.6,2.1-0.5,3.2c0,1.1,0.2,2.2,0.5,3.2c0.3,0.9,0.9,1.8,1.6,2.5c1.4,1.5,3.4,2.4,5.5,2.3c1.1,0,2.1-0.2,3.1-0.6\\n\\tc0.9-0.4,1.7-0.9,2.4-1.6c0.7-0.7,1.2-1.6,1.6-2.5C155.8,309.4,156,308.3,156,307.2z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M188.9,317.8c-0.3,0.2-0.7,0.4-1.2,0.7c-0.7,0.3-1.4,0.6-2.1,0.8c-1,0.3-1.9,0.5-2.9,0.7\\n\\tc-1.2,0.2-2.4,0.3-3.6,0.3c-1.8,0-3.5-0.3-5.2-0.8c-1.6-0.5-3-1.4-4.2-2.5c-1.2-1.1-2.2-2.5-2.9-4.1c-0.7-1.8-1.1-3.6-1-5.5\\n\\tc0-1.9,0.3-3.7,1-5.4c0.6-1.6,1.6-3,2.8-4.2c1.2-1.2,2.7-2.1,4.3-2.7c1.7-0.7,3.5-1,5.4-1c1.5,0,3.1,0.2,4.6,0.7\\n\\tc1.2,0.4,2.3,1,3.4,1.8c1.7,1.4,2.8,3.5,2.8,5.8c0,1.1-0.2,2.2-0.6,3.1c-0.5,1-1.3,1.9-2.3,2.4c-1.4,0.8-2.9,1.3-4.4,1.6\\n\\tc-2.3,0.4-4.7,0.6-7,0.6c-0.7,0-1.3,0-1.9,0s-1.2,0-1.9-0.1c0.2,1.6,1.1,3.1,2.5,4.1c1.7,1.1,3.8,1.7,5.8,1.5c0.8,0,1.6-0.1,2.4-0.2\\n\\tc0.7-0.1,1.3-0.3,1.9-0.5c0.5-0.2,1-0.4,1.5-0.6l0.9-0.4L188.9,317.8z M171.5,306.1c0.8,0,1.5,0,2.2,0h2.1c1.5,0,3-0.1,4.4-0.4\\n\\tc0.9-0.2,1.8-0.5,2.6-0.9c0.5-0.3,1-0.7,1.2-1.2c0.2-0.5,0.3-0.9,0.3-1.4c0.1-1.1-0.5-2.2-1.5-2.8c-1.1-0.7-2.4-1-3.8-0.9\\n\\tc-1.1,0-2.2,0.2-3.2,0.6c-0.9,0.4-1.7,1-2.3,1.7c-0.6,0.7-1.1,1.6-1.5,2.5C171.8,304.1,171.6,305.1,171.5,306.1L171.5,306.1z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M192.3,64.5c-2.8,0.1-5.4-1-7.4-3c-4.1-4.1-4.1-10.6,0-14.7c4.1-4,10.7-4,14.8,0c4.1,4.1,4.1,10.6,0,14.7\\n\\tC197.7,63.5,195.1,64.6,192.3,64.5z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M192.3,45.5c2.3-0.1,4.6,0.9,6.2,2.5c3.4,3.4,3.4,8.9,0,12.3c-3.5,3.3-9,3.3-12.5,0c-3.4-3.4-3.4-8.9,0-12.3\\n\\tC187.7,46.4,190,45.5,192.3,45.5 M192.3,42.2c-3.2-0.1-6.3,1.2-8.6,3.5c-4.7,4.7-4.7,12.3,0,17.1c4.8,4.6,12.4,4.6,17.1,0\\n\\tc4.7-4.7,4.7-12.3,0-17.1C198.6,43.4,195.5,42.1,192.3,42.2L192.3,42.2z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M192.3,138.1c-4.9,0-8.9-4-8.9-8.9V79.4c0-4.9,4-8.9,8.9-8.9s8.9,4,8.9,8.9v49.8\\n\\tC201.2,134.1,197.2,138.1,192.3,138.1z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M192.3,72.1c4,0,7.2,3.2,7.2,7.2v49.8c0,4-3.2,7.2-7.2,7.2s-7.2-3.2-7.2-7.2V79.4\\n\\tC185.1,75.4,188.3,72.1,192.3,72.1 M192.3,68.8c-5.8,0-10.6,4.7-10.6,10.6v49.8c0,5.8,4.7,10.6,10.6,10.6c5.8,0,10.6-4.7,10.6-10.6\\n\\tV79.4C202.9,73.6,198.1,68.8,192.3,68.8z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M62.8,137.5c-19.3,0-34.9-15.6-34.9-34.9c0-4.6,3.7-8.3,8.3-8.3s8.3,3.7,8.3,8.3c0,10.2,8.2,18.4,18.4,18.4\\n\\tc10.2,0,18.4-8.2,18.4-18.4c0-10.2-8.2-18.4-18.4-18.4c0,0,0,0,0,0c-4.6,0-8.3-3.7-8.3-8.3c0-4.6,3.7-8.3,8.3-8.3\\n\\tc6.3,0,12.5,1.7,17.9,5V43.5c0-4.6,3.7-8.3,8.3-8.3c4.6,0,8.3,3.7,8.3,8.3v52.8c0,0.2,0,0.4,0,0.6c0.3,1.9,0.5,3.8,0.5,5.7\\n\\tC97.7,121.9,82.1,137.5,62.8,137.5z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M89,36.7c3.8,0,6.8,3,6.8,6.8v52.8c0,0.2,0,0.4,0,0.6c2.9,18.2-9.6,35.4-27.8,38.2s-35.4-9.6-38.2-27.8\\n\\tc-0.2-1.6-0.4-3.2-0.4-4.7c0-3.8,3.1-6.8,6.8-6.8c3.8,0,6.8,3.1,6.8,6.8c0,10.9,8.9,19.8,19.8,19.8s19.8-8.9,19.8-19.8\\n\\ts-8.9-19.8-19.8-19.8c0,0,0,0,0,0c-3.8,0-6.8-3.1-6.8-6.8c0-3.8,3.1-6.8,6.8-6.8c6.9,0,13.7,2.2,19.4,6.2V43.5\\n\\tC82.1,39.8,85.2,36.7,89,36.7 M88.9,33.9c-5.3,0-9.6,4.4-9.6,9.7v26.8c-5.1-2.6-10.7-4-16.5-4c-5.4-0.2-9.8,4-10,9.4\\n\\tc-0.2,5.4,4,9.8,9.4,10c0.2,0,0.4,0,0.6,0c9.4,0,16.9,7.6,16.9,16.9c0,9.4-7.6,16.9-16.9,16.9s-16.9-7.6-16.9-16.9l0,0\\n\\tc0-5.4-4.3-9.7-9.7-9.7c-5.4,0-9.7,4.3-9.7,9.7c-0.1,20.1,16.2,36.4,36.2,36.5s36.4-16.2,36.5-36.2c0-2-0.2-4-0.5-6\\n\\tc0-0.2,0-0.3,0-0.5V43.5C98.7,38.2,94.3,33.9,88.9,33.9L88.9,33.9z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M35.8,91.4c-2.8,0-5.1-2.3-5.1-5.1v-6.2c0-5.5,4.4-9.9,9.9-9.9h6.5c2.8,0,5.1,2.3,5.1,5.1\\n\\tc0,2.8-2.3,5.1-5.1,5.1c0,0,0,0,0,0h-6.2v5.9C40.9,89.1,38.6,91.4,35.8,91.4z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M141.6,137.8c-4.2,0-8.4-0.3-12.6-1c-3.3-0.6-6.6-1.4-9.8-2.4c-2.3-0.7-4.6-1.6-6.8-2.6\\n\\tc-1.1-0.5-2.1-1.1-3.1-1.7c-3.5-1.8-4.9-6.1-3.1-9.7c1.2-2.4,3.7-3.9,6.4-3.9c1,0,2.1,0.2,3,0.7c0.2,0,0.4,0.1,0.5,0.2\\n\\tc0.9,0.6,1.9,1.1,2.9,1.4c1.8,0.8,3.6,1.4,5.4,2c2.4,0.7,4.9,1.3,7.4,1.8c3,0.5,6,0.7,9,0.7c3.4,0.1,6.8-0.4,10.1-1.6\\n\\tc2.1-0.9,3.1-2.2,3.1-4.2c0.1-1.6-0.6-3-1.9-3.9c-1-0.7-3.4-1.7-8.7-2.3l-9.8-1.1c-3.2-0.3-6.4-0.9-9.5-1.9\\n\\tc-2.8-0.8-5.4-2.1-7.7-3.8c-2.2-1.6-4-3.7-5.2-6.1c-1.3-2.7-2-5.7-1.9-8.7c0-2.8,0.6-5.6,1.7-8.2c1.2-2.7,3.1-5.1,5.4-6.9\\n\\tc2.8-2.1,6-3.7,9.4-4.6c4.5-1.2,9.1-1.7,13.7-1.6c8.9,0,15.9,1,20.9,3c1,0.4,2,0.9,3,1.4c3.6,1.6,5.3,5.9,3.6,9.5\\n\\tc-1.6,3.6-5.9,5.3-9.5,3.7c-0.7-0.3-1.5-0.6-2.3-0.9c-5-1.8-10.3-2.7-15.7-2.6c-8.6,0-12.9,2-12.9,5.9c-0.1,1.5,0.7,2.8,2,3.5\\n\\tc2.3,1.2,4.7,1.9,7.2,2.1l12.8,1.6c7.2,0.9,12.9,3,17,6c4.3,3.2,6.4,7.9,6.4,14c0.2,6.4-2.9,12.5-8.1,16.3\\n\\tC158.9,135.8,151.3,137.8,141.6,137.8z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"d\":\"M139.6,70.2c8.7,0,15.5,1,20.3,2.9c1,0.4,1.9,0.8,2.8,1.3c2.9,1,4.4,4.2,3.3,7.1c-1,2.9-4.2,4.4-7.1,3.3\\n\\tc-0.2-0.1-0.4-0.2-0.6-0.3c-0.7-0.3-1.5-0.7-2.4-1c-2.3-0.8-4.6-1.4-6.9-1.9c-3.1-0.6-6.2-0.8-9.3-0.8c-9.7,0-14.6,2.5-14.6,7.6\\n\\tc-0.1,2,1,3.9,2.8,4.9c2.5,1.3,5.1,2.1,7.9,2.3l12.8,1.6c6.9,0.9,12.3,2.8,16.2,5.7s5.8,7.1,5.8,12.6c0.2,5.9-2.7,11.6-7.5,15\\n\\tc-5,3.7-12.2,5.6-21.6,5.6c-4.1,0-8.2-0.3-12.3-1c-3.3-0.6-6.5-1.3-9.6-2.3c-2.3-0.7-4.5-1.5-6.6-2.6c-1-0.5-2-1-3-1.6\\n\\tc-2.7-1.4-3.7-4.7-2.3-7.4c1.4-2.7,4.7-3.7,7.4-2.3l0,0c1,0.6,2,1.2,3.1,1.6c1.8,0.8,3.7,1.5,5.6,2.1c2.5,0.8,5,1.4,7.6,1.8\\n\\tc3.1,0.5,6.2,0.8,9.3,0.8c3.6,0.1,7.3-0.5,10.7-1.7c2.8-1.1,4.1-3,4.1-5.8c0.1-2.1-0.9-4.1-2.6-5.3c-1.8-1.2-4.9-2.1-9.4-2.6\\n\\tl-9.8-1.1c-3.1-0.3-6.2-0.9-9.2-1.8c-2.6-0.8-5-2-7.2-3.5c-2-1.5-3.6-3.4-4.7-5.5c-1.2-2.5-1.8-5.2-1.7-7.9c0-2.6,0.5-5.2,1.6-7.5\\n\\tc1.1-2.5,2.9-4.6,5-6.3c2.6-2,5.6-3.5,8.9-4.3C130.6,70.7,135.1,70.1,139.6,70.2 M139.5,66.9c-4.8-0.1-9.5,0.4-14.1,1.6\\n\\tc-3.6,1-7,2.6-10,4.9c-2.5,2-4.6,4.6-5.9,7.5c-1.2,2.8-1.9,5.8-1.9,8.9c-0.1,3.3,0.6,6.5,2.1,9.4c1.4,2.6,3.3,4.9,5.7,6.7\\n\\tc2.5,1.8,5.3,3.1,8.2,4c3.2,1,6.5,1.6,9.9,1.9l9.8,1.1c5.2,0.6,7.2,1.5,7.9,2c0.8,0.6,1.3,1.5,1.2,2.5c0,1.1-0.3,2-2.1,2.7\\n\\tc-3,1.1-6.2,1.5-9.4,1.4c-2.9,0-5.8-0.2-8.7-0.7c-2.4-0.4-4.8-1-7.2-1.7c-1.8-0.5-3.5-1.2-5.3-1.9c-0.9-0.4-1.7-0.8-2.6-1.3\\n\\tc-0.3-0.2-0.6-0.4-1-0.5c-1.1-0.5-2.3-0.8-3.6-0.8c-4.9-0.1-8.9,3.7-9.1,8.6c-0.1,3.4,1.8,6.6,4.8,8.1c1,0.7,2.1,1.3,3.2,1.8\\n\\tc2.3,1.1,4.6,2,7.1,2.7c3.3,1,6.6,1.8,10,2.4c4.3,0.7,8.6,1,12.9,1c10.1,0,18-2.1,23.5-6.3c5.7-4,9-10.6,8.8-17.6\\n\\tc0-6.6-2.4-11.8-7.1-15.3c-4.3-3.2-10.3-5.3-17.8-6.3l-12.8-1.6c-2.3-0.2-4.5-0.8-6.6-1.8c-0.8-0.4-1.2-1.2-1.2-2.1\\n\\tc0-3.5,6.1-4.3,11.2-4.3c2.9,0,5.8,0.2,8.6,0.7c2.2,0.4,4.3,1,6.4,1.7c0.8,0.3,1.5,0.6,2.1,0.9c4.5,1.9,9.7-0.3,11.6-4.8\\n\\tc1.8-4.3-0.1-9.3-4.3-11.4c-1-0.6-2-1-3.1-1.5C155.8,67.9,148.7,66.9,139.5,66.9L139.5,66.9z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M38.3,166.3c-0.1-0.7,0.2-1.3,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6c0.5,0,1,0.1,1.5,0.2c0.4,0.1,0.7,0.2,0.9,0.3v20.2\\n\\tc0,1.9-0.3,3.9-0.9,5.7c-0.5,1.5-1.4,2.9-2.5,4c-1.1,1.1-2.4,1.9-3.8,2.4c-1.5,0.6-3.2,0.9-4.8,0.9c-1.7,0-3.3-0.3-4.8-0.9\\n\\tc-1.4-0.6-2.7-1.4-3.8-2.5c-1.1-1.1-1.9-2.3-2.5-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.3,0.9-4.8c0.6-1.4,1.4-2.7,2.4-3.8\\n\\tc1-1.1,2.3-1.9,3.6-2.5c1.4-0.6,3-0.9,4.5-0.9c1.6,0,3.1,0.3,4.6,1c1.2,0.6,2.3,1.4,3.1,2.4V166.3z M38.3,185.6c0-1-0.2-2-0.5-2.9\\n\\tc-0.3-0.9-0.8-1.6-1.4-2.3c-0.6-0.7-1.3-1.2-2.2-1.5c-1.8-0.7-3.8-0.7-5.6,0c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.3\\n\\tc-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.2,2,0.5,2.9c0.3,0.8,0.8,1.6,1.4,2.3c1.3,1.4,3.1,2.1,5,2.1c1,0,1.9-0.2,2.8-0.5\\n\\tc0.8-0.3,1.6-0.8,2.2-1.5c0.6-0.7,1.1-1.4,1.4-2.3C38.1,187.6,38.3,186.6,38.3,185.6z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M59.5,173.8c1.7,0,3.3,0.3,4.9,0.9c1.5,0.6,2.8,1.4,3.9,2.5c1.1,1.1,2,2.3,2.6,3.8c0.6,1.5,1,3.1,0.9,4.7\\n\\tc0,1.6-0.3,3.2-0.9,4.7c-0.6,1.4-1.5,2.7-2.6,3.8c-1.1,1.1-2.5,1.9-3.9,2.5c-3.1,1.2-6.6,1.2-9.7,0c-1.5-0.6-2.8-1.4-3.9-2.5\\n\\tc-1.1-1.1-2-2.3-2.6-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.2,0.9-4.7c0.6-1.4,1.5-2.7,2.6-3.8c1.1-1.1,2.5-1.9,3.9-2.5\\n\\tC56.1,174,57.8,173.7,59.5,173.8z M59.5,193c1,0,1.9-0.2,2.8-0.6c0.8-0.4,1.6-0.9,2.2-1.6c0.6-0.7,1.1-1.5,1.4-2.3\\n\\tc0.3-0.9,0.5-1.9,0.5-2.9c0-1-0.2-2-0.5-2.9c-0.3-0.9-0.8-1.7-1.4-2.4c-0.6-0.7-1.4-1.2-2.2-1.5c-0.9-0.4-1.9-0.6-2.8-0.6\\n\\tc-1,0-1.9,0.2-2.8,0.6c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.4c-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.2,2,0.5,2.9\\n\\tc0.3,0.9,0.8,1.6,1.4,2.3c0.6,0.7,1.4,1.2,2.2,1.6C57.5,192.8,58.5,193,59.5,193L59.5,193z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M76.1,182.4c0-1.3,0.2-2.6,0.8-3.8c0.5-1,1.2-2,2.1-2.7c0.9-0.7,2-1.3,3.1-1.6c1.3-0.4,2.6-0.6,3.9-0.6\\n\\tc1.7,0,3.4,0.3,5,1c1.4,0.6,2.6,1.7,3.5,3c0.8-1.3,2-2.3,3.4-3c1.5-0.7,3.2-1,4.9-1c1.3,0,2.6,0.2,3.8,0.5c1.1,0.3,2.2,0.9,3.1,1.6\\n\\tc0.9,0.7,1.6,1.7,2.1,2.7c0.5,1.2,0.8,2.5,0.8,3.8v14.5h-5.1v-12.8c0-2-0.5-3.5-1.4-4.4c-1-0.9-2.4-1.4-3.8-1.3\\n\\tc-1.4,0-2.8,0.5-3.8,1.5c-1,1-1.6,2.6-1.6,4.8v12.2h-5.1v-12.2c0-2.2-0.5-3.8-1.5-4.8c-1-1-2.4-1.5-3.8-1.5\\n\\tc-1.4-0.1-2.7,0.4-3.8,1.3c-1,0.9-1.4,2.4-1.4,4.4v12.7h-5.1L76.1,182.4z\"}}),_c('path',{staticClass:\"st1\",attrs:{\"d\":\"M117.6,176.8c-0.1-0.7,0.2-1.4,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6c0.5,0,1,0.1,1.5,0.2l0.9,0.3v11.8\\n\\tc-0.1,1.7,0.4,3.3,1.4,4.6c2.5,2.1,6.2,2.1,8.8,0c1-1.3,1.5-3,1.4-4.6v-9.9c-0.1-0.7,0.2-1.4,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6\\n\\tc0.5,0,1,0.1,1.5,0.2l0.9,0.3v12.9c0,1.4-0.2,2.8-0.8,4.1c-0.5,1.2-1.3,2.2-2.2,3.1c-1,0.9-2.2,1.5-3.5,1.9c-2.9,0.9-6,0.9-8.9,0\\n\\tc-1.3-0.4-2.4-1-3.4-1.9c-1-0.8-1.7-1.9-2.2-3.1c-0.6-1.3-0.8-2.7-0.8-4.1L117.6,176.8z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M144.7,183.3c0-1.4,0.3-2.7,0.8-4c0.5-1.2,1.3-2.2,2.3-3c1-0.9,2.2-1.5,3.4-1.9c1.4-0.4,2.9-0.7,4.4-0.6\\n\\tc1.5,0,3,0.2,4.4,0.6c1.3,0.4,2.5,1,3.5,1.9c1,0.8,1.7,1.8,2.3,3c0.5,1.3,0.8,2.6,0.8,4v13.6h-5.1v-12.3c0.1-1.7-0.4-3.3-1.5-4.6\\n\\tc-2.5-2.1-6.2-2.1-8.7,0c-1.1,1.3-1.6,3-1.5,4.6v12.3h-5.1L144.7,183.3z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M191.7,195.2c-0.2,0.1-0.6,0.4-1.1,0.6c-0.6,0.3-1.3,0.6-1.9,0.8c-0.9,0.3-1.7,0.5-2.6,0.6\\n\\tc-1.1,0.2-2.2,0.3-3.3,0.3c-1.6,0-3.2-0.2-4.7-0.8c-1.4-0.5-2.7-1.3-3.8-2.3c-1.1-1-2-2.3-2.6-3.7c-0.7-1.6-1-3.3-0.9-5\\n\\tc0-1.7,0.3-3.3,0.9-4.9c0.6-1.4,1.4-2.7,2.6-3.8c1.1-1.1,2.4-1.9,3.9-2.5c1.5-0.6,3.2-0.9,4.9-0.9c1.4,0,2.8,0.2,4.1,0.6\\n\\tc1.1,0.4,2.1,0.9,3,1.6c0.8,0.6,1.4,1.4,1.9,2.4c0.4,0.9,0.6,1.9,0.6,2.9c0,1-0.2,2-0.6,2.9c-0.5,0.9-1.2,1.7-2.1,2.2\\n\\tc-1.2,0.7-2.6,1.2-4,1.4c-2.1,0.4-4.2,0.6-6.4,0.5c-0.6,0-1.2,0-1.7,0l-1.7-0.1c0.2,1.5,1,2.8,2.2,3.7c1.6,1,3.4,1.5,5.3,1.4\\n\\tc1.3,0,2.7-0.2,3.9-0.6c0.5-0.2,0.9-0.3,1.4-0.5l0.8-0.4L191.7,195.2z M176,184.6c0.7,0,1.3,0,2,0h1.9c1.3,0,2.7-0.1,4-0.3\\n\\tc0.8-0.1,1.6-0.4,2.4-0.8c0.5-0.2,0.9-0.6,1.1-1.1c0.2-0.4,0.3-0.8,0.3-1.3c0-1-0.5-2-1.4-2.5c-1-0.6-2.2-0.9-3.4-0.9\\n\\tc-1,0-2,0.2-2.9,0.6c-0.8,0.4-1.5,0.9-2.1,1.5c-0.6,0.7-1,1.4-1.3,2.2C176.3,182.9,176.1,183.7,176,184.6L176,184.6z\"}}),_c('path',{staticClass:\"st5\",attrs:{\"d\":\"M207.8,173.8c1.7,0,3.3,0.3,4.9,0.9c1.5,0.6,2.8,1.4,3.9,2.5c1.1,1.1,2,2.3,2.6,3.8c0.6,1.5,1,3.1,0.9,4.7\\n\\tc0,1.6-0.3,3.2-0.9,4.7c-0.6,1.4-1.5,2.7-2.6,3.8c-1.1,1.1-2.5,1.9-3.9,2.5c-3.1,1.2-6.6,1.2-9.7,0c-1.5-0.6-2.8-1.4-3.9-2.5\\n\\tc-1.1-1.1-2-2.3-2.6-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.2,0.9-4.7c0.6-1.4,1.5-2.7,2.6-3.8c1.1-1.1,2.5-1.9,3.9-2.5\\n\\tC204.5,174.1,206.1,173.8,207.8,173.8z M207.8,193c1,0,1.9-0.2,2.8-0.6c0.8-0.4,1.6-0.9,2.2-1.6c0.6-0.7,1.1-1.5,1.5-2.3\\n\\tc0.4-0.9,0.5-1.9,0.5-2.9c0-1-0.2-2-0.5-2.9c-0.3-0.9-0.8-1.7-1.4-2.4c-0.6-0.7-1.4-1.2-2.2-1.5c-0.9-0.4-1.9-0.6-2.8-0.6\\n\\tc-1,0-1.9,0.2-2.8,0.6c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.4c-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.1,2,0.4,2.9\\n\\tc0.3,0.9,0.8,1.6,1.4,2.3c0.6,0.7,1.4,1.2,2.2,1.6C205.8,192.8,206.8,193,207.8,193L207.8,193z\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n id=\"Calque_1\"\n style=\"enable-background: new 0 0 244 320.3\"\n version=\"1.1\"\n viewBox=\"0 0 244 320.3\"\n x=\"0px\"\n xml:space=\"preserve\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n y=\"0px\"\n >\n <path\n class=\"st0\"\n d=\"M25.2,0h187.4c8.1,0,14.6,6.5,14.6,14.6v183.1c0,8.1-6.5,14.6-14.6,14.6H25.2c-8.1,0-14.6-6.5-14.6-14.6V14.6\n\tC10.6,6.5,17.1,0,25.2,0z\"\n />\n <path\n class=\"st1\"\n d=\"M212.6,1c7.5,0,13.6,6.1,13.6,13.6v183.1c0,7.5-6.1,13.6-13.6,13.6c0,0,0,0,0,0H25.2c-7.5,0-13.6-6.1-13.6-13.6\n\tl0,0V14.6C11.6,7.1,17.7,1,25.2,1c0,0,0,0,0,0H212.6 M212.6-1H25.2C16.6-1,9.6,6,9.6,14.6v183.1c0,8.6,7,15.6,15.6,15.6h187.4\n\tc8.6,0,15.6-7,15.6-15.6V14.6C228.2,6,221.2-1,212.6-1L212.6-1z\"\n />\n <g>\n <defs>\n <path\n id=\"SVGID_1_\"\n d=\"M23.8,5.9H214c4.3,0,7.8,3.5,7.8,7.8V193c0,4.3-3.5,7.8-7.8,7.8H23.8c-4.3,0-7.8-3.5-7.8-7.8V13.7\n\t\t\tC16,9.4,19.5,5.9,23.8,5.9z\"\n />\n </defs>\n <clipPath id=\"SVGID_2_\">\n <use style=\"overflow: visible\" xlink:href=\"#SVGID_1_\" />\n </clipPath>\n <g class=\"st2\">\n <linearGradient\n id=\"SVGID_3_\"\n gradientTransform=\"matrix(2.1912 -0.2873 -0.1677 -1.2791 -247.4959 119.4816)\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"166.2501\"\n x2=\"153.9301\"\n y1=\"-17.3414\"\n y2=\"47.1886\"\n >\n <stop offset=\"0\" style=\"stop-color: #ffffff\" />\n <stop offset=\"0.3\" style=\"stop-color: #ffffff; stop-opacity: 0\" />\n </linearGradient>\n <path\n class=\"st3\"\n d=\"M81.5-36.9C195-51.8,291.2-32.4,296.3,6.4c5.1,38.8-82.8,82.3-196.3,97.2s-209.7-4.5-214.8-43.3\n\t\t\tC-119.9,21.5-32-22,81.5-36.9z\"\n />\n </g>\n </g>\n <path\n class=\"st4\"\n d=\"M26.5,9.8h184.8c4.2,0,7.7,3.4,7.7,7.7v177.4c0,4.2-3.4,7.7-7.7,7.7H26.5c-4.2,0-7.7-3.4-7.7-7.7V17.5\n\tC18.8,13.2,22.3,9.8,26.5,9.8z\"\n />\n <path\n class=\"st5\"\n d=\"M2.8,258.7c0.6,0.4,1.2,0.8,1.8,1.1c1,0.5,2,0.9,3,1.3c1.3,0.5,2.7,0.8,4.1,1.1c1.6,0.3,3.3,0.5,5,0.4\n\tc3.2,0,5.5-0.5,6.9-1.4c1.9-1.4,2.6-4,1.6-6.1c-0.3-0.6-0.8-1.1-1.4-1.5c-0.7-0.4-1.4-0.8-2.2-1c-1-0.3-2-0.5-3-0.7l-6-1.1\n\tc-1.5-0.3-3-0.7-4.5-1.2c-1.4-0.5-2.6-1.1-3.8-2c-1.1-0.8-2-1.9-2.6-3.1c-0.7-1.4-1-2.9-1-4.4c0-1.5,0.3-3,0.8-4.4\n\tc0.6-1.4,1.5-2.7,2.8-3.7c1.4-1.1,3-1.9,4.7-2.4c2.3-0.7,4.6-1,6.9-0.9c1.7,0,3.5,0.1,5.2,0.3c1.3,0.2,2.5,0.4,3.7,0.8\n\tc0.9,0.3,1.7,0.6,2.5,1c0.6,0.3,1.1,0.6,1.4,0.8c0.5,0.4,1,0.8,1.4,1.3c0.4,0.5,0.6,1.1,0.6,1.6c0,0.8-0.3,1.7-0.8,2.3\n\tc-0.4,0.6-0.9,1.1-1.4,1.5c-0.5-0.5-1-0.9-1.6-1.2c-0.8-0.5-1.7-1-2.6-1.4c-2.6-1-5.4-1.5-8.2-1.5c-1.4,0-2.8,0.1-4.2,0.4\n\tc-1,0.2-1.9,0.5-2.7,1.1c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.7-0.5,1.4-0.4,2.2c-0.1,1.3,0.6,2.5,1.6,3.3c1.7,1,3.5,1.6,5.4,1.9l6.2,1.2\n\tc4,0.7,7,1.9,9,3.6c2.1,1.8,3.2,4.5,3,7.2c0,1.6-0.3,3.3-1,4.8c-0.7,1.4-1.8,2.7-3.1,3.7c-1.5,1.1-3.2,1.9-5,2.4\n\tc-2.3,0.6-4.6,0.9-6.9,0.8c-2,0-4.1-0.2-6.1-0.5c-1.7-0.3-3.3-0.7-4.9-1.3c-1.2-0.4-2.4-0.9-3.6-1.5c-1-0.5-1.7-0.9-2.1-1.2\n\tL2.8,258.7z\"\n />\n <path\n class=\"st5\"\n d=\"M38.1,234.8c-0.1-0.8,0.2-1.7,0.9-2.2c0.7-0.5,1.6-0.7,2.4-0.7c0.6,0,1.2,0.1,1.8,0.2c0.6,0.2,1,0.3,1.1,0.4\n\tv7.2h8c0.9-0.1,1.8,0.2,2.6,0.7c0.5,0.6,0.8,1.4,0.8,2.2c0,0.6-0.1,1.2-0.3,1.7c-0.1,0.4-0.3,0.8-0.4,1.1H44.4v12.3\n\tc0,0.8,0.1,1.6,0.4,2.3c0.2,0.6,0.6,1.1,1.1,1.4c0.5,0.4,1,0.6,1.6,0.8c0.6,0.1,1.3,0.2,1.9,0.2c1,0,2-0.2,3-0.5\n\tc0.7-0.2,1.4-0.5,2-0.9l2.5,4.2c-0.3,0.2-0.7,0.5-1.2,0.8c-0.6,0.4-1.3,0.7-2,0.9c-0.8,0.3-1.7,0.6-2.6,0.7c-1,0.2-2.1,0.3-3.1,0.3\n\tc-3.2,0-5.7-0.8-7.3-2.5c-1.7-1.8-2.6-4.1-2.5-6.6L38.1,234.8z\"\n />\n <path\n class=\"st5\"\n d=\"M74.1,238.9c2.1,0,4.1,0.4,6,1.1c1.8,0.7,3.4,1.7,4.8,3.1c1.4,1.3,2.4,2.9,3.2,4.6c0.8,1.8,1.2,3.8,1.2,5.8\n\tc0,2-0.4,3.9-1.2,5.8c-0.7,1.7-1.8,3.3-3.2,4.6c-1.4,1.3-3,2.4-4.8,3.1c-3.8,1.5-8.1,1.5-11.9,0c-1.8-0.7-3.4-1.8-4.8-3.1\n\tc-1.4-1.3-2.4-2.9-3.2-4.6c-0.8-1.8-1.2-3.8-1.2-5.7c0-2,0.4-4,1.2-5.8c0.7-1.7,1.8-3.3,3.2-4.6c1.4-1.3,3-2.4,4.8-3.1\n\tC70,239.3,72,238.9,74.1,238.9z M74.1,262.6c1.2,0,2.4-0.2,3.5-0.7c1-0.4,2-1.1,2.7-1.9c0.8-0.8,1.4-1.8,1.8-2.9\n\tc0.4-1.1,0.6-2.3,0.6-3.5c0-1.2-0.2-2.5-0.6-3.6c-0.4-1.1-1-2.1-1.8-2.9c-0.8-0.8-1.7-1.5-2.7-1.9c-2.2-0.9-4.8-0.9-7,0\n\tc-1,0.4-1.9,1.1-2.7,1.9c-0.8,0.8-1.4,1.8-1.8,2.9c-0.4,1.2-0.6,2.4-0.6,3.6c0,1.2,0.2,2.4,0.6,3.5c0.4,1.1,1,2,1.8,2.9\n\tc0.7,0.8,1.7,1.5,2.7,1.9C71.7,262.3,72.9,262.6,74.1,262.6L74.1,262.6z\"\n />\n <path\n class=\"st5\"\n d=\"M118.5,265.4c-0.5,0.3-1.1,0.6-1.6,0.9c-0.7,0.3-1.4,0.6-2.2,0.9c-0.9,0.3-1.9,0.5-2.8,0.7\n\tc-1.2,0.2-2.4,0.3-3.6,0.3c-2,0-3.9-0.3-5.8-0.9c-1.8-0.6-3.4-1.5-4.7-2.8c-1.4-1.3-2.5-2.8-3.2-4.5c-0.8-2-1.2-4.1-1.2-6.2\n\tc0-2.1,0.4-4.3,1.2-6.3c0.7-1.8,1.8-3.3,3.2-4.6c1.4-1.3,3-2.2,4.8-2.8c1.9-0.7,4-1,6-1c1.5,0,3.1,0.1,4.6,0.4\n\tc1.1,0.2,2.1,0.6,3.1,1.1c0.7,0.3,1.3,0.9,1.7,1.5c0.3,0.5,0.5,1.1,0.5,1.6c0,0.7-0.3,1.4-0.7,2c-0.4,0.5-0.9,1-1.4,1.4\n\tc-0.8-0.7-1.8-1.4-2.9-1.8c-1.5-0.6-3-0.9-4.6-0.9c-1.2,0-2.4,0.2-3.5,0.6c-1,0.3-2,0.9-2.8,1.7c-0.8,0.8-1.5,1.8-1.9,2.8\n\tc-0.5,1.3-0.7,2.6-0.7,4c0,1.4,0.2,2.8,0.7,4.1c0.4,1.1,1.1,2,2,2.8c0.9,0.7,1.8,1.3,2.9,1.6c1.2,0.4,2.4,0.5,3.6,0.5\n\tc1.5,0.1,3-0.2,4.4-0.8c0.8-0.3,1.5-0.7,2.3-1.1L118.5,265.4z\"\n />\n <path\n class=\"st5\"\n d=\"M122.1,229.7c-0.1-0.8,0.3-1.6,0.9-2.2c0.7-0.5,1.6-0.8,2.5-0.7c0.6,0,1.2,0.1,1.8,0.2c0.6,0.2,0.9,0.3,1.1,0.4\n\tv22.5c0.5-0.3,1.1-0.8,2-1.5s1.8-1.3,2.9-2.1s2.2-1.6,3.3-2.4s2.2-1.6,3.2-2.4c0.7-0.5,1.4-1,2.2-1.4c0.8-0.3,1.7-0.5,2.6-0.5\n\tc0.9,0,1.8,0.3,2.5,0.8c0.5,0.4,1,0.8,1.3,1.4c-0.8,0.7-1.8,1.5-3.2,2.5s-2.7,2-4.1,3s-2.7,1.9-4,2.8s-2.1,1.5-2.7,1.9\n\tc3.1,2.3,5.9,4.8,8.5,7.5c2.3,2.4,4.5,5,6.5,7.7h-7.8c-0.8-1-1.8-2.1-2.8-3.2s-2.2-2.2-3.4-3.3s-2.4-2.1-3.6-3.1s-2.4-1.9-3.6-2.8\n\tv12.5H122L122.1,229.7z\"\n />\n <path\n class=\"st5\"\n d=\"M177.5,267.2c-0.4,0.1-0.9,0.2-1.7,0.2s-1.7,0.2-2.8,0.3s-2.2,0.2-3.6,0.2s-2.7,0.1-4.1,0.1\n\tc-2.4,0.1-4.7-0.2-7-0.7c-1.6-0.4-3-1.1-4.3-2c-1-0.7-1.7-1.7-2.1-2.9c-0.4-1.1-0.6-2.2-0.6-3.3c0-1.4,0.2-2.7,0.7-4\n\tc0.5-1.1,1.2-2.1,2.2-2.9c1.2-0.8,2.6-1.4,4.1-1.7c2-0.4,4.1-0.6,6.2-0.6c1.4,0,2.7,0,4,0.1s2.2,0.2,2.8,0.2c0-1.1-0.2-2.2-0.6-3.2\n\tc-0.4-0.8-1-1.5-1.7-2c-0.8-0.5-1.7-0.9-2.6-1c-1.1-0.2-2.3-0.3-3.4-0.3c-1.7-0.1-3.4,0.2-5,0.7c-0.9,0.3-1.7,0.7-2.5,1.2\n\tc-0.3-0.3-0.6-0.7-0.9-1c-0.4-0.5-0.6-1.2-0.6-1.9c0-0.5,0.1-1,0.4-1.5c0.4-0.6,0.9-1,1.5-1.3c0.9-0.5,1.8-0.8,2.8-0.9\n\tc1.5-0.2,3-0.4,4.5-0.3c2,0,4,0.2,5.9,0.6c1.6,0.4,3.2,1,4.6,2c1.3,0.9,2.3,2.2,3,3.6c0.8,1.7,1.1,3.6,1.1,5.5L177.5,267.2z\n\t M171.3,255c-0.4-0.1-1.1-0.2-2.1-0.3c-1.5-0.2-3-0.2-4.5-0.2c-1.9-0.1-3.8,0.3-5.4,1.1c-1.2,0.8-1.8,2.1-1.7,3.5\n\tc0,0.6,0.1,1.2,0.4,1.8c0.3,0.6,0.7,1.1,1.2,1.4c0.7,0.4,1.5,0.7,2.4,0.9c1.2,0.2,2.5,0.3,3.8,0.3c1.3,0,2.7-0.1,4-0.2\n\tc1-0.1,1.7-0.2,2-0.3V255z\"\n />\n <path\n class=\"st5\"\n d=\"M187.4,272.1c0.1,0.1,0.5,0.2,1,0.4c0.6,0.2,1.2,0.4,1.9,0.6c0.9,0.2,1.8,0.4,2.6,0.5c1.1,0.2,2.2,0.2,3.3,0.2\n\tc1.2,0,2.5-0.1,3.7-0.4c1.2-0.3,2.3-0.8,3.2-1.5c1-0.8,1.8-1.8,2.4-3c0.7-1.6,1-3.3,0.9-5v-0.7c-1,1.1-2.3,2.1-3.7,2.8\n\tc-1.8,0.9-3.8,1.4-5.8,1.3c-1.9,0-3.9-0.3-5.7-1c-1.7-0.6-3.2-1.6-4.5-2.9c-1.3-1.3-2.3-2.8-2.9-4.4c-0.7-1.8-1-3.8-1-5.7\n\tc0-2,0.4-4,1.1-5.8c0.7-1.7,1.8-3.3,3.1-4.6c1.4-1.3,3-2.3,4.8-3c1.9-0.8,4-1.1,6.1-1.1c2,0,3.9,0.3,5.8,0.9\n\tc1.7,0.6,3.3,1.6,4.6,2.9c1.4,1.4,2.4,3.1,3.1,4.9c0.8,2.2,1.2,4.6,1.1,7v7.9c0.1,2.5-0.3,5.1-1.2,7.5c-0.7,1.9-1.8,3.7-3.3,5.1\n\tc-1.4,1.3-3.1,2.3-5,2.9c-2,0.6-4.2,0.9-6.3,0.9c-1.4,0-2.7-0.1-4.1-0.2c-1.1-0.1-2.2-0.3-3.3-0.6c-0.8-0.2-1.6-0.4-2.4-0.7\n\tc-0.5-0.2-0.9-0.4-1.4-0.6L187.4,272.1z M197.9,262.2c1.2,0,2.3-0.2,3.4-0.6c1-0.4,1.9-1,2.6-1.8c0.8-0.8,1.3-1.7,1.7-2.8\n\tc0.8-2.3,0.8-4.7,0-7c-0.4-1-1-2-1.7-2.8c-0.7-0.8-1.6-1.4-2.6-1.8c-2.2-0.9-4.7-0.9-6.9,0c-1,0.4-1.9,1.1-2.7,1.9\n\tc-0.7,0.8-1.3,1.8-1.7,2.8c-0.4,1.1-0.6,2.3-0.6,3.4c-0.1,2.3,0.7,4.6,2.3,6.4C193.4,261.4,195.6,262.3,197.9,262.2L197.9,262.2z\"\n />\n <path\n class=\"st5\"\n d=\"M243,265.3c-0.3,0.2-0.8,0.4-1.4,0.8c-0.8,0.4-1.5,0.7-2.3,0.9c-1.1,0.3-2.2,0.6-3.2,0.8\n\tc-1.3,0.2-2.7,0.3-4,0.3c-2,0-3.9-0.3-5.8-0.9c-3.5-1.2-6.4-3.8-7.9-7.3c-1.5-3.9-1.5-8.3,0-12.2c0.7-1.8,1.8-3.4,3.1-4.7\n\tc1.4-1.3,3-2.3,4.7-3c1.9-0.7,4-1.1,6-1.1c1.7,0,3.4,0.2,5.1,0.7c1.3,0.4,2.6,1.1,3.7,2c2.8,2.4,3.8,6.4,2.2,9.8\n\tc-0.6,1.1-1.4,2.1-2.5,2.7c-1.5,0.9-3.2,1.5-4.9,1.8c-2.6,0.5-5.2,0.7-7.8,0.6c-0.7,0-1.4,0-2.1,0l-2.1-0.1c0.3,1.8,1.2,3.5,2.7,4.5\n\tc1.9,1.3,4.2,1.9,6.5,1.7c0.9,0,1.8-0.1,2.6-0.2c1.3-0.2,2.6-0.6,3.8-1.2l1-0.5L243,265.3z M223.7,252.3c0.8,0,1.6,0.1,2.4,0.1h2.3\n\tc1.6,0,3.3-0.1,4.9-0.4c1-0.2,2-0.5,2.9-1c0.6-0.3,1.1-0.8,1.4-1.4c0.2-0.5,0.3-1,0.3-1.6c0.1-1.3-0.6-2.5-1.7-3.1\n\tc-1.3-0.7-2.7-1.1-4.2-1c-1.2,0-2.5,0.2-3.6,0.7c-1,0.4-1.9,1.1-2.6,1.9c-0.7,0.8-1.3,1.7-1.6,2.7\n\tC223.9,250.1,223.7,251.2,223.7,252.3L223.7,252.3z\"\n />\n <path\n class=\"st0\"\n d=\"M57.9,283.6c1.9,0,3.4,1.5,3.4,3.4c0,1.9-1.5,3.4-3.4,3.4s-3.4-1.5-3.4-3.4c0-0.9,0.4-1.7,1-2.4\n\tC56.1,284,57,283.6,57.9,283.6z M55,297.4c-0.1-0.8,0.2-1.5,0.8-2c0.7-0.5,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2\n\tc0.5,0.1,0.8,0.3,1,0.3v24.3H55V297.4z\"\n />\n <path\n class=\"st0\"\n d=\"M66.7,304.6c0-1.5,0.3-3,0.9-4.4c0.6-1.3,1.5-2.4,2.5-3.3c1.1-0.9,2.4-1.6,3.8-2.1c1.6-0.5,3.2-0.7,4.8-0.7\n\tc1.6,0,3.3,0.2,4.8,0.7c1.4,0.4,2.7,1.1,3.8,2.1c1.1,0.9,1.9,2,2.5,3.3c0.6,1.4,0.9,2.9,0.9,4.4v15h-5.6v-13.6\n\tc0.1-1.9-0.5-3.7-1.6-5.1c-2.8-2.3-6.8-2.3-9.6,0c-1.2,1.4-1.7,3.3-1.6,5.1v13.6h-5.7L66.7,304.6z\"\n />\n <path\n class=\"st0\"\n d=\"M97.3,313.4c0.4,0.3,0.8,0.5,1.2,0.6c0.7,0.3,1.5,0.6,2.2,0.8c1,0.3,2,0.5,3,0.7c1.2,0.2,2.4,0.3,3.7,0.3\n\tc1.4,0,2.9-0.2,4.2-0.7c1-0.3,1.7-1.3,1.6-2.3c0.1-0.8-0.3-1.6-1-2.1c-1.1-0.6-2.4-1-3.7-1l-3.9-0.4c-1.2-0.1-2.5-0.4-3.6-0.7\n\tc-1-0.3-2-0.8-2.9-1.4c-0.8-0.6-1.4-1.4-1.9-2.2c-0.5-1-0.7-2.1-0.7-3.1c0-1,0.2-2.1,0.6-3c0.5-1,1.1-1.8,2-2.5\n\tc1-0.8,2.2-1.4,3.5-1.7c1.7-0.4,3.5-0.7,5.2-0.6c2.7-0.1,5.4,0.3,8,1.1c1.9,0.8,2.9,1.8,2.9,3c0,0.3-0.1,0.7-0.2,1\n\tc-0.1,0.3-0.3,0.5-0.5,0.8c-0.2,0.2-0.4,0.4-0.6,0.6c-0.1,0.1-0.3,0.2-0.4,0.3c-0.3-0.2-0.6-0.4-0.9-0.6c-0.6-0.3-1.2-0.6-1.8-0.8\n\tc-0.9-0.3-1.8-0.6-2.7-0.8c-1.2-0.2-2.4-0.3-3.7-0.3c-3.8,0-5.7,1-5.8,3c0,0.8,0.4,1.6,1.1,2c1,0.5,2,0.8,3.1,0.9l5.1,0.6\n\tc2.3,0.2,4.5,1,6.4,2.2c1.5,1.2,2.4,3.1,2.3,5c0,2.4-1.1,4.6-3,6c-2,1.5-4.8,2.2-8.5,2.2c-1.6,0-3.2-0.1-4.9-0.4\n\tc-1.3-0.2-2.5-0.5-3.8-0.9c-0.9-0.3-1.8-0.6-2.6-1c-0.4-0.2-0.9-0.5-1.3-0.7L97.3,313.4z\"\n />\n <path\n class=\"st0\"\n d=\"M126.9,283.6c1.9,0,3.4,1.5,3.4,3.4c0,1.9-1.5,3.4-3.4,3.4c-1.9,0-3.4-1.5-3.4-3.4c0-0.9,0.4-1.8,1-2.4\n\tC125.1,284,126,283.6,126.9,283.6z M124.1,297.4c-0.1-0.8,0.2-1.5,0.8-2c0.7-0.4,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2\n\tc0.5,0.1,0.8,0.3,1,0.3v24.3h-5.6L124.1,297.4z\"\n />\n <path\n class=\"st0\"\n d=\"M156,285.7c-0.1-0.7,0.2-1.5,0.8-2c0.6-0.5,1.4-0.7,2.2-0.6c0.6,0,1.1,0.1,1.6,0.2l1,0.3V306\n\tc0.1,2.1-0.3,4.3-1,6.3c-0.6,1.7-1.6,3.2-2.8,4.5c-1.2,1.2-2.6,2.1-4.2,2.7c-1.7,0.6-3.5,0.9-5.3,0.9c-1.8,0-3.7-0.3-5.4-1\n\tc-1.6-0.6-3-1.6-4.2-2.7c-1.2-1.2-2.2-2.6-2.8-4.2c-0.7-1.7-1-3.5-1-5.2c0-1.8,0.3-3.6,1-5.3c0.6-1.5,1.5-3,2.7-4.2\n\tc1.1-1.2,2.5-2.1,4-2.7c1.6-0.7,3.3-1,5-1c1.7,0,3.5,0.3,5.1,1.1c1.3,0.6,2.5,1.6,3.4,2.7L156,285.7z M156,307.2\n\tc0-1.1-0.2-2.2-0.6-3.2c-0.4-0.9-0.9-1.8-1.6-2.6c-0.7-0.7-1.5-1.3-2.4-1.7c-2.9-1.3-6.4-0.6-8.6,1.7c-0.7,0.7-1.2,1.6-1.6,2.5\n\tc-0.4,1-0.6,2.1-0.5,3.2c0,1.1,0.2,2.2,0.5,3.2c0.3,0.9,0.9,1.8,1.6,2.5c1.4,1.5,3.4,2.4,5.5,2.3c1.1,0,2.1-0.2,3.1-0.6\n\tc0.9-0.4,1.7-0.9,2.4-1.6c0.7-0.7,1.2-1.6,1.6-2.5C155.8,309.4,156,308.3,156,307.2z\"\n />\n <path\n class=\"st0\"\n d=\"M188.9,317.8c-0.3,0.2-0.7,0.4-1.2,0.7c-0.7,0.3-1.4,0.6-2.1,0.8c-1,0.3-1.9,0.5-2.9,0.7\n\tc-1.2,0.2-2.4,0.3-3.6,0.3c-1.8,0-3.5-0.3-5.2-0.8c-1.6-0.5-3-1.4-4.2-2.5c-1.2-1.1-2.2-2.5-2.9-4.1c-0.7-1.8-1.1-3.6-1-5.5\n\tc0-1.9,0.3-3.7,1-5.4c0.6-1.6,1.6-3,2.8-4.2c1.2-1.2,2.7-2.1,4.3-2.7c1.7-0.7,3.5-1,5.4-1c1.5,0,3.1,0.2,4.6,0.7\n\tc1.2,0.4,2.3,1,3.4,1.8c1.7,1.4,2.8,3.5,2.8,5.8c0,1.1-0.2,2.2-0.6,3.1c-0.5,1-1.3,1.9-2.3,2.4c-1.4,0.8-2.9,1.3-4.4,1.6\n\tc-2.3,0.4-4.7,0.6-7,0.6c-0.7,0-1.3,0-1.9,0s-1.2,0-1.9-0.1c0.2,1.6,1.1,3.1,2.5,4.1c1.7,1.1,3.8,1.7,5.8,1.5c0.8,0,1.6-0.1,2.4-0.2\n\tc0.7-0.1,1.3-0.3,1.9-0.5c0.5-0.2,1-0.4,1.5-0.6l0.9-0.4L188.9,317.8z M171.5,306.1c0.8,0,1.5,0,2.2,0h2.1c1.5,0,3-0.1,4.4-0.4\n\tc0.9-0.2,1.8-0.5,2.6-0.9c0.5-0.3,1-0.7,1.2-1.2c0.2-0.5,0.3-0.9,0.3-1.4c0.1-1.1-0.5-2.2-1.5-2.8c-1.1-0.7-2.4-1-3.8-0.9\n\tc-1.1,0-2.2,0.2-3.2,0.6c-0.9,0.4-1.7,1-2.3,1.7c-0.6,0.7-1.1,1.6-1.5,2.5C171.8,304.1,171.6,305.1,171.5,306.1L171.5,306.1z\"\n />\n <path\n class=\"st1\"\n d=\"M192.3,64.5c-2.8,0.1-5.4-1-7.4-3c-4.1-4.1-4.1-10.6,0-14.7c4.1-4,10.7-4,14.8,0c4.1,4.1,4.1,10.6,0,14.7\n\tC197.7,63.5,195.1,64.6,192.3,64.5z\"\n />\n <path\n class=\"st0\"\n d=\"M192.3,45.5c2.3-0.1,4.6,0.9,6.2,2.5c3.4,3.4,3.4,8.9,0,12.3c-3.5,3.3-9,3.3-12.5,0c-3.4-3.4-3.4-8.9,0-12.3\n\tC187.7,46.4,190,45.5,192.3,45.5 M192.3,42.2c-3.2-0.1-6.3,1.2-8.6,3.5c-4.7,4.7-4.7,12.3,0,17.1c4.8,4.6,12.4,4.6,17.1,0\n\tc4.7-4.7,4.7-12.3,0-17.1C198.6,43.4,195.5,42.1,192.3,42.2L192.3,42.2z\"\n />\n <path\n class=\"st1\"\n d=\"M192.3,138.1c-4.9,0-8.9-4-8.9-8.9V79.4c0-4.9,4-8.9,8.9-8.9s8.9,4,8.9,8.9v49.8\n\tC201.2,134.1,197.2,138.1,192.3,138.1z\"\n />\n <path\n class=\"st0\"\n d=\"M192.3,72.1c4,0,7.2,3.2,7.2,7.2v49.8c0,4-3.2,7.2-7.2,7.2s-7.2-3.2-7.2-7.2V79.4\n\tC185.1,75.4,188.3,72.1,192.3,72.1 M192.3,68.8c-5.8,0-10.6,4.7-10.6,10.6v49.8c0,5.8,4.7,10.6,10.6,10.6c5.8,0,10.6-4.7,10.6-10.6\n\tV79.4C202.9,73.6,198.1,68.8,192.3,68.8z\"\n />\n <path\n class=\"st5\"\n d=\"M62.8,137.5c-19.3,0-34.9-15.6-34.9-34.9c0-4.6,3.7-8.3,8.3-8.3s8.3,3.7,8.3,8.3c0,10.2,8.2,18.4,18.4,18.4\n\tc10.2,0,18.4-8.2,18.4-18.4c0-10.2-8.2-18.4-18.4-18.4c0,0,0,0,0,0c-4.6,0-8.3-3.7-8.3-8.3c0-4.6,3.7-8.3,8.3-8.3\n\tc6.3,0,12.5,1.7,17.9,5V43.5c0-4.6,3.7-8.3,8.3-8.3c4.6,0,8.3,3.7,8.3,8.3v52.8c0,0.2,0,0.4,0,0.6c0.3,1.9,0.5,3.8,0.5,5.7\n\tC97.7,121.9,82.1,137.5,62.8,137.5z\"\n />\n <path\n class=\"st0\"\n d=\"M89,36.7c3.8,0,6.8,3,6.8,6.8v52.8c0,0.2,0,0.4,0,0.6c2.9,18.2-9.6,35.4-27.8,38.2s-35.4-9.6-38.2-27.8\n\tc-0.2-1.6-0.4-3.2-0.4-4.7c0-3.8,3.1-6.8,6.8-6.8c3.8,0,6.8,3.1,6.8,6.8c0,10.9,8.9,19.8,19.8,19.8s19.8-8.9,19.8-19.8\n\ts-8.9-19.8-19.8-19.8c0,0,0,0,0,0c-3.8,0-6.8-3.1-6.8-6.8c0-3.8,3.1-6.8,6.8-6.8c6.9,0,13.7,2.2,19.4,6.2V43.5\n\tC82.1,39.8,85.2,36.7,89,36.7 M88.9,33.9c-5.3,0-9.6,4.4-9.6,9.7v26.8c-5.1-2.6-10.7-4-16.5-4c-5.4-0.2-9.8,4-10,9.4\n\tc-0.2,5.4,4,9.8,9.4,10c0.2,0,0.4,0,0.6,0c9.4,0,16.9,7.6,16.9,16.9c0,9.4-7.6,16.9-16.9,16.9s-16.9-7.6-16.9-16.9l0,0\n\tc0-5.4-4.3-9.7-9.7-9.7c-5.4,0-9.7,4.3-9.7,9.7c-0.1,20.1,16.2,36.4,36.2,36.5s36.4-16.2,36.5-36.2c0-2-0.2-4-0.5-6\n\tc0-0.2,0-0.3,0-0.5V43.5C98.7,38.2,94.3,33.9,88.9,33.9L88.9,33.9z\"\n />\n <path\n class=\"st1\"\n d=\"M35.8,91.4c-2.8,0-5.1-2.3-5.1-5.1v-6.2c0-5.5,4.4-9.9,9.9-9.9h6.5c2.8,0,5.1,2.3,5.1,5.1\n\tc0,2.8-2.3,5.1-5.1,5.1c0,0,0,0,0,0h-6.2v5.9C40.9,89.1,38.6,91.4,35.8,91.4z\"\n />\n <path\n class=\"st1\"\n d=\"M141.6,137.8c-4.2,0-8.4-0.3-12.6-1c-3.3-0.6-6.6-1.4-9.8-2.4c-2.3-0.7-4.6-1.6-6.8-2.6\n\tc-1.1-0.5-2.1-1.1-3.1-1.7c-3.5-1.8-4.9-6.1-3.1-9.7c1.2-2.4,3.7-3.9,6.4-3.9c1,0,2.1,0.2,3,0.7c0.2,0,0.4,0.1,0.5,0.2\n\tc0.9,0.6,1.9,1.1,2.9,1.4c1.8,0.8,3.6,1.4,5.4,2c2.4,0.7,4.9,1.3,7.4,1.8c3,0.5,6,0.7,9,0.7c3.4,0.1,6.8-0.4,10.1-1.6\n\tc2.1-0.9,3.1-2.2,3.1-4.2c0.1-1.6-0.6-3-1.9-3.9c-1-0.7-3.4-1.7-8.7-2.3l-9.8-1.1c-3.2-0.3-6.4-0.9-9.5-1.9\n\tc-2.8-0.8-5.4-2.1-7.7-3.8c-2.2-1.6-4-3.7-5.2-6.1c-1.3-2.7-2-5.7-1.9-8.7c0-2.8,0.6-5.6,1.7-8.2c1.2-2.7,3.1-5.1,5.4-6.9\n\tc2.8-2.1,6-3.7,9.4-4.6c4.5-1.2,9.1-1.7,13.7-1.6c8.9,0,15.9,1,20.9,3c1,0.4,2,0.9,3,1.4c3.6,1.6,5.3,5.9,3.6,9.5\n\tc-1.6,3.6-5.9,5.3-9.5,3.7c-0.7-0.3-1.5-0.6-2.3-0.9c-5-1.8-10.3-2.7-15.7-2.6c-8.6,0-12.9,2-12.9,5.9c-0.1,1.5,0.7,2.8,2,3.5\n\tc2.3,1.2,4.7,1.9,7.2,2.1l12.8,1.6c7.2,0.9,12.9,3,17,6c4.3,3.2,6.4,7.9,6.4,14c0.2,6.4-2.9,12.5-8.1,16.3\n\tC158.9,135.8,151.3,137.8,141.6,137.8z\"\n />\n <path\n class=\"st0\"\n d=\"M139.6,70.2c8.7,0,15.5,1,20.3,2.9c1,0.4,1.9,0.8,2.8,1.3c2.9,1,4.4,4.2,3.3,7.1c-1,2.9-4.2,4.4-7.1,3.3\n\tc-0.2-0.1-0.4-0.2-0.6-0.3c-0.7-0.3-1.5-0.7-2.4-1c-2.3-0.8-4.6-1.4-6.9-1.9c-3.1-0.6-6.2-0.8-9.3-0.8c-9.7,0-14.6,2.5-14.6,7.6\n\tc-0.1,2,1,3.9,2.8,4.9c2.5,1.3,5.1,2.1,7.9,2.3l12.8,1.6c6.9,0.9,12.3,2.8,16.2,5.7s5.8,7.1,5.8,12.6c0.2,5.9-2.7,11.6-7.5,15\n\tc-5,3.7-12.2,5.6-21.6,5.6c-4.1,0-8.2-0.3-12.3-1c-3.3-0.6-6.5-1.3-9.6-2.3c-2.3-0.7-4.5-1.5-6.6-2.6c-1-0.5-2-1-3-1.6\n\tc-2.7-1.4-3.7-4.7-2.3-7.4c1.4-2.7,4.7-3.7,7.4-2.3l0,0c1,0.6,2,1.2,3.1,1.6c1.8,0.8,3.7,1.5,5.6,2.1c2.5,0.8,5,1.4,7.6,1.8\n\tc3.1,0.5,6.2,0.8,9.3,0.8c3.6,0.1,7.3-0.5,10.7-1.7c2.8-1.1,4.1-3,4.1-5.8c0.1-2.1-0.9-4.1-2.6-5.3c-1.8-1.2-4.9-2.1-9.4-2.6\n\tl-9.8-1.1c-3.1-0.3-6.2-0.9-9.2-1.8c-2.6-0.8-5-2-7.2-3.5c-2-1.5-3.6-3.4-4.7-5.5c-1.2-2.5-1.8-5.2-1.7-7.9c0-2.6,0.5-5.2,1.6-7.5\n\tc1.1-2.5,2.9-4.6,5-6.3c2.6-2,5.6-3.5,8.9-4.3C130.6,70.7,135.1,70.1,139.6,70.2 M139.5,66.9c-4.8-0.1-9.5,0.4-14.1,1.6\n\tc-3.6,1-7,2.6-10,4.9c-2.5,2-4.6,4.6-5.9,7.5c-1.2,2.8-1.9,5.8-1.9,8.9c-0.1,3.3,0.6,6.5,2.1,9.4c1.4,2.6,3.3,4.9,5.7,6.7\n\tc2.5,1.8,5.3,3.1,8.2,4c3.2,1,6.5,1.6,9.9,1.9l9.8,1.1c5.2,0.6,7.2,1.5,7.9,2c0.8,0.6,1.3,1.5,1.2,2.5c0,1.1-0.3,2-2.1,2.7\n\tc-3,1.1-6.2,1.5-9.4,1.4c-2.9,0-5.8-0.2-8.7-0.7c-2.4-0.4-4.8-1-7.2-1.7c-1.8-0.5-3.5-1.2-5.3-1.9c-0.9-0.4-1.7-0.8-2.6-1.3\n\tc-0.3-0.2-0.6-0.4-1-0.5c-1.1-0.5-2.3-0.8-3.6-0.8c-4.9-0.1-8.9,3.7-9.1,8.6c-0.1,3.4,1.8,6.6,4.8,8.1c1,0.7,2.1,1.3,3.2,1.8\n\tc2.3,1.1,4.6,2,7.1,2.7c3.3,1,6.6,1.8,10,2.4c4.3,0.7,8.6,1,12.9,1c10.1,0,18-2.1,23.5-6.3c5.7-4,9-10.6,8.8-17.6\n\tc0-6.6-2.4-11.8-7.1-15.3c-4.3-3.2-10.3-5.3-17.8-6.3l-12.8-1.6c-2.3-0.2-4.5-0.8-6.6-1.8c-0.8-0.4-1.2-1.2-1.2-2.1\n\tc0-3.5,6.1-4.3,11.2-4.3c2.9,0,5.8,0.2,8.6,0.7c2.2,0.4,4.3,1,6.4,1.7c0.8,0.3,1.5,0.6,2.1,0.9c4.5,1.9,9.7-0.3,11.6-4.8\n\tc1.8-4.3-0.1-9.3-4.3-11.4c-1-0.6-2-1-3.1-1.5C155.8,67.9,148.7,66.9,139.5,66.9L139.5,66.9z\"\n />\n <path\n class=\"st1\"\n d=\"M38.3,166.3c-0.1-0.7,0.2-1.3,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6c0.5,0,1,0.1,1.5,0.2c0.4,0.1,0.7,0.2,0.9,0.3v20.2\n\tc0,1.9-0.3,3.9-0.9,5.7c-0.5,1.5-1.4,2.9-2.5,4c-1.1,1.1-2.4,1.9-3.8,2.4c-1.5,0.6-3.2,0.9-4.8,0.9c-1.7,0-3.3-0.3-4.8-0.9\n\tc-1.4-0.6-2.7-1.4-3.8-2.5c-1.1-1.1-1.9-2.3-2.5-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.3,0.9-4.8c0.6-1.4,1.4-2.7,2.4-3.8\n\tc1-1.1,2.3-1.9,3.6-2.5c1.4-0.6,3-0.9,4.5-0.9c1.6,0,3.1,0.3,4.6,1c1.2,0.6,2.3,1.4,3.1,2.4V166.3z M38.3,185.6c0-1-0.2-2-0.5-2.9\n\tc-0.3-0.9-0.8-1.6-1.4-2.3c-0.6-0.7-1.3-1.2-2.2-1.5c-1.8-0.7-3.8-0.7-5.6,0c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.3\n\tc-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.2,2,0.5,2.9c0.3,0.8,0.8,1.6,1.4,2.3c1.3,1.4,3.1,2.1,5,2.1c1,0,1.9-0.2,2.8-0.5\n\tc0.8-0.3,1.6-0.8,2.2-1.5c0.6-0.7,1.1-1.4,1.4-2.3C38.1,187.6,38.3,186.6,38.3,185.6z\"\n />\n <path\n class=\"st1\"\n d=\"M59.5,173.8c1.7,0,3.3,0.3,4.9,0.9c1.5,0.6,2.8,1.4,3.9,2.5c1.1,1.1,2,2.3,2.6,3.8c0.6,1.5,1,3.1,0.9,4.7\n\tc0,1.6-0.3,3.2-0.9,4.7c-0.6,1.4-1.5,2.7-2.6,3.8c-1.1,1.1-2.5,1.9-3.9,2.5c-3.1,1.2-6.6,1.2-9.7,0c-1.5-0.6-2.8-1.4-3.9-2.5\n\tc-1.1-1.1-2-2.3-2.6-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.2,0.9-4.7c0.6-1.4,1.5-2.7,2.6-3.8c1.1-1.1,2.5-1.9,3.9-2.5\n\tC56.1,174,57.8,173.7,59.5,173.8z M59.5,193c1,0,1.9-0.2,2.8-0.6c0.8-0.4,1.6-0.9,2.2-1.6c0.6-0.7,1.1-1.5,1.4-2.3\n\tc0.3-0.9,0.5-1.9,0.5-2.9c0-1-0.2-2-0.5-2.9c-0.3-0.9-0.8-1.7-1.4-2.4c-0.6-0.7-1.4-1.2-2.2-1.5c-0.9-0.4-1.9-0.6-2.8-0.6\n\tc-1,0-1.9,0.2-2.8,0.6c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.4c-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.2,2,0.5,2.9\n\tc0.3,0.9,0.8,1.6,1.4,2.3c0.6,0.7,1.4,1.2,2.2,1.6C57.5,192.8,58.5,193,59.5,193L59.5,193z\"\n />\n <path\n class=\"st1\"\n d=\"M76.1,182.4c0-1.3,0.2-2.6,0.8-3.8c0.5-1,1.2-2,2.1-2.7c0.9-0.7,2-1.3,3.1-1.6c1.3-0.4,2.6-0.6,3.9-0.6\n\tc1.7,0,3.4,0.3,5,1c1.4,0.6,2.6,1.7,3.5,3c0.8-1.3,2-2.3,3.4-3c1.5-0.7,3.2-1,4.9-1c1.3,0,2.6,0.2,3.8,0.5c1.1,0.3,2.2,0.9,3.1,1.6\n\tc0.9,0.7,1.6,1.7,2.1,2.7c0.5,1.2,0.8,2.5,0.8,3.8v14.5h-5.1v-12.8c0-2-0.5-3.5-1.4-4.4c-1-0.9-2.4-1.4-3.8-1.3\n\tc-1.4,0-2.8,0.5-3.8,1.5c-1,1-1.6,2.6-1.6,4.8v12.2h-5.1v-12.2c0-2.2-0.5-3.8-1.5-4.8c-1-1-2.4-1.5-3.8-1.5\n\tc-1.4-0.1-2.7,0.4-3.8,1.3c-1,0.9-1.4,2.4-1.4,4.4v12.7h-5.1L76.1,182.4z\"\n />\n <path\n class=\"st1\"\n d=\"M117.6,176.8c-0.1-0.7,0.2-1.4,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6c0.5,0,1,0.1,1.5,0.2l0.9,0.3v11.8\n\tc-0.1,1.7,0.4,3.3,1.4,4.6c2.5,2.1,6.2,2.1,8.8,0c1-1.3,1.5-3,1.4-4.6v-9.9c-0.1-0.7,0.2-1.4,0.7-1.8c0.6-0.4,1.3-0.6,2-0.6\n\tc0.5,0,1,0.1,1.5,0.2l0.9,0.3v12.9c0,1.4-0.2,2.8-0.8,4.1c-0.5,1.2-1.3,2.2-2.2,3.1c-1,0.9-2.2,1.5-3.5,1.9c-2.9,0.9-6,0.9-8.9,0\n\tc-1.3-0.4-2.4-1-3.4-1.9c-1-0.8-1.7-1.9-2.2-3.1c-0.6-1.3-0.8-2.7-0.8-4.1L117.6,176.8z\"\n />\n <path\n class=\"st5\"\n d=\"M144.7,183.3c0-1.4,0.3-2.7,0.8-4c0.5-1.2,1.3-2.2,2.3-3c1-0.9,2.2-1.5,3.4-1.9c1.4-0.4,2.9-0.7,4.4-0.6\n\tc1.5,0,3,0.2,4.4,0.6c1.3,0.4,2.5,1,3.5,1.9c1,0.8,1.7,1.8,2.3,3c0.5,1.3,0.8,2.6,0.8,4v13.6h-5.1v-12.3c0.1-1.7-0.4-3.3-1.5-4.6\n\tc-2.5-2.1-6.2-2.1-8.7,0c-1.1,1.3-1.6,3-1.5,4.6v12.3h-5.1L144.7,183.3z\"\n />\n <path\n class=\"st5\"\n d=\"M191.7,195.2c-0.2,0.1-0.6,0.4-1.1,0.6c-0.6,0.3-1.3,0.6-1.9,0.8c-0.9,0.3-1.7,0.5-2.6,0.6\n\tc-1.1,0.2-2.2,0.3-3.3,0.3c-1.6,0-3.2-0.2-4.7-0.8c-1.4-0.5-2.7-1.3-3.8-2.3c-1.1-1-2-2.3-2.6-3.7c-0.7-1.6-1-3.3-0.9-5\n\tc0-1.7,0.3-3.3,0.9-4.9c0.6-1.4,1.4-2.7,2.6-3.8c1.1-1.1,2.4-1.9,3.9-2.5c1.5-0.6,3.2-0.9,4.9-0.9c1.4,0,2.8,0.2,4.1,0.6\n\tc1.1,0.4,2.1,0.9,3,1.6c0.8,0.6,1.4,1.4,1.9,2.4c0.4,0.9,0.6,1.9,0.6,2.9c0,1-0.2,2-0.6,2.9c-0.5,0.9-1.2,1.7-2.1,2.2\n\tc-1.2,0.7-2.6,1.2-4,1.4c-2.1,0.4-4.2,0.6-6.4,0.5c-0.6,0-1.2,0-1.7,0l-1.7-0.1c0.2,1.5,1,2.8,2.2,3.7c1.6,1,3.4,1.5,5.3,1.4\n\tc1.3,0,2.7-0.2,3.9-0.6c0.5-0.2,0.9-0.3,1.4-0.5l0.8-0.4L191.7,195.2z M176,184.6c0.7,0,1.3,0,2,0h1.9c1.3,0,2.7-0.1,4-0.3\n\tc0.8-0.1,1.6-0.4,2.4-0.8c0.5-0.2,0.9-0.6,1.1-1.1c0.2-0.4,0.3-0.8,0.3-1.3c0-1-0.5-2-1.4-2.5c-1-0.6-2.2-0.9-3.4-0.9\n\tc-1,0-2,0.2-2.9,0.6c-0.8,0.4-1.5,0.9-2.1,1.5c-0.6,0.7-1,1.4-1.3,2.2C176.3,182.9,176.1,183.7,176,184.6L176,184.6z\"\n />\n <path\n class=\"st5\"\n d=\"M207.8,173.8c1.7,0,3.3,0.3,4.9,0.9c1.5,0.6,2.8,1.4,3.9,2.5c1.1,1.1,2,2.3,2.6,3.8c0.6,1.5,1,3.1,0.9,4.7\n\tc0,1.6-0.3,3.2-0.9,4.7c-0.6,1.4-1.5,2.7-2.6,3.8c-1.1,1.1-2.5,1.9-3.9,2.5c-3.1,1.2-6.6,1.2-9.7,0c-1.5-0.6-2.8-1.4-3.9-2.5\n\tc-1.1-1.1-2-2.3-2.6-3.8c-0.6-1.5-0.9-3.1-0.9-4.7c0-1.6,0.3-3.2,0.9-4.7c0.6-1.4,1.5-2.7,2.6-3.8c1.1-1.1,2.5-1.9,3.9-2.5\n\tC204.5,174.1,206.1,173.8,207.8,173.8z M207.8,193c1,0,1.9-0.2,2.8-0.6c0.8-0.4,1.6-0.9,2.2-1.6c0.6-0.7,1.1-1.5,1.5-2.3\n\tc0.4-0.9,0.5-1.9,0.5-2.9c0-1-0.2-2-0.5-2.9c-0.3-0.9-0.8-1.7-1.4-2.4c-0.6-0.7-1.4-1.2-2.2-1.5c-0.9-0.4-1.9-0.6-2.8-0.6\n\tc-1,0-1.9,0.2-2.8,0.6c-0.8,0.4-1.6,0.9-2.2,1.5c-0.6,0.7-1.1,1.5-1.4,2.4c-0.3,0.9-0.5,1.9-0.5,2.9c0,1,0.1,2,0.4,2.9\n\tc0.3,0.9,0.8,1.6,1.4,2.3c0.6,0.7,1.4,1.2,2.2,1.6C205.8,192.8,206.8,193,207.8,193L207.8,193z\"\n />\n </svg>\n</template>\n\n<script>\nexport default {\n name: \"DsiLogo\",\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.st0 {\n fill: #2e2d2c;\n}\n\n.st1 {\n fill: #ffffff;\n}\n\n.st2 {\n clip-path: url(#SVGID_2_);\n}\n\n.st3 {\n opacity: 0.33;\n fill: url(#SVGID_3_);\n enable-background: new;\n}\n\n.st4 {\n fill: none;\n}\n\n.st5 {\n fill: #f39205;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DSILogo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DSILogo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DSILogo.vue?vue&type=template&id=4891b081&scoped=true&\"\nimport script from \"./DSILogo.vue?vue&type=script&lang=js&\"\nexport * from \"./DSILogo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DSILogo.vue?vue&type=style&index=0&id=4891b081&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4891b081\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{attrs:{\"version\":\"1.1\",\"viewBox\":\"0 0 81.940002 79.639999\",\"x\":\"0px\",\"xml:space\":\"preserve\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"y\":\"0px\"}},[_c('g',{attrs:{\"id\":\"g67\",\"transform\":\"translate(-68.91,-32.3)\"}},[_c('path',{staticClass:\"background\",attrs:{\"id\":\"path53\",\"d\":\"m 103.03,103.77 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.92 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.93 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.92 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 H 103.03 M 121.21,63.99 H 99.9 c -0.43,0 -0.78,0.35 -0.78,0.78 V 106 c 0,0.43 0.35,0.78 0.78,0.78 h 21.31 c 0.43,0 0.78,-0.35 0.78,-0.78 V 64.78 c 0,-0.44 -0.35,-0.79 -0.78,-0.79 m -21.58,44.69 c -1.33,0 -2.42,-1.08 -2.42,-2.42 V 63.99 c 0,-1.34 1.08,-2.41 2.42,-2.41 h 5.86 c 0,0 0.17,-3.78 2.24,-3.78 h 5.67 c 0,0 2,0.36 2,3.78 h 6.09 c 1.33,0 2.42,1.07 2.42,2.41 v 42.26 c 0,1.34 -1.08,2.42 -2.42,2.42 H 99.63 m -5.45,-17.5 c -3.64,0 -5.71,-2.93 -6.56,-5.1 -8.6,-0.46 -15.45,-7.59 -15.45,-16.29 0,-3.72 1.29,-7.37 3.65,-10.27 2.1,-2.59 4.96,-4.48 8.14,-5.4 v -0.18 c 0,-9.81 7.99,-17.8 17.81,-17.8 5.61,0 10.82,2.61 14.19,7.04 1.93,-0.98 4.07,-1.49 6.27,-1.49 3.64,0 7.09,1.41 9.7,3.96 2.35,2.29 3.78,5.28 4.11,8.5 6.34,1.35 11,7.01 11,13.58 0,7.23 -5.56,13.19 -12.64,13.83 -0.13,1.09 -0.53,2.64 -1.65,3.93 -1.17,1.34 -2.82,2.08 -4.91,2.22 -0.03,0 -0.06,0 -0.08,0 -0.25,0 -0.48,-0.07 -0.68,-0.19 v -2.23 c 0.17,-0.11 0.38,-0.17 0.59,-0.19 4.33,-0.28 4.2,-4.25 4.17,-4.71 l -0.08,-1.38 1.39,-0.01 c 6.22,0 11.27,-5.06 11.27,-11.27 0,-5.63 -4.21,-10.44 -9.8,-11.18 l -1.1,-0.15 -0.03,-1.11 c -0.07,-2.95 -1.28,-5.71 -3.4,-7.78 -2.12,-2.07 -4.92,-3.21 -7.87,-3.21 -2.12,0 -4.19,0.59 -5.96,1.7 l -1.08,0.68 -0.7,-1.07 c -2.82,-4.3 -7.57,-6.86 -12.71,-6.86 -8.38,0 -15.2,6.81 -15.2,15.19 0,0.35 0.01,0.7 0.05,1.08 l 0.09,1.14 -1.12,0.24 c -6.26,1.35 -10.81,6.98 -10.81,13.39 0,7.56 6.16,13.71 13.72,13.71 h 1.1 l 0.25,0.99 c 0.04,0.17 1.1,4.09 4.35,4.09 0.07,0 0.15,0 0.22,-0.01 0.02,0 0.05,0 0.07,0 0.12,0 0.25,0.02 0.36,0.05 v 2.51 c -0.09,0.03 -0.19,0.04 -0.29,0.05 -0.13,0 -0.26,0 -0.38,0 m 7.87,-58.87 c -10.99,0 -20.06,8.33 -21.23,19 -2.89,1.27 -5.49,3.24 -7.47,5.69 -2.86,3.53 -4.44,7.97 -4.44,12.5 0,9.84 7.18,18.08 16.69,19.61 1.64,2.72 4.44,5.12 8.35,5.31 v 11.56 c 0,3.29 2.67,5.97 5.96,5.97 h 21.85 c 3.29,0 5.96,-2.68 5.96,-5.97 V 90.94 c 0.11,0.01 0.21,0.02 0.32,0.02 h 0.2 l 0.11,-0.01 c 3.03,-0.19 5.57,-1.38 7.35,-3.43 0.88,-1.02 1.47,-2.12 1.85,-3.16 7.64,-1.88 13.3,-8.87 13.3,-16.93 0,-7.34 -4.69,-13.88 -11.44,-16.37 -0.78,-3.11 -2.41,-5.98 -4.74,-8.25 -3.28,-3.2 -7.6,-4.97 -12.17,-4.97 -1.78,0 -3.56,0.28 -5.25,0.81 -3.98,-4.06 -9.39,-6.35 -15.2,-6.35\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path55\",\"d\":\"m 118.06,86.98 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path57\",\"d\":\"m 118.06,96.9 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path59\",\"d\":\"m 118.06,77.05 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.03 -0.84,-1.88 -1.88,-1.88\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path61\",\"d\":\"m 99.9,106.78 c -0.43,0 -0.78,-0.35 -0.78,-0.78 V 64.78 C 99.12,64.35 99.47,64 99.9,64 h 21.31 c 0.43,0 0.78,0.35 0.78,0.78 V 106 c 0,0.43 -0.35,0.78 -0.78,0.78 H 99.9 M 113.4,57.8 h -5.67 c -2.07,0 -2.24,3.78 -2.24,3.78 h -5.86 c -1.33,0 -2.42,1.07 -2.42,2.41 v 42.26 c 0,1.34 1.08,2.42 2.42,2.42 h 21.85 c 1.33,0 2.42,-1.08 2.42,-2.42 V 63.99 c 0,-1.34 -1.08,-2.41 -2.42,-2.41 h -6.09 C 115.4,58.16 113.4,57.8 113.4,57.8\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path63\",\"d\":\"m 118.06,67.13 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"}}),_c('path',{staticClass:\"primary\",attrs:{\"id\":\"path65\",\"d\":\"m 101.77,36.12 c -9.82,0 -17.81,7.98 -17.81,17.8 v 0.18 c -3.18,0.92 -6.04,2.81 -8.14,5.4 -2.35,2.9 -3.65,6.55 -3.65,10.27 0,8.7 6.85,15.83 15.45,16.29 0.84,2.18 2.92,5.1 6.56,5.1 0.12,0 0.25,0 0.38,-0.01 0.1,-0.01 0.2,-0.02 0.29,-0.05 v -2.5 c -0.12,-0.03 -0.24,-0.05 -0.36,-0.05 -0.02,0 -0.05,0 -0.07,0 -0.08,0 -0.15,0.01 -0.22,0.01 -3.25,0 -4.3,-3.92 -4.35,-4.09 L 89.6,83.48 h -1.1 c -7.57,0 -13.72,-6.15 -13.72,-13.71 0,-6.41 4.54,-12.04 10.81,-13.39 L 86.71,56.14 86.61,55 c -0.03,-0.38 -0.05,-0.73 -0.05,-1.08 0,-8.37 6.82,-15.19 15.2,-15.19 5.14,0 9.89,2.56 12.71,6.86 l 0.7,1.07 1.08,-0.68 c 1.78,-1.11 3.84,-1.7 5.96,-1.7 2.96,0 5.75,1.14 7.87,3.21 2.12,2.07 3.32,4.83 3.4,7.78 l 0.03,1.11 1.1,0.15 c 5.59,0.74 9.8,5.55 9.8,11.18 0,6.22 -5.06,11.27 -11.27,11.27 l -1.38,0.02 0.09,1.39 c 0.03,0.45 0.16,4.43 -4.17,4.71 -0.22,0.01 -0.42,0.08 -0.59,0.19 v 2.23 c 0.2,0.12 0.43,0.19 0.68,0.19 0.03,0 0.06,0 0.08,0 2.09,-0.13 3.74,-0.88 4.91,-2.22 1.12,-1.29 1.52,-2.85 1.65,-3.93 7.07,-0.63 12.64,-6.59 12.64,-13.83 0,-6.57 -4.66,-12.23 -11,-13.58 -0.33,-3.22 -1.77,-6.21 -4.11,-8.5 -2.61,-2.55 -6.06,-3.96 -9.7,-3.96 -2.2,0 -4.34,0.51 -6.27,1.49 -3.38,-4.45 -8.59,-7.06 -14.2,-7.06\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n version=\"1.1\"\n viewBox=\"0 0 81.940002 79.639999\"\n x=\"0px\"\n xml:space=\"preserve\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n y=\"0px\"\n >\n <g id=\"g67\" transform=\"translate(-68.91,-32.3)\">\n <path\n id=\"path53\"\n class=\"background\"\n d=\"m 103.03,103.77 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.92 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.93 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 h -15.04 m 0,-9.92 c -1.04,0 -1.88,-0.84 -1.88,-1.88 v -3.1 c 0,-1.04 0.84,-1.88 1.88,-1.88 h 15.04 c 1.04,0 1.88,0.84 1.88,1.88 v 3.1 c 0,1.04 -0.84,1.88 -1.88,1.88 H 103.03 M 121.21,63.99 H 99.9 c -0.43,0 -0.78,0.35 -0.78,0.78 V 106 c 0,0.43 0.35,0.78 0.78,0.78 h 21.31 c 0.43,0 0.78,-0.35 0.78,-0.78 V 64.78 c 0,-0.44 -0.35,-0.79 -0.78,-0.79 m -21.58,44.69 c -1.33,0 -2.42,-1.08 -2.42,-2.42 V 63.99 c 0,-1.34 1.08,-2.41 2.42,-2.41 h 5.86 c 0,0 0.17,-3.78 2.24,-3.78 h 5.67 c 0,0 2,0.36 2,3.78 h 6.09 c 1.33,0 2.42,1.07 2.42,2.41 v 42.26 c 0,1.34 -1.08,2.42 -2.42,2.42 H 99.63 m -5.45,-17.5 c -3.64,0 -5.71,-2.93 -6.56,-5.1 -8.6,-0.46 -15.45,-7.59 -15.45,-16.29 0,-3.72 1.29,-7.37 3.65,-10.27 2.1,-2.59 4.96,-4.48 8.14,-5.4 v -0.18 c 0,-9.81 7.99,-17.8 17.81,-17.8 5.61,0 10.82,2.61 14.19,7.04 1.93,-0.98 4.07,-1.49 6.27,-1.49 3.64,0 7.09,1.41 9.7,3.96 2.35,2.29 3.78,5.28 4.11,8.5 6.34,1.35 11,7.01 11,13.58 0,7.23 -5.56,13.19 -12.64,13.83 -0.13,1.09 -0.53,2.64 -1.65,3.93 -1.17,1.34 -2.82,2.08 -4.91,2.22 -0.03,0 -0.06,0 -0.08,0 -0.25,0 -0.48,-0.07 -0.68,-0.19 v -2.23 c 0.17,-0.11 0.38,-0.17 0.59,-0.19 4.33,-0.28 4.2,-4.25 4.17,-4.71 l -0.08,-1.38 1.39,-0.01 c 6.22,0 11.27,-5.06 11.27,-11.27 0,-5.63 -4.21,-10.44 -9.8,-11.18 l -1.1,-0.15 -0.03,-1.11 c -0.07,-2.95 -1.28,-5.71 -3.4,-7.78 -2.12,-2.07 -4.92,-3.21 -7.87,-3.21 -2.12,0 -4.19,0.59 -5.96,1.7 l -1.08,0.68 -0.7,-1.07 c -2.82,-4.3 -7.57,-6.86 -12.71,-6.86 -8.38,0 -15.2,6.81 -15.2,15.19 0,0.35 0.01,0.7 0.05,1.08 l 0.09,1.14 -1.12,0.24 c -6.26,1.35 -10.81,6.98 -10.81,13.39 0,7.56 6.16,13.71 13.72,13.71 h 1.1 l 0.25,0.99 c 0.04,0.17 1.1,4.09 4.35,4.09 0.07,0 0.15,0 0.22,-0.01 0.02,0 0.05,0 0.07,0 0.12,0 0.25,0.02 0.36,0.05 v 2.51 c -0.09,0.03 -0.19,0.04 -0.29,0.05 -0.13,0 -0.26,0 -0.38,0 m 7.87,-58.87 c -10.99,0 -20.06,8.33 -21.23,19 -2.89,1.27 -5.49,3.24 -7.47,5.69 -2.86,3.53 -4.44,7.97 -4.44,12.5 0,9.84 7.18,18.08 16.69,19.61 1.64,2.72 4.44,5.12 8.35,5.31 v 11.56 c 0,3.29 2.67,5.97 5.96,5.97 h 21.85 c 3.29,0 5.96,-2.68 5.96,-5.97 V 90.94 c 0.11,0.01 0.21,0.02 0.32,0.02 h 0.2 l 0.11,-0.01 c 3.03,-0.19 5.57,-1.38 7.35,-3.43 0.88,-1.02 1.47,-2.12 1.85,-3.16 7.64,-1.88 13.3,-8.87 13.3,-16.93 0,-7.34 -4.69,-13.88 -11.44,-16.37 -0.78,-3.11 -2.41,-5.98 -4.74,-8.25 -3.28,-3.2 -7.6,-4.97 -12.17,-4.97 -1.78,0 -3.56,0.28 -5.25,0.81 -3.98,-4.06 -9.39,-6.35 -15.2,-6.35\"\n />\n <path\n id=\"path55\"\n class=\"primary\"\n d=\"m 118.06,86.98 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"\n />\n <path\n id=\"path57\"\n class=\"primary\"\n d=\"m 118.06,96.9 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"\n />\n <path\n id=\"path59\"\n class=\"primary\"\n d=\"m 118.06,77.05 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.03 -0.84,-1.88 -1.88,-1.88\"\n />\n <path\n id=\"path61\"\n class=\"primary\"\n d=\"m 99.9,106.78 c -0.43,0 -0.78,-0.35 -0.78,-0.78 V 64.78 C 99.12,64.35 99.47,64 99.9,64 h 21.31 c 0.43,0 0.78,0.35 0.78,0.78 V 106 c 0,0.43 -0.35,0.78 -0.78,0.78 H 99.9 M 113.4,57.8 h -5.67 c -2.07,0 -2.24,3.78 -2.24,3.78 h -5.86 c -1.33,0 -2.42,1.07 -2.42,2.41 v 42.26 c 0,1.34 1.08,2.42 2.42,2.42 h 21.85 c 1.33,0 2.42,-1.08 2.42,-2.42 V 63.99 c 0,-1.34 -1.08,-2.41 -2.42,-2.41 h -6.09 C 115.4,58.16 113.4,57.8 113.4,57.8\"\n />\n <path\n id=\"path63\"\n class=\"primary\"\n d=\"m 118.06,67.13 h -15.04 c -1.04,0 -1.88,0.84 -1.88,1.88 v 3.1 c 0,1.04 0.84,1.88 1.88,1.88 h 15.04 c 1.04,0 1.88,-0.84 1.88,-1.88 v -3.1 c 0.01,-1.04 -0.84,-1.88 -1.88,-1.88\"\n />\n <path\n id=\"path65\"\n class=\"primary\"\n d=\"m 101.77,36.12 c -9.82,0 -17.81,7.98 -17.81,17.8 v 0.18 c -3.18,0.92 -6.04,2.81 -8.14,5.4 -2.35,2.9 -3.65,6.55 -3.65,10.27 0,8.7 6.85,15.83 15.45,16.29 0.84,2.18 2.92,5.1 6.56,5.1 0.12,0 0.25,0 0.38,-0.01 0.1,-0.01 0.2,-0.02 0.29,-0.05 v -2.5 c -0.12,-0.03 -0.24,-0.05 -0.36,-0.05 -0.02,0 -0.05,0 -0.07,0 -0.08,0 -0.15,0.01 -0.22,0.01 -3.25,0 -4.3,-3.92 -4.35,-4.09 L 89.6,83.48 h -1.1 c -7.57,0 -13.72,-6.15 -13.72,-13.71 0,-6.41 4.54,-12.04 10.81,-13.39 L 86.71,56.14 86.61,55 c -0.03,-0.38 -0.05,-0.73 -0.05,-1.08 0,-8.37 6.82,-15.19 15.2,-15.19 5.14,0 9.89,2.56 12.71,6.86 l 0.7,1.07 1.08,-0.68 c 1.78,-1.11 3.84,-1.7 5.96,-1.7 2.96,0 5.75,1.14 7.87,3.21 2.12,2.07 3.32,4.83 3.4,7.78 l 0.03,1.11 1.1,0.15 c 5.59,0.74 9.8,5.55 9.8,11.18 0,6.22 -5.06,11.27 -11.27,11.27 l -1.38,0.02 0.09,1.39 c 0.03,0.45 0.16,4.43 -4.17,4.71 -0.22,0.01 -0.42,0.08 -0.59,0.19 v 2.23 c 0.2,0.12 0.43,0.19 0.68,0.19 0.03,0 0.06,0 0.08,0 2.09,-0.13 3.74,-0.88 4.91,-2.22 1.12,-1.29 1.52,-2.85 1.65,-3.93 7.07,-0.63 12.64,-6.59 12.64,-13.83 0,-6.57 -4.66,-12.23 -11,-13.58 -0.33,-3.22 -1.77,-6.21 -4.11,-8.5 -2.61,-2.55 -6.06,-3.96 -9.7,-3.96 -2.2,0 -4.34,0.51 -6.27,1.49 -3.38,-4.45 -8.59,-7.06 -14.2,-7.06\"\n />\n </g>\n </svg>\n</template>\n\n<script>\nexport default {\n name: \"battery-logo-icon\",\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.background {\n fill: transparent;\n}\n\n.primary {\n fill: $primary;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MSBLogo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MSBLogo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MSBLogo.vue?vue&type=template&id=37820d9c&scoped=true&\"\nimport script from \"./MSBLogo.vue?vue&type=script&lang=js&\"\nexport * from \"./MSBLogo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MSBLogo.vue?vue&type=style&index=0&id=37820d9c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37820d9c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('svg',{attrs:{\"id\":\"svg2\",\"height\":\"53.333332\",\"version\":\"1.1\",\"viewBox\":\"0 0 266.66666 53.333332\",\"width\":\"266.66666\",\"xml:space\":\"preserve\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:cc\":\"http://creativecommons.org/ns#\",\"xmlns:dc\":\"http://purl.org/dc/elements/1.1/\",\"xmlns:rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"xmlns:svg\":\"http://www.w3.org/2000/svg\"}},[_c('metadata',{attrs:{\"id\":\"metadata8\"}},[_c('rdf:RDF',[_c('cc:Work',{attrs:{\"rdf:about\":\"\"}},[_c('dc:format',[_vm._v(\"image/svg+xml\")]),_c('dc:type',{attrs:{\"rdf:resource\":\"http://purl.org/dc/dcmitype/StillImage\"}})],1)],1)],1),_c('defs',{attrs:{\"id\":\"defs6\"}}),_c('g',{attrs:{\"id\":\"g10\",\"transform\":\"matrix(1.3333333,0,0,-1.3333333,0,53.333333)\"}},[_c('text',{staticClass:\"primary-color\",staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"25.51180077px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text14\",\"transform\":\"matrix(1,0,0,-1,6.9014,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan12\",\"x\":\"0\",\"y\":\"0\"}},[_vm._v(\"M\")])]),_c('text',{staticClass:\"primary-color\",staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"17.85829926px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text18\",\"transform\":\"matrix(1,0,0,-1,28.4331,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan16\",\"x\":\"0\",\"y\":\"0\"}},[_vm._v(\"Y\")])]),_c('text',{staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"25.51180077px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill\":\"#b5b7b9\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text22\",\"transform\":\"matrix(1,0,0,-1,41,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan20\",\"x\":\"0\",\"y\":\"0\"}},[_vm._v(\"S\")])]),_c('text',{staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"17.85829926px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill\":\"#b5b7b9\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text26\",\"transform\":\"matrix(1,0,0,-1,56.2354,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan24\",\"x\":\"0 13.911615 25.448078 36.25235\",\"y\":\"0\"}},[_vm._v(\" MART \")])]),_c('text',{staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"25.51180077px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill\":\"#b5b7b9\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text30\",\"transform\":\"matrix(1,0,0,-1,103.0601,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan28\",\"x\":\"0\",\"y\":\"0\"}},[_vm._v(\"B\")])]),_c('text',{staticStyle:{\"font-variant\":\"normal\",\"font-weight\":\"bold\",\"font-stretch\":\"normal\",\"font-size\":\"17.85829926px\",\"font-family\":\"'Quicksand'\",\"-inkscape-font-specification\":\"QuicksandBold-Regular\",\"writing-mode\":\"lr-tb\",\"fill\":\"#b5b7b9\",\"fill-opacity\":\"1\",\"fill-rule\":\"nonzero\",\"stroke\":\"none\"},attrs:{\"id\":\"text34\",\"transform\":\"matrix(1,0,0,-1,119.2144,12.127)\"}},[_c('tspan',{attrs:{\"id\":\"tspan32\",\"x\":\"0 9.7506313 21.322811 32.894989 43.842125 54.557106\",\"y\":\"0\"}},[_vm._v(\" ATTERY \")])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n id=\"svg2\"\n height=\"53.333332\"\n version=\"1.1\"\n viewBox=\"0 0 266.66666 53.333332\"\n width=\"266.66666\"\n xml:space=\"preserve\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n >\n <metadata id=\"metadata8\">\n <rdf:RDF\n ><cc:Work rdf:about=\"\"\n ><dc:format>image/svg+xml</dc:format\n ><dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work\n ></rdf:RDF>\n </metadata>\n <defs id=\"defs6\" />\n <g id=\"g10\" transform=\"matrix(1.3333333,0,0,-1.3333333,0,53.333333)\">\n <text\n id=\"text14\"\n class=\"primary-color\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 25.51180077px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,6.9014,12.127)\"\n >\n <tspan id=\"tspan12\" x=\"0\" y=\"0\">M</tspan>\n </text>\n <text\n id=\"text18\"\n class=\"primary-color\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 17.85829926px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,28.4331,12.127)\"\n >\n <tspan id=\"tspan16\" x=\"0\" y=\"0\">Y</tspan>\n </text>\n <text\n id=\"text22\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 25.51180077px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill: #b5b7b9;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,41,12.127)\"\n >\n <tspan id=\"tspan20\" x=\"0\" y=\"0\">S</tspan>\n </text>\n <text\n id=\"text26\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 17.85829926px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill: #b5b7b9;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,56.2354,12.127)\"\n >\n <tspan id=\"tspan24\" x=\"0 13.911615 25.448078 36.25235\" y=\"0\">\n MART\n </tspan>\n </text>\n <text\n id=\"text30\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 25.51180077px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill: #b5b7b9;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,103.0601,12.127)\"\n >\n <tspan id=\"tspan28\" x=\"0\" y=\"0\">B</tspan>\n </text>\n <text\n id=\"text34\"\n style=\"\n font-variant: normal;\n font-weight: bold;\n font-stretch: normal;\n font-size: 17.85829926px;\n font-family: 'Quicksand';\n -inkscape-font-specification: QuicksandBold-Regular;\n writing-mode: lr-tb;\n fill: #b5b7b9;\n fill-opacity: 1;\n fill-rule: nonzero;\n stroke: none;\n \"\n transform=\"matrix(1,0,0,-1,119.2144,12.127)\"\n >\n <tspan\n id=\"tspan32\"\n x=\"0 9.7506313 21.322811 32.894989 43.842125 54.557106\"\n y=\"0\"\n >\n ATTERY\n </tspan>\n </text>\n </g>\n </svg>\n</template>\n\n<script>\nexport default {\n name: \"battery-text-icon\",\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.primary-color {\n fill: $primary;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MSBText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MSBText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MSBText.vue?vue&type=template&id=13e05c69&scoped=true&\"\nimport script from \"./MSBText.vue?vue&type=script&lang=js&\"\nexport * from \"./MSBText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MSBText.vue?vue&type=style&index=0&id=13e05c69&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13e05c69\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n :class=\"[\n 'battery-info-icon-inner-container',\n tenant === 'MYL'\n ? 'battery-info-icon-inner-container--myl'\n : 'battery-info-icon-inner-container--dom',\n ]\"\n >\n <template v-if=\"tenant === 'MYL'\">\n <div class=\"MSB-logo\">\n <MSBLogo />\n </div>\n <div class=\"MSB-text\">\n <MSBText />\n </div>\n </template>\n <div v-else class=\"DSI-logo\">\n <DSILogo />\n </div>\n </div>\n</template>\n\n<script>\nimport DSILogo from \"./DSILogo\";\nimport MSBLogo from \"./MSBLogo\";\nimport MSBText from \"./MSBText\";\n\nexport default {\n name: \"TenantLogo\",\n components: { DSILogo, MSBLogo, MSBText },\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.battery-info-icon-inner-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-right: 4vw;\n\n &.battery-info-icon-inner-container--myl {\n width: 100%;\n max-width: 430px;\n }\n\n &.battery-info-icon-inner-container--dom {\n height: 100%;\n max-height: 200px;\n }\n\n .MSB-logo,\n .MSB-text,\n .DSI-logo {\n height: 100%;\n width: 100%;\n display: flex;\n\n svg {\n height: 100%;\n width: 100%;\n }\n }\n\n .MSB-logo {\n width: 30%;\n max-width: 150px;\n margin-bottom: -6px;\n }\n\n .MSB-text {\n display: flex;\n justify-content: center;\n align-items: center;\n visibility: visible;\n }\n}\n\n@include media(\"<tablet\") {\n .battery-info-icon-inner-container {\n margin: 0;\n max-width: 200px;\n height: inherit;\n\n &.battery-info-icon-inner-container--dom {\n height: 200px;\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantLogo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantLogo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TenantLogo.vue?vue&type=template&id=3ad95cf7&scoped=true&\"\nimport script from \"./TenantLogo.vue?vue&type=script&lang=js&\"\nexport * from \"./TenantLogo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TenantLogo.vue?vue&type=style&index=0&id=3ad95cf7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ad95cf7\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"battery-info-container block\">\n <h2 class=\"title is-5 battery-info-title\">\n {{ $t(\"offer.yourBattery\") }}\n <help-button\n :body=\"batteryOfferHelp().body\"\n :header=\"batteryOfferHelp().header\"\n :multilined=\"true\"\n cy-id=\"batteryOffer-helpModal\"\n />\n </h2>\n <div class=\"battery-info-inner-container\">\n <div class=\"battery-info-body\">\n <div class=\"battery-info-icon-container\">\n <tenant-logo />\n </div>\n <div class=\"battery-info-info\">\n <div class=\"battery-info-info-title\">\n {{ $t(`offer.battery.title`) }}\n </div>\n <div\n v-for=\"(descriptionItem, index) in getBatteryOfferDescriptionItems\"\n :key=\"index\"\n class=\"battery-info-info-description-item\"\n >\n <div class=\"description-item-icon\">\n <b-icon icon=\"check-bold\" type=\"is-primary\"></b-icon>\n </div>\n <div class=\"description-item-text\">{{ descriptionItem }}</div>\n </div>\n </div>\n </div>\n <div class=\"battery-info-footer\">\n {{ $t(`offer.battery.${tenant}.footer`) }}\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport HelpButton from \"../../components/HelpButton\";\nimport TenantLogo from \"./TenantLogo\";\n\nexport default {\n name: \"battery-plan-info\",\n components: { TenantLogo, HelpButton },\n data() {\n return {\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n methods: {\n getBatteryName() {\n return this.$t(`offer.battery.${this.tenant}.name`);\n },\n batteryOfferHelp() {\n return {\n header: this.$t(\"offer.battery.help.header\", {\n batteryName: this.getBatteryName(),\n }),\n body: this.$t(\"offer.battery.help.body\", {\n batteryName: this.getBatteryName(),\n }),\n };\n },\n },\n computed: {\n getBatteryOfferDescriptionItems() {\n const description = this.$t(`offer.battery.description`);\n const descriptionItems = description.split(\"&&\");\n return descriptionItems;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.battery-info-container {\n display: flex;\n flex-direction: column;\n margin-bottom: 4rem;\n\n .battery-info-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .battery-info-inner-container {\n background-color: $lightGrey;\n padding: 2.25rem 4rem;\n\n @include media(\">tablet\", \"<desktop\") {\n padding: 2.25rem 2rem;\n }\n\n .battery-info-body {\n display: flex;\n\n .battery-info-icon-container,\n .battery-info-info {\n flex-grow: 1;\n flex-basis: 0;\n }\n\n .battery-info-icon-container {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .battery-info-info {\n .battery-info-info-title {\n color: $primary;\n font-size: 1.15rem;\n font-weight: bold;\n padding-bottom: 0.75rem;\n }\n\n .battery-info-info-description-item {\n display: flex;\n margin: 0.25rem 0;\n\n .description-item-text {\n padding-left: 0.75rem;\n font-size: 0.95rem;\n line-height: 1.25rem;\n }\n }\n }\n }\n\n .battery-info-footer {\n color: $grey;\n font-size: 0.95rem;\n padding-top: 1rem;\n }\n }\n}\n\n@include media(\"<tablet\") {\n .battery-info-container {\n .battery-info-inner-container {\n padding: 2.5%;\n\n .battery-info-body {\n flex-direction: column;\n\n .battery-info-icon-container,\n .battery-info-info {\n width: 100%;\n justify-content: center;\n padding: 1.5rem;\n }\n\n .battery-info-icon-container {\n padding-top: 1rem;\n border-bottom: 2px solid $white;\n }\n }\n\n .battery-info-footer {\n padding: 0;\n text-align: center;\n }\n }\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BatteryPlanInfo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BatteryPlanInfo.vue?vue&type=template&id=62579fd9&scoped=true&\"\nimport script from \"./BatteryPlanInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./BatteryPlanInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BatteryPlanInfo.vue?vue&type=style&index=0&id=62579fd9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62579fd9\",\n null\n \n)\n\nexport default component.exports","<template>\n <section>\n <div class=\"container is-fullhd offer-page-container\">\n <product-type-selector />\n <battery-plan-info />\n <battery-plan-selector />\n <b-message>\n <div class=\"content is-normal\">\n <p v-if=\"tenant === 'MYL'\">\n <strong\n ><span>{{ $t(`offer.infoSizeMSB.${tenant}.title`) }}</span>\n <a\n href=\"https://www.mylight-systems.com/tarifs-mysmartbattery/\"\n target=\"_blank\"\n class=\"link-to\"\n >{{ $t(`offer.infoSizeMSB.${tenant}.titleLink`) }}</a\n >\n </strong>\n </p>\n <p v-if=\"tenant === 'DOM'\">\n <strong\n ><span>{{ $t(`offer.infoSizeMSB.${tenant}.title`) }}</span>\n <a\n href=\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte/grille-tarifaire-domuneo/\"\n target=\"_blank\"\n class=\"link-to\"\n >{{ $t(`offer.infoSizeMSB.${tenant}.persoLink`) }}</a\n ><span>{{ $t(`offer.infoSizeMSB.${tenant}.subtitle`) }}</span>\n <a\n href=\"https://domuneo.com/energie-stockage/fournisseur-delectricite-verte-pro/grille-tarifaire-domuneo-pro/\"\n target=\"_blank\"\n class=\"link-to\"\n >{{ $t(`offer.infoSizeMSB.${tenant}.proLink`) }}</a\n >\n </strong>\n </p>\n <p>\n <span>{{ $t(`offer.infoSizeMSB.${tenant}.regularContent`) }}</span\n ><a :href=\"`mailto:${getContactMailByTenant}`\" class=\"link-to\">{{\n getContactMailByTenant\n }}</a\n ><strong>{{\n $t(`offer.infoSizeMSB.${tenant}.strongContent`)\n }}</strong>\n </p>\n </div>\n </b-message>\n <b-message type=\"is-info\">\n <div class=\"content is-normal\">\n <p>\n <strong>{{\n $t(`offer.infoSubscriptionMSB.${tenant}.title`)\n }}</strong>\n </p>\n <ul>\n <li>\n {{\n $t(\n `offer.infoSubscriptionMSB.${tenant}.haveAlreadySolutionMylight150`\n )\n }}\n </li>\n <li>\n {{ $t(`offer.infoSubscriptionMSB.${tenant}.areFreeCommitment`) }}\n </li>\n </ul>\n </div>\n </b-message>\n <navigation-buttons\n :nextRoute=\"nextStep\"\n :isStepValidated=\"isOfferStepValid\"\n ></navigation-buttons>\n </div>\n </section>\n</template>\n\n<script>\nimport { RouteName } from \"@/store/navigation/type\";\nimport { mapGetters } from \"vuex\";\nimport NavigationButtons from \"../../components/NavigationButtons\";\nimport ProductTypeSelector from \"./ProductTypeSelector\";\nimport BatteryPlanSelector from \"./BatteryPlanSelector\";\nimport BatteryPlanInfo from \"./BatteryPlanInfo\";\n\nexport default {\n name: \"offerPage\",\n components: {\n BatteryPlanInfo,\n BatteryPlanSelector,\n ProductTypeSelector,\n NavigationButtons,\n },\n data() {\n return {\n nextStep: RouteName.ContactInformation,\n tenant: process.env.VUE_APP_TENANT,\n };\n },\n\n computed: {\n ...mapGetters(\"subscription/offer\", [\"isOfferStepValid\"]),\n getUrlFaqCompatibleInstallation() {\n return this.tenant === \"MYL\"\n ? \"https://www.mylight-systems.com/faqs/quels-sont-les-systemes-de-gestion-compatibles-avec-mysmartbattery/\"\n : \"https://www.domuneo.com/energie-stockage/comprendr-ma-facture-faq/\";\n },\n getContactMailByTenant() {\n return this.tenant === \"MYL\"\n ? \"energie@mylight150.com\"\n : \"serviceclient@domuneo-energie.com\";\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.offer-page-container {\n padding: 0 2rem;\n margin: auto;\n}\n\n.link-to {\n color: $primary !important;\n}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./offerPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./offerPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./offerPage.vue?vue&type=template&id=7cfca915&scoped=true&\"\nimport script from \"./offerPage.vue?vue&type=script&lang=js&\"\nexport * from \"./offerPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./offerPage.vue?vue&type=style&index=0&id=7cfca915&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cfca915\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./CLASSIC.png\": 1633,\n\t\"./REAL_TIME.png\": 25\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 = 60;","var map = {\n\t\"./gsrn.png\": 540,\n\t\"./iban.png\": 790\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 = 4923;"],"names":["render","_vm","this","_c","_self","staticClass","attrs","header","multilined","on","toggleModal","isModalOpened","$event","scopedSlots","_u","key","fn","_v","_s","proxy","footer","domProps","body","hasImage","image","getImageUrl","_e","staticRenderFns","isOpen","$emit","_t","name","props","type","required","title","component","components","CustomModal","default","data","methods","require","withBackButton","withHelpButton","withoutPadding","MainContent","MainHeader","$t","isIndividualClient","MAX_LENGTH_HOLDER_FAMILY_NAME","holderFamilyNameErrors","holderFamilyName","setHolderFamilyName","MAX_LENGTH_HOLDER_FIRST_NAME","holderFirstNameErrors","holderFirstName","setHolderFirstName","MAX_LENGTH_HOLDER_COMPANY_NAME","holderCompanyNameErrors","holderCompanyName","setHolderCompanyName","isBillingAddressSameAsPhysical","setIsBillingAddressSameAsPhysical","MAX_LENGTH_STREET_NUMBER","streetNumberErrors","streetNumber","setStreetNumber","getStreetNumberSuffixOptions","streetNumberSuffix","setStreetNumberSuffix","streetErrors","street","setStreet","MAX_LENGTH_POST_CODE","postCodeErrors","postCode","setPostCode","cityErrors","city","setCity","directives","rawName","value","expression","MAX_LENGTH_IBAN","ibanErrors","iban","setIban","slot","ibanHelp","MAX_LENGTH_BIC","bicErrors","bic","setBic","isBankDetailsStepValid","nextStep","previousStep","RequiredFieldsWarning","NavigationButtons","CustomInput","CustomSelect","HelpButton","computed","streetNumberSuffixes","paymentType","paymentTypes","selectPaymentType","isBillingStepValid","_l","types","class","selected","checkIfPaymentTypeSelected","preventDefault","getPaymentTypeTitle","model","getSelectedPaymentType","callback","$$v","getPaymentTypeName","getPaymentTypeDescription","getPaymentTypeImageUrl","isImageLoaded","PaymentTypeSelector","isValidatedEmail","getUrlConditionOfSale","termsAndConditions","setTermsAndConditions","solarPanelsInstalled","setSolarPanelsInstalled","tenant","isSubscriptionValidForSign","redirectToContractSigning","isSubscriptionValidForSave","isSaveSubscriptionLoading","isSendEmailValidationLoading","saveFormAndSendMailValidation","isProfessionalClient","contractSummary","clientInformation","companyName","familyName","firstName","email","billingAddress","physicalAddress","pdlNumber","gridOperator","offerInformation","offerType","tariffType","contractedPower","batteryCapacity","paymentInformation","billingType","contractDeliveryType","isSubscriptionValid","getIncompleteSteps","incompleteStep","index","ClientType","isContactInformationStepValid","clientType","isHousingStepValid","isOfferStepValid","incompleteSteps","legalStorageBaseUrl","ContractSummary","then","subscriptionId","catch","error","console","getContractActivationStatus","isDownloadContractLoading","downloadContract","contractName","contractSigningInformation","getContractActivationStatusTitle","getContractActivationStatusDescriptionBegin","isPendingActivation","isActivateContractLoading","activateContract","getContractActivationStatusDescriptionEnd","RETRACTION_PERIOD","activationStatus","MainLayout","ActivationSteps","canReachContractActivationPage","contractSigningStatus","isSigned","isActivationRequested","ContractSigningStatus","isGridExtractionActivated","getOpeningActivationDate","add","format","getActivationDate","openingActivationDate","activationDate","redirectToContractPage","openHelpModal","isLoadingYousign","contractSigningStatusMessage","isContractSigningLoading","helpModalOpen","yousign","FullWidthLayout","contractSigningProcessLoading","contractSigningProgressLoading","isYousignSignatureUrlValid","getYousignIframeUrl","watch","String","signatureLink","signatureUrl","iframeContainerId","isSandbox","iframe","query","fromYousign","oldEmailaddressFieldDisabled","newEmailAddressErrors","newEmailAddress","confirmNewEmailAddressErrors","confirmNewEmailAddress","isUpdateEmailIsValid","isUpdateSubscriptionEmailLoading","isSendEmailValidationForUpdateEmailLoading","modifyEmailAndSendEmailValidation","updateSubscriptionEmailError","getUpdateErrorMessage","sendEmailValidationForUpdateEmailError","isNewEmailEmpty","isNewEmailBadFormat","isNewEmailValid","errors","isConfirmNewEmailEmpty","isConfirmNewEmailBadFormat","isConfirmNewEmailValid","isEmailAlreadyValidated","reSendValidationEmail","reSendEmailValidationSuccess","reSendEmailValidationError","getReSendErrorMessage","modifyEmail","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","constructor","retryDelays","_retryDelays","undefined","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","LogLevel","HttpError","Error","errorMessage","statusCode","trueProto","prototype","super","__proto__","TimeoutError","AbortError","UnsupportedTransportError","message","transport","errorType","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","HttpResponse","statusText","content","HttpClient","get","url","options","send","method","post","delete","getCookieString","NullLogger","log","_logLevel","_message","VERSION","Arg","val","match","values","Platform","isBrowser","window","document","isWebWorker","self","isReactNative","isNode","getDataDetail","includeContent","detail","isArrayBuffer","byteLength","formatArrayBuffer","length","view","Uint8Array","str","forEach","num","pad","toString","substr","ArrayBuffer","async","sendMessage","logger","transportName","httpClient","accessTokenFactory","headers","token","getUserAgentHeader","Trace","logMessageContent","responseType","response","timeout","withCredentials","createLogger","ConsoleLogger","Information","instance","SubjectSubscription","subject","observer","_subject","_observer","dispose","observers","indexOf","splice","cancelCallback","_","minimumLogLevel","_minLevel","out","logLevel","msg","Date","toISOString","Critical","Warning","warn","info","userAgentHeaderName","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","version","os","runtime","runtimeVersion","userAgent","majorAndMinor","split","process","platform","versions","node","getErrorString","e","stack","getGlobalThis","globalThis","global","FetchHttpClient","_logger","fetch","requireFunc","__non_webpack_require__","_jar","_fetchType","bind","AbortController","_abortControllerType","request","abortSignal","aborted","abortController","onabort","abort","timeoutId","msTimeout","setTimeout","cache","credentials","mode","redirect","signal","clearTimeout","ok","deserializeContent","status","payload","cookies","getCookies","c","join","arrayBuffer","text","XhrHttpClient","Promise","reject","resolve","xhr","XMLHttpRequest","open","setRequestHeader","Object","keys","onload","responseText","onerror","ontimeout","DefaultHttpClient","_httpClient","HeaderNames","HttpTransportType","TransferFormat","_isAborted","LongPollingTransport","_accessTokenFactory","_pollAbort","_options","_running","onreceive","onclose","pollAborted","transferFormat","isRequired","isIn","_url","Binary","pollOptions","_getAccessToken","_updateHeaderToken","pollUrl","now","_closeError","_receiving","_poll","Authorization","_raiseOnClose","deleteOptions","logMessage","ServerSentEventsTransport","encodeURIComponent","eventSource","opened","Text","EventSource","Cookie","onmessage","_close","onopen","_eventSource","stop","close","WebSocketTransport","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","webSocket","replace","binaryType","_event","_webSocket","event","ErrorEvent","readyState","OPEN","_isCloseEvent","wasClean","code","reason","MAX_REDIRECTS","HttpConnection","_stopPromiseResolver","features","_negotiateVersion","baseUrl","_resolveUrl","webSocketModule","eventSourceModule","WebSocket","_connectionState","_connectionStarted","Debug","_startInternalPromise","_startInternal","_stopPromise","_sendQueue","TransportSendQueue","_stopInternal","_stopError","_stopConnection","skipNegotiation","WebSockets","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","accessToken","_createTransport","inherentKeepAlive","negotiateUrl","_resolveNegotiateUrl","JSON","parse","negotiateVersion","connectionToken","connectionId","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","transports","availableTransports","negotiate","endpoint","transportOrError","_resolveTransportOrError","push","ex","ServerSentEvents","LongPolling","connect","transportMatches","transferFormats","map","s","lastIndexOf","aTag","createElement","href","substring","actualTransport","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","promise","transportResult","_concatBuffers","arrayBuffers","totalLength","b","reduce","a","result","offset","item","set","buffer","_resolver","_rejecter","TextMessageFormat","output","RecordSeparator","input","messages","pop","fromCharCode","RecordSeparatorCode","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","write","stringify","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","apply","Array","slice","call","textData","responseMessage","MessageType","Subject","next","err","complete","subscribe","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HubConnectionState","HubConnection","connection","protocol","reconnectPolicy","_nextKeepAlive","_freezeEventListener","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","_protocol","_reconnectPolicy","_handshakeProtocol","_processIncomingData","_connectionClosed","_callbacks","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","Disconnected","_cachedPingMessage","writeMessage","Ping","state","Reconnecting","start","_startPromise","_startWithStateTransitions","Connecting","addEventListener","Connected","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","_sendMessage","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_cleanupPingTimer","startPromise","Disconnecting","_reconnectDelayHandle","_completeClose","stream","methodName","args","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","cancelInvocation","_createCancelInvocation","invocationId","_sendWithProtocol","invocationEvent","Completion","_launchStreams","sendPromise","_createInvocation","invoke","p","newMethod","toLowerCase","off","handlers","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","Invocation","_invokeClientMethod","StreamItem","Close","allowReconnect","getTime","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","target","m","arguments","_cancelCallbacksWithError","_reconnect","removeEventListener","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","elapsedMilliseconds","retryReason","callbacks","nonblocking","streamId","_createCompletionMessage","_createStreamItemMessage","i","argument","_isObservable","arg","StreamInvocation","id","CancelInvocation","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","hubMessages","parsedMessage","_isInvocationMessage","_isStreamItemMessage","_isCompletionMessage","_assertNotEmptyString","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","parseLogLevel","mapping","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","isNotEmpty","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","isArray","build","create","created","destroyed","isGridOperatorValid","isContractedPowerEmpty","isContractedPowerValid","getContractedPowerOptions","contractedPowerErrors","setContractedPower","ConsumptionInformationType","EURO","consumptionInformationType","setConsumptionInformationType","isConsumptionInformationEurosDisabled","consumptionInformationEurosErrors","consumptionInformationEuros","setConsumptionInformationEuros","WATT","isConsumptionInformationKwhDisabled","consumptionInformationKwhErrors","consumptionInformationKwh","setConsumptionInformationKwh","getFieldError","getFieldType","getFaqUrl","getGridOperatorHelperText","gridOperatorsError","gridOperatorsLoading","onBlur","onInput","gridOperatorSelected","gridOperators","isGridOperatorExist","gridOperatorStatus","isVisited","mounted","expanded","getLabel","getMessage","getType","$slots","label","disabled","hasCounter","maxlength","min","step","isActive","nativeOn","lockDecimal","mixins","evt","loadingValidationGsrnEan","maxLengthGsrnEan","gsrnEANNumberErrors","gsrnEANNumber","debounceGsrnEANNumber","setGsrnEANNumber","gridOperatorEnum","gsrnHelp","MAX_LENGTH_GSRN_EAN_NUMBER_ENEDIS","MAX_LENGTH_GSRN_EAN_NUMBER_ES","isGsrnEANNumberEmpty","isGsrnEANNumberBadFormat","isGsrnEANNumberValid","GsrnEanInput","NumberInput","GridOperatorSelector","contractedPowers","isStreetNumberBadFormat","isStreetNumberValid","isStreetEmpty","isStreetValid","isPostCodeEmpty","isPostCodeBadFormat","isPostCodeValid","isCityEmpty","isCityValid","isConsumptionInformationKwhEmpty","isConsumptionInformationKwhValid","isConsumptionInformationEurosEmpty","isConsumptionInformationEurosValid","getContactMailByTenant","productTypeTitle","productTypeHelp","productTypes","productType","getProductTypeTitle","getProductTypeDescriptionItems","descriptionItem","ProductTypeIcon","isBatteryPlansLoading","batteryPlansError","n","batteryPlans","batteryPlan","capacity","price","checkIfBatteryPlanSelected","selectBatteryCapacity","loading","BatteryPlanSelectorItem","batteryOfferHelp","getBatteryOfferDescriptionItems","staticStyle","DSILogo","MSBLogo","MSBText","TenantLogo","getBatteryName","batteryName","BatteryPlanInfo","BatteryPlanSelector","ProductTypeSelector","getUrlFaqCompatibleInstallation","webpackContext","req","webpackContextResolve","__webpack_require__","o","module","exports"],"sourceRoot":""}