{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/helpers/idGenerator.ts","webpack:///./src/services/ViewerService.ts","webpack:///./src/assets/icons/google_chrome.svg","webpack:///./src/assets/icons/opera.svg","webpack:///./src/components/YslabLogo.vue?cafc","webpack:///./src/components/ErrorPage.vue?ba3f","webpack:///./src/helpers/supportedBrowsers.ts","webpack:///./src/assets/icons/logo-yslab.svg","webpack:///./src/components/icons/CloseIcon.vue?32db","webpack:///./src/components/RotateTooltip.vue?f901","webpack:///./src/components/NotSupportedBrowser.vue?568f","webpack:///./src/App.vue?6997","webpack:///./src/helpers/assetsVersionForCache.ts","webpack:///./src/services/ApartmentService.ts","webpack:///./src/services/RouteService.ts","webpack:///./src/helpers/decrypt-resimo-data.ts","webpack:///./src/services/ResimoService.ts","webpack:///./src/services/AppService.ts","webpack:///./src/assets/icons/mozilla_firefox.svg","webpack:///./src/helpers/mobile-device-detect.ts","webpack:///./src/App.vue","webpack:///./src/components/Loader.vue","webpack:///./src/components/Loader.vue?4753","webpack:///./src/components/Loader.vue?5ff8","webpack:///./src/components/Loader.vue?4f5b","webpack:///./src/components/YslabLogo.vue","webpack:///./src/components/YslabLogo.vue?e67f","webpack:///./src/components/YslabLogo.vue?cdbb","webpack:///./src/components/YslabLogo.vue?3f43","webpack:///./src/components/ErrorPage.vue","webpack:///./src/components/ErrorPage.vue?4c4a","webpack:///./src/components/ErrorPage.vue?468e","webpack:///./src/components/ErrorPage.vue?392b","webpack:///./src/components/RotateTooltip.vue","webpack:///./src/components/icons/CloseIcon.vue","webpack:///./src/components/icons/CloseIcon.vue?b1ff","webpack:///./src/components/icons/CloseIcon.vue?329b","webpack:///./src/components/icons/CloseIcon.vue?1321","webpack:///./src/components/RotateTooltip.vue?e801","webpack:///./src/components/RotateTooltip.vue?8e55","webpack:///./src/components/RotateTooltip.vue?42c5","webpack:///./src/components/NotSupportedBrowser.vue","webpack:///./src/components/NotSupportedBrowser.vue?fa61","webpack:///./src/components/NotSupportedBrowser.vue?75a2","webpack:///./src/components/NotSupportedBrowser.vue?97c8","webpack:///./src/App.vue?dad8","webpack:///./src/App.vue?0083","webpack:///./src/App.vue?315a","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","id","idGenerator","Image","loadImage","viewerService","url","defaultView","thisImg","this","xhr","XMLHttpRequest","open","responseType","status","setLoadingViewError","blob","Blob","response","URL","createObjectURL","setDefaultViewLoadingFinished","loadOtherViews","setLoadedView","loadingData","imagesLoadedCount","onprogress","setDefaultViewLoadingProgress","Math","ceil","loaded","total","onloadstart","send","ViewerService","constructor","sources","started","finished","loadingProgress","imagesToLoadCount","images","initImages","loadDefaultView","setActiveView","forEach","view","active","getId","_","index","img","image","next","texture","source","setDefaultViewLoadingStarted","setViewTexture","matched","find","el","val","state","getDefaultViewLoadingProgress","getActiveViewPhoto","activeRoom","getActiveView","getViews","_detectWebpSuppot","browser","browserName","toLowerCase","version","Number","browserVersion","split","toDataURL","indexOf","isWebpSupported","getImageExtension","hasWebpImages","checkBrowserSupport","os","osName","notSupportedDesktop","chrome","below","opera","firefox","safari","edge","fullySupported","yandex","notSupported","ie","notSupportedMobile","ios","android","rules","isMobile","isNaN","ver","process","verQuery","ApartmentService","apartment","internalNumber","mappingName","symbol","numberOfViews","setData","setNumberOfViewsFromViewsInfo","viewsInfo","views","MappingName","WindowViews","RouteService","setRouteParams","_queryParams","_queryParams2","routeParams","location","pathname","filter","routeParam","search","stringObjectParams","decodeURI","replace","queryParams","JSON","parse","clientId","investmentHash","apartmentName","number","wasAutoRefreshed","TOKEN_P1","TOKEN_P2","TOKEN_P3","getEncryptTimestamp","date","Date","localeString","toLocaleString","timeZone","getTime","toString","decryptResponseData","timestamp","token","bytes","CryptoJS","AES","decrypt","enc","Utf8","ResimoService","fetchData","apiUrl","fetch","headers","async","responseAsText","encryptedResponse","text","decodedData","normalize","AppService","resimoDataLoadError","apartmentNotFoundError","viewsInfoLoadError","routeService","apartmentService","resimoService","getApiEndpoint","getApiToken","fetchViewsInfo","basePath","getAssetsEndpoint","appConfig","catch","getViewsInfoPath","json","_this$appConfig","endpoints","assets","_this$appConfig2","_this$appConfig3","api","_this$appConfig4","__APP_CONFIG__","UA","UAParser","DEVICE_TYPES","MOBILE","TABLET","SMART_TV","CONSOLE","WEARABLE","BROWSER","BROWSER_TYPES","CHROME","FIREFOX","OPERA","YANDEX","SAFARI","INTERNET_EXPLORER","EDGE","CHROMIUM","IE","MOBILE_SAFARI","EDGE_CHROMIUM","getBrowser","getOS","device","getDevice","isMobileAndTabletType","getNavigatorInstance","navigator","isIOS13Check","nav","platform","maxTouchPoints","MSStream","getIPad13","render","_vm","_c","_self","_setupProxy","class","classListWithUserDevice","attrs","appConfigLoaded","viewPreloaded","errorVisible","isSupported","appService","on","ready","viewerIsReady","_e","defaultImageLoaded","initialViewerIsReady","supportedBrowserChecked","defaultViewLoadingProgress","configErrorVisible","staticRenderFns","staticStyle","Vue","extend","loaderElement","querySelector","loaderProgressValue","props","hide","Boolean","default","progress","watch","hideLoader","clearInterval","progressDotsInterval","showLoader","v","innerText","methods","style","display","component","_m","staticClass","require","_v","configError","_s","$t","refresh","reload","initTooltip","isTooltipOpen","$event","closeTooltip","stroke","circleCrossColor","strokeWidth","lineWidth","strokeLinecap","lineCap","lineOne","x1","y1","x2","y2","lineTwo","background","String","circleBorderColor","circleBorderWidth","lineLength","calcCrossSize","SVG_SIZE","LINE","created","components","CloseIcon","required","addEventListener","beforeDestroy","removeEventListener","showUI","preloadingViewError","computed","PhotoViewer","Loader","YslabLogo","RotateTooltip","ErrorPage","NotSupportedBrowser","setupApartmentService","updatePageTitle","apartmentSymbol","title","getLanguageFromUrl","queryString","urlParams","URLSearchParams","lang","$i18n","locale","handleUI","toggleUI","HTML","setProperty","_this$appService","searchParams","set","newUrl","origin","history","pushState","path","mounted","initAppService","_this$appService2","$watch","immediate","Sentry","dsn","integrations","BrowserTracing","tracesSampleRate","config","productionTip","use","VueI18n","i18n","messages","en","pl","fr","es","Intl","DateTimeFormat","resolvedOptions","language","h","App","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,EACP,MAAO,EACP,MAAO,GAMJjB,EAAkB,CACrB,IAAO,EACP,MAAO,EACP,MAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,OAAS,CAAC,MAAM,OAAO9B,IAAUA,GAAW,IAAM,CAAC,MAAM,YAAYA,GAAW,MAIhH,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,MAAM,GACpBR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,QAAU,CAAC,MAAM,OAAOxC,IAAUA,GAAW,IAAM,CAAC,MAAM,YAAYA,GAAW,OACxFyC,EAAWhB,EAAoBK,EAAIU,EACnCE,EAAmBC,SAASC,qBAAqB,QAC7CxC,EAAI,EAAGA,EAAIsC,EAAiBpC,OAAQF,IAAK,CAChD,IAAIyC,EAAMH,EAAiBtC,GACvB0C,EAAWD,EAAIE,aAAa,cAAgBF,EAAIE,aAAa,QACjE,GAAe,eAAZF,EAAIG,MAAyBF,IAAaN,GAAQM,IAAaL,GAAW,OAAOH,IAErF,IAAIW,EAAoBN,SAASC,qBAAqB,SACtD,IAAQxC,EAAI,EAAGA,EAAI6C,EAAkB3C,OAAQF,IAAK,CAC7CyC,EAAMI,EAAkB7C,GACxB0C,EAAWD,EAAIE,aAAa,aAChC,GAAGD,IAAaN,GAAQM,IAAaL,EAAU,OAAOH,IAEvD,IAAIY,EAAUP,SAASQ,cAAc,QACrCD,EAAQF,IAAM,aACdE,EAAQE,KAAO,WACfF,EAAQG,OAASf,EACjBY,EAAQI,QAAU,SAASC,GAC1B,IAAIC,EAAUD,GAASA,EAAME,QAAUF,EAAME,OAAOC,KAAOjB,EACvDkB,EAAM,IAAIC,MAAM,qBAAuB5D,EAAU,cAAgBwD,EAAU,KAC/EG,EAAIE,KAAO,wBACXF,EAAIH,QAAUA,SACP5B,EAAmB5B,GAC1BkD,EAAQY,WAAWC,YAAYb,GAC/BX,EAAOoB,IAERT,EAAQV,KAAOC,EAEf,IAAIuB,EAAOrB,SAASC,qBAAqB,QAAQ,GACjDoB,EAAKC,YAAYf,MACfgB,MAAK,WACPtC,EAAmB5B,GAAW,MAMhC,IAAImE,EAAqBxD,EAAgBX,GACzC,GAA0B,IAAvBmE,EAGF,GAAGA,EACFhC,EAASvB,KAAKuD,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAI/B,SAAQ,SAASC,EAASC,GAC3C4B,EAAqBxD,EAAgBX,GAAW,CAACsC,EAASC,MAE3DJ,EAASvB,KAAKuD,EAAmB,GAAKC,GAGtC,IACIC,EADAC,EAAS3B,SAASQ,cAAc,UAGpCmB,EAAOC,QAAU,QACjBD,EAAOE,QAAU,IACb/C,EAAoBgD,IACvBH,EAAOI,aAAa,QAASjD,EAAoBgD,IAElDH,EAAOZ,IAAM7B,EAAe7B,GAG5B,IAAI2E,EAAQ,IAAIf,MAChBS,EAAmB,SAAUd,GAE5Be,EAAOhB,QAAUgB,EAAOjB,OAAS,KACjCuB,aAAaJ,GACb,IAAIK,EAAQlE,EAAgBX,GAC5B,GAAa,IAAV6E,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYvB,IAAyB,SAAfA,EAAMH,KAAkB,UAAYG,EAAMH,MAChE2B,EAAUxB,GAASA,EAAME,QAAUF,EAAME,OAAOC,IACpDiB,EAAMK,QAAU,iBAAmBhF,EAAU,cAAgB8E,EAAY,KAAOC,EAAU,IAC1FJ,EAAMM,KAAO,iBACbN,EAAMvB,KAAO0B,EACbH,EAAMnB,QAAUuB,EAChBF,EAAM,GAAGF,GAEVhE,EAAgBX,QAAWkF,IAG7B,IAAIV,EAAUW,YAAW,WACxBd,EAAiB,CAAEjB,KAAM,UAAWK,OAAQa,MAC1C,MACHA,EAAOhB,QAAUgB,EAAOjB,OAASgB,EACjC1B,SAASqB,KAAKC,YAAYK,GAG5B,OAAOjC,QAAQ+C,IAAIjD,IAIpBV,EAAoB4D,EAAIxE,EAGxBY,EAAoB6D,EAAI3D,EAGxBF,EAAoB8D,EAAI,SAASxD,EAASkD,EAAMO,GAC3C/D,EAAoBgE,EAAE1D,EAASkD,IAClC1E,OAAOmF,eAAe3D,EAASkD,EAAM,CAAEU,YAAY,EAAMC,IAAKJ,KAKhE/D,EAAoBoE,EAAI,SAAS9D,GACX,qBAAX+D,QAA0BA,OAAOC,aAC1CxF,OAAOmF,eAAe3D,EAAS+D,OAAOC,YAAa,CAAEC,MAAO,WAE7DzF,OAAOmF,eAAe3D,EAAS,aAAc,CAAEiE,OAAO,KAQvDvE,EAAoBwE,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQvE,EAAoBuE,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAK7F,OAAO8F,OAAO,MAGvB,GAFA5E,EAAoBoE,EAAEO,GACtB7F,OAAOmF,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOvE,EAAoB8D,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIR3E,EAAoB+E,EAAI,SAASxE,GAChC,IAAIwD,EAASxD,GAAUA,EAAOmE,WAC7B,WAAwB,OAAOnE,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAP,EAAoB8D,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR/D,EAAoBgE,EAAI,SAASgB,EAAQC,GAAY,OAAOnG,OAAOC,UAAUC,eAAeC,KAAK+F,EAAQC,IAGzGjF,EAAoBK,EAAI,sCAGxBL,EAAoBkF,GAAK,SAAShD,GAA2B,MAApBiD,QAAQjC,MAAMhB,GAAYA,GAEnE,IAAIkD,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAWjG,KAAK2F,KAAKM,GAC5CA,EAAWjG,KAAOf,EAClBgH,EAAaA,EAAWG,QACxB,IAAI,IAAI5G,EAAI,EAAGA,EAAIyG,EAAWvG,OAAQF,IAAKP,EAAqBgH,EAAWzG,IAC3E,IAAIU,EAAsBiG,EAI1B/F,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,qIC9QT,IAAI+F,EAAK,EAEK,SAAWC,IACrB,MAAO,QACGD,EACNA,GAAM,ECFdE,MAAM3G,UAAU4G,UAAY,SACxBC,EACAC,EACAL,EACAM,GAGA,MAAMC,EAAUC,KACVC,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAON,GAAK,GACrBI,EAAIG,aAAe,cAEnBH,EAAIrE,OAAS,SAAgBnB,GACzB,MAAMuB,EAASvB,EAAEuB,OAEK,MAAlBA,EAAOqE,QAAgBT,EAAcU,qBAAoB,GAE7D,MAAMC,EAAO,IAAIC,KAAK,CAACR,KAAKS,WAC5BV,EAAQ9D,IAAMoD,OAAOqB,IAAIC,gBAAgBJ,GAErCT,IACAF,EAAcgB,gCACdhB,EAAciB,kBAGlBjB,EAAckB,cAActB,GAE5BI,EAAcmB,YAAYC,mBAAqB,GAG/ClB,IACAG,EAAIgB,WAAa,SAAoBxG,GACjCmF,EAAcsB,8BAA8BC,KAAKC,KAAM3G,EAAE4G,OAAS5G,EAAE6G,MAAS,OAEjFrB,EAAIsB,YAAc,WACd3B,EAAcsB,8BAA8B,KAIpDjB,EAAIpE,QAAU,WACV+D,EAAcU,qBAAoB,IAEtCL,EAAIuB,QAGR,MAAMC,EAgBFC,YAAYC,GAfZ,KAAAZ,YAA2B,CACvBjB,YAAa,CACT8B,SAAS,EACTC,UAAU,EACVC,gBAAiB,GAErBC,kBAAmB,EACnBf,kBAAmB,EACnBgB,OAAQ,IAQRhC,KAAK9C,OAAQ,EACb8C,KAAK2B,QAAUA,EACf3B,KAAKiC,aACLjC,KAAKkC,kBAGFC,cAAc3C,GACjBQ,KAAKe,YAAYiB,OAAOI,QAASC,IAC7BA,EAAKC,OAASD,EAAK7C,KAAOA,IAI1ByC,aACJ,MAAMM,EAAQ9C,IAEdO,KAAK2B,QAAQS,QAAQ,CAACI,EAAGC,KACrB,MAAMC,EAAM,IAAIhD,MAChBM,KAAKe,YAAYiB,OAAO7I,KAAK,CACzBmJ,OAAkB,IAAVG,EACRE,MAAOD,EACPrB,QAAQ,EACR7B,GAAI+C,EAAMK,OAAOrE,MACjBsE,QAAS,OAEb7C,KAAKe,YAAYgB,mBAAqB,IAItCG,kBACJ,MAAMY,EAAS9C,KAAK2B,QAAQ,IACtB,MAAEgB,EAAK,GAAEnD,GAAOQ,KAAKe,YAAYiB,OAAO,GAE9ChC,KAAK+C,+BAGLJ,EAAMhD,UAAUK,KAAM8C,EAAQtD,GAAI,GAG/BqB,iBACH,IAAK,IAAIlI,EAAI,EAAGA,EAAIqH,KAAK2B,QAAQ9I,OAAQF,GAAK,EAAG,CAC7C,MAAMmK,EAAS9C,KAAK2B,QAAQhJ,IACtB,MAAEgK,EAAK,GAAEnD,GAAOQ,KAAKe,YAAYiB,OAAOrJ,GAE9CgK,EAAMhD,UAAUK,KAAM8C,EAAQtD,GAAI,IAIlCuD,+BACJ/C,KAAKe,YAAYjB,YAAY8B,SAAU,EAGpCoB,eAAexD,EAAYqD,GAC9B,MAAMI,EAAUjD,KAAKe,YAAYiB,OAAOkB,KAAMC,GAAOA,EAAG3D,KAAOA,GAE3DyD,IACAA,EAAQJ,QAAUA,GAInB3B,8BAA8BkC,GACjCpD,KAAKe,YAAYjB,YAAYgC,gBAAkBsB,EAG5CxC,gCACHZ,KAAKe,YAAYjB,YAAY+B,UAAW,EAGrCf,cAActB,GACjB,MAAMyD,EAAUjD,KAAKe,YAAYiB,OAAOkB,KAAMC,GAAOA,EAAG3D,KAAOA,GAE3DyD,IAASA,EAAQ5B,QAAS,GAG3Bf,oBAAoB+C,GACvBrD,KAAK9C,MAAQmG,EAGVC,gCACH,OAAOtD,KAAKe,YAAYjB,YAAYgC,gBAGjCyB,qBACH,MAAMC,EAAaxD,KAAKe,YAAYiB,OAAOkB,KAAMb,GAASA,EAAKC,QAC/D,OAAiB,OAAVkB,QAAU,IAAVA,OAAU,EAAVA,EAAYb,MAAM1G,IAGtBwH,gBACH,OAAOzD,KAAKe,YAAYiB,OAAOkB,KAAMb,GAASA,EAAKC,QAGhDoB,WACH,OAAO1D,KAAKe,YAAYiB,QAIjBP,gB,4DChKflH,EAAOD,QAAU,IAA0B,kC,6wBCA3CC,EAAOD,QAAU,IAA0B,0B,2DCA3C,W,oCCAA,W,sFCCA,oFAIA,MAAMqJ,EAAoBA,KACtB,MAAMC,EAAUC,OAAYC,cACtBC,EAAUC,OAAOC,OAAeC,MAAM,KAAK,IACjD,MAAgB,WAAZN,GAAwBG,GAAW,IACwD,IAAxF7I,SAASQ,cAAc,UAAUyI,UAAU,cAAcC,QAAQ,oBAG/DC,EAAkBV,IAClBW,EAAqBC,GAA4BF,GAAmBE,EAAgB,QAAU,OAE7F,SAAUC,IACpB,MAAMZ,EAAUC,OAAYC,cACtBC,EAAUC,OAAOC,OAAeC,MAAM,KAAK,IAC3CO,EAAKC,OAAOZ,cAEZa,EAA0C,CAC5CC,OAAQ,CAAEC,MAAO,IACjBC,MAAO,CAAED,MAAO,IAChBE,QAAS,CAAEF,MAAO,IAClBG,OAAQ,CAAEH,MAAO,IACjBI,KAAM,CAAEC,gBAAgB,GACxBC,OAAQ,CAAEC,cAAc,GACxBC,GAAI,CAAED,cAAc,IAGlBE,EAAyC,CAC3CC,IAAK,CAAEV,MAAO,IACdW,QAAS,CAAEX,MAAO,IAGhBY,EAAQC,OAAWJ,EAAmBb,GAAME,EAAoBf,GAEtE,OAAK6B,IACDA,EAAML,iBACNK,EAAMP,mBACNlB,OAAO2B,MAAM5B,MACE,MAAf0B,EAAMZ,OAAiBd,EAAU0B,EAAMZ,W,qBCzC/CtK,EAAOD,QAAU,IAA0B,+B,kCCA3C,W,6DCAA,W,oCCAA,W,oCCAA,W,mECAA,MAAMsL,EAAMC,cAECC,EAAW,KAAKF,E,oBCC7B,MAAMG,EAANrE,cACI,KAAAsE,UAAuB,CACnBC,eAAgB,GAChBzI,KAAM,GACN0I,YAAa,GACb1G,GAAI,EACJ2G,OAAQ,GACRC,cAAe,GAGZC,QAAQL,GACXhG,KAAKgG,UAAYA,EAGdM,8BAA8BC,GACjC,MAAMtD,EAAUsD,EAAUC,MACrBtD,KAAMb,GAASA,EAAKoE,cAAgBzG,KAAKgG,UAAUE,aAExDlG,KAAKgG,UAAUI,eAAuB,OAAPnD,QAAO,IAAPA,OAAO,EAAPA,EAASyD,cAAe,EAG3D,gBACI,QAAS1G,KAAKgG,WAIPD,Q,UC3Bf,MAAMY,EAGFjF,cACI1B,KAAK4G,iBAGDA,iBAAc,IAAAC,EAAAC,EAClB,MAAMC,EAAc1H,OAAO2H,SAASC,SAC/B/C,MAAM,KACNgD,OAAQC,GAAeA,GACtBC,EAAS/H,OAAO2H,SAASI,OAAOlD,MAAM,KAAK,GAC3CmD,EAAqBD,EACrBE,UAAUF,GAAQG,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAC1E,KACN,IAAIC,EAEAH,IACAG,EAAcC,KAAKC,MAAM,KAAKL,QAGlCrH,KAAK+G,YAAc,CACfY,SAAUZ,EAAY,GACtBa,eAAgBb,EAAY,GAC5Bc,cAA0B,QAAbhB,EAAEW,SAAW,IAAAX,OAAA,EAAXA,EAAaiB,OAC5BC,iBAAoD,UAAvB,QAAXjB,EAAAU,SAAW,IAAAV,OAAA,EAAXA,EAAaiB,mBAIvC,eACI,OAAO/H,KAAK+G,YAAYY,SAG5B,qBACI,OAAO3H,KAAK+G,YAAYa,eAG5B,oBACI,OAAO5H,KAAK+G,YAAYc,eAIjBlB,Q,iCC1Cf,MAAMqB,EAAW,OACXC,EAAW,OACXC,EAAW,OAEJC,EAAsBA,KAC/B,MAAMC,EAAO,IAAIC,KACXC,EAAeF,EAAKG,eAAe,QAAS,CAC9CC,SAAU,mBAEd,OAAO,IAAIH,KAAKC,GAAcG,UAAUC,YAG/BC,EAAsBA,CAAIlI,EAAkBmI,KAErD,GAAwB,kBAAbnI,EACP,OAAOA,EAIX,IACI,MAAMoI,EAAQ,GAAGb,KAAYC,KAAYC,IACnCrJ,EAAM,GAAGgK,KAASD,IAClBE,EAAQC,IAASC,IAAIC,QAAQxI,EAAU5B,GAC7C,OAAO4I,KAAKC,MAAMoB,EAAMJ,SAASK,IAASG,IAAIC,OAChD,MAEE,OAAO1B,KAAKC,MAAMjH,KCzB1B,MAAM2I,EAEKC,UAAUC,EAAgBT,EAAehB,GAC5C,MAAMe,EAAYT,IAElB,OAAOoB,MAAM,GAAGD,WAAgBT,IAAS,CACrCW,QAAS,CACLZ,eAGHnM,KAAKgN,UACF,MAAMC,QAAuBC,EAAkBC,OACzCC,EAAclB,EAAsCe,EAAgBd,GAE1E,OAAOiB,EACF3G,KAAM8C,GAAcA,EAAUxI,KAAKsG,cAAcgG,UAAU,OAAOvC,QAAQ,mBAAoB,MAC3FM,EAAc/D,cAAcgG,UAAU,OAAOvC,QAAQ,mBAAoB,QAKlF6B,QCdf,MAAMW,EAiBFrI,cACI1B,KAAKgK,qBAAsB,EAC3BhK,KAAKiK,wBAAyB,EAC9BjK,KAAKkK,oBAAqB,EAC1BlK,KAAKJ,cAAgB,KACrBI,KAAKmK,aAAe,IAAIxD,EACxB3G,KAAKoK,iBAAmB,IAAIrE,EAC5B/F,KAAKqK,cAAgB,IAAIjB,EAGtB,8BACH,OAAOpJ,KAAKqK,cAAchB,UACtBU,EAAWO,iBAAkBP,EAAWQ,cACxCvK,KAAKmK,aAAatC,cAAgB7H,KAAKmK,aAAatC,cAAgB,IACtEpL,KAAMuJ,IACa,MAAbA,EACAhG,KAAKoK,iBAAiB/D,QAAQL,GAE9BhG,KAAKiK,wBAAyB,EAGlCF,EAAWS,iBAAiB/N,KAAMgE,IAC9BT,KAAKoK,iBAAiB9D,8BAA8B7F,GAEpD,MAAMkB,EAAyB,GACzB8I,EAAWV,EAAWW,qBACtB,YAAExE,EAAW,cAAEE,GAAkBpG,KAAKoK,iBAAiBpE,UAE7D,IAAK,IAAIrN,EAAI,EAAGA,GAAKyN,EAAezN,GAAK,EACrCgJ,EAAQxI,KAAK,GAAGsR,KAAYvE,KAAevN,IAAI2L,eAAkByF,EAAWY,UAAUpG,kBAAkBuB,KAG5G9F,KAAKJ,cAAgB,IAAI6B,aAAcE,KACxCiJ,MAAM,KAAQ5K,KAAKkK,oBAAqB,MAC5CU,MAAM,KACL5K,KAAKgK,qBAAsB,IAI3B,wBACJ,OAAOT,MAAM,GAAGQ,EAAWc,sBAAsB/E,KAC5CrJ,KAAMgE,GAAaA,EAASqK,QAG9B,2BAAwB,IAAAC,EAC3B,OAAwB,QAAjBA,EAAG/K,KAAK2K,iBAAS,IAAAI,OAAA,EAAdA,EAAgBC,UAAUC,QAA7B,UAA+C,GAGnD,0BAAuB,IAAAC,EAC1B,OAAwB,QAAjBA,EAAGlL,KAAK2K,iBAAS,IAAAO,OAAA,EAAdA,EAAgBF,UAAUC,QAA7B,mBAAwD,GAG5D,wBAAqB,IAAAE,EACxB,OAAqB,QAAdA,EAAAnL,KAAK2K,iBAAS,IAAAQ,OAAA,EAAdA,EAAgBH,UAAUI,MAAO,GAGrC,qBAAkB,IAAAC,EACrB,OAAqB,QAAdA,EAAArL,KAAK2K,iBAAS,IAAAU,OAAA,EAAdA,EAAgBxC,QAAS,IAzE7BkB,EAAAY,UAAatL,OAAqCiM,eA6E9CvB,gB,k7CCxFfxP,EAAOD,QAAU,IAA0B,oC,kCCA3C,wJAEA,MAAMiR,EAAK,IAAIC,cAETC,EAAe,CACjBC,OAAQ,SACRC,OAAQ,SACRC,SAAU,UACVC,QAAS,UACTC,SAAU,WACVC,aAAStO,GAGPuO,EAAgB,CAClBC,OAAQ,SACRC,QAAS,UACTC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,kBAAmB,oBACnBC,KAAM,OACNC,SAAU,WACVC,GAAI,KACJC,cAAe,gBACfC,cAAe,kBAEb,OAAEjB,GAAWD,GACb,OAAEE,GAAWF,EAEb7H,EAAU2H,EAAGqB,aACbnI,EAAK8G,EAAGsB,QACRC,EAASvB,EAAGwB,YAEZC,EAAwBA,KAC1B,OAAQF,EAAOnR,MACf,KAAK+P,EACL,KAAKC,EACD,OAAO,EACX,QACI,OAAO,IAITsB,EAAuBA,MACH,qBAAX5N,SACHA,OAAO6N,YAAaA,aACb7N,OAAO6N,WAAaA,WAOjCC,EAAgBxR,IAClB,MAAMyR,EAAMH,IACZ,QACMG,KACDA,EAAIC,YAE2B,IAAhCD,EAAIC,SAASjJ,QAAQzI,IAAkC,aAAjByR,EAAIC,UAA2BD,EAAIE,eAAiB,IAAMjO,OAAOkO,WAIzGC,EAAYA,IAAML,EAAa,QAKxBzH,GAHY9B,EAAQpG,KAASwO,EAAcE,QAChCtI,EAAQpG,OAASwO,EAAcK,SAChDzI,EAAQpG,KAASwO,EAAcU,eACdM,KAA2BQ,KACtC3J,EAAcD,EAAQpG,MAAQ,OAC9ByG,EAAiBL,EAAQG,SAAW,OACpCW,EAASD,EAAGjH,MAAQ,Q,yJCvE7BiQ,EAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACG,MAAMJ,EAAIK,wBAAwBC,MAAM,CAAC,GAAK,QAAQ,CAAEN,EAAIO,iBAAmBP,EAAIQ,gBAAkBR,EAAIS,cAAgBT,EAAIU,YAAa,CAACT,EAAG,aAAcD,EAAIW,YAC1PX,EAAIW,WAAWzO,eAAiB8N,EAAIW,WAAWzO,cAAc2D,qBAAsBoK,EAAG,cAAc,CAACK,MAAM,CAAC,MAAQN,EAAIW,WAAWzO,cAAc2D,qBAAqB,MAAQmK,EAAIW,WAAWzO,cAAc8D,WAAW,cAAgBgK,EAAIW,WAAWzO,eAAe0O,GAAG,CAAC,cAAiBC,GAAUb,EAAIc,cAAgBD,KAASb,EAAIe,MAAMf,EAAIe,KAAKd,EAAG,gBAAgB,CAACK,MAAM,CAAC,YAAcN,EAAIc,iBAAiBb,EAAG,SAAS,CAACK,MAAM,CAAC,KAAON,EAAIO,iBAAmBP,EAAIQ,eAAiBR,EAAIgB,oBACpehB,EAAIiB,sBAAwBjB,EAAIS,eAAkBT,EAAIU,aAAeV,EAAIkB,wBAAyB,SAAWlB,EAAImB,8BAA+BnB,EAAIS,cAAgBT,EAAIU,YAAaT,EAAG,YAAY,CAACK,MAAM,CAAC,YAAcN,EAAIoB,sBAAsBpB,EAAIe,KAAOf,EAAIU,YAAuCV,EAAIe,KAA9Bd,EAAG,wBAAiC,IAExToB,EAAkB,GCJlBtB,G,8BAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAACqB,YAAY,CAAC,QAAU,YAE7HD,EAAkB,GCEPE,SAAIC,OAAO,CACtB1R,KAAM,SACNnF,OACI,MAAO,CACH8W,cAAejU,SAASkU,cAAc,cACtCC,oBAAqBnU,SAASkU,cAAc,iCAGpDE,MAAO,CACHC,KAAM,CACF5T,KAAM6T,QACNC,SAAS,GAEbC,SAAU,CACN/T,KAAMqI,OACNyL,QAAS,IAGjBE,MAAO,CACHJ,OACQvP,KAAKuP,MACLvP,KAAK4P,aACLC,cAAexQ,OAAqCyQ,uBAEpD9P,KAAK+P,cAGbL,SAASM,GACDhQ,KAAKqP,sBACUrP,KAAKqP,oBAAoBY,UAA9B,MAAND,EAAgD,MACPA,EAAH,OAItDE,QAAS,CACLN,aACI5P,KAAKmP,cAAcgB,MAAMC,QAAU,QAEvCL,aACI/P,KAAKmP,cAAcgB,MAAMC,QAAU,WC3CiV,I,YCO5XC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,QClBX5C,EAAS,WAAkB,IAAIC,EAAI1N,KAAQ0N,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOH,EAAI4C,GAAG,IAEnGvB,EAAkB,CAAC,WAAY,IAAIrB,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,IAAI,CAAC4C,YAAY,eAAevC,MAAM,CAAC,KAAO,sCAAsC,OAAS,WAAW,CAACL,EAAG,MAAM,CAAC4C,YAAY,OAAOvC,MAAM,CAAC,IAAMwC,EAAQ,QAAiC,IAAM,aAAa,UAAY,eCCnTvB,SAAIC,OAAO,CAAE1R,KAAM,cCHiW,ICQ/X,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBXiQ,EAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAAC4C,YAAY,iBAAiB,CAAC5C,EAAG,SAAS,CAAC4C,YAAY,gBAAgB,CAAC7C,EAAI+C,GAAG,OAAS/C,EAAIgD,YAAwN,CAAC/C,EAAG,KAAK,CAAC4C,YAAY,cAAc,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,2BAA2BjD,EAAG,KAAK,CAAC4C,YAAY,yBAAyB,CAAC7C,EAAI+C,GAAG,IAAI/C,EAAIiD,GAAGjD,EAAIkD,GAAG,oCAAoC,OAAOjD,EAAG,SAAS,CAAC4C,YAAY,iBAAiBjC,GAAG,CAAC,MAAQZ,EAAImD,UAAU,CAACnD,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,gBAA7e,CAACjD,EAAG,KAAK,CAAC4C,YAAY,cAAc,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,gBAAgBjD,EAAG,KAAK,CAAC4C,YAAY,yBAAyB,CAAC7C,EAAI+C,GAAG,IAAI/C,EAAIiD,GAAGjD,EAAIkD,GAAG,iDAAiD,SAA2T,IAE7sB7B,EAAkB,GCCPE,SAAIC,OAAO,CACtB1R,KAAM,YACN8R,MAAO,CACHoB,YAAa,CACT/U,KAAM6T,QACNC,SAAS,IAGjBS,QAAS,CACLW,UACIxR,OAAO2H,SAAS8J,aCbuW,ICQ/X,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBXrD,EAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAQH,EAAIqD,aAAerD,EAAIsD,cAAerD,EAAG,MAAM,CAAC4C,YAAY,iBAAiBjC,GAAG,CAAC,MAAQ,SAAS2C,GAAQ,OAAOvD,EAAIwD,kBAAkB,CAACvD,EAAG,YAAY,CAACK,MAAM,CAAC,WAAa,GAAG,iBAAmB,OAAO,kBAAoB,OAAOL,EAAG,MAAM,CAAC4C,YAAY,eAAe,CAAC5C,EAAG,MAAM,CAAC4C,YAAY,YAAYvC,MAAM,CAAC,MAAQ,SAAS,OAAS,SAAS,QAAU,oBAAoB,KAAO,YAAY,CAACL,EAAG,IAAI,CAACK,MAAM,CAAC,UAAY,uBAAuB,CAACL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,mTAAmT,KAAO,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,g6CAAg6C,KAAO,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,qQAAqQ,KAAO,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,EAAI,sRAAsR,KAAO,UAAU,QAAU,eAAeL,EAAG,MAAM,CAAC4C,YAAY,eAAe,CAAC5C,EAAG,OAAO,CAAC4C,YAAY,QAAQ,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,0BAA0BjD,EAAG,OAAO,CAAC4C,YAAY,QAAQ,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,6BAA6B,GAAGlD,EAAIe,MAElpGM,EAAkB,GCFlBtB,EAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAAC4C,YAAY,aAAavC,MAAM,CAAC,MAAQ,6BAA6B,QAAU,kBAAkB,CAACL,EAAG,iBAAiB,CAACK,MAAM,CAAC,MAAQ,6BAA6B,GAAK,WAAW,GAAK,IAAI,GAAK,IAAI,GAAK,MAAM,GAAK,IAAI,cAAgB,mBAAmB,CAACL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,IAAI,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,sBAAsB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,qBAAqB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,sBAAsB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,qBAAqB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,qBAAqB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,qBAAqB,aAAa,aAAaL,EAAG,OAAO,CAACK,MAAM,CAAC,OAAS,IAAI,aAAa,cAAc,GAAGL,EAAG,OAAO,CAAC4C,YAAY,QAAQJ,MAAO,CACr7BgB,OAAQzD,EAAI0D,iBACZC,YAAa3D,EAAI4D,UACjBC,cAAe7D,EAAI8D,SACpBxD,MAAM,CAAC,GAAKN,EAAI+D,QAAQC,GAAG,GAAKhE,EAAI+D,QAAQE,GAAG,GAAKjE,EAAI+D,QAAQG,GAAG,GAAKlE,EAAI+D,QAAQI,MAAMlE,EAAG,OAAO,CAAC4C,YAAY,QAAQJ,MAAO,CAC/HgB,OAAQzD,EAAI0D,iBACZC,YAAa3D,EAAI4D,UACjBC,cAAe7D,EAAI8D,SACpBxD,MAAM,CAAC,GAAKN,EAAIoE,QAAQJ,GAAG,GAAKhE,EAAIoE,QAAQH,GAAG,GAAKjE,EAAIoE,QAAQF,GAAG,GAAKlE,EAAIoE,QAAQD,OAAO,IAElG9C,EAAkB,GCNPE,SAAIC,OAAO,CACtB1R,KAAM,YACN8R,MAAO,CACHyC,WAAY,CACRpW,KAAMqW,OACNvC,QAAS,SAEbwC,kBAAmB,CACftW,KAAMqW,OACNvC,QAAS,SAEbyC,kBAAmB,CACfvW,KAAMqW,OACNvC,QAAS,OAEb2B,iBAAkB,CACdzV,KAAMqW,OACNvC,QAAS,SAEb6B,UAAW,CACP3V,KAAMqW,OACNvC,QAAS,OAEb0C,WAAY,CACRxW,KAAMqI,OACNyL,QAAS,IAEb+B,QAAS,CACL7V,KAAMqW,OACNvC,QAAS,SAGjBpX,OACI,MAAO,CACHoZ,QAAS,KACTK,QAAS,OAGjB5B,QAAS,CACLkC,gBACI,MAAMC,EAAW,KACXC,EAAOtS,KAAKmS,WACZV,EAAU,CACZC,IAAKW,EAAWC,GAAQ,EACxBX,IAAKU,EAAWC,GAAQ,EACxBV,IAAKS,EAAWC,GAAQ,EAAIA,EAC5BT,IAAKQ,EAAWC,GAAQ,EAAIA,GAE1BR,EAAU,CACZJ,IAAKW,EAAWC,GAAQ,EAAIA,EAC5BX,IAAKU,EAAWC,GAAQ,EACxBV,IAAKS,EAAWC,GAAQ,EACxBT,IAAKQ,EAAWC,GAAQ,EAAIA,GAEhCtS,KAAKyR,QAAUA,EACfzR,KAAK8R,QAAUA,IAGvBS,UACIvS,KAAKoS,mBC/DwY,ICQjZ,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCfAnD,SAAIC,OAAO,CACtB1R,KAAM,gBACNgV,WAAY,CAAEC,aACdnD,MAAO,CACHyB,YAAa,CACTpV,KAAM6T,QACNkD,UAAU,IAGlBra,OACI,MAAO,CACH2Y,eAAe,IAGvBd,QAAS,CACLgB,eACIlR,KAAKgR,eAAgB,IAG7BuB,UACIrX,SAASyX,iBAAiB,YAAa3S,KAAKkR,cAC5ChW,SAASyX,iBAAiB,aAAc3S,KAAKkR,eAEjD0B,gBACI1X,SAAS2X,oBAAoB,YAAa7S,KAAKkR,cAC/ChW,SAAS2X,oBAAoB,aAAc7S,KAAKkR,iBC7B+U,ICQnY,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBXzD,EAAS,WAAkB,IAAIC,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,MAAM,CAAC4C,YAAY,iBAAiB,CAAC5C,EAAG,MAAM,CAAC4C,YAAY,0BAA0B5C,EAAG,IAAI,CAAC4C,YAAY,0BAA0B,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,2BAA2BjD,EAAG,IAAI,CAAC4C,YAAY,6BAA6B,CAAC7C,EAAI+C,GAAG/C,EAAIiD,GAAGjD,EAAIkD,GAAG,iCAAiClD,EAAI4C,GAAG,MAElYvB,EAAkB,CAAC,WAAY,IAAIrB,EAAI1N,KAAK2N,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMC,YAAY,OAAOF,EAAG,KAAK,CAAC4C,YAAY,kBAAkB,CAAC5C,EAAG,KAAK,CAACA,EAAG,IAAI,CAACK,MAAM,CAAC,KAAO,0CAA0C,CAACL,EAAG,MAAM,CAAC4C,YAAY,sBAAsBvC,MAAM,CAAC,IAAMwC,EAAQ,QAAoC,IAAM,uBAAuB7C,EAAG,KAAK,CAACA,EAAG,IAAI,CAACK,MAAM,CAAC,KAAO,6CAA6C,CAACL,EAAG,MAAM,CAAC4C,YAAY,sBAAsBvC,MAAM,CAAC,IAAMwC,EAAQ,QAAsC,IAAM,yBAAyB7C,EAAG,KAAK,CAACA,EAAG,IAAI,CAACK,MAAM,CAAC,KAAO,2BAA2B,CAACL,EAAG,MAAM,CAAC4C,YAAY,sBAAsBvC,MAAM,CAAC,IAAMwC,EAAQ,QAA4B,IAAM,mBCC1rBvB,SAAIC,OAAO,CAAE1R,KAAM,wBCH2W,ICQzY,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,4CCRAyR,SAAIC,OAAO,CACtB1R,KAAM,MACNnF,OACI,MAAO,CACHgW,WAAY,KACZJ,iBAAiB,EACjBS,oBAAoB,EACpBF,eAAe,EACfG,sBAAsB,EACtBZ,wBAAyB,KAAKrJ,UAAUgB,OAAW,WAAa,KAChEwI,eAAe,EACfW,2BAA4B,EAC5BT,aAAa,EACbQ,yBAAyB,EACzBkE,QAAQ,EACRC,qBAAqB,EACrB/I,qBAAqB,EACrBC,wBAAwB,EACxBC,oBAAoB,IAG5B8I,SAAU,CACN7E,eACI,OAAOnO,KAAK+S,qBAAuB/S,KAAKgK,qBACjChK,KAAKkK,oBAAsBlK,KAAKiK,wBAE3C6E,qBACI,OAAO9O,KAAKgK,qBAAuBhK,KAAKkK,qBAGhDsI,WAAY,CACRS,YAAaA,IAAM,qCACnBC,SACAC,YACAC,gBACAC,YACAC,uBAEJpD,QAAS,CACL,uBACIlQ,KAAKqO,WAAa,IAAItE,mBAChB/J,KAAKqO,WAAWkF,yBAE1BC,gBAAgBC,GACRA,IACAvY,SAASwY,MAAQ,GAAGxY,SAASwY,SAASD,MAG9CE,qBACI,MAAMC,EAAcvU,OAAO2H,SAASI,OAC9ByM,EAAY,IAAIC,gBAAgBF,GAChCG,EAAOF,EAAU1V,IAAI,QACvB4V,IAAM/T,KAAKgU,MAAMC,OAASF,IAElCG,SAASzZ,GACU,SAAXA,EAAE2B,MAAiB4D,KAAKmU,YAEhCA,WACInU,KAAK8S,QAAU9S,KAAK8S,OACpB,IAAIvU,EAAQ,SACZ,MAAM6V,EAA2BlZ,SAASkU,cAAc,QACpDpP,KAAK8S,SAAQvU,EAAQ,WACpByB,KAAK8S,SAAQvU,EAAQ,UACtB6V,GAAMA,EAAKjE,MAAMkE,YAAY,eAAgB9V,KAGzDoR,MAAO,CACHnB,gBACIxO,KAAK0O,oBAAqB,EAErB1O,KAAK2O,uBACN3O,KAAK2O,sBAAuB,IAGpCG,mBAAmB1L,GAAG,IAAAkR,EAClB,GAAKlR,IAEe,QAAhBkR,EAACtU,KAAKqO,kBAAU,IAAAiG,IAAfA,EAAiBnK,aAAapD,YAAYgB,kBAAkB,CAC7D,MAAMwM,EAAe,IAAIT,gBAAgBzU,OAAO2H,SAASI,QACzDmN,EAAaC,IAAI,mBAAoB,QACrC,MAAMC,EAAS,GAAGpV,OAAO2H,SAAS0N,SAASrV,OAAO2H,SAASC,YAAYsN,EAAa7L,aACpFrJ,OAAOsV,QAAQC,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,GAC/CpV,OAAO2H,SAAS8J,YAI5ByB,UACIvS,KAAKoO,YAAc5J,iBACnBxE,KAAK2T,sBAETmB,UACI9U,KAAK4O,yBAA0B,EAC/B5O,KAAK+U,iBACAtY,KAAK,KAAK,IAAAuY,EACPhV,KAAKiO,iBAAkB,EAEvBjO,KAAKwT,iBAA+B,QAAfwB,EAAAhV,KAAKqO,kBAAU,IAAA2G,GAAc,QAAdA,EAAfA,EAAiB7K,oBAAY,IAAA6K,OAAA,EAA7BA,EAA+BnN,gBAAiB,IAErE7H,KAAKiV,OAAO,mEAAqE7R,IAC7EpD,KAAK6O,2BAA6BzL,GACnC,CAAE8R,WAAW,IAEhBlV,KAAKiV,OAAO,iCAAmC7R,KAC/B,IAARA,IAAcpD,KAAK+S,qBAAsB,IAC9C,CAAEmC,WAAW,IAEhBlV,KAAKiV,OAAO,iCAAmC7R,KAC/B,IAARA,IAAcpD,KAAKgK,qBAAsB,IAC9C,CAAEkL,WAAW,IAEhBlV,KAAKiV,OAAO,oCAAsC7R,KAClC,IAARA,IAAcpD,KAAKiK,wBAAyB,IACjD,CAAEiL,WAAW,IAEhBlV,KAAKiV,OAAO,gCAAkC7R,KAC9B,IAARA,IAAcpD,KAAKkK,oBAAqB,IAC7C,CAAEgL,WAAW,IAEhBlV,KAAKiV,OAAO,4DAA8D7R,IACtEpD,KAAKkO,cAAgB9K,GACtB,CAAE8R,WAAW,IAEhBha,SAASyX,iBAAiB,QAAS3S,KAAKkU,eCrImT,KCQvW,I,UAAY,eACd,GACAzG,EACAsB,GACA,EACA,KACA,KACA,OAIa,M,QCPXoG,OAAY,CACRlG,WACAmG,IAAK,qFACLC,aAAc,CAAC,IAAIC,QACnBC,iBAAkB,KAI1BtG,OAAIuG,OAAOC,eAAgB,EAC3BxG,OAAIyG,IAAIC,QAER,MAAMC,GAAO,IAAID,OAAQ,CACrBE,SAAU,CACNC,KAAIC,KAAIC,KAAIC,MAEhBhC,OAAQiC,KAAKC,iBAAiBC,kBAAkBnC,OAAO1U,MAAM,EAAG,IAC7D2N,UAAUmJ,SAAS9W,MAAM,EAAG,KAGnC,IAAI0P,OAAI,CACJ2G,QACAnI,OAAS6I,GAAMA,EAAEC,MAClBC,OAAO,S","file":"js/app.80cf4eb3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0,\n \t\t\"a-s\": 0,\n \t\t\"v-s\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0,\n \t\t\"a-s\": 0,\n \t\t\"v-s\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"p-h\":\"p-h\"}[chunkId]||chunkId) + \".\" + {\"p-h\":\"643cb52d\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"p-h\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"p-h\":\"p-h\"}[chunkId]||chunkId) + \".\" + {\"p-h\":\"d0c029fe\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/client/murapol/zielony-zurawiniec/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","let id = 1;\n\nexport default function* idGenerator() {\n while (true) {\n yield id;\n id += 1;\n }\n}\n","import { LoadingData } from '@/models/viewer.model';\nimport idGenerator from '@/helpers/idGenerator';\n\nImage.prototype.loadImage = function loadImage(\n viewerService: ViewerService,\n url: string,\n id: number,\n defaultView: boolean,\n) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const thisImg = this;\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onload = function onload(e) {\n const target = e.target as XMLHttpRequest;\n\n if (target.status !== 200) viewerService.setLoadingViewError(true);\n\n const blob = new Blob([this.response]);\n thisImg.src = window.URL.createObjectURL(blob);\n\n if (defaultView) {\n viewerService.setDefaultViewLoadingFinished();\n viewerService.loadOtherViews();\n }\n\n viewerService.setLoadedView(id);\n\n viewerService.loadingData.imagesLoadedCount += 1;\n };\n\n if (defaultView) {\n xhr.onprogress = function onprogress(e: ProgressEvent) {\n viewerService.setDefaultViewLoadingProgress(Math.ceil((e.loaded / e.total) * 100));\n };\n xhr.onloadstart = function onloadstart() {\n viewerService.setDefaultViewLoadingProgress(0);\n };\n }\n\n xhr.onerror = function onerror() {\n viewerService.setLoadingViewError(true);\n };\n xhr.send();\n};\n\nclass ViewerService {\n loadingData: LoadingData = {\n defaultView: {\n started: false,\n finished: false,\n loadingProgress: 0,\n },\n imagesToLoadCount: 0,\n imagesLoadedCount: 0,\n images: [],\n };\n\n error: boolean;\n\n sources: Array;\n\n constructor(sources: Array) {\n this.error = false;\n this.sources = sources;\n this.initImages();\n this.loadDefaultView();\n }\n\n public setActiveView(id: number) {\n this.loadingData.images.forEach((view) => {\n view.active = view.id === id;\n });\n }\n\n private initImages() {\n const getId = idGenerator();\n\n this.sources.forEach((_, index) => {\n const img = new Image();\n this.loadingData.images.push({\n active: index === 0,\n image: img,\n loaded: false,\n id: getId.next().value as number,\n texture: null,\n });\n this.loadingData.imagesToLoadCount += 1;\n });\n }\n\n private loadDefaultView() {\n const source = this.sources[0];\n const { image, id } = this.loadingData.images[0];\n\n this.setDefaultViewLoadingStarted();\n\n // @ts-ignore\n image.loadImage(this, source, id, true);\n }\n\n public loadOtherViews() {\n for (let i = 1; i < this.sources.length; i += 1) {\n const source = this.sources[i];\n const { image, id } = this.loadingData.images[i];\n // @ts-ignore\n image.loadImage(this, source, id, false);\n }\n }\n\n private setDefaultViewLoadingStarted() {\n this.loadingData.defaultView.started = true;\n }\n\n public setViewTexture(id: number, texture: Record) {\n const matched = this.loadingData.images.find((el) => el.id === id);\n\n if (matched) {\n matched.texture = texture;\n }\n }\n\n public setDefaultViewLoadingProgress(val: number) {\n this.loadingData.defaultView.loadingProgress = val;\n }\n\n public setDefaultViewLoadingFinished() {\n this.loadingData.defaultView.finished = true;\n }\n\n public setLoadedView(id: number) {\n const matched = this.loadingData.images.find((el) => el.id === id);\n\n if (matched) matched.loaded = true;\n }\n\n public setLoadingViewError(state: boolean) {\n this.error = state;\n }\n\n public getDefaultViewLoadingProgress() {\n return this.loadingData.defaultView.loadingProgress;\n }\n\n public getActiveViewPhoto() {\n const activeRoom = this.loadingData.images.find((view) => view.active);\n return activeRoom?.image.src;\n }\n\n public getActiveView() {\n return this.loadingData.images.find((view) => view.active);\n }\n\n public getViews() {\n return this.loadingData.images;\n }\n}\n\nexport default ViewerService;\n","module.exports = __webpack_public_path__ + \"img/google_chrome.712c0a31.svg\";","module.exports = __webpack_public_path__ + \"img/opera.89d0a447.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=style&index=0&id=29dfe4d2&prod&lang=sass&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=style&index=0&id=8ca81cbc&prod&lang=scss&scoped=true\"","import { NotSupportedConfig } from '@/models/supported-browsers.model';\nimport {\n browserName, browserVersion, osName, isMobile,\n} from '@/helpers/mobile-device-detect';\n\nconst _detectWebpSuppot = () => {\n const browser = browserName.toLowerCase();\n const version = Number(browserVersion.split('.')[0]);\n if (browser === 'safari' && version >= 16) return true;\n return document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') === 0;\n};\n\nexport const isWebpSupported = _detectWebpSuppot();\nexport const getImageExtension = (hasWebpImages: boolean) => (isWebpSupported && hasWebpImages ? '.webp' : '.jpg');\n\nexport default function checkBrowserSupport() {\n const browser = browserName.toLowerCase();\n const version = Number(browserVersion.split('.')[0]);\n const os = osName.toLowerCase();\n\n const notSupportedDesktop: NotSupportedConfig = {\n chrome: { below: 55 },\n opera: { below: 42 },\n firefox: { below: 52 },\n safari: { below: 10 },\n edge: { fullySupported: true },\n yandex: { notSupported: true },\n ie: { notSupported: true },\n };\n\n const notSupportedMobile: NotSupportedConfig = {\n ios: { below: 10 },\n android: { below: 4 },\n };\n\n const rules = isMobile ? notSupportedMobile[os] : notSupportedDesktop[browser];\n\n if (!rules) return true;\n if (rules.notSupported) return false;\n if (rules.fullySupported) return true;\n if (Number.isNaN(version)) return true;\n if (rules.below != null && version < rules.below) return false;\n return true;\n}\n","module.exports = __webpack_public_path__ + \"img/logo-yslab.08a9501b.svg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=style&index=0&id=58e81543&prod&lang=sass&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=style&index=0&id=63be6614&prod&lang=sass&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=style&index=0&id=3dbf993c&prod&lang=sass&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=2c446ea0&prod&lang=sass\"","const ver = process.env.BUILD_DATE;\n\nexport const verQuery = `v=${ver}`;\nexport default ver;\n","import { Apartment } from '@/models/apartment.model';\nimport { ViewsInfo } from '@/models/views-info.model';\n\nclass ApartmentService {\n apartment: Apartment = {\n internalNumber: '',\n name: '',\n mappingName: '',\n id: 0,\n symbol: '',\n numberOfViews: 1,\n };\n\n public setData(apartment: Apartment) {\n this.apartment = apartment;\n }\n\n public setNumberOfViewsFromViewsInfo(viewsInfo: ViewsInfo) {\n const matched = viewsInfo.views\n .find((view) => view.MappingName === this.apartment.mappingName);\n\n this.apartment.numberOfViews = matched?.WindowViews || 1;\n }\n\n public get isDefined() {\n return !!this.apartment;\n }\n}\n\nexport default ApartmentService;\n","import { RouteParams } from '@/models/route-service.model';\n\nclass RouteService {\n routeParams!: RouteParams;\n\n constructor() {\n this.setRouteParams();\n }\n\n private setRouteParams() {\n const routeParams = window.location.pathname\n .split('/')\n .filter((routeParam) => routeParam);\n const search = window.location.search.split('?')[1];\n const stringObjectParams = search\n ? decodeURI(search).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"')\n : null;\n let queryParams;\n\n if (stringObjectParams) {\n queryParams = JSON.parse(`{\"${stringObjectParams}\"}`);\n }\n\n this.routeParams = {\n clientId: routeParams[0],\n investmentHash: routeParams[1],\n apartmentName: queryParams?.number,\n wasAutoRefreshed: queryParams?.wasAutoRefreshed === 'true',\n };\n }\n\n public get clientId() {\n return this.routeParams.clientId;\n }\n\n public get investmentHash() {\n return this.routeParams.investmentHash;\n }\n\n public get apartmentName() {\n return this.routeParams.apartmentName;\n }\n}\n\nexport default RouteService;\n","import CryptoJS from 'crypto-js';\n\nconst TOKEN_P1 = 'qxkl';\nconst TOKEN_P2 = 'xlps';\nconst TOKEN_P3 = '09ks';\n\nexport const getEncryptTimestamp = () => {\n const date = new Date();\n const localeString = date.toLocaleString('en-US', {\n timeZone: 'Asia/Singapore',\n });\n return new Date(localeString).getTime().toString();\n};\n\nexport const decryptResponseData = (response: string, timestamp: string): T => {\n // If response is already a JSON object, return it directly\n if (typeof response === 'object') {\n return response;\n }\n\n // If it's a string, try to decrypt first\n try {\n const token = `${TOKEN_P1}-${TOKEN_P2}-${TOKEN_P3}`;\n const key = `${token},${timestamp}`;\n const bytes = CryptoJS.AES.decrypt(response, key);\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\n } catch {\n // If decryption fails, treat as regular JSON\n return JSON.parse(response);\n }\n};\n","import { decryptResponseData, getEncryptTimestamp } from '@/helpers/decrypt-resimo-data';\nimport { Apartment } from '@/models/apartment.model';\n\nclass ResimoService {\n // eslint-disable-next-line class-methods-use-this\n public fetchData(apiUrl: string, token: string, apartmentName: string) {\n const timestamp = getEncryptTimestamp();\n\n return fetch(`${apiUrl}?token=${token}`, {\n headers: {\n timestamp,\n },\n })\n .then(async (encryptedResponse) => {\n const responseAsText = await encryptedResponse.text();\n const decodedData = decryptResponseData>(responseAsText, timestamp);\n\n return decodedData\n .find((apartment) => apartment.name.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n === apartmentName.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''));\n });\n }\n}\n\nexport default ResimoService;\n","import { AppConfig } from '@/models/app-service.model';\nimport { ViewsInfo } from '@/models/views-info.model';\nimport { ExtendedWindow } from '@/models/app.model';\nimport { getImageExtension } from '@/helpers/supportedBrowsers';\nimport { verQuery } from '@/helpers/assetsVersionForCache';\nimport ApartmentService from './ApartmentService';\nimport RouteService from './RouteService';\nimport ViewerService from './ViewerService';\nimport ResimoService from './ResimoService';\n\nclass AppService {\n static appConfig = (window as unknown as ExtendedWindow).__APP_CONFIG__ as AppConfig;\n\n routeService: RouteService;\n\n viewerService: ViewerService | null;\n\n apartmentService: ApartmentService;\n\n resimoService: ResimoService;\n\n resimoDataLoadError: boolean;\n\n apartmentNotFoundError: boolean;\n\n viewsInfoLoadError: boolean;\n\n constructor() {\n this.resimoDataLoadError = false;\n this.apartmentNotFoundError = false;\n this.viewsInfoLoadError = false;\n this.viewerService = null;\n this.routeService = new RouteService();\n this.apartmentService = new ApartmentService();\n this.resimoService = new ResimoService();\n }\n\n public async setupApartmentService() {\n return this.resimoService.fetchData(\n AppService.getApiEndpoint(), AppService.getApiToken(),\n this.routeService.apartmentName ? this.routeService.apartmentName : '',\n ).then((apartment) => {\n if (apartment != null) {\n this.apartmentService.setData(apartment);\n } else {\n this.apartmentNotFoundError = true;\n }\n\n AppService.fetchViewsInfo().then((response) => {\n this.apartmentService.setNumberOfViewsFromViewsInfo(response);\n\n const sources: Array = [];\n const basePath = AppService.getAssetsEndpoint();\n const { mappingName, numberOfViews } = this.apartmentService.apartment;\n\n for (let i = 1; i <= numberOfViews; i += 1) {\n sources.push(`${basePath}/${mappingName}_${i}${getImageExtension(AppService.appConfig.hasWebpImages)}?${verQuery}`);\n }\n\n this.viewerService = new ViewerService(sources);\n }).catch(() => { this.viewsInfoLoadError = true; });\n }).catch(() => {\n this.resimoDataLoadError = true;\n });\n }\n\n private static fetchViewsInfo() {\n return fetch(`${AppService.getViewsInfoPath()}?${verQuery}`)\n .then((response) => response.json() as Promise);\n }\n\n public static getAssetsEndpoint() {\n return `${this.appConfig?.endpoints.assets}/views` || '';\n }\n\n public static getViewsInfoPath() {\n return `${this.appConfig?.endpoints.assets}/ViewsInfo.json` || '';\n }\n\n public static getApiEndpoint() {\n return this.appConfig?.endpoints.api || '';\n }\n\n public static getApiToken() {\n return this.appConfig?.token || '';\n }\n}\n\nexport default AppService;\n","module.exports = __webpack_public_path__ + \"img/mozilla_firefox.cfc25568.svg\";","import { UAParser } from 'ua-parser-js';\n\nconst UA = new UAParser();\n\nconst DEVICE_TYPES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n SMART_TV: 'smarttv',\n CONSOLE: 'console',\n WEARABLE: 'wearable',\n BROWSER: undefined,\n};\n\nconst BROWSER_TYPES = {\n CHROME: 'Chrome',\n FIREFOX: 'Firefox',\n OPERA: 'Opera',\n YANDEX: 'Yandex',\n SAFARI: 'Safari',\n INTERNET_EXPLORER: 'Internet Explorer',\n EDGE: 'Edge',\n CHROMIUM: 'Chromium',\n IE: 'IE',\n MOBILE_SAFARI: 'Mobile Safari',\n EDGE_CHROMIUM: 'Edge Chromium',\n};\nconst { MOBILE } = DEVICE_TYPES;\nconst { TABLET } = DEVICE_TYPES;\n\nconst browser = UA.getBrowser();\nconst os = UA.getOS();\nconst device = UA.getDevice();\n\nconst isMobileAndTabletType = () => {\n switch (device.type) {\n case MOBILE:\n case TABLET:\n return true;\n default:\n return false;\n }\n};\n\nconst getNavigatorInstance = () => {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\n\nconst isIOS13Check = (type: string) => {\n const nav = getNavigatorInstance();\n return (\n !!nav\n && !!nav.platform\n // @ts-ignore\n && (nav.platform.indexOf(type) !== -1 || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream))\n );\n};\n\nconst getIPad13 = () => isIOS13Check('iPad');\n\nexport const isFirefox = browser.name === BROWSER_TYPES.FIREFOX;\nexport const isSafari = browser.name === BROWSER_TYPES.SAFARI\n || browser.name === BROWSER_TYPES.MOBILE_SAFARI;\nexport const isMobile = isMobileAndTabletType() || getIPad13();\nexport const browserName = browser.name || 'none';\nexport const browserVersion = browser.version || 'none';\nexport const osName = os.name || 'none';\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.classListWithUserDevice,attrs:{\"id\":\"app\"}},[(_vm.appConfigLoaded && _vm.viewPreloaded && !_vm.errorVisible && _vm.isSupported)?[_c('YslabLogo'),(_vm.appService &&\n _vm.appService.viewerService && _vm.appService.viewerService.getActiveViewPhoto())?_c('PhotoViewer',{attrs:{\"photo\":_vm.appService.viewerService.getActiveViewPhoto(),\"views\":_vm.appService.viewerService.getViews(),\"viewerService\":_vm.appService.viewerService},on:{\"onViewerReady\":(ready) => _vm.viewerIsReady = ready}}):_vm._e()]:_vm._e(),_c('RotateTooltip',{attrs:{\"initTooltip\":_vm.viewerIsReady}}),_c('Loader',{attrs:{\"hide\":_vm.appConfigLoaded && _vm.viewPreloaded && _vm.defaultImageLoaded &&\n _vm.initialViewerIsReady || _vm.errorVisible || (!_vm.isSupported && _vm.supportedBrowserChecked),\"progress\":_vm.defaultViewLoadingProgress}}),(_vm.errorVisible && _vm.isSupported)?_c('ErrorPage',{attrs:{\"configError\":_vm.configErrorVisible}}):_vm._e(),(!_vm.isSupported)?_c('NotSupportedBrowser'):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"display\":\"none\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { ExtendedWindow } from '@/models/app.model';\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'Loader',\n data() {\n return {\n loaderElement: document.querySelector('#appLoader') as HTMLDivElement,\n loaderProgressValue: document.querySelector('#appLoader .progress__value') as HTMLSpanElement,\n };\n },\n props: {\n hide: {\n type: Boolean,\n default: false,\n },\n progress: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n hide() {\n if (this.hide) {\n this.hideLoader();\n clearInterval((window as unknown as ExtendedWindow).progressDotsInterval);\n } else {\n this.showLoader();\n }\n },\n progress(v) {\n if (this.loaderProgressValue) {\n if (v === 100) this.loaderProgressValue.innerText = '99%';\n else this.loaderProgressValue.innerText = `${v}%`;\n }\n },\n },\n methods: {\n hideLoader() {\n this.loaderElement.style.display = 'none';\n },\n showLoader() {\n this.loaderElement.style.display = 'flex';\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=40a8c586\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('a',{staticClass:\"logo-wrapper\",attrs:{\"href\":\"https://www.makietainteraktywna.pl/\",\"target\":\"_blank\"}},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"@/assets/icons/logo-yslab.svg\"),\"alt\":\"YSLAB logo\",\"draggable\":\"false\"}})])\n}]\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({ name: 'YslabLogo' });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./YslabLogo.vue?vue&type=template&id=29dfe4d2&scoped=true\"\nimport script from \"./YslabLogo.vue?vue&type=script&lang=ts\"\nexport * from \"./YslabLogo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./YslabLogo.vue?vue&type=style&index=0&id=29dfe4d2&prod&lang=sass&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29dfe4d2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"error-wrapper\"},[_c('figure',{staticClass:\"error-symbol\"},[_vm._v(\"!\")]),(!_vm.configError)?[_c('h1',{staticClass:\"error-info\"},[_vm._v(_vm._s(_vm.$t('Błąd 404')))]),_c('h2',{staticClass:\"error-info-additional\"},[_vm._v(\" \"+_vm._s(_vm.$t('Nie udało się odnaleźć modelu 3D tego widoku'))+\" \")])]:[_c('h1',{staticClass:\"error-info\"},[_vm._v(_vm._s(_vm.$t('Configuration Error')))]),_c('h2',{staticClass:\"error-info-additional\"},[_vm._v(\" \"+_vm._s(_vm.$t('Configuration error description'))+\" \")]),_c('button',{staticClass:\"refresh-button\",on:{\"click\":_vm.refresh}},[_vm._v(_vm._s(_vm.$t('Refresh')))])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'ErrorPage',\n props: {\n configError: {\n type: Boolean,\n default: false,\n },\n },\n methods: {\n refresh() {\n window.location.reload();\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ErrorPage.vue?vue&type=template&id=8ca81cbc&scoped=true\"\nimport script from \"./ErrorPage.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorPage.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ErrorPage.vue?vue&type=style&index=0&id=8ca81cbc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8ca81cbc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.initTooltip && _vm.isTooltipOpen)?_c('div',{staticClass:\"rotate-tooltip\",on:{\"click\":function($event){return _vm.closeTooltip()}}},[_c('CloseIcon',{attrs:{\"lineLength\":16,\"circleCrossColor\":\"#fff\",\"circleBorderWidth\":\"0\"}}),_c('div',{staticClass:\"icon-column\"},[_c('svg',{staticClass:\"hand-icon\",attrs:{\"width\":\"72.306\",\"height\":\"87.406\",\"viewBox\":\"0 0 72.306 87.406\",\"fill\":\"current\"}},[_c('g',{attrs:{\"transform\":\"translate(-50 -36)\"}},[_c('path',{attrs:{\"d\":\"M53.848,50.293l7.421-7.421c0-.275.275-.275.275-.825a1.01,1.01,\\n 0,0,0-.275-.825l-.825-.55a.959.959,0,0,0-.55-.275c-.275,\\n 0-.55.275-.825.275l-8.8,8.8a1.374,1.374,0,0,0,0,1.649l8.8,\\n 8.8a1.374,1.374,0,0,0,1.649,0l.55-.825a1.031,1.031,0,0,0,0-1.649Z\",\"fill\":\"current\"}}),_c('path',{attrs:{\"d\":\"M111.844,108.838c-.275.275-.275.55-.275,1.1l-.825,7.421a1.773,\\n 1.773,0,0,1-1.649,1.649H85.182a1.773,1.773,0,0,\\n 1-1.649-1.649l-.55-7.146a1.429,1.429,0,0,\\n 0-.55-1.1c-1.649-2.473-9.9-14.842-7.971-21.714a6.019,6.019,0,0,\\n 1,3.3-3.573,2.448,2.448,0,0,0,1.374-2.2V54.416a4.552,4.552,0,0,\\n 1,1.374-3.3,5.071,5.071,0,0,1,3.3-1.374,4.454,4.454,0,0,1,\\n 4.673,4.673V67.334a2.463,2.463,0,0,0,2.474,2.474H92.6a5.953,5.953,\\n 0,0,1,5.222,2.749,2.488,2.488,0,0,0,2.749.825,6.051,6.051,0,0,1,\\n 2.2-.275,6.687,6.687,0,0,1,5.5,3.023,2.259,2.259,0,0,0,1.649,\\n 1.1c1.924,0,6.871.825,7.971,7.7C118.99,92.621,117.066,100.867,\\n 111.844,108.838ZM92.6,60.738v-6.6a8.363,8.363,0,0,0-3.023-6.6,9.6,\\n 9.6,0,0,0-6.047-2.2,8.469,8.469,0,0,0-8.8,8.8V80.253a10.775,\\n 10.775,0,0,0-4.673,5.772c-1.1,3.848-.275,9.07,2.749,15.392a65.341,\\n 65.341,0,0,0,5.5,9.62l.55,6.6a6.468,6.468,0,0,0,6.047,\\n 5.772H108.82a5.974,5.974,0,0,0,6.047-5.222l.825-6.872c5.772-8.795,\\n 7.7-18.141,6.047-27.211a12.9,12.9,0,0,0-5.5-9.07,13.169,13.169,\\n 0,0,0-5.5-1.924,10.294,10.294,0,0,0-8.52-4.123,6.049,6.049,0,0,\\n 0-2.2.275,9.555,9.555,0,0,0-6.047-3.3Z\",\"fill\":\"current\"}}),_c('path',{attrs:{\"d\":\"M118.166,50.842l-7.421,7.421a1.374,1.374,0,0,0,0,\\n 1.649l.549.55a1.374,1.374,0,0,0,1.649,0l8.8-8.8a1.374,1.374,0,0,0,\\n 0-1.649l-8.8-8.8a1.374,1.374,0,0,0-1.649,0l-.549.825a1.03,1.03,0,0,\\n 0,0,1.649Z\",\"fill\":\"current\"}}),_c('path',{attrs:{\"d\":\"M94.253,65.135A16.411,16.411,0,0,0,83.808,36c-9.07,0-17.041,\\n 7.421-17.041,16.492a17.88,17.88,0,0,0,7.971,14.293V61.012a13.987,\\n 13.987,0,0,1-3.573-8.521,12.094,12.094,0,1,1,24.188,0,11.638,\\n 11.638,0,0,1-3.3,8.246Z\",\"fill\":\"current\",\"opacity\":\"0.6\"}})])])]),_c('div',{staticClass:\"text-column\"},[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('Kliknij i przesuń,')))]),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('aby obracać kamerą')))])])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{staticClass:\"close-icon\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 42.5 42.5\"}},[_c('linearGradient',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"id\":\"gradient\",\"x1\":\"0\",\"y1\":\"0\",\"x2\":\"800\",\"y2\":\"0\",\"gradientUnits\":\"userSpaceOnUse\"}},[_c('stop',{attrs:{\"offset\":\"0\",\"stop-color\":\"#6299d8\"}}),_c('stop',{attrs:{\"offset\":\"0.14285714285714285\",\"stop-color\":\"#5e91cf\"}}),_c('stop',{attrs:{\"offset\":\"0.2857142857142857\",\"stop-color\":\"#5a89c6\"}}),_c('stop',{attrs:{\"offset\":\"0.42857142857142855\",\"stop-color\":\"#5680bd\"}}),_c('stop',{attrs:{\"offset\":\"0.5714285714285714\",\"stop-color\":\"#5278b4\"}}),_c('stop',{attrs:{\"offset\":\"0.7142857142857142\",\"stop-color\":\"#4d70ab\"}}),_c('stop',{attrs:{\"offset\":\"0.8571428571428571\",\"stop-color\":\"#4969a2\"}}),_c('stop',{attrs:{\"offset\":\"1\",\"stop-color\":\"#456199\"}})],1),_c('line',{staticClass:\"cls-2\",style:({\n stroke: _vm.circleCrossColor,\n strokeWidth: _vm.lineWidth,\n strokeLinecap: _vm.lineCap\n }),attrs:{\"x1\":_vm.lineOne.x1,\"y1\":_vm.lineOne.y1,\"x2\":_vm.lineOne.x2,\"y2\":_vm.lineOne.y2}}),_c('line',{staticClass:\"cls-2\",style:({\n stroke: _vm.circleCrossColor,\n strokeWidth: _vm.lineWidth,\n strokeLinecap: _vm.lineCap\n }),attrs:{\"x1\":_vm.lineTwo.x1,\"y1\":_vm.lineTwo.y1,\"x2\":_vm.lineTwo.x2,\"y2\":_vm.lineTwo.y2}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport { Line } from '@/models/math.model';\n\nexport default Vue.extend({\n name: 'CloseIcon',\n props: {\n background: {\n type: String,\n default: 'white',\n },\n circleBorderColor: {\n type: String,\n default: 'black',\n },\n circleBorderWidth: {\n type: String,\n default: '3px',\n },\n circleCrossColor: {\n type: String,\n default: 'black',\n },\n lineWidth: {\n type: String,\n default: '3px',\n },\n lineLength: {\n type: Number,\n default: 20,\n },\n lineCap: {\n type: String,\n default: 'butt',\n },\n },\n data() {\n return {\n lineOne: null as null | Line,\n lineTwo: null as null | Line,\n };\n },\n methods: {\n calcCrossSize() {\n const SVG_SIZE = 42.5;\n const LINE = this.lineLength;\n const lineOne = {\n x1: (SVG_SIZE - LINE) / 2,\n y1: (SVG_SIZE - LINE) / 2,\n x2: (SVG_SIZE - LINE) / 2 + LINE,\n y2: (SVG_SIZE - LINE) / 2 + LINE,\n };\n const lineTwo = {\n x1: (SVG_SIZE - LINE) / 2 + LINE,\n y1: (SVG_SIZE - LINE) / 2,\n x2: (SVG_SIZE - LINE) / 2,\n y2: (SVG_SIZE - LINE) / 2 + LINE,\n };\n this.lineOne = lineOne;\n this.lineTwo = lineTwo;\n },\n },\n created() {\n this.calcCrossSize();\n },\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CloseIcon.vue?vue&type=template&id=58e81543&scoped=true\"\nimport script from \"./CloseIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./CloseIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CloseIcon.vue?vue&type=style&index=0&id=58e81543&prod&lang=sass&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58e81543\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport CloseIcon from '@/components/icons/CloseIcon.vue';\n\nexport default Vue.extend({\n name: 'RotateTooltip',\n components: { CloseIcon },\n props: {\n initTooltip: {\n type: Boolean,\n required: true,\n },\n },\n data() {\n return {\n isTooltipOpen: true,\n };\n },\n methods: {\n closeTooltip() {\n this.isTooltipOpen = false;\n },\n },\n created() {\n document.addEventListener('mousedown', this.closeTooltip);\n document.addEventListener('touchstart', this.closeTooltip);\n },\n beforeDestroy() {\n document.removeEventListener('mousedown', this.closeTooltip);\n document.removeEventListener('touchstart', this.closeTooltip);\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RotateTooltip.vue?vue&type=template&id=63be6614&scoped=true\"\nimport script from \"./RotateTooltip.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateTooltip.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RotateTooltip.vue?vue&type=style&index=0&id=63be6614&prod&lang=sass&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63be6614\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"not-supported\"},[_c('div',{staticClass:\"not-supported-overlay\"}),_c('p',{staticClass:\"not-supported__heading\"},[_vm._v(_vm._s(_vm.$t('Not Supported title')))]),_c('p',{staticClass:\"not-supported__subheading\"},[_vm._v(_vm._s(_vm.$t('Not Supported description')))]),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ul',{staticClass:\"list--vertical\"},[_c('li',[_c('a',{attrs:{\"href\":\"https://www.google.pl/intl/pl/chrome/\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/google_chrome.svg\"),\"alt\":\"Google Chrome\"}})])]),_c('li',[_c('a',{attrs:{\"href\":\"https://www.mozilla.org/pl/firefox/new/#\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/mozilla_firefox.svg\"),\"alt\":\"Mozilla Firefox\"}})])]),_c('li',[_c('a',{attrs:{\"href\":\"https://www.opera.com/\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/opera.svg\"),\"alt\":\"Opera\"}})])])])\n}]\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({ name: 'NotSupportedBrowser' });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotSupportedBrowser.vue?vue&type=template&id=3dbf993c&scoped=true\"\nimport script from \"./NotSupportedBrowser.vue?vue&type=script&lang=ts\"\nexport * from \"./NotSupportedBrowser.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NotSupportedBrowser.vue?vue&type=style&index=0&id=3dbf993c&prod&lang=sass&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dbf993c\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport Loader from '@/components/Loader.vue';\nimport YslabLogo from '@/components/YslabLogo.vue';\nimport ErrorPage from '@/components/ErrorPage.vue';\nimport RotateTooltip from '@/components/RotateTooltip.vue';\nimport NotSupportedBrowser from '@/components/NotSupportedBrowser.vue';\nimport checkBrowserSupport from '@/helpers/supportedBrowsers';\nimport { osName, isMobile } from '@/helpers/mobile-device-detect';\nimport AppService from './services/AppService';\n\nexport default Vue.extend({\n name: 'App',\n data() {\n return {\n appService: null as null | AppService,\n appConfigLoaded: false,\n defaultImageLoaded: false,\n viewerIsReady: false,\n initialViewerIsReady: false,\n classListWithUserDevice: `--${osName} ${isMobile ? '--mobile' : ''}`,\n viewPreloaded: false,\n defaultViewLoadingProgress: 0,\n isSupported: false,\n supportedBrowserChecked: false,\n showUI: true,\n preloadingViewError: false,\n resimoDataLoadError: false,\n apartmentNotFoundError: false,\n viewsInfoLoadError: false,\n };\n },\n computed: {\n errorVisible(): boolean {\n return this.preloadingViewError || this.resimoDataLoadError\n || this.viewsInfoLoadError || this.apartmentNotFoundError;\n },\n configErrorVisible(): boolean {\n return this.resimoDataLoadError || this.viewsInfoLoadError;\n },\n },\n components: {\n PhotoViewer: () => import(/* webpackChunkName: \"p-h\" */ '@/components/PhotoViewer.vue'),\n Loader,\n YslabLogo,\n RotateTooltip,\n ErrorPage,\n NotSupportedBrowser,\n },\n methods: {\n async initAppService() {\n this.appService = new AppService();\n await this.appService.setupApartmentService();\n },\n updatePageTitle(apartmentSymbol: string) {\n if (apartmentSymbol) {\n document.title = `${document.title} ${apartmentSymbol}`;\n }\n },\n getLanguageFromUrl() {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const lang = urlParams.get('lang');\n if (lang) this.$i18n.locale = lang;\n },\n handleUI(e: KeyboardEvent) {\n if (e.code === 'KeyU') this.toggleUI();\n },\n toggleUI() {\n this.showUI = !this.showUI;\n let value = 'hidden';\n const HTML: HTMLElement | null = document.querySelector('html');\n if (this.showUI) value = 'visible';\n if (!this.showUI) value = 'hidden';\n if (HTML) HTML.style.setProperty('--visibility', value);\n },\n },\n watch: {\n viewerIsReady() {\n this.defaultImageLoaded = true;\n\n if (!this.initialViewerIsReady) {\n this.initialViewerIsReady = true;\n }\n },\n configErrorVisible(val) {\n if (!val) return;\n\n if (!this.appService?.routeService.routeParams.wasAutoRefreshed) {\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set('wasAutoRefreshed', 'true');\n const newUrl = `${window.location.origin}${window.location.pathname}?${searchParams.toString()}`;\n window.history.pushState({ path: newUrl }, '', newUrl);\n window.location.reload();\n }\n },\n },\n created() {\n this.isSupported = checkBrowserSupport();\n this.getLanguageFromUrl();\n },\n mounted() {\n this.supportedBrowserChecked = true;\n this.initAppService()\n .then(() => {\n this.appConfigLoaded = true;\n\n this.updatePageTitle(this.appService?.routeService?.apartmentName || '');\n\n this.$watch('appService.viewerService.loadingData.defaultView.loadingProgress', (val) => {\n this.defaultViewLoadingProgress = val;\n }, { immediate: true });\n\n this.$watch('appService.viewerService.error', (val) => {\n if (val === true) this.preloadingViewError = true;\n }, { immediate: true });\n\n this.$watch('appService.resimoDataLoadError', (val) => {\n if (val === true) this.resimoDataLoadError = true;\n }, { immediate: true });\n\n this.$watch('appService.apartmentNotFoundError', (val) => {\n if (val === true) this.apartmentNotFoundError = true;\n }, { immediate: true });\n\n this.$watch('appService.viewsInfoLoadError', (val) => {\n if (val === true) this.viewsInfoLoadError = true;\n }, { immediate: true });\n\n this.$watch('appService.viewerService.loadingData.defaultView.finished', (val) => {\n this.viewPreloaded = val;\n }, { immediate: true });\n\n document.addEventListener('keyup', this.handleUI);\n });\n },\n});\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2c446ea0\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=2c446ea0&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport 'whatwg-fetch';\nimport VueI18n from 'vue-i18n';\nimport * as Sentry from '@sentry/vue';\nimport { BrowserTracing } from '@sentry/tracing';\nimport pl from '@/trans/pl.json';\nimport en from '@/trans/en.json';\nimport fr from '@/trans/fr.json';\nimport es from '@/trans/es.json';\nimport App from './App.vue';\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n Vue,\n dsn: 'https://bb1439f705594e0e89434ef104e51bbc@o522645.ingest.sentry.io/4504876001067008',\n integrations: [new BrowserTracing()],\n tracesSampleRate: 0.1,\n });\n}\n\nVue.config.productionTip = false;\nVue.use(VueI18n);\n\nconst i18n = new VueI18n({\n messages: {\n en, pl, fr, es,\n },\n locale: Intl.DateTimeFormat().resolvedOptions().locale.slice(0, 2)\n || navigator.language.slice(0, 2),\n});\n\nnew Vue({\n i18n,\n render: (h) => h(App),\n}).$mount('#app');\n"],"sourceRoot":""}