1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[20556],{19045:(e,t,r)=>{"use strict";r.d(t,{AD:()=>d,CH:()=>p,HU:()=>s,LT:()=>l,L_:()=>i,Wg:()=>u,ZQ:()=>n,b6:()=>o,fW:()=>f,iD:()=>c,iL:()=>a});let o=Object.freeze(["esim","transport","insurance"]),n=Object.freeze({flight:Object.freeze({type:"flight",prefix:"F",productType:"flight",prodName:"flights",stepLabelKeys:["flight_step_1","flight_step_2","flight_step_addon","button_pay"],lineLabelKey:"addon_line_flight",expiredTextKey:"warning_refresh_flight",checkoutRefreshKey:"warning_refresh_flight_checkout",addonPath:"flights/addon",addonTypes:o}),hotel:Object.freeze({type:"hotel",prefix:"S",productType:"hotel",prodName:"hotels",stepLabelKeys:["hotel_select_room","hotel_passenger_info","flight_step_addon","button_pay"],lineLabelKey:"hotel",expiredTextKey:"warning_refresh_hotel",checkoutRefreshKey:"warning_refresh_hotel",addonPath:"hotels/addon",addonTypes:o}),train:Object.freeze({type:"train",prefix:"L",productType:"train",prodName:"trains",stepLabelKeys:["general_choose_mest","flight_step_2","flight_step_addon","button_pay"],lineLabelKey:"train",expiredTextKey:"warning_refresh_train",checkoutRefreshKey:"warning_refresh_flight_checkout",addonPath:"trains/addon",addonTypes:Object.freeze(["esim"]),subtitleKey:"addon_page_subtitle_train"}),trip:Object.freeze({type:"trip",prefix:"W",productType:"trip",prodName:"trip",stepLabelKeys:["travel_choose","general_contact_detail","flight_step_addon","button_pay"],lineLabelKey:"travel",expiredTextKey:"warning_refresh_travel",checkoutRefreshKey:"warning_refresh_travel",addonPath:"trip/addon",addonTypes:Object.freeze(["esim","insurance"]),subtitleKey:"addon_page_subtitle_train"})}),a=Object.values(n).map(e=>e.productType),s=2,i=3,l=e=>{let t=String(e||"").charAt(0).toUpperCase();return Object.values(n).find(e=>e.prefix===t)||null},c=e=>Object.values(n).find(t=>t.productType===e)||null,u=(e,t)=>e.stepLabelKeys.map(e=>t(e)),d=e=>(null==e?void 0:e.subtitleKey)||"addon_page_subtitle",p=e=>e?o.filter(t=>!e.addonTypes.includes(t)):[],h=["flight","hotel","train","trip","other"],f=e=>(e||[]).reduce((e,t)=>{let r=(e=>{var t;return(null==(t=c(null==e?void 0:e.anchor_type))?void 0:t.type)||"other"})(t);return{...e,[r]:e[r]+1}},Object.fromEntries(h.map(e=>[e,0])))},22596:(e,t,r)=>{"use strict";r.d(t,{A:()=>f,k:()=>d});var o=r(39210),n=r(72378),a=r(44727),s=r(86600),i=r(36117),l=r.n(i),c=r(36489),u=r(51472);let d=e=>{},p=o.A.create({baseURL:"https://api.tapatrip.com",headers:{"Content-Type":"application/json"},withCredentials:!1}),h=async()=>await u.A.getNewGuestToken();p.interceptors.request.use(async e=>{var t,r;let o=(0,a.fq)(),i=(0,a.q)("tapatrip_accessToken"),d=(null==(t=e.headers)?void 0:t.Authorization)||(null==(r=e.headers)?void 0:r.authorization),p=(d?String(d).replace(/^Bearer\s+/i,"").trim():"")||(0,a.q)("tapatrip_accessToken")||n.A.get("tapatrip_accessToken"),f=(0,a.q)("i18next");if(o&&!p&&window.localStorage){let e=localStorage.getItem("nextauth.session-token");e&&(p=e);let t=localStorage.getItem("cookie_tapatrip_accessToken");if(t&&!p)try{let e=JSON.parse(t);e.value&&e.expires>Date.now()&&(p=e.value)}catch(e){console.warn("Failed to parse stored token data:",e)}}if(p&&"undefined"!==p){let e=(0,s.s)(p);if(l().unix(e.exp).isBefore(l()()))if(e.user_id&&e.user_id>0||e.email&&null!==e.email||"access"===e.token_type&&"guest_user"!==e.username)try{await u.A.getRefreshToken()?p=await u.A.refreshAccessToken():(o||await (0,c.signOut)(),p=await h())}catch(e){console.error("Token refresh failed:",e),o||await (0,c.signOut)(),p=await h()}else p=await h()}else p=(e=>{if(!e)return!1;try{let{exp:t}=(0,s.s)(e);return!!t&&l().unix(t).isAfter(l()())}catch(e){return!1}})(i)?i:await h();return e.headers.Authorization="Bearer ".concat(p),e.headers["Accept-Language"]=f||"mn",e},e=>{var t,r;return console.error("[http request error]",{message:null==e?void 0:e.message,code:null==e?void 0:e.code,url:null==e||null==(t=e.config)?void 0:t.url,method:null==e||null==(r=e.config)?void 0:r.method}),Promise.reject(e)}),p.interceptors.response.use(e=>e,async e=>{var t;let r=e.config;if((null==(t=e.response)?void 0:t.status)===401&&!r._retry){r._retry=!0;try{let e=await u.A.refreshAccessToken();return r.headers.Authorization="Bearer ".concat(e),p(r)}catch(t){if(t.message&&t.message.includes("No current access token after 208")){let e=await h();return r.headers.Authorization="Bearer ".concat(e),p(r)}let e=await h();return r.headers.Authorization="Bearer ".concat(e),p(r)}}return Promise.reject(e)});let f=p},44727:(e,t,r)=>{"use strict";r.d(t,{M5:()=>i,fq:()=>a,q:()=>l});var o=r(72378);let n={EMONGOLIA_SUBDOMAIN:"tapa.mn",EMONGOLIA_SUBDOMAIN_WWW:"www.tapa.mn",EMONGOLIA_PARENT:"e-mongol
1ia.mn"},a=()=>{let e=window.location.hostname;try{if(window===window.parent){if(e===n.EMONGOLIA_SUBDOMAIN||e===n.EMONGOLIA_SUBDOMAIN_WWW)return window.location.pathname.includes("/emongolia");return!1}if(e===n.EMONGOLIA_SUBDOMAIN||e===n.EMONGOLIA_SUBDOMAIN_WWW)try{return window.parent.location.hostname===n.EMONGOLIA_PARENT}catch(e){if(document.referrer.includes(n.EMONGOLIA_PARENT)||window.location.pathname.includes("/emongolia"))return!0}if(document.referrer.includes(n.EMONGOLIA_PARENT))return!0;try{let t=localStorage.getItem("detected_emongolia_context");if("true"===t&&(document.referrer.includes(n.EMONGOLIA_PARENT)||(e===n.EMONGOLIA_SUBDOMAIN||e===n.EMONGOLIA_SUBDOMAIN_WWW)&&window.location.pathname.includes("/emongolia")))return!0}catch(e){}return!1}catch(t){if(console.warn("Domain detection error:",t),window!==window.parent&&(e===n.EMONGOLIA_SUBDOMAIN||e===n.EMONGOLIA_SUBDOMAIN_WWW)&&window.location.pathname.includes("/emongolia"))return!0;return!1}},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=a();return{secure:!0,sameSite:t?"none":"lax",path:"/",...t&&{partitioned:!0},...e}},i=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=s(r);try{if(o.A.set(e,t,n),o.A.get(e)===t)return{success:!0,method:"cookie"};if(window.localStorage)return localStorage.setItem("cookie_".concat(e),JSON.stringify({value:t,expires:r.expires?Date.now()+24*r.expires*36e5:null,path:r.path||"/"})),{success:!0,method:"localStorage"};if(window.sessionStorage)return sessionStorage.setItem("cookie_".concat(e),JSON.stringify({value:t,path:r.path||"/"})),{success:!0,method:"sessionStorage"};return{success:!1,method:"none"}}catch(e){return console.warn("Cookie setting failed:",e),{success:!1,method:"error",error:e}}},l=e=>{try{let t=o.A.get(e);if(t)return t;if("mini_app"===e&&a()){let t="emongolia";return window.localStorage&&(localStorage.setItem("cookie_".concat(e),JSON.stringify({value:t,path:"/",autoSet:!0,timestamp:Date.now(),detectedBy:"isInEmongolia"})),localStorage.setItem("detected_emongolia_context","true")),t}if(window.localStorage){let t=localStorage.getItem("cookie_".concat(e));if(t){let r=JSON.parse(t);if(r.expires&&Date.now()>r.expires)return localStorage.removeItem("cookie_".concat(e)),null;return r.value}}if(window.sessionStorage){let t=sessionStorage.getItem("cookie_".concat(e));if(t)return JSON.parse(t).value}return null}catch(e){return console.warn("Cookie getting failed:",e),null}}},51472:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var o=r(39210),n=r(44727),a=r(36489),s=r(72378),i=r(86600),l=r(36117),c=r.n(l);class u{async getRefreshToken(){try{let e=await (0,a.getSession)();if(null==e?void 0:e.refresh_token)return e.refresh_token}catch(e){console.warn("Failed to get session:",e)}return(0,n.q)("tapatrip_refreshToken")||s.A.get("tapatrip_refreshToken")}async refreshAccessToken(){if(this.isRefreshing&&this.refreshPromise)return this.refreshPromise;this.isRefreshing=!0,this.refreshPromise=this._performRefresh();try{return await this.refreshPromise}finally{this.isRefreshing=!1,this.refreshPromise=null}}async _performRefresh(){var e,t,r;try{let r=await this.getRefreshToken();if(!r)throw Error("No refresh token available");let a=await o.A.post("".concat("https://api.tapatrip.com","/api/account/v2/refresh/"),{refresh:r});if((null==a||null==(e=a.data)?void 0:e.status_code)===200){let e=null==a||null==(t=a.data)?void 0:t.result;return(null==e?void 0:e.token)&&(0,n.M5)("tapatrip_accessToken",e.token,{expires:1}),(null==e?void 0:e.refresh_token)&&(0,n.M5)("tapatrip_refreshToken",e.refresh_token,{expires:7}),null==e?void 0:e.token}if((null==a?void 0:a.status)===208){let e=(0,n.q)("tapatrip_accessToken")||s.A.get("tapatrip_accessToken");if(e)try{let t=(0,i.s)(e);if(!c().unix(t.exp).isBefore(c()()))return e;throw Error("Current cookie token expired after 208 response")}catch(e){throw Error("Invalid current cookie token after 208 response")}throw Error("No current access token after 208 response")}throw Error("Failed to refresh token")}catch(e){if((null==(r=e.response)?void 0:r.status)===208){let e=(0,n.q)("tapatrip_accessToken")||s.A.get("tapatrip_accessToken");if(e)try{let t=(0,i.s)(e);if(!c().unix(t.exp).isBefore(c()()))return e;throw Error("Current cookie token expired after 208 response")}catch(e){throw Error("Invalid current cookie token after 208 response")}throw Error("No current access token after 208 response")}throw console.error("Error refreshing token:",e),this.clearTokens(),e}}clearTokens(){s.A.remove("tapatrip_accessToken"),s.A.remove("tapatrip_refreshToken")}async getNewGuestToken(){var e,t;let r=await o.A.post("".concat("https://api.tapatrip.com","/api/account/guest_jwt/"),{}),a=null==r||null==(t=r.data)||null==(e=t.result)?void 0:e.JWToken;return(0,n.M5)("tapatrip_accessToken",a,{expires:1}),a}constructor(){this.refreshPromise=null,this.isRefreshing=!1}}let d=new u},79157:(e,t,r)=>{"use strict";r.d(t,{B:()=>u});var o=r(30338),n=r(12115),a=r(18984),s=r(44386),i=r(91708),l=r(83591),c=r(44727);
1function u(e,t,r){let[o,s]=(0,n.useState)(()=>(0,c.q)(l.Ok)),i=(0,a.Bd)(t,r),{i18n:u}=i;{let[t,r]=(0,n.useState)(u.resolvedLanguage);(0,n.useEffect)(()=>{t!==u.resolvedLanguage&&r(u.resolvedLanguage)},[t,u.resolvedLanguage]),(0,n.useEffect)(()=>{e&&u.resolvedLanguage!==e&&u.changeLanguage(e)},[e,u]),(0,n.useEffect)(()=>{if(o===e)return;let t=(0,c.M5)(l.Ok,e,{expires:365});t.success?(s(e),console.log("\uD83C\uDF10 Language cookie set via ".concat(t.method,":"),e)):console.warn("â ï¸ Failed to set language cookie:",t)},[e,o])}return i}o.Ay.use(a.r9).use(i.A).use((0,s.A)((e,t)=>r(81568)("./".concat(e,"/").concat(t,".json")))).init({...(0,l.$E)(),lng:void 0,detection:{order:["path","htmlTag","cookie","navigator"]},preload:[]})},81568:(e,t,r)=>{var o={"./en/common.json":[15553,15553],"./jp/common.json":[68010,68010],"./ko/common.json":[87022,87022],"./mn/common.json":[91257,91257],"./ru/common.json":[51411,51411],"./zh/common.json":[30642,30642]};function n(e){if(!r.o(o,e))return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=o[e],n=t[0];return r.e(t[1]).then(()=>r.t(n,19))}n.keys=()=>Object.keys(o),n.id=81568,e.exports=n},83591:(e,t,r)=>{"use strict";r.d(t,{$E:()=>s,Ok:()=>a,eo:()=>o});let o=["mn","en","zh","ru","ko","jp"],n="translation",a="i18next";function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mn",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n;return{supportedLngs:o,fallbackLng:"mn",lng:e,fallbackNS:n,defaultNS:n,ns:t}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.