{"version":3,"file":"static/chunks/1054-e99428baa9184f2f.js","mappings":"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EA,KACA,CACA,CAAG,CACH,EC/EA,KACA,KAeA,WACA,EACA,MAEA,uBACA,CASA,WACA,EACA,MAEA,uBACA,CAKA,cACA,sBACA,CAMA,cACA,qBACA,CAMA,WACA,GAEA,qBACA,CAOA,WACA,EACA,GASA,OAPA,QAEA,OACA,SAmGA,GACA,QAGA,cACA,wBAGE,EACF,EACA,GAFS,CAGT,KAA8B,UAAS,CACvC,CAAK,CACL,EAEA,EAlHA,GACA,SAGA,OACA,CAGA,gBACA,WAEA,eAIA,eACA,IACA,IACA,CAAM,SACA,GAAW,EACT,IAAM,OACd;AAAA,QAAoE,KAAK;AAAA,QAAU,QAAe,UAAU;AAAA,QAC5G,EAEA,CAEA,CAEA,aACA,OAAS,EACT,GADc,CAEd,SACA,QACA,CAAO,EACP,GACA,CAAK,CACL,CAAM,oBAAwB,CAE9B,CAEA,aACA,OAAS,EAAK,IACd,SACA,QACA,CAAK,EACL,GACA,CAAG,CACH,CAEA,aACA,OAAS,EAAK,IACd,SACA,QACA,CAAK,EACL,GACA,CAAG,CACH,CAEA,aACA,OAAS,EAAM,IACf,UACA,QACA,CAAK,EACL,GACA,CAAG,CACH,CAEA,aACA,OAAS,EAAK,IACd,SACA,QACA,CAAK,EACL,GACA,CAAG,CACH,CAEA,WACA,EACA,EACA,EACA,EACA,UAIA,EAWA,OAbA,QAIA,OACA,MACA,SAGA,GACA,GAAe,SAAuB,EAGtC,kBACA,CAmBA,iBACA,cACA,YACA,CAGA,YACA,EACA,EACA,GAEA,WACA,GACA,IAGA,WAEA,MACA,OAGA,kBACA,SACA,aAEA,CACA,gDCjOA,uBAGA,wBACA,SAAmB,eACnB,gDAIA,iDACA,eACA,CACA,8BCZA,qCAA6C,CAC7C,QACA,CAAC,EAAC,CAYF,SANA,KACA,0CACA,cACA,SACK,CACL,EACA,GACA,6BACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,gCACA,QACA,CACA,CAAC,EAED,aACA,sDACA,GAAkB,KAAwC,UAAzB,EAAE,OAAuB,CAA8B,EAExF,EAEA,SAJwD,CAKxD,WACA,iCACA,6CACA,QA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OACA,IACA,2BACA,KAEA,CACA,gBACA,OACA,MACA,OACA,YACA,cACA,QACA,OACA,KACA,QACA,OACA,UACA,iBACA,uBACA,KACA,CACA,CACA,QACA,CACA,gBACA,8BACA,yBAGA,GADA,cAAoB,QACpB,kEACA,IAkIA,EAlIA,cACE,cAAoB,YACtB,cACA,CACA,EAAE,IACF,WACA,UACE,cAAoB,YACtB,gBACA,CACA,CACA,SACA,KACA,IACA,OACA,IACA,KACA,KACA,KACA,KACA,gDACA,oDACA,qDACA,cACA,eAAqC,UAAgB,CACrD,GADqD,OACrD,qBACA,kBACA,KACA,6BACA,YACA,MACA,MACA,CACA,CACA,cAGA,GAFA,KACA,KACA,IACA,eACA,KACA,GACA,eACA,CACA,UACA,WACA,kBACA,EACA,CACA,SACA,KACA,IACA,KACA,aACA,YAEA,sBAGA,CACA,aAEA,GADA,KACA,GACA,uBACA,IACA,SACA,IACA,GACA,KACA,GACA,MACA,KACA,MACA,KACA,QACA,IACA,GAEA,IADA,KAEA,OACA,UACA,CACA,2BAGA,CACA,iBACA,yBACA,gBACA,kBACA,QACA,qBAGA,GADA,mBACA,sBACA,aACA,KACA,KACA,OACA,CACA,eACA,IACA,EAAgB,SAChB,MACA,CACA,qBACA,CACA,UACA,WACA,EACA,EACA,eAEA,IACA,CACA,CACA,OACA,EAAU,OACV,OACA,IACA,IACA,CACA,QACA,CACA,EAAM,OACN,EACA,IACA,IACA,CACA,CACA,CAEA,wBACA,aACA,IACA,OACA,uCACA,yBACA,SACA,qBACA,aACA,mBACA,CACA,EAAE,IACF,aACA,MACA,EACA,gBACA,eACA,mBACA,CAAG,GACH,CACA,uBAA6B,GAC7B,4BAAkC,GAClC,sBAA4B,GAC5B,yBAA+B,GAC/B,oBAA0B,MAC1B,+BAAqC,GACrC,yBAA+B,aAC/B,eACA,EACA,yBAA+B,aAC/B,WACA,cACA,mHAEA,yBACA,EACA,kCAAwC,YACxC,QACA,EACA,eAAqB,aACrB,UACA,OACA,OACA,OACA,QACA,KACA,SACA,GACA,CACA,QACA,IACA,IACA,UACA,EAAI,OACJ,GACA,CACA,EACA,uBAA6B,YAC7B,IACA,EACA,0BAAgC,eAChC,UACA,OACA,OACA,OACA,OACA,OACA,KACA,SACA,GACA,CACA,QACA,IACA,IACA,UACA,EAAI,OACJ,GACA,CACA,EACA,2BAAiC,UACjC,EACA,EACA,GAEA,uBAQA,OALA,EAFA,8BAGA,gBAFA,aAEA,IACA,IACA,EAEA,GACA,OACA,SACA,KACA,QACA,MACA,KACA,QACA,aACA,KACA,QACA,MACA,KACA,SACA,KACA,CA0BA,OAzBA,MACA,GACA,OACA,WACA,gBACA,YACA,iBACA,YACA,EACA,IACA,eACA,OACA,aACA,UACA,GACA,YACA,KACA,WACA,eACA,OACA,GACA,GACA,MACA,GACA,aACA,CACA,EACA,sBAA4B,GAC5B,uBAA6B,aAC7B,QACA,kBACA,QACA,IACA,IACA,8BACA,EAAM,OACN,GACA,CACA,CACA,gIC3TgBwH,qCAAAA,KAxBhB,IAAMC,EAA4C,CAChDC,cAAe,iBACfC,UAAW,QACXC,QAAS,MACTC,UAAW,aACXC,SAAU,UACZ,EAEMC,EAAc,CAClB,SACA,UACA,0BACA,WACA,UACA,WACA,cACD,CAED,SAASC,EACPC,CAAY,EAEZ,MAAO,CAAC,QAAS,QAAS,WAAW,CAACphB,QAAQ,CAACohB,EACjD,CAEO,SAAST,EAAuBlG,CAAe,CAAEhT,CAAa,EACnE,IAAK,GAAM,CAACO,EAAGhQ,EAAM,GAAIwD,OAAO2D,OAAO,CAACsI,GAAQ,CAC9C,GAAI,CAACA,EAAM3L,cAAc,CAACkM,IACtBkZ,EAAYlhB,QAAQ,CAACgI,IAGX1I,SAAVtH,EAJ0B,SAQ9B,IAAMopB,EAAOR,CAAiB,CAAC5Y,EAAE,EAAIA,EAAEpR,WAAW,GAE/B,WAAf6jB,EAAG4G,OAAO,EAAiBF,EAAyBC,GAGpD3G,CAAwB,CAAC2G,EAAK,CAAG,CAAC,CAACppB,EAErCyiB,EAAGE,YAAY,CAACyG,EAAM9C,OAAOtmB,KAM7BA,CAAU,OACM,WA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A,OAbA,eACA,aACA,UACA,kBACA,eACA,eACA,EAEA,eACM,QAAa,qBAAkB,EAAM,EAG3C,6BACA,KAMA,UACA,kBAMA,oBACA,4BAMA,qBAEA,OADA,uBACA,IACA,CAKA,WAMA,OALA,YACA,cACA,IACA,EACA,6BACA,IACA,CAKA,YAGA,OAFA,YAAmB,qBACnB,6BACA,KAMA,aAMA,OALA,aACA,eACA,MAEA,6BACA,KAMA,cAGA,OAFA,aAAoB,sBACpB,6BACA,KAMA,kBAGA,OAFA,oBACA,6BACA,KAMA,SAEA,EACA,CAGA,OAFA,cACA,6BACA,KAMA,sBAGA,OAFA,wBACA,6BACA,IACA,CAKA,gBASA,OARA,SAEA,yBAEA,oBAGA,6BACA,KAQA,WAGA,OAFA,aACA,6BACA,KAOA,UACA,kBAOA,iBAGA,iBAIA,wBAMA,cAOA,OANA,EAGA,gBAFA,qBAIA,6BACA,KAMA,aACA,qBAMA,UACA,MACA,YAGA,qCAEA,mBACA,sBAEA,aAAqB,yBACrB,aAAsB,2BACtB,gBAAyB,iCACzB,oCACA,oBAEA,SACA,sBAEA,sBACA,kCAEA,uBACA,6CAEA,sBACA,+CAEA,EAAM,GAAS,QAAa,MAE5B,YAAqB,iBADrB,EACqB,MACrB,aAAsB,2BACtB,gBAAyB,iCACzB,QACA,oBAEA,SACA,sBAEA,eACA,kCAEA,kBACA,wCAEA,sBACA,iDAIA,YAMA,QAeA,OAdA,qBACA,cACA,eACA,cACA,kBACA,mBACA,6BACA,yBACA,4BACA,kBACA,qBACA,6BACA,qBACA,6BACA,KAMA,mBACA,2BA/YA,IAkZA,QACA,YAGA,OACA,UAAiB,QAAsB,GACvC,MAGA,oBAMA,OALA,UACA,2CAEA,6BAEA,KAMA,oBACA,qDAMA,mBAGA,OAFA,qBACA,6BACA,KAMA,iBAEA,OADA,0BACA,IACA,CAMA,iBAGA,WAFA,gBAEA,YAMA,mBAEA,OADA,qBACA,KAIA,eACA,IACA,eACA,eACA,YACA,QACA,SACA,QACA,SACA,eACA,mBACA,sBACA,yBACA,mBACA,QACA,CAAM,KAEN,OACA,cACA,cACA,WACA,OACA,QACA,OACA,QACA,kBACA,kBACA,qBACA,wBACA,kBACA,MACA,CACA,CAUA,aACA,EACA,IAAa,CACb,KACA,CACI,QAAqB,wBAGzB,UACA,KAES,QAAwB,MACjC,sBACA,CAEA,MAAW,QAAqB,OAChC,CAKA,4BAGA,OAFA,6BAAoC,qCAEpC,KAMA,yBAEA,OADA,2BACA,KAMA,wBACA,gCAUA,sBACA,+BAA4D,QAAK,GAEjE,iBAEA,OADM,IAAM,qEACZ,EAGA,yCAaA,OAXA,8BACA,EACA,CACA,oBACA,qBACA,KACA,UACA,CAAO,CACP,MAGA,CACA,CAUA,sBACA,+BAA4D,QAAK,GAEjE,iBAEA,OADM,IAAM,mEACZ,EAGA,eAcA,OAZA,4BACA,EACA,EACA,CACA,oBACA,qBACA,KACA,UACA,CAAO,CACP,MAGA,CACA,CASA,kBACA,+BAA4D,QAAK,UAEjE,aAKA,6BAAuC,gBAA4B,OAJ7D,IAAM,iEACZ,CAMA,CAKA,wBAIA,2BACA,4BACA,iCACA,OACA,CAAO,EACP,4BAEA,CACA,CAMA,aAKA,OAJA,GACA,UAGA,CACA,CAWA,aACA,OACA,QAAa,QAAK,GAClB,OAAY,QAAK,gBACjB,CACA,sJCjqBA,mBACA,WACA,CAOA,gBACA,WACA,mBASA,WACA,EACA,GAIA,aAFA,KAEA,CACA,gBAGA,GAFA,OAGA,QAEA,CAEA,QACA,CAYA,gBAEA,MADA,qBACA,SACA,CAKA,gBACA,WAGA,oBAEA,cACA,mBACA,oCAEA,mCAEA,CAEA,gBACA,WAIA,GAFA;AAAA,EAAgB,4BAA4B;AAAA,GAE5C,4CACA,SACM,CACN,MACA,IACA,mBACA,CAAQ,SAIR,iBAA4C,QAAS,IACrD,CACA,IACA,CACA,CAEA,oCAGA,GAGA,qBAFA,+BAGA,IACA,eACA,WACA,YAGA,QACA,EAdA,EACA,CA2DA,WACA,EACA,GAEA,iDAEA,OACI,QAAiB,EACrB,kBACA,gBACA,oBACA,2BACA,iCACK,EACL,EACA,CAGA,OACA,kBACA,mBACA,wBACA,0BACA,cACA,yBACA,sBACA,kBACA,sBACA,0BACA,mBACA,oBACA,YACA,sBACA,EAKA,cACA,YAIA,cACA,cACA,OAEA,SAAU,aAAgB,MAC1B,YAAW,YACX,CAMA,WACA,EACA,EACA,EACA,GAEA,8EACA,OACA,oBACA,iCACA,OAAqB,MAAc,CACnC,YAA6B,IAAK,QAAW,IAAO,CACpD,OACA,MAAa,QAAiB,EAAG,KAA2B,CAC5D,CAAK,CAEL,gCC5NA,MAAY,EAAQ,KAA0B,EAC9C,UADmB,CACnB,GACA,oCACA,uBACA,+CACA,YAAoB,mBAAsB,IAC1C,8CACA,CACA,MACA,yBACA,EACA,GAAO,QACP,EACA,gHAEA,CACA,cACA,OACA,GACA,IACA,aACA,mBACA,CAAO,CACP,IACA,IACA,IACA,IACA,IACA,IACA,GACA,CAAK,CACL,IACA,gBACA,CAAG,CACH,6BAYA,EACA,kEACA,sBACA,cACA,mBACA,iCACA,CACA,8DAAoE,CACpE,EACA,cAAoB,eACpB,MACA,4DACA,GACA,IACA,gBACA,gBACA,gBAEA,oBACA,OA9BA,gBACA,MACA,4DACA,OACA,WACA,sBACA,WACA,gBACA,gBACA,CACA,EAoBA,WACA,EACA,WAAiB,aACjB,UACA,MACA,IACA,8BACA,EAAI,OACJ,MACA,MACA,OACA,CACA,EACA,YAAkB,eAClB,oBACA,CAEA,EAFA,EAGA,gBAFA,kBAGA,sBACA,EACA,GACA,OACA,KACA,WACA,EACA,aAAmB,aACnB,4BACA,EACA,SAAe,eACf,iDACA,WACA,qBACA,EACA,gDACA,EACA,iCACA,gBACA,MACA,aACA,MACA,EACA,kDACA,CACA,cACA,YACA,eACA,GAEA,cACA,SACA,cACA,YACA,gBACA,6CACA,CAAS,CACT,CACA,EACA,eAAqB,eACrB,uBACA,gCACA,iCACA,QACA,KACA,eAEA,SACA,cACA,UACA,gDACA,6CACA,CAAS,CACT,OACM,kBACN,EACA,SAAe,eACf,GACA,oBACA,oBACA,UACA,sBACA,CACA,WACA,qBACA,WACA,cACA,UACA,gDACA,8CACA,2CACA,cACA,iCACA,gBACA,OACA,eACA,kCACA,iBACA,OACA,YACA,oDACA,WACA,kDACA,6CACA,CAAK,CACL,CACA,EACA,eAAqB,eACrB,uBACA,MACA,4BACA,SACA,GACA,uCACA,KACA,OACA,cACA,UACA,+CACA,CAAO,CACP,EAAM,aACN,EACA,kBAAwB,aACxB,QACA,EACA,yBAA+B,eAC/B,WACA,EACA,cAAoB,iBACpB,8BACA,EACA,eAAqB,YACrB,oCACA,EACA,SAAe,uKCtLFK,qCAAAA,aA1BW,WAOjB,MAmBMA,EAA6B,CACxCzzB,EACA6jB,KAEA,IAAM6P,EAAiBnyB,CAAAA,EAAAA,EAAAA,OAAAA,EACrB,CACEsiB,CAAO,CAAC3vB,EAAAA,2BAA2B,CAAC,EAAI,IACxC2vB,CAAO,CAAC1vB,EAAAA,mCAAmC,CAAC,EAAI,IAChD0vB,CAAO,CAACxvB,EAAAA,6BAA6B,CAAC,CACtCwvB,CAAO,CAACtvB,EAAAA,QAAQ,CAAC,CAClB,CAACuQ,IAAI,CAAC,MAcH6uB,EAAiB3zB,EAAIE,MAAM,CAI3B0zB,EAAQC,CAHGF,EAAethC,UAAU,CAAC,KACvCshC,EAAe39B,KAAK,CAAC,GACrB29B,CAAAA,EACmBv3B,KAAK,CAAC,KAAK03B,MAAM,CAAC3O,SACzCyO,EAAMz5B,IAAI,CAAI7F,EAAAA,oBAAoB,CAAC,IAAGo/B,GACtC1zB,EAAIE,MAAM,CAAG0zB,EAAM58B,MAAM,CAAI,IAAG48B,EAAM9uB,IAAI,CAAC,KAAS,EACtD,uPClDA,cAGA,2MCuBaivB,gBAAgB,mBAAhBA,GAUAC,cAAc,mBAAdA,GALAC,gBAAgB,mBAAhBA,aAjCN,OAIDC,EAAY,CAChB,CAACC,EAAAA,sBAAsB,CAAC,CAAE,SAAU,CAInC,EAJmC,aAClCzwB,CAAQ,CAGT,CAJmC,EAKlC,OAAOA,CACT,EACA,CAAC0wB,EAAAA,sBAAsB,CAAC,CAAE,SAAU,CAInC,EAJmC,aAClC1wB,CAAQ,CAGT,CAJmC,EAKlC,OAAOA,CACT,EACA,CAAC2wB,EAAAA,oBAAoB,CAAC,CAAE,SAAU,CAIjC,EAJiC,IAChC3wB,UAAQ,CAGT,CAJiC,EAKhC,OAAOA,CACT,CACF,EAEaqwB,EAGXG,CAAS,CAACC,EAAAA,aAFV,SAEgC,CAACn+B,KAAK,CAAC,GAAoC,CAEhEi+B,EAGXC,CAAS,CAACE,EAAAA,aAFV,SAEgC,CAACp+B,KAAK,CAAC,GAAoC,CAEhEg+B,CARiD,CAW5DE,CAAS,CAACG,EAAAA,WAFV,SAE8B,CAACr+B,KAAK,CAAC,GAAkC,IANX,qCAKA,sWC7C9D,gCASA,cACA,kBACA,qBACA,yBACA,4BACA,QACA,SACA,iBACA,CACA,CAQA,gBACA,8BAAiD,EAAU,EAC3D,CASA,cACA,wBACA,CASA,cACA,sBACA,CASA,cACA,0BACA,CASA,cACA,oBACA,CASA,cACA,MACA,oBACA,UACA,kCACA,gCAEA,CASA,cACA,+DACA,CASA,cACA,oBACA,CASA,cACA,2CACA,CASA,cACA,+CACA,CASA,cACA,oBACA,CAMA,cAEA,8CACA,CASA,cACA,2EACA,CASA,cACA,8BACA,CAUA,gBACA,IACA,qBACA,CAAI,SACJ,QACA,CACA,CAQA,cAEA,6DACA,+CC/LA,2CACA,6BACA,+BACA,kCACA,+BACA,+BACA,8BACA,kCACA,+BACA,2BACA,2BACA,kBAQA,GACA,qBACA,QACA,CAAK,CACL,+BAAsC,CACtC,gCAAuC,CACvC,4BACA,CAAG,CACH,gBACA,KACA,kBACA,aACA,eACA,YACA,iBACA,CAgBA,cAEA,kBACA,aACA,eACA,YACA,iBACA,CAtBA,gCACA,mCACA,GACA,oBACA,sBACA,QAEA,YACA,0GAEA,iDACA,EACA,oCACA,qDACA,EAEA,wBAOA,wBACA,gBACA,iBACA,0BACA,oBACA,GAA2B,mCAA6C,CACxE,kCACA,wBAEA,OACA,WACA,OACA,MACA,aALA,UAKA,OACA,OACA,CACA,CAWA,cACA,MACA,oBACA,UACA,cAEA,CAUA,aACA,oBAVA,EACA,EAUA,iDAXA,EAYA,SAXA,GAAwB,mBAExB,IACA,8BACA,YACK,GAOL,cACA,CACA,cA8IA,kBACA,oBACA,SACA,IAIA,OApHA,sBACA,IAlEA,IA/DA,EAiIA,WACA,2CACA,SACA,sBAEA,UACA,aACA,aACA,aACA,KACA,KACA,cACA,mBACA,OACA,OACA,KACA,KACA,QACA,OACA,cAEA,YACA,EACA,EACA,EACA,EAGA,CACA,CACA,KACA,OACA,OACA,EACA,oBACA,KACA,MACA,SACA,GACA,wBACA,uBACA,QACA,EAAW,EACX,SACA,QA9GA,EAgHA,EAhHA,EAiHA,EACA,cACA,iBACA,GACA,mBACA,EACA,OACA,KACA,EAVA,EA9GA,EACA,OACA,EACA,OACA,OACA,OACA,UAoHA,WACA,EAEA,IACA,uBACA,QACA,YAAoB,WAAqB,IACzC,EACA,IADA,OACA,GACA,KACA,EACA,EACA,EACA,EACA,QAEA,wBAzMA,QADA,EA0MA,IAzMA,wBAIA,kBAHA,GACA,SACA,iBACA,MAqMA,EACA,IACA,gBACA,oBAGA,EACA,IADA,UACA,KACA,KACA,EACA,EACA,EACA,EACA,QAEA,iBACA,6BACA,SA3HA,YACA,iBACA,gBACA,mBACA,WACA,uBAEA,OACA,0BACA,YACA,oBACA,OACA,YACA,sBACA,sBACA,UACA,CAAe,CACf,YACA,sBACA,gCACA,EACA,EACA,UAEA,gBACA,mBACA,WACA,eAEA,CACA,OACA,EA6FA,GACA,EACA,EACA,EACA,EAGA,aACA,kDACA,qBAHA,cAIA,mBAA+B,8BAAyC,EACxE,GACA,4EAEA,CACA,QACA,EAKA,sBACA,sBACA,CAAG,EACH,CACA,CACA,cACA,mBACA,gBAEA,CADA,OACA,KACA,YACA,iCACA,yBACA,CAAO,CACP,YACA,iCACA,yBACA,GAEA,yCACA,CACA,gDACA,UAEA,MACA,+BACA,YACA,YACA,GACA,yBACA,qCACA,CACA,qCACA,WACA,cACA,QACA,oBACA,UACA,2BACA,kBACA,UACA,OACA,CAAW,EACX,kCACA,EAAU,OACV,iBAA8B,GAC9B,IADqC,QACrC,OAAgC,EAAO,MAE7B,EAAO,4BACjB,MACA,CACA,gBACA,EACA,cACA,UAAgB,EAChB,MACA,wBACA,EACA,EACA,WACA,uBACA,CAAO,CACP,EAEA,CAAG,CACH,kBACA,QAIA,OAHA,eACA,GACA,CAAK,EACL,CACA,CAAG,CACH,oBACA,OACA,gBACA,QACA,CAAO,MAEJ,CACH,iBACA,SACA,YACA,yEAEA,QACA,CACA,EACA,WAAiB,GACjB,UAAgB,GAChB,UAAgB,GAChB,eAAqB,GACrB,YAAkB,GAClB,UAAgB,GAChB,iEAAuE,CACvE,EACA,oBAA0B,EAC1B,eACA,cACA,0BACA,CACA,EACA,OAAa,aACb,kBACA,8BACA,CACA,EACA,cAAoB,iBACpB,WACA,YACA,+DAEA,UAAuB,UACvB,QACA,SACA,WACA,oCACA,6BACA,EACA,aACA,WACA,cACA,gBACA,6BACA,YACA,yBACA,2BACA,QACA,uBAAkD,IAAc,IAChE,oBACA,YACA,CACA,oCACA,EACA,eAAqB,aAcrB,MALA,CARA,GACA,WACA,gBACA,iBACA,eACA,cACA,aACA,GACA,WACA,YACA,WACA,UACA,EACA,CACA,EACA,eAAqB,iBACrB,MACA,IAAc,CACd,OACA,WACA,wCACA,aACA,WACA,cACA,gBACA,YACA,yBACA,2BACA,QACA,uBAAwD,IAAoB,IAC5E,oBACA,YACA,CACA,qBACA,0BACA,eACA,YACA,kCACA,EACA,WAAiB,YACjB,OAAW,aACX,EACA,YAAkB,aAClB,OAAW,oBACX,EACA,gBAAsB,GACtB,MAAY,aACZ,OACA,WACA,UAAgB,qBAA4B,CAC5C,OACA,CACA,EACA,MAAY,eACZ,OACA,WACA,OACA,yBACA,CACA,EACA,iBAAuB,aACvB,UACA,IACA,OACA,IACA,UACA,aACA,GACA,OACA,oBACA,UACA,2BACA,WACA,CAAI,SACJ,IACA,EAAI,OACJ,KACA,CACA,EACA,0BAAgC,YAChC,4BACA,EACA,KAAW,aACX,iBACA,EACA,gBAAsB,iBACtB,gCACA,EACA,aAAmB,eACnB,2BACA,EACA,YAAkB,aAClB,wBACA,EACA,eAAqB,cACrB,kBAAwB,eACxB,gCACA,EACA,WAAiB,iBACjB,UACA,wBACA,YA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AAN,IAAMA,EAUR9zB,aAZa,QAYbA,OAAK,CAACnS,aAAa,CAAC,CAAC,kDCV1B,MAAe,WAAU,6BCDzB,qCAA6C,CAC7C,QACA,CAAC,EAAC,CAuDF,cACA,0CACA,cACA,SACK,CACL,EACA,GACA,yBACA,QACA,CAAK,CACL,yBACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,+BACA,QACA,CAAK,CACL,iCACA,QACA,CAAK,CACL,uCACA,QACA,CAAK,CACL,kCACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,yCACA,QACA,CAAK,CACL,+BACA,QACA,CAAK,CACL,+BACA,QACA,CAAK,CACL,sCACA,QACA,CAAK,CACL,4BACA,QACA,CAAK,CACL,sCACA,QACA,CAAK,CACL,8CACA,QACA,CAAK,CACL,kDACA,QACA,CAAK,CACL,0CACA,QACA,CAAK,CACL,kCACA,QACA,CAAK,CACL,oCACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,4BACA,QACA,CAAK,CACL,2CACA,QACA,CAAK,CACL,4BACA,QACA,CAAK,CACL,mCACA,QACA,CAAK,CACL,8BACA,QACA,CAAK,CACL,iCACA,QACA,CAAK,CACL,2BACA,QACA,CAAK,CACL,uCACA,QACA,CAAK,CACL,sDACA,QACA,CAAK,CACL,0CACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,2CACA,QACA,CAAK,CACL,uCACA,QACA,CAAK,CACL,kCACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,mCACA,QACA,CAAK,CACL,mCACA,QACA,CAAK,CACL,+BACA,QACA,CAAK,CACL,mCACA,QACA,CAAK,CACL,8BACA,QACA,CAAK,CACL,sBACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,gDACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,qCACA,QACA,CAAK,CACL,0CACA,QACA,CAAK,CACL,sDACA,QACA,CAAK,CACL,4CACA,QACA,CAAK,CACL,0BACA,QACA,CAAK,CACL,oCACA,SACA,CACA,CAAC,EACD,aACA,SACA,mBACA,2BACA,wCACA,kBACA,cACA,iBACA,SACA,YACA,UACA,UACA,UACA,sBACA,4BACA,gCACA,gBACA,MACA,MACA,OACA,UACA,UACA,aACA,eACA,cAA+C,EAAoB,EACnE,oBACA,uBACA,qBACA,0BACA,yBACA,mCACA,qCACA,sCACA,mCACA,uCACA,2CACA,kLACA,wGACA,4FACA,2HACA,4GACA,0HACA,+FACA,mGACA,uGACA,6JACA,sNACA,yJACA,GACA,MACA,QACA,aACA,MACA,MACA,CACA,GACA,YACA,qCACA,eACA,EAIA,GAGA,gBAIA,4BAGA,0BAGA,+BAGA,mBAGA,mBAGA,wBAGA,wBAGA,uBAGA,oCAGA,oCAGA,8BAGA,6BACA,EACA,GACA,KACA,OACA,cACA,wBACA,gBACA,CACA,YACA,wBACA,gBACA,aACA,aACA,CACA,eAEA,UACA,UACA,CACA,YACA,sBACA,kBACA,CACA,SACA,wBACA,gBACA,sBACA,kBACA,SACA,aACA,aACA,CACA,UAEA,wBACA,sBACA,kBACA,gBACA,CAEA,EACA,IACA,uCACA,6BACA,wCACA,gDACA,yHC9WgBQ,qCAAAA,aANU,OAMnB,SAASA,EAActB,CAAY,CAAE8G,CAAe,EACzD,GAAI,CAAC9G,EAAKC,UAAU,CAAC,MAAQ,CAAC6G,EAC5B,MADoC,CAC7B9G,EAGT,GAAM,UAAEG,CAAQ,CAAEC,OAAK,MAAEC,CAAI,CAAE,CAAGC,GAAAA,EAAAA,SAAAA,EAAUN,GAC5C,MAAQ,GAAE8G,EAAS3G,EAAWC,EAAQC,CACxC,qKCoNgBmkD,qBAAqB,mBAArBA,GAtBAC,eAAe,mBAAfA,IA3MhB,OAAMC,EAOJC,OAAOC,CAAe,CAAQ,CAC5B,IAAI,CAACC,OAAO,CAACD,EAAQ56C,KAAK,CAAC,KAAK03B,MAAM,CAAC3O,SAAU,EAAE,EAAE,EACvD,CAEA+xB,QAAmB,CACjB,OAAO,IAAI,CAACC,OAAO,EACrB,CAEQA,QAAQj+C,CAAoB,CAAY,CAAhCA,K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CA,eAEA,CACA,cACA,mCACA,CACA,gBACA,YAAkB,WAAsB,eACxC,CACA,kBACA,iBACA,gBACA,aACA,KACA,eACA,cACA,WACA,YAAwB,WAA6B,IACrD,wBACA,UACA,YACA,MACA,IACA,IACA,WACA,IAEA,yBACQ,WACR,KACA,gBACA,gBACA,CACA,CACA,gBACA,8CACA,sBACA,CACA,eACA,oBACA,WACA,gBACA,CACA,CACA,kBACA,aACA,iBACA,KAAc,wBAA0B,4BAAoC,EAC5E,KACA,EAEA,CACA,kBACA,EACA,EACA,KAAc,wBAA0B,4BAAoC,EAE5E,CACA,gBACA,qDACA,CACA,cACA,WACA,0BACA,UACA,UACA,MACA,SACA,CACA,CACA,gBACA,+CACA,cACA,WACA,2BACA,UACA,UACA,MACA,SACA,CACA,CAvHA,6CACA,+BACA,oBACA,qBACA,QACA,KACA,uBACA,OACA,CACA,oBACA,gBACA,cACA,KACA,eACA,cACA,GACA,wDACA,GACA,2DACA,KACA,SACA,iBACA,CACA,EAiGA,WACA,cACA,QACA,OACA,cACA,mBACA,aACA,cACA,IACA,0CACA,UAKA,GAJA,UACA,cACA,cACA,QACA,UACA,2BACA,aACA,UACA,UACA,MACA,CACA,CACA,qBACA,SACA,CAAI,SACJ,8BACA,EAAI,OACJ,GACA,CACA,CACA,cACA,IACA,gBACA,sBACA,SACA,CAAI,SACJ,8BACA,CACA,CACA,gBACA,aACA,kBACA,8BACA,4BACA,CAAG,CACH,CACA,cACA,OAAW,8BACX,CACA,gBACA,gBACA,WAMA,OALA,GACA,aACA,yCACA,KACA,YACA,CACA,CACA,WACA,EACA,EACA,EACA,EACA,EACA,GAsCA,cACA,eACA,aACA,UACA,qBACA,GACA,sBACA,MACA,CACA,CACA,MACA,OACA,SACA,EAAI,IACJ,KACA,YACA,WACA,WACA,OACA,UACA,EAEA,OADA,OAzDA,cACA,YAAoB,WAAiB,KACrC,KAAa,gBACb,cADiD,EACjD,YACA,eACA,wCACA,CACA,gBACA,YACA,MACA,CACA,UAEA,aACA,OACA,oCAEA,UACA,0BACA,gBACA,uBAEA,oBAEA,YAEA,SACA,YAEA,OADA,aAEA,sBACA,WACA,qBACA,gBACA,uBACA,EAsBA,GACA,IACA,CACA,oBACA,6BACA,gBAhRA,KACA,aACA,4CACA,SACA,uBACA,uBACA,oCACA,uBACA,CAAW,EACX,MACA,CACA,WACA,UAEA,OAhBA,MAeA,GAAoC,aAAsB,EAC1D,CACA,EAiQA,iBACA,MA3uBA,cACA,SACA,OACA,kBACA,CACA,yBAIA,GAHA,QACA,gBACA,mBACA,GACA,YACA,8BACA,EACA,iGAEA,CACA,eACA,oBACA,mBA0tBA,yBACA,MAEA,UACA,2CACA,YACA,YADA,2BAEA,MACA,OACA,SACA,EAAI,IACJ,KACA,YACA,WACA,WACA,OACA,UACA,EA0CA,OAzCA,OACA,WACA,WACA,YACA,6BACA,gBACA,mBACA,CACA,OACA,oCAEA,UACA,0BACA,gBACA,uBAEA,UACA,MADA,IAEA,YAEA,SACA,YAEA,OADA,aAEA,sBACA,WACA,qBACA,gBACA,uBACA,CAAK,CACL,YACA,eACA,aACA,UACA,aACA,WACA,sBACA,MACA,CACA,GAEA,IACA,CACA,sBAEA,eADA,gBACA,QAEA,OADA,WACA,QACA,qBACA,KACA,KACA,uBACA,IACA,CACA,iBACA,gBACA,cACA,QAAmB,WAAuB,KAC1C,KAAe,gBACf,cADmD,GACnD,sBAGA,SACA,EACA,EACA,EACA,EACA,EACA,mBARA,UAUA,UAEA,iBACA,eACA,cACA,qBACA,SACA,OACA,EACA,cACA,kBACA,GACA,YACA,WACA,eACA,OACA,UACA,CAAa,CACb,IAEA,CACA,CACA,gBACA,iBACA,CACA,gBACA,iBACA,CACA,gBACA,4BAAoC,UAAgB,CACpD,CACA,gBACA,eACA,YAAkB,WAAkB,IACpC,0BACA,QACA,CACA,gBACA,2BACA,CACA,gBACA,QACA,CAkGA,aACA,YACA,oHAEA,CACA,WACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEA,IA0aA,EA1aA,SACA,uBACA,8BACA,sBACA,gCACA,yBACA,cACA,eACA,oCACA,oBACA,0DACA,gBACA,gBACA,wBACA,iBACA,gBA2ZA,EA3ZA,KA4ZA,cACA,sBACA,gBA5hBA,SACA,eACA,WACA,OACA,UACA,SACA,IACA,SACA,WACA,WACA,OACA,UACA,EAAW,CACX,EAEA,aACA,QACA,iBACA,SACA,OACA,EACA,MADA,2BAIA,SACA,+CAAiE,EAEjE,WADA,0BAEA,SACA,6BACA,SACA,OAEA,EACA,EAFA,aAIA,EACA,EACA,EAGA,SAGA,GAFA,iBAEA,MADA,gBAEA,YACA,sKAEA,eACA,SACA,OACA,EACA,EADA,aACA,MAEA,SACA,OACA,EACA,EADA,aACA,MAEA,SACA,OACA,EACA,EADA,aACA,MAEA,SACA,OACA,EACA,EADA,aACA,MAEA,SACA,UACA,SACA,OACA,EACA,EADA,aACA,MAEA,SACA,UACA,SACA,uBACA,SACA,UACA,SACA,MACA,SACA,uCACA,SACA,yBACA,SACA,OACA,EACA,EADA,aACA,MAEA,CACA,CACA,QACA,EA4bA,YACA,iCACA,YACA,IACA,GACA,WACA,UACA,SACA,SACA,WACW,CACX,UAEA,GACA,QACA,OACA,UAGA,IADA,yCAEA,aACA,YACA,UACA,KACA,KACA,EAEA,WACA,UACA,MACA,QACQ,IACR,QACA,CACA,QACA,EAhcA,CACA,kBACA,gBACA,UACA,yBACA,yBACA,oCACA,CA6BA,oBACA,gBACA,UACA,GACA,sBACA,WACA,qBACA,UACA,WACA,wBACA,MACA,EACA,yBAEA,CACA,kBACA,WACA,sBACA,OACA,kBACA,GACA,CACA,CAAG,EACH,WACA,SACA,yBACA,SACA,aACA,kBACA,YACA,CAAW,CACX,CAAK,CACL,yBACA,aACA,uCACA,KACA,uBACA,mBACA,QACA,YACA,mBACA,CAAe,CACf,YACA,iBACA,GAEA,IACA,EAAQ,IACR,IACA,WACA,OACA,YACA,mBACA,CAAW,CACX,YACA,iBACA,GAEA,IACA,kBACA,gBACA,MACA,CAAS,CACT,CACA,CAAK,CACL,iBACA,0BACA,CACA,QACA,OACA,kBACA,gBACA,CAAS,CACT,CACA,CAAK,CACL,kBACA,2BACA,CACA,QACA,OACA,kBACA,iBACA,CAAS,CACT,CACA,CACA,CAAG,CACH,CACA,aACA,YAOA,kBACA,SACA,KACA,IACA,IAEA,iBACA,IAZA,EAYA,IACA,MAZA,IAAW,KADX,EAaA,YACA,cACA,YACA,oFAEA,iBACA,KACA,aACA,YACA,CAAgB,qBAAyB,CACzC,KACA,EAEA,UACA,CACA,aACA,CAAO,CA5BI,CACX,MACA,CA2BA,CAAK,CAEL,EACA,EACA,EACA,WACA,CACA,yBACA,gBACA,WACA,YACA,CAAc,gBAAwB,CACtC,KACA,OAEA,CACA,WACA,UACA,WACA,qBACA,SAA0B,iBAC1B,UACA,QACA,CACA,GACA,CAAO,CACP,yBACA,aACA,OACA,EACA,EACA,IAEA,aACA,GACA,CAAO,CACP,kBASA,IARA,KACA,aACA,OACA,EACA,EACA,IAEA,aACA,IAA+B,YAAgC,EAE/D,OACA,eACA,GAEA,CAAO,CACP,kBAEA,IADA,KAEA,cACA,YACA,YAGA,WACA,CACA,EAEA,CACA,aACA,YACA,wQAGA,OADA,4BACA,CACA,CACA,iBACA,kCAAoE,IAAO,IAC3E,mBACA,oBACA,cAA2B,IAAU,KACrC,WACA,WACA,gBAGA,OADA,WACA,CACA,CACA,YACA,EACA,EACA,EACA,EACA,EACA,GAWA,MALA,QAJA,GACA,gCACA,EACA,SAEA,OACA,aACA,gBAGA,CAgMA,eACA,aACA,KACA,KACA,KACA,oCACA,OACA,OACA,yBACA,sBACA,OAEA,CACA,iBAqFA,cACA,MACA,CACA,oBACA,cAxFA,cACA,cACA,+CACA,CACA,QACA,cACA,WACA,IACA,gBACA,eACA,YACA,WACA,KAEA,CACA,SACA,UACA,OAEA,KADA,WAEA,IACA,EACA,sBACA,QACA,QAEA,KADA,UAEA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,cACA,YACA,QACA,SACA,QACA,cACA,UACA,QACA,QAEA,KADA,WAEA,IACA,EACA,KACA,iBACA,QACA,QACA,kBACA,KACA,QACA,wBACA,CACA,qBACA,QAEA,UA9QA,WACA,UACA,QACA,sBACA,MACA,SACA,wBACA,MACA,UACA,EACA,EACA,EACA,wBAEA,MACA,SACA,gCACA,MACA,SACA,yBACA,MACA,UACA,0BACA,MACA,SACA,yBACA,MACA,UACA,0BACA,MACA,SACA,2BACA,MACA,UACA,2BACA,MACA,SACA,4BACA,MACA,UACA,6BACA,MACA,SACA,uBACA,MACA,CACA,IACA,gCACA,WACA,IAEA,oBAEA,OADA,iBACA,GACA,SACA,SAlTA,OACA,gBACA,WACA,4BACA,eA/gCA,KACA,MACA,cACA,gBACA,aACA,CAEA,IADA,cAEA,YACA,8BACA,KACA,2GAEA,OAEA,oBACA,oBACA,kBAEA,QACA,EA2/BA,oBACA,WACA,MACA,OACA,mBACA,EAAM,IACN,+BACA,WACA,OACA,WACA,aACA,CAAO,CACP,YACA,aACA,EAEA,EAAI,IACJ,EACA,OACA,MACA,EACA,kCAEA,EAuRA,OACA,KACA,SAKA,OAJA,OAEA,aADA,aACA,aACA,MACA,GACA,QACA,OACA,KACA,SACA,mBACA,OACA,eACA,KACA,SACA,OACA,OACA,aACA,cACA,SACA,KACA,SACA,mBACA,OACA,eACA,KACA,SACA,mBACA,OACA,eACA,KACA,SACA,mBACA,OACA,IACA,KACA,qBACA,0BAEA,KACA,SACA,mBACA,OACA,cACA,CACA,KACA,SACA,gBACA,QACA,gBAEA,GADA,cACA,QACA,OACA,oCACA,KACA,SAEA,GADA,cACA,8BACA,yBACA,qCACA,KACA,SACA,QACA,QACA,YACA,kMAEA,SACA,cACA,KACA,UACA,eACA,KACA,SACA,UACA,KACA,UACA,UACA,KACA,SACA,sBACA,wBACA,wCACA,KACA,SAEA,IADA,aACA,QACA,OACA,MACA,EACA,iCAEA,EACA,EAwHA,QADA,kCAEA,IACA,WACA,UACA,eACA,CACA,4CACA,UACA,gBACA,KACA,CACA,CAKA,OAJA,cACA,WACA,YACA,eACA,yBACA,CACA,GAKA,QACA,CACA,iBAAuB,eACvB,YASA,OARA,OACA,YACA,YACA,CAAK,CACL,YACA,MACA,GAEA,MACA,EACA,0BAAgC,eAGhC,OADA,GADA,QACA,GACA,MACA,EACA,uBAA6B,eAC7B,aACA,4CACA,aACA,CAEA,OAvlCA,MAslCA,GAAoC,gBAAqB,EACzD,CACA,EACA,6BAAmC,YACnC,cACA,EACA,aAAmB,eACnB,iCACA,MAt8CA,SACA,EACA,EACA,EACA,EACA,GAEA,gBACA,YACA,eACA,SACA,aACA,cAEA,EACA,UAGA,OAFA,2BACA,SAu7CA,GAv7CA,KACA,oBACA,CAsFA,gBACA,wBACA,uBACA,mBACA,OACA,oCACA,IAtIA,EAgGA,IAyBA,EAEA,EAWA,cACA,cACA,OACA,iBACA,IAEA,CACA,YACA,qJAEA,QACA,aACA,qBACA,oBACA,IACA,IACA,WACA,MACA,SAEA,OADA,SAs0CA,GAt0CA,KACA,kBACA,CAAY,SACZ,GACA,oBACA,UACA,0BACA,CACA,IACA,UAaA,OAZA,aACA,IACA,aACA,IACA,gBACA,IACA,WACA,CAAkB,SAClB,IACA,CACA,EACA,YACA,kBACA,CAEA,OADA,KACA,IACA,EAAY,OACZ,GACA,CACA,CACA,8BACA,2BACA,IACA,UAYA,OAXA,mBACA,IACA,aAEA,CADA,KACA,cACA,IACA,WACA,CAAY,SACZ,IACA,CACA,CAAS,IACT,mBACA,CAEA,YADA,cAEA,SACA,SADA,YAGA,qBAEA,SADA,iBAEA,WACA,WACA,YACA,YACA,iBACA,0BACA,2BACA,QAEA,IADA,QACA,IAIA,OAHA,wBACA,eACA,CAAS,EACT,mBACA,CACA,oBACA,OACA,MACA,qBACA,2BACA,gBACA,oBAEA,oBACA,OACA,MACA,qBACA,2BACA,gBACA,oBAEA,4BACA,OACA,gBACA,MACA,2BACA,gBACA,oBAEA,0CACA,2CACA,kCACA,gBACA,2CACA,4CACA,2CACA,4CACA,6CACA,6CACA,8BACA,gBACA,+BACA,gBACA,yCACA,8CACA,OACA,2BACA,MACA,gBACA,oBAEA,KA5QA,QADA,EA6QA,IA5QA,wBAIA,kBAHA,GACA,SACA,iBACA,OAyQA,MACA,gBACA,EACA,OACA,IACA,cACA,GAEA,2BACA,gBACA,qBACA,cAEA,GACA,mCACA,4BAEA,gBAvMA,GACA,IACA,IAxBA,EAgBA,EAEA,EAzCA,EAgBA,EAEA,EACA,EA4BA,eAA4C,YAAc,CAC1D,CAAM,SACN,OA1BA,EA0BA,cAXA,2BACA,IACA,IACA,MACA,cAlBA,cACA,UACA,kBAEA,kBAEA,IACA,gCACA,gBACA,kBACA,CAAU,SACV,IACA,CACA,EAKA,GACA,mBAOA,CACA,OAnDA,EAmDA,EApCA,2BACA,IACA,IACA,MACA,KACA,kCAnBA,cACA,OACA,OACA,0BACA,SACA,IACA,0BAEA,kBAEA,cACA,iBACA,uCACA,EAMA,GACA,mBA+BA,EAgMA,GAEA,qBADA,SAEA,OAlMA,EAkMA,EAlMA,EAkMA,UA1KA,2BACA,IACA,IACA,MACA,QACA,cA5BA,cACA,WACA,oBACA,uBAEA,IACA,gCACA,mBACA,CAAY,SACZ,KACA,MACA,CAEA,YACA,EAAQ,IACR,IACA,gCACA,gBACA,kBACA,CAAU,SACV,IACA,CACA,EAMA,GACA,+BAsKA,GADA,WAEA,GACA,wBACA,CACA,cACA,YACA,6HAEA,UACA,CACA,QACA,CACA,4BACA,4CACA,OACA,qBAGA,gCACA,6BA1SA,gBA0SA,GAzSA,IAySA,GAzSA,QAySA,EAxSA,MAwSA,EAtSA,MAsSA,EArSA,YACA,OAoSA,EAnSA,aACA,OAmSA,iCACA,yBAEA,YADA,aAEA,OACA,sBACA,2BACA,MACA,aACA,oBAEA,GACA,YACA,qBAEA,SADA,gBAGA,OACA,qBAEA,aACA,kIAEA,CACA,uBACA,GACA,YACA,qBACA,KACA,IADA,gBAGA,OACA,qBAEA,aACA,gIAEA,CACA,+CACA,aACA,QACA,SACA,yDAEA,CACA,gBAOA,MANA,oBACA,UACA,sBACA,WACA,wBACA,IACA,mBACA,CACA,QACA,IACA,OACA,cACA,IACA,SAKA,OAJA,SACA,KACA,gBACA,aACA,WACA,KACA,KACA,mBACA,CACA,EAimCA,EACA,GACA,yBACA,sBACA,OACA,EACA,GAEA,gBACA,eACA,6BACA,CACA,iBACA,YACA,gCACA,EACA,6BACA,CACA,CACA,CAAG,CACH","sources":["webpack://_N_E/../client/normalize-trailing-slash.ts","webpack://_N_E/../../../../../src/client/components/react-dev-overlay/utils/dev-indicator/use-sync-dev-render-indicator.tsx","webpack://_N_E/../../../src/shared/lib/hooks-client-context.shared-runtime.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/add-locale.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js?39e8","webpack://_N_E/../../../src/client/components/app-router-headers.ts","webpack://_N_E/../../../../src/client/components/router-reducer/handle-mutable.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/has-interception-route-in-current-tree.ts","webpack://_N_E/../../../../src/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/html-bots.ts","webpack://_N_E/../../../src/shared/lib/is-plain-object.ts","webpack://_N_E/../client/app-webpack.ts","webpack://_N_E/./node_modules/@sentry/core/esm/api.js?e298","webpack://_N_E/./node_modules/@sentry/core/esm/envelope.js?8b79","webpack://_N_E/./node_modules/@sentry/core/esm/metrics/utils.js?e13c","webpack://_N_E/./node_modules/@sentry/core/esm/metrics/envelope.js?e356","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js?460c","webpack://_N_E/../../../../src/client/components/globals/patch-console.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/remove-path-prefix.ts","webpack://_N_E/../../../src/client/react-client-callbacks/on-recoverable-error.ts","webpack://_N_E/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js?7f6c","webpack://_N_E/../../../src/shared/lib/mitt.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/time.js?75c3","webpack://_N_E/../../../../src/shared/lib/utils/reflect-utils.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/route-matcher.ts","webpack://_N_E/../../../src/shared/lib/segment.ts","webpack://_N_E/../../../../src/shared/lib/router/action-queue.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/xhr.js?b58c","webpack://_N_E/../../../../../src/shared/lib/router/utils/is-bot.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js?bd27","webpack://_N_E/../../../../src/client/components/router-reducer/create-href-from-url.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js?81bc","webpack://_N_E/./node_modules/next/dist/compiled/react/index.js","webpack://_N_E/./node_modules/next/dist/compiled/react-dom/client.js","webpack://_N_E/./node_modules/@sentry/core/esm/semanticAttributes.js?8479","webpack://_N_E/../../../src/shared/lib/server-reference-info.ts","webpack://_N_E/./node_modules/@sentry/core/esm/version.js?0015","webpack://_N_E/./node_modules/next/dist/build/deployment-id.js?7fc6","webpack://_N_E/../../../src/shared/lib/hash.ts","webpack://_N_E/../../../../src/client/components/errors/enqueue-client-error.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/add-path-suffix.ts","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js?0695","webpack://_N_E/./node_modules/next/dist/lib/is-error.js?f29d","webpack://_N_E/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js","webpack://_N_E/./node_modules/@sentry/core/esm/utils/prepareEvent.js?11a2","webpack://_N_E/./node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js?4b46","webpack://_N_E/../../../src/client/components/navigation.ts","webpack://_N_E/../../../../src/shared/lib/page-path/ensure-leading-slash.ts","webpack://_N_E/../client/with-router.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/baggage.js?2f31","webpack://_N_E/../../../../src/client/components/router-reducer/clear-cache-node-data-for-segment-path.ts","webpack://_N_E/../../../src/client/components/navigation-untracked.ts","webpack://_N_E/../../../src/shared/lib/encode-uri-path.ts","webpack://_N_E/../../../src/client/components/redirect-boundary.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/string.js?95f3","webpack://_N_E/../client/assign-location.ts","webpack://_N_E/../../../src/client/react-client-callbacks/report-global-error.ts","webpack://_N_E/../../../src/client/lib/is-error-thrown-while-rendering-rsc.ts","webpack://_N_E/../client/flight-data-helpers.ts","webpack://_N_E/./node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js?38ea","webpack://_N_E/../../../src/client/components/is-next-router-error.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/debug-build.js?4920","webpack://_N_E/./node_modules/@sentry/utils/esm/misc.js?64c9","webpack://_N_E/../../../../../src/shared/lib/router/utils/handle-smooth-scroll.ts","webpack://_N_E/../../../src/client/components/redirect-status-code.ts","webpack://_N_E/../client/resolve-href.ts","webpack://_N_E/../../../src/client/components/links.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/browser.js?5435","webpack://_N_E/../../../../src/client/components/errors/console-error.ts","webpack://_N_E/../../../src/client/components/is-hydration-error.ts","webpack://_N_E/../../../src/client/components/error-boundary.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/logger.js?6417","webpack://_N_E/../../../src/client/request/params.browser.prod.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js?0509","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js?8691","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js?228d","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js?ccfd","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js?60c3","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js?9c58","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js?f946","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js?f8b8","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getINP.js?ea8e","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js?612d","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/onTTFB.js?888a","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/instrument.js?49e5","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js?82b0","webpack://_N_E/./node_modules/next/dist/lib/error-telemetry-utils.js?4273","webpack://_N_E/../client/add-locale.ts","webpack://_N_E/../../../../src/client/components/router-reducer/router-reducer.ts","webpack://_N_E/../../../src/client/components/match-segments.ts","webpack://_N_E/../../../src/client/components/render-from-template-context.tsx","webpack://_N_E/../../../../src/client/components/router-reducer/prefetch-cache-utils.ts","webpack://_N_E/../client/app-find-source-map-url.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/memo.js?4ac3","webpack://_N_E/./node_modules/@sentry/utils/esm/normalize.js?1710","webpack://_N_E/./node_modules/@sentry/utils/esm/stacktrace.js?3f0b","webpack://_N_E/./node_modules/@sentry/core/esm/eventProcessors.js?fa1c","webpack://_N_E/../../../src/client/request/params.browser.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/tracing.js?a94f","webpack://_N_E/../../../../src/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.ts","webpack://_N_E/./node_modules/next/dist/compiled/react-server-dom-webpack/client.js","webpack://_N_E/../client/app-next.ts","webpack://_N_E/../client/trusted-types.ts","webpack://_N_E/../../../../src/client/components/router-reducer/should-hard-navigate.ts","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js?7d32","webpack://_N_E/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js","webpack://_N_E/../client/app-bootstrap.ts","webpack://_N_E/../../../../src/client/components/http-access-fallback/http-access-fallback.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/route-regex.ts","webpack://_N_E/../../../src/client/components/redirect.ts","webpack://_N_E/../client/remove-locale.ts","webpack://_N_E/./node_modules/next/dist/lib/metadata/metadata-constants.js","webpack://_N_E/../../../src/client/components/not-found.ts","webpack://_N_E/../../../src/client/components/nav-failure-handler.ts","webpack://_N_E/../../../../src/client/components/router-reducer/is-navigating-to-new-root-layout.ts","webpack://_N_E/../../../src/shared/lib/invariant-error.ts","webpack://_N_E/../../../../src/client/components/router-reducer/invalidate-cache-by-router-state.ts","webpack://_N_E/./node_modules/next/dist/compiled/scheduler/cjs/scheduler.production.js","webpack://_N_E/../client/set-attributes-from-props.ts","webpack://_N_E/../../../../src/shared/lib/utils/warn-once.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/navigate-reducer.ts","webpack://_N_E/../../../../src/client/components/globals/handle-global-errors.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/worldwide.js?355e","webpack://_N_E/../client/remove-base-path.ts","webpack://_N_E/../../../../src/client/components/router-reducer/refetch-inactive-parallel-segments.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/object.js?c2b9","webpack://_N_E/../../../../src/shared/lib/lazy-dynamic/bailout-to-csr.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/isBrowser.js?cfbc","webpack://_N_E/../../../../src/client/components/http-access-fallback/error-boundary.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js?cdfb","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/history.js?fb36","webpack://_N_E/./node_modules/next/dist/compiled/react-dom/index.js","webpack://_N_E/../../../../../src/shared/lib/router/utils/interception-routes.ts","webpack://_N_E/../../../../src/shared/lib/i18n/normalize-locale-path.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/is-dynamic.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/server-action-reducer.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/env.js?efea","webpack://_N_E/../../../../../src/shared/lib/router/utils/compare-states.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/get-next-pathname-info.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/common/debug-build.js?412e","webpack://_N_E/../../../../src/client/components/errors/attach-hydration-error-state.ts","webpack://_N_E/../client/app-call-server.ts","webpack://_N_E/../../../../src/client/components/router-reducer/ppr-navigations.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js?32a7","webpack://_N_E/./node_modules/@sentry/core/esm/session.js?d91a","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/refresh-reducer.ts","webpack://_N_E/./node_modules/@sentry/core/esm/debug-build.js?0d07","webpack://_N_E/../../../src/client/components/app-router.tsx","webpack://_N_E/../../../../../src/shared/lib/router/utils/app-paths.ts","webpack://_N_E/../../../../src/client/components/router-reducer/apply-router-state-patch-to-tree.ts","webpack://_N_E/./node_modules/@sentry/core/esm/scope.js?a09a","webpack://_N_E/./node_modules/@sentry/utils/esm/envelope.js?0df6","webpack://_N_E/./node_modules/next/dist/compiled/react-dom/cjs/react-dom.production.js","webpack://_N_E/../../../../src/client/components/router-reducer/set-cache-busting-search-param.ts","webpack://_N_E/./node_modules/@sentry/core/esm/utils/getRootSpan.js?c68c","webpack://_N_E/../../../../src/client/components/metadata/metadata-boundary.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/is.js?9e5f","webpack://_N_E/./node_modules/next/dist/compiled/react/cjs/react.production.js","webpack://_N_E/../../../src/client/components/redirect-error.ts","webpack://_N_E/../../../../src/shared/lib/page-path/denormalize-page-path.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/omit.ts","webpack://_N_E/../../../src/shared/lib/escape-regexp.ts","webpack://_N_E/../../../src/shared/lib/bloom-filter.ts","webpack://_N_E/../../../src/client/components/forbidden.ts","webpack://_N_E/../client/app-index.tsx","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/restore-reducer.ts","webpack://_N_E/../../../../src/client/components/errors/use-error-handler.ts","webpack://_N_E/./node_modules/next/dist/compiled/scheduler/index.js","webpack://_N_E/../../../../../src/shared/lib/router/utils/remove-trailing-slash.ts","webpack://_N_E/./node_modules/next/dist/build/polyfills/polyfill-module.js?1c1f","webpack://_N_E/../../../../src/client/components/globals/intercept-console-error.ts","webpack://_N_E/../../../src/client/request/search-params.browser.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/get-asset-path-from-route.ts","webpack://_N_E/../../../src/client/components/unstable-rethrow.ts","webpack://_N_E/../../../src/client/components/app-router-announcer.tsx","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/server-patch-reducer.ts","webpack://_N_E/./node_modules/@sentry/core/esm/utils/spanUtils.js?cc7c","webpack://_N_E/../../../../src/client/components/router-reducer/compute-changed-path.ts","webpack://_N_E/../../../src/client/react-client-callbacks/error-boundary-callbacks.ts","webpack://_N_E/../client/script.tsx","webpack://_N_E/../../../../src/client/components/router-reducer/router-reducer-types.ts","webpack://_N_E/../../../src/shared/lib/utils.ts","webpack://_N_E/./node_modules/@sentry/core/esm/hub.js?2a66","webpack://_N_E/../../../../../src/shared/lib/router/utils/parse-path.ts","webpack://_N_E/./node_modules/next/dist/lib/is-api-route.js?6cf4","webpack://_N_E/../../../../src/client/components/router-reducer/apply-flight-data.ts","webpack://_N_E/../../../src/shared/lib/router-context.shared-runtime.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/syncpromise.js?b80f","webpack://_N_E/../../../../src/client/components/metadata/browser-resolved-metadata.tsx","webpack://_N_E/../../../src/client/components/unresolved-thenable.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js?9f04","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/find-head-in-cache.ts","webpack://_N_E/../../../../src/client/components/router-reducer/fill-cache-with-new-subtree-data.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/hmr-refresh-reducer.ts","webpack://_N_E/../../../../src/client/components/metadata/async-metadata.tsx","webpack://_N_E/../client/router.ts","webpack://_N_E/../../../../src/shared/lib/page-path/normalize-path-sep.ts","webpack://_N_E/../client/route-loader.ts","webpack://_N_E/./node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js","webpack://_N_E/../../../../src/shared/lib/router/router.ts","webpack://_N_E/../../../src/client/components/unstable-rethrow.browser.ts","webpack://_N_E/./node_modules/@sentry/core/esm/exports.js?e332","webpack://_N_E/../../../../../src/shared/lib/router/utils/querystring.ts","webpack://_N_E/../../../src/client/components/unauthorized.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/parse-relative-url.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/get-segment-value.ts","webpack://_N_E/../../../src/client/components/use-reducer.ts","webpack://_N_E/../../../src/client/components/promise-queue.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/format-url.ts","webpack://_N_E/../../../src/shared/lib/head-manager-context.shared-runtime.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/types.js?d057","webpack://_N_E/./node_modules/next/dist/lib/constants.js?9a25","webpack://_N_E/../../../../../src/shared/lib/router/utils/add-path-prefix.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/sorted-routes.ts","webpack://_N_E/../../../src/client/lib/console.ts","webpack://_N_E/../client/app-build-id.ts","webpack://_N_E/../../../../src/client/components/router-reducer/create-router-cache-key.ts","webpack://_N_E/../client/add-base-path.ts","webpack://_N_E/../../../src/client/components/segment-cache.ts","webpack://_N_E/./node_modules/next/dist/compiled/react/cjs/react-jsx-runtime.production.js","webpack://_N_E/../client/has-base-path.ts","webpack://_N_E/./node_modules/process/browser.js?6e26","webpack://_N_E/../../../src/client/components/layout-router.tsx","webpack://_N_E/../../../src/shared/lib/server-inserted-html.shared-runtime.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/fetch.js?b85e","webpack://_N_E/./node_modules/@swc/helpers/esm/_interop_require_default.js?4b5e","webpack://_N_E/../../../src/client/request/search-params.browser.prod.ts","webpack://_N_E/../../../../src/client/components/router-reducer/fetch-server-response.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/index.ts","webpack://_N_E/../../../../../src/client/components/router-reducer/reducers/prefetch-reducer.ts","webpack://_N_E/../../../../src/client/components/errors/hydration-error-info.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js?3740","webpack://_N_E/../../../src/client/components/client-page.tsx","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/dom.js?3800","webpack://_N_E/./node_modules/@sentry/utils/esm/ratelimit.js?4c70","webpack://_N_E/../../../../../src/shared/lib/router/utils/format-next-pathname-info.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/path-has-prefix.ts","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js?88cc","webpack://_N_E/../client/detect-domain-locale.ts","webpack://_N_E/../client/request-idle-callback.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/is-local-url.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/interpolate-as.ts","webpack://_N_E/./node_modules/@sentry/core/esm/utils/sdkMetadata.js?40a5","webpack://_N_E/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js?302a","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js?768e","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js?3422","webpack://_N_E/./node_modules/@sentry/utils/esm/aggregate-errors.js?b1f3","webpack://_N_E/./node_modules/@sentry/utils/esm/eventbuilder.js?a92f","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/linkederrors.js?144c","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/index.js?6641","webpack://_N_E/./node_modules/@sentry/core/esm/index.js?b5c2","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js?f4b0","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/globalError.js?e31d","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js?5950","webpack://_N_E/./node_modules/@sentry/browser/esm/debug-build.js?f8a5","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js?cd4b","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js?f3a4","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js?e7db","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/console.js?1ae4","webpack://_N_E/./node_modules/@sentry/utils/esm/severity.js?8e6d","webpack://_N_E/./node_modules/@sentry/utils/esm/url.js?c026","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js?fb18","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js?ab4a","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/httpcontext.js?67da","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/dedupe.js?4686","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/index.js?f071","webpack://_N_E/./node_modules/@sentry/browser/esm/index.js?da36","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js?b723","webpack://_N_E/./node_modules/@sentry/utils/esm/clientreport.js?b33c","webpack://_N_E/./node_modules/@sentry/browser/esm/userfeedback.js?bbb6","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js?1787","webpack://_N_E/./node_modules/@sentry/browser/esm/stack-parsers.js?d42c","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js?f1f1","webpack://_N_E/./node_modules/@sentry/core/esm/transports/base.js?cd1c","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/utils.js?7c55","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js?d1f0","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js?4fae","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js?c69f","webpack://_N_E/./node_modules/@sentry/react/esm/sdk.js?2fc6","webpack://_N_E/./node_modules/@sentry/nextjs/esm/common/getVercelEnv.js?a2a9","webpack://_N_E/./node_modules/@sentry/core/esm/metrics/metric-summary.js?b0b9","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/spanstatus.js?faa1","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/span.js?3b01","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/trace.js?7366","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/transaction.js?09e4","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/idletransaction.js?9641","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/utils.js?b7e4","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/errors.js?2ba7","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/sampling.js?13a8","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/hubextensions.js?34f2","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js?c9ad","webpack://_N_E/./node_modules/@sentry/core/esm/span.js?4e01","webpack://_N_E/./node_modules/@sentry/core/esm/tracing/measurement.js?2943","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js?6b8d","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js?1c95","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/common/fetch.js?5665","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/request.js?7bd2","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/router.js?22c4","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js?008d","webpack://_N_E/./node_modules/@sentry-internal/tracing/esm/browser/browserTracingIntegration.js?7688","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/routing/appRouterRoutingInstrumentation.js?5437","webpack://_N_E/./node_modules/next/dist/api/router.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/common/debug-build.js?d891","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/routing/pagesRouterRoutingInstrumentation.js?9fbc","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/routing/nextRoutingInstrumentation.js?d1f1","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/browserTracingIntegration.js?aad2","webpack://_N_E/./node_modules/@sentry/utils/esm/path.js?fe6c","webpack://_N_E/./node_modules/@sentry/integrations/esm/rewriteframes.js?c21a","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/rewriteFramesIntegration.js?7146","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/tunnelRoute.js?d4eb","webpack://_N_E/./node_modules/@sentry/nextjs/esm/client/index.js?e5ab","webpack://_N_E/../../../../src/client/components/router-reducer/create-initial-router-state.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument/_handlers.js?dac3","webpack://_N_E/../../../src/client/components/client-segment.tsx","webpack://_N_E/../../../src/shared/lib/is-thenable.ts","webpack://_N_E/../../../../src/client/components/errors/stitched-error.ts","webpack://_N_E/./node_modules/next/dist/compiled/react/jsx-runtime.js","webpack://_N_E/../../../src/shared/lib/app-router-context.shared-runtime.ts","webpack://_N_E/../../../../src/client/components/router-reducer/aliased-prefetch-navigations.ts","webpack://_N_E/../../../src/client/components/navigation.react-server.ts","webpack://_N_E/../../../../src/client/components/router-reducer/handle-segment-mismatch.ts","webpack://_N_E/./node_modules/@sentry/utils/esm/node.js?8f36","webpack://_N_E/./node_modules/@sentry/core/esm/constants.js?d4d3","webpack://_N_E/./node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js"],"sourcesContent":["import { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { parsePath } from '../shared/lib/router/utils/parse-path'\n\n/**\n * Normalizes the trailing slash of a path according to the `trailingSlash` option\n * in `next.config.js`.\n */\nexport const normalizePathTrailingSlash = (path: string) => {\n if (!path.startsWith('/') || process.env.__NEXT_MANUAL_TRAILING_SLASH) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n if (process.env.__NEXT_TRAILING_SLASH) {\n if (/\\.[^/]+\\/?$/.test(pathname)) {\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n } else if (pathname.endsWith('/')) {\n return `${pathname}${query}${hash}`\n } else {\n return `${pathname}/${query}${hash}`\n }\n }\n\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n}\n","const NOOP = (fn: () => void) => fn()\n\n/**\n * Returns a transition function that can be used to wrap router actions.\n * This allows us to tap into the transition state of the router as an\n * approximation of React render time.\n */\nexport const useSyncDevRenderIndicator = () => {\n let syncDevRenderIndicator = NOOP\n\n if (process.env.NODE_ENV === 'development') {\n const { useSyncDevRenderIndicatorInternal } =\n require('./use-sync-dev-render-indicator-internal') as typeof import('./use-sync-dev-render-indicator-internal')\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n syncDevRenderIndicator = useSyncDevRenderIndicatorInternal()\n }\n\n return syncDevRenderIndicator\n}\n","'use client'\n\nimport { createContext } from 'react'\nimport type { Params } from '../../server/request/params'\n\nexport const SearchParamsContext = createContext(null)\nexport const PathnameContext = createContext(null)\nexport const PathParamsContext = createContext(null)\n\nif (process.env.NODE_ENV !== 'production') {\n SearchParamsContext.displayName = 'SearchParamsContext'\n PathnameContext.displayName = 'PathnameContext'\n PathParamsContext.displayName = 'PathParamsContext'\n}\n","import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path\n\n const lower = path.toLowerCase()\n\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] ;\n const fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","export const RSC_HEADER = 'RSC' as const\nexport const ACTION_HEADER = 'Next-Action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'Next-Router-State-Tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'Next-Router-Prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change Next-Router-State-Tree to be a segment path, we can use\n// that instead. Then Next-Router-Prefetch and Next-Router-Segment-Prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'Next-Router-Segment-Prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'Next-HMR-Refresh' as const\nexport const NEXT_URL = 'Next-Url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\n","import { computeChangedPath } from './compute-changed-path'\nimport type {\n Mutable,\n ReadonlyReducerState,\n ReducerState,\n} from './router-reducer-types'\n\nfunction isNotUndefined(value: T): value is Exclude {\n return typeof value !== 'undefined'\n}\n\nexport function handleMutable(\n state: ReadonlyReducerState,\n mutable: Mutable\n): ReducerState {\n // shouldScroll is true by default, can override to false.\n const shouldScroll = mutable.shouldScroll ?? true\n\n let nextUrl = state.nextUrl\n\n if (isNotUndefined(mutable.patchedTree)) {\n // If we received a patched tree, we need to compute the changed path.\n const changedPath = computeChangedPath(state.tree, mutable.patchedTree)\n if (changedPath) {\n // If the tree changed, we need to update the nextUrl\n nextUrl = changedPath\n } else if (!nextUrl) {\n // if the tree ends up being the same (ie, no changed path), and we don't have a nextUrl, then we should use the canonicalUrl\n nextUrl = state.canonicalUrl\n }\n // otherwise this will be a no-op and continue to use the existing nextUrl\n }\n\n return {\n // Set href.\n canonicalUrl: isNotUndefined(mutable.canonicalUrl)\n ? mutable.canonicalUrl === state.canonicalUrl\n ? state.canonicalUrl\n : mutable.canonicalUrl\n : state.canonicalUrl,\n pushRef: {\n pendingPush: isNotUndefined(mutable.pendingPush)\n ? mutable.pendingPush\n : state.pushRef.pendingPush,\n mpaNavigation: isNotUndefined(mutable.mpaNavigation)\n ? mutable.mpaNavigation\n : state.pushRef.mpaNavigation,\n preserveCustomHistoryState: isNotUndefined(\n mutable.preserveCustomHistoryState\n )\n ? mutable.preserveCustomHistoryState\n : state.pushRef.preserveCustomHistoryState,\n },\n // All navigation requires scroll and focus management to trigger.\n focusAndScrollRef: {\n apply: shouldScroll\n ? isNotUndefined(mutable?.scrollableSegments)\n ? true\n : state.focusAndScrollRef.apply\n : // If shouldScroll is false then we should not apply scroll and focus management.\n false,\n onlyHashChange: mutable.onlyHashChange || false,\n hashFragment: shouldScroll\n ? // Empty hash should trigger default behavior of scrolling layout into view.\n // #top is handled in layout-router.\n mutable.hashFragment && mutable.hashFragment !== ''\n ? // Remove leading # and decode hash to make non-latin hashes work.\n decodeURIComponent(mutable.hashFragment.slice(1))\n : state.focusAndScrollRef.hashFragment\n : // If shouldScroll is false then we should not apply scroll and focus management.\n null,\n segmentPaths: shouldScroll\n ? mutable?.scrollableSegments ?? state.focusAndScrollRef.segmentPaths\n : // If shouldScroll is false then we should not apply scroll and focus management.\n [],\n },\n // Apply cache.\n cache: mutable.cache ? mutable.cache : state.cache,\n prefetchCache: mutable.prefetchCache\n ? mutable.prefetchCache\n : state.prefetchCache,\n // Apply patched router state.\n tree: isNotUndefined(mutable.patchedTree)\n ? mutable.patchedTree\n : state.tree,\n nextUrl,\n }\n}\n","import type { FlightRouterState } from '../../../../server/app-render/types'\nimport { isInterceptionRouteAppPath } from '../../../../shared/lib/router/utils/interception-routes'\n\nexport function hasInterceptionRouteInCurrentTree([\n segment,\n parallelRoutes,\n]: FlightRouterState): boolean {\n // If we have a dynamic segment, it's marked as an interception route by the presence of the `i` suffix.\n if (Array.isArray(segment) && (segment[2] === 'di' || segment[2] === 'ci')) {\n return true\n }\n\n // If segment is not an array, apply the existing string-based check\n if (typeof segment === 'string' && isInterceptionRouteAppPath(segment)) {\n return true\n }\n\n // Iterate through parallelRoutes if they exist\n if (parallelRoutes) {\n for (const key in parallelRoutes) {\n if (hasInterceptionRouteInCurrentTree(parallelRoutes[key])) {\n return true\n }\n }\n }\n\n return false\n}\n","import type { CacheNode } from '../../../shared/lib/app-router-context.shared-runtime'\nimport type { FlightSegmentPath } from '../../../server/app-render/types'\nimport { createRouterCacheKey } from './create-router-cache-key'\nimport { getNextFlightSegmentPath } from '../../flight-data-helpers'\n\n/**\n * Fill cache up to the end of the flightSegmentPath, invalidating anything below it.\n */\nexport function invalidateCacheBelowFlightSegmentPath(\n newCache: CacheNode,\n existingCache: CacheNode,\n flightSegmentPath: FlightSegmentPath\n): void {\n const isLastEntry = flightSegmentPath.length <= 2\n const [parallelRouteKey, segment] = flightSegmentPath\n\n const cacheKey = createRouterCacheKey(segment)\n\n const existingChildSegmentMap =\n existingCache.parallelRoutes.get(parallelRouteKey)\n\n if (!existingChildSegmentMap) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return\n }\n\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey)\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap)\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap)\n }\n\n // In case of last entry don't copy further down.\n if (isLastEntry) {\n childSegmentMap.delete(cacheKey)\n return\n }\n\n const existingChildCacheNode = existingChildSegmentMap.get(cacheKey)\n let childCacheNode = childSegmentMap.get(cacheKey)\n\n if (!childCacheNode || !existingChildCacheNode) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return\n }\n\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n } as CacheNode\n childSegmentMap.set(cacheKey, childCacheNode)\n }\n\n invalidateCacheBelowFlightSegmentPath(\n childCacheNode,\n existingChildCacheNode,\n getNextFlightSegmentPath(flightSegmentPath)\n )\n}\n","// This regex contains the bots that we need to do a blocking render for and can't safely stream the response\n// due to how they parse the DOM. For example, they might explicitly check for metadata in the `head` tag, so we can't stream metadata tags after the `head` was sent.\nexport const HTML_LIMITED_BOT_UA_RE =\n /Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview/i\n","export function getObjectClassLabel(value: any): string {\n return Object.prototype.toString.call(value)\n}\n\nexport function isPlainObject(value: any): boolean {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(value)\n\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */\n return prototype === null || prototype.hasOwnProperty('isPrototypeOf')\n}\n","// Override chunk URL mapping in the webpack runtime\n// https://github.com/webpack/webpack/blob/2738eebc7880835d88c727d364ad37f3ec557593/lib/RuntimeGlobals.js#L204\n\nimport { getDeploymentIdQueryOrEmptyString } from '../build/deployment-id'\nimport { encodeURIPath } from '../shared/lib/encode-uri-path'\n\ndeclare const __webpack_require__: any\n\n// If we have a deployment ID, we need to append it to the webpack chunk names\n// I am keeping the process check explicit so this can be statically optimized\nif (process.env.NEXT_DEPLOYMENT_ID) {\n const suffix = getDeploymentIdQueryOrEmptyString()\n // eslint-disable-next-line no-undef\n const getChunkScriptFilename = __webpack_require__.u\n // eslint-disable-next-line no-undef\n __webpack_require__.u = (...args: any[]) =>\n // We encode the chunk filename because our static server matches against and encoded\n // filename path.\n encodeURIPath(getChunkScriptFilename(...args)) + suffix\n\n // eslint-disable-next-line no-undef\n const getChunkCssFilename = __webpack_require__.k\n // eslint-disable-next-line no-undef\n __webpack_require__.k = (...args: any[]) =>\n getChunkCssFilename(...args) + suffix\n\n // eslint-disable-next-line no-undef\n const getMiniCssFilename = __webpack_require__.miniCssF\n // eslint-disable-next-line no-undef\n __webpack_require__.miniCssF = (...args: any[]) =>\n getMiniCssFilename(...args) + suffix\n} else {\n // eslint-disable-next-line no-undef\n const getChunkScriptFilename = __webpack_require__.u\n // eslint-disable-next-line no-undef\n __webpack_require__.u = (...args: any[]) =>\n // We encode the chunk filename because our static server matches against and encoded\n // filename path.\n encodeURIPath(getChunkScriptFilename(...args))\n\n // We don't need to override __webpack_require__.k because we don't modify\n // the css chunk name when not using deployment id suffixes\n\n // WE don't need to override __webpack_require__.miniCssF because we don't modify\n // the mini css chunk name when not using deployment id suffixes\n}\n\nexport {}\n","import { makeDsn, dsnToString, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { getSdkMetadataForEnvelopeHeader, dsnToString, createEnvelope, createEventEnvelopeHeaders } from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjut a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Generate bucket key from metric properties.\n */\nfunction getBucketKey(\n metricType,\n name,\n unit,\n tags,\n) {\n const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nfunction simpleHash(s) {\n let rv = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n rv = (rv << 5) - rv + c;\n rv &= rv;\n }\n return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nfunction serializeMetricBuckets(metricBucketItems) {\n let out = '';\n for (const item of metricBucketItems) {\n const tagEntries = Object.entries(item.tags);\n const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n }\n return out;\n}\n\n/** Sanitizes units */\nfunction sanitizeUnit(unit) {\n return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nfunction sanitizeMetricKey(key) {\n return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key) {\n return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements = [\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\\\', '\\\\\\\\'],\n ['|', '\\\\u{7c}'],\n [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input) {\n for (const [search, replacement] of tagValueReplacements) {\n if (input === search) {\n return replacement;\n }\n }\n\n return input;\n}\n\nfunction sanitizeTagValue(value) {\n return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nfunction sanitizeTags(unsanitizedTags) {\n const tags = {};\n for (const key in unsanitizedTags) {\n if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n const sanitizedKey = sanitizeTagKey(key);\n tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n }\n }\n return tags;\n}\n\nexport { getBucketKey, sanitizeMetricKey, sanitizeTags, sanitizeUnit, serializeMetricBuckets, simpleHash };\n//# sourceMappingURL=utils.js.map\n","import { dsnToString, createEnvelope } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils.js';\n\n/**\n * Create envelope from a metric aggregate.\n */\nfunction createMetricEnvelope(\n metricBucketItems,\n dsn,\n metadata,\n tunnel,\n) {\n const headers = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata && metadata.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const item = createMetricEnvelopeItem(metricBucketItems);\n return createEnvelope(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems) {\n const payload = serializeMetricBuckets(metricBucketItems);\n const metricHeaders = {\n type: 'statsd',\n length: payload.length,\n };\n return [metricHeaders, payload];\n}\n\nexport { createMetricEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { makeDsn, logger, checkOrSetAlreadyCaught, isParameterizedString, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { getClient } from './exports.js';\nimport { getIsolationScope } from './hub.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { createMetricEnvelope } from './metrics/envelope.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /**\n * A reference to a metrics aggregator\n *\n * @experimental Note this is alpha API. It may experience breaking changes in the future.\n */\n\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Indicates whether this client's integrations have been set up. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(\n this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n if (this.metricsAggregator) {\n this.metricsAggregator.flush();\n }\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n if (this.metricsAggregator) {\n this.metricsAggregator.close();\n }\n return result;\n });\n }\n\n /** Get all installed event processors. */\n getEventProcessors() {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n addEventProcessor(eventProcessor) {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * This is an internal function to setup all integrations that should run on the client.\n * @deprecated Use `client.init()` instead.\n */\n setupIntegrations(forceInitialize) {\n if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n this._setupIntegrations();\n }\n }\n\n /** @inheritdoc */\n init() {\n if (this._isEnabled()) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n getIntegrationById(integrationId) {\n return this.getIntegrationByName(integrationId);\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n getIntegrationByName(integrationName) {\n return this._integrations[integrationName] ;\n }\n\n /**\n * Returns the client's instance of the given integration class, it any.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, eventOrCount) {\n if (this._options.sendClientReports) {\n // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n // If event is passed as third argument, we assume this is a count of 1\n const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /**\n * @inheritDoc\n */\n captureAggregateMetrics(metricBucketItems) {\n DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n const metricsEnvelope = createMetricEnvelope(\n metricBucketItems,\n this._dsn,\n this._options._metadata,\n this._options.tunnel,\n );\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(metricsEnvelope);\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-expect-error We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n if (this._hooks[hook]) {\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n _setupIntegrations() {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n\n // TODO v8: We don't need this flag anymore\n this._integrationsInitialized = true;\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(\n event,\n hint,\n scope,\n isolationScope = getIsolationScope(),\n ) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n const propagationContext = {\n ...isolationScope.getPropagationContext(),\n ...(scope ? scope.getPropagationContext() : undefined),\n };\n\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore =\n (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n DEBUG_BUILD && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n if (event.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = event.spans.length;\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nfunction addEventProcessor(callback) {\n const client = getClient();\n\n if (!client || !client.addEventProcessor) {\n return;\n }\n\n client.addEventProcessor(callback);\n}\n\nexport { BaseClient, addEventProcessor };\n//# sourceMappingURL=baseclient.js.map\n","import { patchConsoleError } from './intercept-console-error'\n\npatchConsoleError()\n","import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n","// This module can be shared between both pages router and app router\n\nimport type { HydrationOptions } from 'react-dom/client'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { reportGlobalError } from './report-global-error'\nimport { getReactStitchedError } from '../components/errors/stitched-error'\nimport isError from '../../lib/is-error'\n\nexport const onRecoverableError: HydrationOptions['onRecoverableError'] = (\n error,\n errorInfo\n) => {\n // x-ref: https://github.com/facebook/react/pull/28736\n const cause = isError(error) && 'cause' in error ? error.cause : error\n const stitchedError = getReactStitchedError(cause)\n // In development mode, pass along the component stack to the error\n if (process.env.NODE_ENV === 'development' && errorInfo.componentStack) {\n ;(stitchedError as any)._componentStack = errorInfo.componentStack\n }\n // Skip certain custom errors which are not expected to be reported on client\n if (isBailoutToCSRError(cause)) return\n\n reportGlobalError(stitchedError)\n}\n","function _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexport { _interop_require_wildcard as _ };\n","/*\nMIT License\n\nCopyright (c) Jason Miller (https://jasonformat.com/)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// This file is based on https://github.com/developit/mitt/blob/v1.1.3/src/index.js\n// It's been edited for the needs of this script\n// See the LICENSE at the top of the file\n\ntype Handler = (...evts: any[]) => void\n\nexport type MittEmitter = {\n on(type: T, handler: Handler): void\n off(type: T, handler: Handler): void\n emit(type: T, ...evts: any[]): void\n}\n\nexport default function mitt(): MittEmitter {\n const all: { [s: string]: Handler[] } = Object.create(null)\n\n return {\n on(type: string, handler: Handler) {\n ;(all[type] || (all[type] = [])).push(handler)\n },\n\n off(type: string, handler: Handler) {\n if (all[type]) {\n all[type].splice(all[type].indexOf(handler) >>> 0, 1)\n }\n },\n\n emit(type: string, ...evts: any[]) {\n // eslint-disable-next-line array-callback-return\n ;(all[type] || []).slice().map((handler: Handler) => {\n handler(...evts)\n })\n },\n }\n}\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nfunction dateTimestampInSeconds() {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc() {\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ ;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs };\n//# sourceMappingURL=time.js.map\n","// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\nexport function describeStringPropertyAccess(target: string, prop: string) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return `\\`${target}.${prop}\\``\n }\n return `\\`${target}[${JSON.stringify(prop)}]\\``\n}\n\nexport function describeHasCheckingStringProperty(\n target: string,\n prop: string\n) {\n const stringifiedProp = JSON.stringify(prop)\n return `\\`Reflect.has(${target}, ${stringifiedProp})\\`, \\`${stringifiedProp} in ${target}\\`, or similar`\n}\n\nexport const wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n\n // Promise prototype\n // fallthrough\n 'then',\n 'catch',\n 'finally',\n\n // React Promise extension\n // fallthrough\n 'status',\n\n // React introspection\n 'displayName',\n\n // Common tested properties\n // fallthrough\n 'toJSON',\n '$$typeof',\n '__esModule',\n])\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick\n groups: Record\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n return (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: Params = {}\n for (const [key, group] of Object.entries(groups)) {\n const match = routeMatch[group.pos]\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry) => decode(entry))\n } else {\n params[key] = decode(match)\n }\n }\n }\n\n return params\n }\n}\n","import type { Segment } from '../../server/app-render/types'\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\n","import {\n type AppRouterState,\n type ReducerActions,\n type ReducerState,\n ACTION_REFRESH,\n ACTION_SERVER_ACTION,\n ACTION_NAVIGATE,\n ACTION_RESTORE,\n} from '../../../client/components/router-reducer/router-reducer-types'\nimport { reducer } from '../../../client/components/router-reducer/router-reducer'\nimport { startTransition } from 'react'\nimport { isThenable } from '../is-thenable'\n\nexport type DispatchStatePromise = React.Dispatch\n\nexport type AppRouterActionQueue = {\n state: AppRouterState\n dispatch: (payload: ReducerActions, setState: DispatchStatePromise) => void\n action: (state: AppRouterState, action: ReducerActions) => ReducerState\n pending: ActionQueueNode | null\n needsRefresh?: boolean\n last: ActionQueueNode | null\n}\n\nexport type ActionQueueNode = {\n payload: ReducerActions\n next: ActionQueueNode | null\n resolve: (value: ReducerState) => void\n reject: (err: Error) => void\n discarded?: boolean\n}\n\nfunction runRemainingActions(\n actionQueue: AppRouterActionQueue,\n setState: DispatchStatePromise\n) {\n if (actionQueue.pending !== null) {\n actionQueue.pending = actionQueue.pending.next\n if (actionQueue.pending !== null) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n runAction({\n actionQueue,\n action: actionQueue.pending,\n setState,\n })\n } else {\n // No more actions are pending, check if a refresh is needed\n if (actionQueue.needsRefresh) {\n actionQueue.needsRefresh = false\n actionQueue.dispatch(\n {\n type: ACTION_REFRESH,\n origin: window.location.origin,\n },\n setState\n )\n }\n }\n }\n}\n\nasync function runAction({\n actionQueue,\n action,\n setState,\n}: {\n actionQueue: AppRouterActionQueue\n action: ActionQueueNode\n setState: DispatchStatePromise\n}) {\n const prevState = actionQueue.state\n\n actionQueue.pending = action\n\n const payload = action.payload\n const actionResult = actionQueue.action(prevState, payload)\n\n function handleResult(nextState: AppRouterState) {\n // if we discarded this action, the state should also be discarded\n if (action.discarded) {\n return\n }\n\n actionQueue.state = nextState\n\n runRemainingActions(actionQueue, setState)\n action.resolve(nextState)\n }\n\n // if the action is a promise, set up a callback to resolve it\n if (isThenable(actionResult)) {\n actionResult.then(handleResult, (err) => {\n runRemainingActions(actionQueue, setState)\n action.reject(err)\n })\n } else {\n handleResult(actionResult)\n }\n}\n\nfunction dispatchAction(\n actionQueue: AppRouterActionQueue,\n payload: ReducerActions,\n setState: DispatchStatePromise\n) {\n let resolvers: {\n resolve: (value: ReducerState) => void\n reject: (reason: any) => void\n } = { resolve: setState, reject: () => {} }\n\n // most of the action types are async with the exception of restore\n // it's important that restore is handled quickly since it's fired on the popstate event\n // and we don't want to add any delay on a back/forward nav\n // this only creates a promise for the async actions\n if (payload.type !== ACTION_RESTORE) {\n // Create the promise and assign the resolvers to the object.\n const deferredPromise = new Promise((resolve, reject) => {\n resolvers = { resolve, reject }\n })\n\n startTransition(() => {\n // we immediately notify React of the pending promise -- the resolver is attached to the action node\n // and will be called when the associated action promise resolves\n setState(deferredPromise)\n })\n }\n\n const newAction: ActionQueueNode = {\n payload,\n next: null,\n resolve: resolvers.resolve,\n reject: resolvers.reject,\n }\n\n // Check if the queue is empty\n if (actionQueue.pending === null) {\n // The queue is empty, so add the action and start it immediately\n // Mark this action as the last in the queue\n actionQueue.last = newAction\n\n runAction({\n actionQueue,\n action: newAction,\n setState,\n })\n } else if (\n payload.type === ACTION_NAVIGATE ||\n payload.type === ACTION_RESTORE\n ) {\n // Navigations (including back/forward) take priority over any pending actions.\n // Mark the pending action as discarded (so the state is never applied) and start the navigation action immediately.\n actionQueue.pending.discarded = true\n\n // Mark this action as the last in the queue\n actionQueue.last = newAction\n\n // if the pending action was a server action, mark the queue as needing a refresh once events are processed\n if (actionQueue.pending.payload.type === ACTION_SERVER_ACTION) {\n actionQueue.needsRefresh = true\n }\n\n runAction({\n actionQueue,\n action: newAction,\n setState,\n })\n } else {\n // The queue is not empty, so add the action to the end of the queue\n // It will be started by runRemainingActions after the previous action finishes\n if (actionQueue.last !== null) {\n actionQueue.last.next = newAction\n }\n actionQueue.last = newAction\n }\n}\n\nlet globalActionQueue: AppRouterActionQueue | null = null\n\nexport function createMutableActionQueue(\n initialState: AppRouterState\n): AppRouterActionQueue {\n const actionQueue: AppRouterActionQueue = {\n state: initialState,\n dispatch: (payload: ReducerActions, setState: DispatchStatePromise) =>\n dispatchAction(actionQueue, payload, setState),\n action: async (state: AppRouterState, action: ReducerActions) => {\n const result = reducer(state, action)\n return result\n },\n pending: null,\n last: null,\n }\n\n if (typeof window !== 'undefined') {\n // The action queue is lazily created on hydration, but after that point\n // it doesn't change. So we can store it in a global rather than pass\n // it around everywhere via props/context.\n if (globalActionQueue !== null) {\n throw new Error(\n 'Internal Next.js Error: createMutableActionQueue was called more ' +\n 'than once'\n )\n }\n globalActionQueue = actionQueue\n }\n\n return actionQueue\n}\n\nexport function getCurrentAppRouterState(): AppRouterState | null {\n return globalActionQueue !== null ? globalActionQueue.state : null\n}\n","import { isString } from '../is.js';\nimport { fill } from '../object.js';\nimport { GLOBAL_OBJ } from '../worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addXhrInstrumentationHandler(handler) {\n const type = 'xhr';\n addHandler(type, handler);\n maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nfunction instrumentXHR() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!(WINDOW ).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n const startTimestamp = Date.now();\n\n // open() should always be called with two or more arguments\n // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n const url = parseUrl(args[1]);\n\n if (!method || !url) {\n return originalOpen.apply(this, args);\n }\n\n this[SENTRY_XHR_DATA_KEY] = {\n method,\n url,\n request_headers: {},\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n const handlerData = {\n args: [method, url],\n endTimestamp: Date.now(),\n startTimestamp,\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original) {\n return function ( ...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original) {\n return function ( ...setRequestHeaderArgs) {\n const [header, value] = setRequestHeaderArgs;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo && isString(header) && isString(value)) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return originalSend.apply(this, args);\n }\n\n if (args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n const handlerData = {\n args: [sentryXhrData.method, sentryXhrData.url],\n startTimestamp: Date.now(),\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nfunction parseUrl(url) {\n if (isString(url)) {\n return url;\n }\n\n try {\n // url can be a string or URL\n // but since URL is not available in IE11, we do not check for it,\n // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n // If that fails, we just return undefined\n return (url ).toString();\n } catch (e2) {} // eslint-disable-line no-empty\n\n return undefined;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler, instrumentXHR };\n//# sourceMappingURL=xhr.js.map\n","import { HTML_LIMITED_BOT_UA_RE } from './html-bots'\n\n// Bot crawler that will spin up a headless browser and execute JS\nconst HEADLESS_BROWSER_BOT_UA_RE =\n /Googlebot|Google-PageRenderer|AdsBot-Google|googleweblight|Storebot-Google/i\n\nexport const HTML_LIMITED_BOT_UA_RE_STRING = HTML_LIMITED_BOT_UA_RE.source\n\nexport { HTML_LIMITED_BOT_UA_RE }\n\nfunction isDomBotUA(userAgent: string) {\n return HEADLESS_BROWSER_BOT_UA_RE.test(userAgent)\n}\n\nfunction isHtmlLimitedBotUA(userAgent: string) {\n return HTML_LIMITED_BOT_UA_RE.test(userAgent)\n}\n\nexport function isBot(userAgent: string): boolean {\n return isDomBotUA(userAgent) || isHtmlLimitedBotUA(userAgent)\n}\n\nexport function getBotType(userAgent: string): 'dom' | 'html' | undefined {\n if (isDomBotUA(userAgent)) {\n return 'dom'\n }\n if (isHtmlLimitedBotUA(userAgent)) {\n return 'html'\n }\n return undefined\n}\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { consoleSandbox, logger } from './logger.js';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","export function createHrefFromUrl(\n url: Pick,\n includeHash: boolean = true\n): string {\n return url.pathname + url.search + (includeHash ? url.hash : '')\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n\nexport { SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE };\n//# sourceMappingURL=semanticAttributes.js.map\n","export interface ServerReferenceInfo {\n type: 'server-action' | 'use-cache'\n usedArgs: [boolean, boolean, boolean, boolean, boolean, boolean]\n hasRestArgs: boolean\n}\n\n/**\n * Extracts info about the server reference for the given server reference ID by\n * parsing the first byte of the hex-encoded ID.\n *\n * ```\n * Bit positions: [7] [6] [5] [4] [3] [2] [1] [0]\n * Bits: typeBit argMask restArgs\n * ```\n *\n * If the `typeBit` is `1` the server reference represents a `\"use cache\"`\n * function, otherwise a server action.\n *\n * The `argMask` encodes whether the function uses the argument at the\n * respective position.\n *\n * The `restArgs` bit indicates whether the function uses a rest parameter. It's\n * also set to 1 if the function has more than 6 args.\n *\n * @param id hex-encoded server reference ID\n */\nexport function extractInfoFromServerReferenceId(\n id: string\n): ServerReferenceInfo {\n const infoByte = parseInt(id.slice(0, 2), 16)\n const typeBit = (infoByte >> 7) & 0x1\n const argMask = (infoByte >> 1) & 0x3f\n const restArgs = infoByte & 0x1\n const usedArgs = Array(6)\n\n for (let index = 0; index < 6; index++) {\n const bitPosition = 5 - index\n const bit = (argMask >> bitPosition) & 0x1\n usedArgs[index] = bit === 1\n }\n\n return {\n type: typeBit === 1 ? 'use-cache' : 'server-action',\n usedArgs: usedArgs as [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n ],\n hasRestArgs: restArgs === 1,\n }\n}\n\n/**\n * Creates a sparse array containing only the used arguments based on the\n * provided action info.\n */\nexport function omitUnusedArgs(\n args: unknown[],\n info: ServerReferenceInfo\n): unknown[] {\n const filteredArgs = new Array(args.length)\n\n for (let index = 0; index < args.length; index++) {\n if (\n (index < 6 && info.usedArgs[index]) ||\n // This assumes that the server reference info byte has the restArgs bit\n // set to 1 if there are more than 6 args.\n (index >= 6 && info.hasRestArgs)\n ) {\n filteredArgs[index] = args[index]\n }\n }\n\n return filteredArgs\n}\n","const SDK_VERSION = '7.119.2';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getDeploymentIdQueryOrEmptyString\", {\n enumerable: true,\n get: function() {\n return getDeploymentIdQueryOrEmptyString;\n }\n});\nfunction getDeploymentIdQueryOrEmptyString() {\n if (process.env.NEXT_DEPLOYMENT_ID) {\n return `?dpl=${process.env.NEXT_DEPLOYMENT_ID}`;\n }\n return '';\n}\n\n//# sourceMappingURL=deployment-id.js.map","// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\nexport function djb2Hash(str: string) {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n hash = ((hash << 5) + hash + char) & 0xffffffff\n }\n return hash >>> 0\n}\n\nexport function hexHash(str: string) {\n return djb2Hash(str).toString(36).slice(0, 5)\n}\n","// Dedupe the two consecutive errors: If the previous one is same as current one, ignore the current one.\nexport function enqueueConsecutiveDedupedError(\n queue: Array,\n error: Error\n) {\n const previousError = queue[queue.length - 1]\n // Compare the error stack to dedupe the consecutive errors\n if (previousError && previousError.stack === error.stack) {\n return\n }\n queue.push(error)\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */\nexport function addPathSuffix(path: string, suffix?: string) {\n if (!path.startsWith('/') || !suffix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${pathname}${suffix}${query}${hash}`\n}\n","import { arrayify, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { addGlobalEventProcessor } from './eventProcessors.js';\nimport { getClient } from './exports.js';\nimport { getCurrentHub } from './hub.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n const integrationsByName = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(options) {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations;\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(client, integrations) {\n const integrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration && integration.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nfunction setupIntegration(client, integration, integrationIndex) {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (installedIntegrations.indexOf(integration.name) === -1) {\n // eslint-disable-next-line deprecation/deprecation\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (client.on && typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) ;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) ;\n\n const processor = Object.assign((event, hint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nfunction addIntegration(integration) {\n const client = getClient();\n\n if (!client || !client.addIntegration) {\n DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr, callback) {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nfunction convertIntegrationFnToClass(\n name,\n fn,\n) {\n return Object.assign(\n function ConvertedIntegration(...args) {\n return fn(...args);\n },\n { id: name },\n ) ;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, convertIntegrationFnToClass, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n default: null,\n getProperError: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n /**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ default: function() {\n return isError;\n },\n getProperError: function() {\n return getProperError;\n }\n});\nconst _isplainobject = require(\"../shared/lib/is-plain-object\");\nfunction isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nfunction safeStringify(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (process.env.NODE_ENV === 'development') {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error((0, _isplainobject.isPlainObject)(err) ? safeStringify(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map","var id = 0;\n\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\nexport { _class_private_field_loose_key as _ };\n","import { uuid4, dateTimestampInSeconds, addExceptionMechanism, truncate, GLOBAL_OBJ, normalize } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors.js';\nimport { getGlobalScope, Scope } from '../scope.js';\nimport { mergeScopeData, applyScopeDataToEvent } from './applyScopeDataToEvent.js';\nimport { spanToJSON } from './spanUtils.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n options,\n event,\n hint,\n scope,\n client,\n isolationScope,\n) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors = [\n ...clientEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce((acc, debugIdStackTrace) => {\n let parsedStack;\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace.frames.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n const data = spanToJSON(span).data;\n\n if (data) {\n // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n // eslint-disable-next-line deprecation/deprecation\n span.data = normalize(data, depth, maxBreadth);\n }\n\n return span;\n });\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope, captureContext) {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n hint,\n) {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint,\n) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { dropUndefinedKeys, arrayify } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { getRootSpan } from './getRootSpan.js';\nimport { spanToTraceContext, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\nfunction applyDataToEvent(event, data) {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event, span) {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event, fingerprint) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n\nexport { applyScopeDataToEvent, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=applyScopeDataToEvent.js.map\n","import type { FlightRouterState } from '../../server/app-render/types'\nimport type { Params } from '../../server/request/params'\n\nimport { useContext, useMemo } from 'react'\nimport {\n AppRouterContext,\n LayoutRouterContext,\n type AppRouterInstance,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport {\n SearchParamsContext,\n PathnameContext,\n PathParamsContext,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getSegmentValue } from './router-reducer/reducers/get-segment-value'\nimport { PAGE_SEGMENT_KEY, DEFAULT_SEGMENT_KEY } from '../../shared/lib/segment'\nimport { ReadonlyURLSearchParams } from './navigation.react-server'\n\nconst useDynamicRouteParams =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/dynamic-rendering') as typeof import('../../server/app-render/dynamic-rendering')\n ).useDynamicRouteParams\n : undefined\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you *read* the current URL's search parameters.\n *\n * Learn more about [`URLSearchParams` on MDN](https://developer.mozilla.org/docs/Web/API/URLSearchParams)\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useSearchParams } from 'next/navigation'\n *\n * export default function Page() {\n * const searchParams = useSearchParams()\n * searchParams.get('foo') // returns 'bar' when ?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSearchParams`](https://nextjs.org/docs/app/api-reference/functions/use-search-params)\n */\n// Client components API\nexport function useSearchParams(): ReadonlyURLSearchParams {\n const searchParams = useContext(SearchParamsContext)\n\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = useMemo(() => {\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null\n }\n\n return new ReadonlyURLSearchParams(searchParams)\n }, [searchParams]) as ReadonlyURLSearchParams\n\n if (typeof window === 'undefined') {\n // AsyncLocalStorage should not be included in the client bundle.\n const { bailoutToClientRendering } =\n require('./bailout-to-client-rendering') as typeof import('./bailout-to-client-rendering')\n // TODO-APP: handle dynamic = 'force-static' here and on the client\n bailoutToClientRendering('useSearchParams()')\n }\n\n return readonlySearchParams\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the current URL's pathname.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { usePathname } from 'next/navigation'\n *\n * export default function Page() {\n * const pathname = usePathname() // returns \"/dashboard\" on /dashboard?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `usePathname`](https://nextjs.org/docs/app/api-reference/functions/use-pathname)\n */\n// Client components API\nexport function usePathname(): string {\n useDynamicRouteParams?.('usePathname()')\n\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n return useContext(PathnameContext) as string\n}\n\n// Client components API\nexport {\n ServerInsertedHTMLContext,\n useServerInsertedHTML,\n} from '../../shared/lib/server-inserted-html.shared-runtime'\n\n/**\n *\n * This hook allows you to programmatically change routes inside [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components).\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useRouter } from 'next/navigation'\n *\n * export default function Page() {\n * const router = useRouter()\n * // ...\n * router.push('/dashboard') // Navigate to /dashboard\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useRouter`](https://nextjs.org/docs/app/api-reference/functions/use-router)\n */\n// Client components API\nexport function useRouter(): AppRouterInstance {\n const router = useContext(AppRouterContext)\n if (router === null) {\n throw new Error('invariant expected app router to be mounted')\n }\n\n return router\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read a route's dynamic params filled in by the current URL.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useParams } from 'next/navigation'\n *\n * export default function Page() {\n * // on /dashboard/[team] where pathname is /dashboard/nextjs\n * const { team } = useParams() // team === \"nextjs\"\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useParams`](https://nextjs.org/docs/app/api-reference/functions/use-params)\n */\n// Client components API\nexport function useParams(): T {\n useDynamicRouteParams?.('useParams()')\n\n return useContext(PathParamsContext) as T\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\n// Client components API\nfunction getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segments **below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n *\n * import { useSelectedLayoutSegments } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segments = useSelectedLayoutSegments()\n *\n * return (\n *
    \n * {segments.map((segment, index) => (\n *
  • {segment}
  • \n * ))}\n *
\n * )\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegments`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments)\n */\n// Client components API\nexport function useSelectedLayoutSegments(\n parallelRouteKey: string = 'children'\n): string[] {\n useDynamicRouteParams?.('useSelectedLayoutSegments()')\n\n const context = useContext(LayoutRouterContext)\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null\n\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey)\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segment **one level below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n * import { useSelectedLayoutSegment } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segment = useSelectedLayoutSegment()\n *\n * return

Active segment: {segment}

\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegment`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment)\n */\n// Client components API\nexport function useSelectedLayoutSegment(\n parallelRouteKey: string = 'children'\n): string | null {\n useDynamicRouteParams?.('useSelectedLayoutSegment()')\n\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey)\n\n if (!selectedLayoutSegments || selectedLayoutSegments.length === 0) {\n return null\n }\n\n const selectedLayoutSegment =\n parallelRouteKey === 'children'\n ? selectedLayoutSegments[0]\n : selectedLayoutSegments[selectedLayoutSegments.length - 1]\n\n // if the default slot is showing, we return null since it's not technically \"selected\" (it's a fallback)\n // and returning an internal value like `__DEFAULT__` would be confusing.\n return selectedLayoutSegment === DEFAULT_SEGMENT_KEY\n ? null\n : selectedLayoutSegment\n}\n\n// Shared components APIs\nexport {\n notFound,\n forbidden,\n unauthorized,\n redirect,\n permanentRedirect,\n RedirectType,\n ReadonlyURLSearchParams,\n unstable_rethrow,\n} from './navigation.react-server'\n","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import React, { type JSX } from 'react'\nimport type {\n BaseContext,\n NextComponentType,\n NextPageContext,\n} from '../shared/lib/utils'\nimport type { NextRouter } from './router'\nimport { useRouter } from './router'\n\nexport type WithRouterProps = {\n router: NextRouter\n}\n\nexport type ExcludeRouterProps

= Pick<\n P,\n Exclude\n>\n\nexport default function withRouter<\n P extends WithRouterProps,\n C extends BaseContext = NextPageContext,\n>(\n ComposedComponent: NextComponentType\n): React.ComponentType> {\n function WithRouterWrapper(props: any): JSX.Element {\n return \n }\n\n WithRouterWrapper.getInitialProps = ComposedComponent.getInitialProps\n // This is needed to allow checking for custom getInitialProps in _app\n ;(WithRouterWrapper as any).origGetInitialProps = (\n ComposedComponent as any\n ).origGetInitialProps\n if (process.env.NODE_ENV !== 'production') {\n const name =\n ComposedComponent.displayName || ComposedComponent.name || 'Unknown'\n WithRouterWrapper.displayName = `withRouter(${name})`\n }\n\n return WithRouterWrapper\n}\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n for (const key of Object.keys(currBaggageObject)) {\n acc[key] = currBaggageObject[key];\n }\n return acc;\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import type { FlightSegmentPath } from '../../../server/app-render/types'\nimport type { CacheNode } from '../../../shared/lib/app-router-context.shared-runtime'\nimport { getNextFlightSegmentPath } from '../../flight-data-helpers'\nimport { createRouterCacheKey } from './create-router-cache-key'\n\n/**\n * This will clear the CacheNode data for a particular segment path. This will cause a lazy-fetch in layout router to fill in new data.\n */\nexport function clearCacheNodeDataForSegmentPath(\n newCache: CacheNode,\n existingCache: CacheNode,\n flightSegmentPath: FlightSegmentPath\n): void {\n const isLastEntry = flightSegmentPath.length <= 2\n\n const [parallelRouteKey, segment] = flightSegmentPath\n const cacheKey = createRouterCacheKey(segment)\n\n const existingChildSegmentMap =\n existingCache.parallelRoutes.get(parallelRouteKey)\n\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey)\n\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap)\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap)\n }\n\n const existingChildCacheNode = existingChildSegmentMap?.get(cacheKey)\n let childCacheNode = childSegmentMap.get(cacheKey)\n\n // In case of last segment start off the fetch at this level and don't copy further down.\n if (isLastEntry) {\n if (\n !childCacheNode ||\n !childCacheNode.lazyData ||\n childCacheNode === existingChildCacheNode\n ) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n })\n }\n return\n }\n\n if (!childCacheNode || !existingChildCacheNode) {\n // Start fetch in the place where the existing cache doesn't have the data yet.\n if (!childCacheNode) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n })\n }\n return\n }\n\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n loading: childCacheNode.loading,\n } as CacheNode\n childSegmentMap.set(cacheKey, childCacheNode)\n }\n\n return clearCacheNodeDataForSegmentPath(\n childCacheNode,\n existingChildCacheNode,\n getNextFlightSegmentPath(flightSegmentPath)\n )\n}\n","import { useContext } from 'react'\nimport { PathnameContext } from '../../shared/lib/hooks-client-context.shared-runtime'\n\n/**\n * This checks to see if the current render has any unknown route parameters.\n * It's used to trigger a different render path in the error boundary.\n *\n * @returns true if there are any unknown route parameters, false otherwise\n */\nfunction hasFallbackRouteParams() {\n if (typeof window === 'undefined') {\n // AsyncLocalStorage should not be included in the client bundle.\n const { workAsyncStorage } =\n require('../../server/app-render/work-async-storage.external') as typeof import('../../server/app-render/work-async-storage.external')\n\n const workStore = workAsyncStorage.getStore()\n if (!workStore) return false\n\n const { fallbackRouteParams } = workStore\n if (!fallbackRouteParams || fallbackRouteParams.size === 0) return false\n\n return true\n }\n\n return false\n}\n\n/**\n * This returns a `null` value if there are any unknown route parameters, and\n * otherwise returns the pathname from the context. This is an alternative to\n * `usePathname` that is used in the error boundary to avoid rendering the\n * error boundary when there are unknown route parameters. This doesn't throw\n * when accessed with unknown route parameters.\n *\n * @returns\n *\n * @internal\n */\nexport function useUntrackedPathname(): string | null {\n // If there are any unknown route parameters we would typically throw\n // an error, but this internal method allows us to return a null value instead\n // for components that do not propagate the pathname to the static shell (like\n // the error boundary).\n if (hasFallbackRouteParams()) {\n return null\n }\n\n // This shouldn't cause any issues related to conditional rendering because\n // the environment will be consistent for the render.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useContext(PathnameContext)\n}\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\nimport React, { useEffect } from 'react'\nimport type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime'\nimport { useRouter } from './navigation'\nimport { getRedirectTypeFromError, getURLFromRedirectError } from './redirect'\nimport { RedirectType, isRedirectError } from './redirect-error'\n\ninterface RedirectBoundaryProps {\n router: AppRouterInstance\n children: React.ReactNode\n}\n\nfunction HandleRedirect({\n redirect,\n reset,\n redirectType,\n}: {\n redirect: string\n redirectType: RedirectType\n reset: () => void\n}) {\n const router = useRouter()\n\n useEffect(() => {\n React.startTransition(() => {\n if (redirectType === RedirectType.push) {\n router.push(redirect, {})\n } else {\n router.replace(redirect, {})\n }\n reset()\n })\n }, [redirect, redirectType, reset, router])\n\n return null\n}\n\nexport class RedirectErrorBoundary extends React.Component<\n RedirectBoundaryProps,\n { redirect: string | null; redirectType: RedirectType | null }\n> {\n constructor(props: RedirectBoundaryProps) {\n super(props)\n this.state = { redirect: null, redirectType: null }\n }\n\n static getDerivedStateFromError(error: any) {\n if (isRedirectError(error)) {\n const url = getURLFromRedirectError(error)\n const redirectType = getRedirectTypeFromError(error)\n return { redirect: url, redirectType }\n }\n // Re-throw if error is not for redirect\n throw error\n }\n\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render(): React.ReactNode {\n const { redirect, redirectType } = this.state\n if (redirect !== null && redirectType !== null) {\n return (\n this.setState({ redirect: null })}\n />\n )\n }\n\n return this.props.children\n }\n}\n\nexport function RedirectBoundary({ children }: { children: React.ReactNode }) {\n const router = useRouter()\n return (\n {children}\n )\n}\n","import { isVueViewModel, isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n value,\n pattern,\n requireExactStringMatch = false,\n) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n testString,\n patterns = [],\n requireExactStringMatch = false,\n) {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { addBasePath } from './add-base-path'\n\n/**\n * Function to correctly assign location to URL\n *\n * The method will add basePath, and will also correctly add location (including if it is a relative path)\n * @param location Location that should be added to the url\n * @param url Base URL to which the location should be assigned\n */\nexport function assignLocation(location: string, url: URL): URL {\n if (location.startsWith('.')) {\n const urlBase = url.origin + url.pathname\n return new URL(\n // In order for a relative path to be added to the current url correctly, the current url must end with a slash\n // new URL('./relative', 'https://example.com/subdir').href -> 'https://example.com/relative'\n // new URL('./relative', 'https://example.com/subdir/').href -> 'https://example.com/subdir/relative'\n (urlBase.endsWith('/') ? urlBase : urlBase + '/') + location\n )\n }\n\n return new URL(addBasePath(location), url.href)\n}\n","export const reportGlobalError =\n typeof reportError === 'function'\n ? // In modern browsers, reportError will dispatch an error event,\n // emulating an uncaught JavaScript error.\n reportError\n : (error: unknown) => {\n // TODO: Dispatch error event\n globalThis.console.error(error)\n }\n","export const shouldRenderRootLevelErrorOverlay = () => {\n return !!window.__next_root_layout_missing_tags?.length\n}\n","import type {\n CacheNodeSeedData,\n FlightData,\n FlightDataPath,\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../server/app-render/types'\nimport type { HeadData } from '../shared/lib/app-router-context.shared-runtime'\n\nexport type NormalizedFlightData = {\n /**\n * The full `FlightSegmentPath` inclusive of the final `Segment`\n */\n segmentPath: FlightSegmentPath\n /**\n * The `FlightSegmentPath` exclusive of the final `Segment`\n */\n pathToSegment: FlightSegmentPath\n segment: Segment\n tree: FlightRouterState\n seedData: CacheNodeSeedData | null\n head: HeadData\n isHeadPartial: boolean\n isRootRender: boolean\n}\n\n// TODO: We should only have to export `normalizeFlightData`, however because the initial flight data\n// that gets passed to `createInitialRouterState` doesn't conform to the `FlightDataPath` type (it's missing the root segment)\n// we're currently exporting it so we can use it directly. This should be fixed as part of the unification of\n// the different ways we express `FlightSegmentPath`.\nexport function getFlightDataPartsFromPath(\n flightDataPath: FlightDataPath\n): NormalizedFlightData {\n // Pick the last 4 items from the `FlightDataPath` to get the [tree, seedData, viewport, isHeadPartial].\n const flightDataPathLength = 4\n // tree, seedData, and head are *always* the last three items in the `FlightDataPath`.\n const [tree, seedData, head, isHeadPartial] =\n flightDataPath.slice(-flightDataPathLength)\n // The `FlightSegmentPath` is everything except the last three items. For a root render, it won't be present.\n const segmentPath = flightDataPath.slice(0, -flightDataPathLength)\n\n return {\n // TODO: Unify these two segment path helpers. We are inconsistently pushing an empty segment (\"\")\n // to the start of the segment path in some places which makes it hard to use solely the segment path.\n // Look for \"// TODO-APP: remove ''\" in the codebase.\n pathToSegment: segmentPath.slice(0, -1),\n segmentPath,\n // if the `FlightDataPath` corresponds with the root, there'll be no segment path,\n // in which case we default to ''.\n segment: segmentPath[segmentPath.length - 1] ?? '',\n tree,\n seedData,\n head,\n isHeadPartial,\n isRootRender: flightDataPath.length === flightDataPathLength,\n }\n}\n\nexport function getNextFlightSegmentPath(\n flightSegmentPath: FlightSegmentPath\n): FlightSegmentPath {\n // Since `FlightSegmentPath` is a repeated tuple of `Segment` and `ParallelRouteKey`, we slice off two items\n // to get the next segment path.\n return flightSegmentPath.slice(2)\n}\n\nexport function normalizeFlightData(\n flightData: FlightData\n): NormalizedFlightData[] | string {\n // FlightData can be a string when the server didn't respond with a proper flight response,\n // or when a redirect happens, to signal to the client that it needs to perform an MPA navigation.\n if (typeof flightData === 'string') {\n return flightData\n }\n\n return flightData.map(getFlightDataPartsFromPath)\n}\n","/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction isSentryRequestUrl(url, hubOrClient) {\n const client =\n hubOrClient && isHub(hubOrClient)\n ? // eslint-disable-next-line deprecation/deprecation\n hubOrClient.getClient()\n : hubOrClient;\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\n\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url, tunnel) {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url, dsn) {\n return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str) {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction isHub(hubOrClient) {\n // eslint-disable-next-line deprecation/deprecation\n return (hubOrClient ).getClient !== undefined;\n}\n\nexport { isSentryRequestUrl };\n//# sourceMappingURL=isSentryRequestUrl.js.map\n","import {\n isHTTPAccessFallbackError,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\nimport { isRedirectError, type RedirectError } from './redirect-error'\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(\n error: unknown\n): error is RedirectError | HTTPAccessFallbackError {\n return isRedirectError(error) || isHTTPAccessFallbackError(error)\n}\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = () => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","/**\n * Run function with `scroll-behavior: auto` applied to ``.\n * This css change will be reverted after the function finishes.\n */\nexport function handleSmoothScroll(\n fn: () => void,\n options: { dontForceLayout?: boolean; onlyHashChange?: boolean } = {}\n) {\n // if only the hash is changed, we don't need to disable smooth scrolling\n // we only care to prevent smooth scrolling when navigating to a new page to avoid jarring UX\n if (options.onlyHashChange) {\n fn()\n return\n }\n const htmlElement = document.documentElement\n const existing = htmlElement.style.scrollBehavior\n htmlElement.style.scrollBehavior = 'auto'\n if (!options.dontForceLayout) {\n // In Chrome-based browsers we need to force reflow before calling `scrollTo`.\n // Otherwise it will not pickup the change in scrollBehavior\n // More info here: https://github.com/vercel/next.js/issues/40719#issuecomment-1336248042\n htmlElement.getClientRects()\n }\n fn()\n htmlElement.style.scrollBehavior = existing\n}\n","export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n","import type { NextRouter, Url } from '../shared/lib/router/router'\n\nimport { searchParamsToUrlQuery } from '../shared/lib/router/utils/querystring'\nimport { formatWithValidation } from '../shared/lib/router/utils/format-url'\nimport { omit } from '../shared/lib/router/utils/omit'\nimport { normalizeRepeatedSlashes } from '../shared/lib/utils'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { isDynamicRoute } from '../shared/lib/router/utils'\nimport { interpolateAs } from '../shared/lib/router/utils/interpolate-as'\n\n/**\n * Resolves a given hyperlink with a certain router state (basePath not included).\n * Preserves absolute urls.\n */\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs: true\n): [string, string] | [string]\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: false\n): string\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: boolean\n): [string, string] | [string] | string {\n // we use a dummy base url for relative urls\n let base: URL\n let urlAsString = typeof href === 'string' ? href : formatWithValidation(href)\n\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//)\n const urlAsStringNoProto = urlProtoMatch\n ? urlAsString.slice(urlProtoMatch[0].length)\n : urlAsString\n\n const urlParts = urlAsStringNoProto.split('?', 1)\n\n if ((urlParts[0] || '').match(/(\\/\\/|\\\\)/)) {\n console.error(\n `Invalid href '${urlAsString}' passed to next/router in page: '${router.pathname}'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.`\n )\n const normalizedUrl = normalizeRepeatedSlashes(urlAsStringNoProto)\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : '') + normalizedUrl\n }\n\n // Return because it cannot be routed by the Next.js router\n if (!isLocalURL(urlAsString)) {\n return (resolveAs ? [urlAsString] : urlAsString) as string\n }\n\n try {\n base = new URL(\n urlAsString.startsWith('#') ? router.asPath : router.pathname,\n 'http://n'\n )\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL('/', 'http://n')\n }\n\n try {\n const finalUrl = new URL(urlAsString, base)\n finalUrl.pathname = normalizePathTrailingSlash(finalUrl.pathname)\n let interpolatedAs = ''\n\n if (\n isDynamicRoute(finalUrl.pathname) &&\n finalUrl.searchParams &&\n resolveAs\n ) {\n const query = searchParamsToUrlQuery(finalUrl.searchParams)\n\n const { result, params } = interpolateAs(\n finalUrl.pathname,\n finalUrl.pathname,\n query\n )\n\n if (result) {\n interpolatedAs = formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params),\n })\n }\n }\n\n // if the origin didn't change, it means we received a relative href\n const resolvedHref =\n finalUrl.origin === base.origin\n ? finalUrl.href.slice(finalUrl.origin.length)\n : finalUrl.href\n\n return resolveAs\n ? [resolvedHref, interpolatedAs || resolvedHref]\n : resolvedHref\n } catch (_) {\n return resolveAs ? [urlAsString] : urlAsString\n }\n}\n","import type { FlightRouterState } from '../../server/app-render/types'\nimport type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime'\nimport { getCurrentAppRouterState } from '../../shared/lib/router/action-queue'\nimport { createPrefetchURL } from './app-router'\nimport { PrefetchKind } from './router-reducer/router-reducer-types'\nimport { getCurrentCacheVersion } from './segment-cache'\nimport { createCacheKey } from './segment-cache'\nimport {\n type PrefetchTask,\n PrefetchPriority,\n schedulePrefetchTask as scheduleSegmentPrefetchTask,\n cancelPrefetchTask,\n bumpPrefetchTask,\n} from './segment-cache'\n\ntype LinkElement = HTMLAnchorElement | SVGAElement | HTMLFormElement\n\ntype LinkInstance = {\n router: AppRouterInstance\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n prefetchHref: string\n\n isVisible: boolean\n wasHoveredOrTouched: boolean\n\n // The most recently initiated prefetch task. It may or may not have\n // already completed. The same prefetch task object can be reused across\n // multiple prefetches of the same link.\n prefetchTask: PrefetchTask | null\n\n // The cache version at the time the task was initiated. This is used to\n // determine if the cache was invalidated since the task was initiated.\n cacheVersion: number\n}\n\n// Use a WeakMap to associate a Link instance with its DOM element. This is\n// used by the IntersectionObserver to track the link's visibility.\nconst links: WeakMap | Map =\n typeof WeakMap === 'function' ? new WeakMap() : new Map()\n\n// A Set of the currently visible links. We re-prefetch visible links after a\n// cache invalidation, or when the current URL changes. It's a separate data\n// structure from the WeakMap above because only the visible links need to\n// be enumerated.\nconst visibleLinks: Set = new Set()\n\n// A single IntersectionObserver instance shared by all components.\nconst observer: IntersectionObserver | null =\n typeof IntersectionObserver === 'function'\n ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px',\n })\n : null\n\nexport function mountLinkInstance(\n element: LinkElement,\n href: string,\n router: AppRouterInstance,\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n) {\n let prefetchUrl: URL | null = null\n try {\n prefetchUrl = createPrefetchURL(href)\n if (prefetchUrl === null) {\n // We only track the link if it's prefetchable. For example, this excludes\n // links to external URLs.\n return\n }\n } catch {\n // createPrefetchURL sometimes throws an error if an invalid URL is\n // provided, though I'm not sure if it's actually necessary.\n // TODO: Consider removing the throw from the inner function, or change it\n // to reportError. Or maybe the error isn't even necessary for automatic\n // prefetches, just navigations.\n const reportErrorFn =\n typeof reportError === 'function' ? reportError : console.error\n reportErrorFn(\n `Cannot prefetch '${href}' because it cannot be converted to a URL.`\n )\n return\n }\n\n const instance: LinkInstance = {\n prefetchHref: prefetchUrl.href,\n router,\n kind,\n isVisible: false,\n wasHoveredOrTouched: false,\n prefetchTask: null,\n cacheVersion: -1,\n }\n const existingInstance = links.get(element)\n if (existingInstance !== undefined) {\n // This shouldn't happen because each component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountLinkInstance(element)\n }\n links.set(element, instance)\n if (observer !== null) {\n observer.observe(element)\n }\n}\n\nexport function unmountLinkInstance(element: LinkElement) {\n const instance = links.get(element)\n if (instance !== undefined) {\n links.delete(element)\n visibleLinks.delete(instance)\n const prefetchTask = instance.prefetchTask\n if (prefetchTask !== null) {\n cancelPrefetchTask(prefetchTask)\n }\n }\n if (observer !== null) {\n observer.unobserve(element)\n }\n}\n\nfunction handleIntersect(entries: Array) {\n for (const entry of entries) {\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0\n onLinkVisibilityChanged(entry.target as HTMLAnchorElement, isVisible)\n }\n}\n\nexport function onLinkVisibilityChanged(\n element: LinkElement,\n isVisible: boolean\n) {\n if (process.env.NODE_ENV !== 'production') {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return\n }\n\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n\n instance.isVisible = isVisible\n if (isVisible) {\n visibleLinks.add(instance)\n } else {\n visibleLinks.delete(instance)\n }\n rescheduleLinkPrefetch(instance)\n}\n\nexport function onNavigationIntent(element: HTMLAnchorElement | SVGAElement) {\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n instance.wasHoveredOrTouched = true\n rescheduleLinkPrefetch(instance)\n }\n}\n\nfunction rescheduleLinkPrefetch(instance: LinkInstance) {\n const existingPrefetchTask = instance.prefetchTask\n\n if (!instance.isVisible) {\n // Cancel any in-progress prefetch task. (If it already finished then this\n // is a no-op.)\n if (existingPrefetchTask !== null) {\n cancelPrefetchTask(existingPrefetchTask)\n }\n // We don't need to reset the prefetchTask to null upon cancellation; an\n // old task object can be rescheduled with bumpPrefetchTask. This is a\n // micro-optimization but also makes the code simpler (don't need to\n // worry about whether an old task object is stale).\n return\n }\n\n if (!process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n // The old prefetch implementation does not have different priority levels.\n // Just schedule a new prefetch task.\n prefetchWithOldCacheImplementation(instance)\n return\n }\n\n // In the Segment Cache implementation, we assign a higher priority level to\n // links that were at one point hovered or touched. Since the queue is last-\n // in-first-out, the highest priority Link is whichever one was hovered last.\n //\n // We also increase the relative priority of links whenever they re-enter the\n // viewport, as if they were being scheduled for the first time.\n const priority = instance.wasHoveredOrTouched\n ? PrefetchPriority.Intent\n : PrefetchPriority.Default\n if (existingPrefetchTask === null) {\n // Initiate a prefetch task.\n const appRouterState = getCurrentAppRouterState()\n if (appRouterState !== null) {\n const nextUrl = appRouterState.nextUrl\n const treeAtTimeOfPrefetch = appRouterState.tree\n const cacheKey = createCacheKey(instance.prefetchHref, nextUrl)\n instance.prefetchTask = scheduleSegmentPrefetchTask(\n cacheKey,\n treeAtTimeOfPrefetch,\n instance.kind === PrefetchKind.FULL,\n priority\n )\n instance.cacheVersion = getCurrentCacheVersion()\n }\n } else {\n // We already have an old task object that we can reschedule. This is\n // effectively the same as canceling the old task and creating a new one.\n bumpPrefetchTask(existingPrefetchTask, priority)\n }\n}\n\nexport function pingVisibleLinks(\n nextUrl: string | null,\n tree: FlightRouterState\n) {\n // For each currently visible link, cancel the existing prefetch task (if it\n // exists) and schedule a new one. This is effectively the same as if all the\n // visible links left and then re-entered the viewport.\n //\n // This is called when the Next-Url or the base tree changes, since those\n // may affect the result of a prefetch task. It's also called after a\n // cache invalidation.\n const currentCacheVersion = getCurrentCacheVersion()\n for (const instance of visibleLinks) {\n const task = instance.prefetchTask\n if (\n task !== null &&\n instance.cacheVersion === currentCacheVersion &&\n task.key.nextUrl === nextUrl &&\n task.treeAtTimeOfPrefetch === tree\n ) {\n // The cache has not been invalidated, and none of the inputs have\n // changed. Bail out.\n continue\n }\n // Something changed. Cancel the existing prefetch task and schedule a\n // new one.\n if (task !== null) {\n cancelPrefetchTask(task)\n }\n const cacheKey = createCacheKey(instance.prefetchHref, nextUrl)\n const priority = instance.wasHoveredOrTouched\n ? PrefetchPriority.Intent\n : PrefetchPriority.Default\n instance.prefetchTask = scheduleSegmentPrefetchTask(\n cacheKey,\n tree,\n instance.kind === PrefetchKind.FULL,\n priority\n )\n instance.cacheVersion = getCurrentCacheVersion()\n }\n}\n\nfunction prefetchWithOldCacheImplementation(instance: LinkInstance) {\n // This is the path used when the Segment Cache is not enabled.\n if (typeof window === 'undefined') {\n return\n }\n\n const doPrefetch = async () => {\n // note that `appRouter.prefetch()` is currently sync,\n // so we have to wrap this call in an async function to be able to catch() errors below.\n return instance.router.prefetch(instance.prefetchHref, {\n kind: instance.kind,\n })\n }\n\n // Prefetch the page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n doPrefetch().catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err\n }\n })\n}\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n if (!elem) {\n return '';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n\nexport { getComponentName, getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","// To distinguish from React error.digest, we use a different symbol here to determine if the error is from console.error or unhandled promise rejection.\nconst digestSym = Symbol.for('next.console.error.digest')\nconst consoleTypeSym = Symbol.for('next.console.error.type')\n\n// Represent non Error shape unhandled promise rejections or console.error errors.\n// Those errors will be captured and displayed in Error Overlay.\ntype UnhandledError = Error & {\n [digestSym]: 'NEXT_UNHANDLED_ERROR'\n [consoleTypeSym]: 'string' | 'error'\n environmentName: string\n}\n\nexport function createUnhandledError(\n message: string | Error,\n environmentName?: string | null\n): UnhandledError {\n const error = (\n typeof message === 'string' ? new Error(message) : message\n ) as UnhandledError\n error[digestSym] = 'NEXT_UNHANDLED_ERROR'\n error[consoleTypeSym] = typeof message === 'string' ? 'string' : 'error'\n\n if (environmentName && !error.environmentName) {\n error.environmentName = environmentName\n }\n\n return error\n}\n\nexport const isUnhandledConsoleOrRejection = (\n error: any\n): error is UnhandledError => {\n return error && error[digestSym] === 'NEXT_UNHANDLED_ERROR'\n}\n\nexport const getUnhandledErrorType = (error: UnhandledError) => {\n return error[consoleTypeSym]\n}\n","import isError from '../../lib/is-error'\n\nconst hydrationErrorRegex =\n /hydration failed|while hydrating|content does not match|did not match|HTML didn't match/i\n\nconst reactUnifiedMismatchWarning = `Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:`\n\nconst reactHydrationStartMessages = [\n reactUnifiedMismatchWarning,\n `A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:`,\n]\n\nexport const REACT_HYDRATION_ERROR_LINK =\n 'https://react.dev/link/hydration-mismatch'\nexport const NEXTJS_HYDRATION_ERROR_LINK =\n 'https://nextjs.org/docs/messages/react-hydration-error'\n\nexport const getDefaultHydrationErrorMessage = () => {\n return reactUnifiedMismatchWarning\n}\n\nexport function isHydrationError(error: unknown): boolean {\n return isError(error) && hydrationErrorRegex.test(error.message)\n}\n\nexport function isReactHydrationErrorMessage(msg: string): boolean {\n return reactHydrationStartMessages.some((prefix) => msg.startsWith(prefix))\n}\n\nconst hydrationWarningRegexes = [\n /^In HTML, (.+?) cannot be a child of <(.+?)>\\.(.*)\\nThis will cause a hydration error\\.(.*)/,\n /^In HTML, (.+?) cannot be a descendant of <(.+?)>\\.\\nThis will cause a hydration error\\.(.*)/,\n /^In HTML, text nodes cannot be a child of <(.+?)>\\.\\nThis will cause a hydration error\\./,\n /^In HTML, whitespace text nodes cannot be a child of <(.+?)>\\. Make sure you don't have any extra whitespace between tags on each line of your source code\\.\\nThis will cause a hydration error\\./,\n /^Expected server HTML to contain a matching <(.+?)> in <(.+?)>\\.(.*)/,\n /^Did not expect server HTML to contain a <(.+?)> in <(.+?)>\\.(.*)/,\n /^Expected server HTML to contain a matching text node for \"(.+?)\" in <(.+?)>\\.(.*)/,\n /^Did not expect server HTML to contain the text node \"(.+?)\" in <(.+?)>\\.(.*)/,\n /^Text content did not match\\. Server: \"(.+?)\" Client: \"(.+?)\"(.*)/,\n]\n\nexport function testReactHydrationWarning(msg: string): boolean {\n if (typeof msg !== 'string' || !msg) return false\n // React 18 has the `Warning: ` prefix.\n // React 19 does not.\n if (msg.startsWith('Warning: ')) {\n msg = msg.slice('Warning: '.length)\n }\n return hydrationWarningRegexes.some((regex) => regex.test(msg))\n}\n\nexport function getHydrationErrorStackInfo(rawMessage: string): {\n message: string | null\n stack?: string\n diff?: string\n} {\n rawMessage = rawMessage.replace(/^Error: /, '')\n rawMessage = rawMessage.replace('Warning: ', '')\n const isReactHydrationWarning = testReactHydrationWarning(rawMessage)\n\n if (!isReactHydrationErrorMessage(rawMessage) && !isReactHydrationWarning) {\n return {\n message: null,\n stack: rawMessage,\n diff: '',\n }\n }\n\n if (isReactHydrationWarning) {\n const [message, diffLog] = rawMessage.split('\\n\\n')\n return {\n message: message.trim(),\n stack: '',\n diff: (diffLog || '').trim(),\n }\n }\n\n const firstLineBreak = rawMessage.indexOf('\\n')\n rawMessage = rawMessage.slice(firstLineBreak + 1).trim()\n\n const [message, trailing] = rawMessage.split(`${REACT_HYDRATION_ERROR_LINK}`)\n const trimmedMessage = message.trim()\n // React built-in hydration diff starts with a newline, checking if length is > 1\n if (trailing && trailing.length > 1) {\n const stacks: string[] = []\n const diffs: string[] = []\n trailing.split('\\n').forEach((line) => {\n if (line.trim() === '') return\n if (line.trim().startsWith('at ')) {\n stacks.push(line)\n } else {\n diffs.push(line)\n }\n })\n\n return {\n message: trimmedMessage,\n diff: diffs.join('\\n'),\n stack: stacks.join('\\n'),\n }\n } else {\n return {\n message: trimmedMessage,\n stack: trailing, // without hydration diff\n }\n }\n}\n","'use client'\n\nimport React, { type JSX } from 'react'\nimport { useUntrackedPathname } from './navigation-untracked'\nimport { isNextRouterError } from './is-next-router-error'\nimport { handleHardNavError } from './nav-failure-handler'\n\nconst workAsyncStorage =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/work-async-storage.external') as typeof import('../../server/app-render/work-async-storage.external')\n ).workAsyncStorage\n : undefined\n\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily:\n 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '28px',\n margin: '0 8px',\n },\n} as const\n\nexport type ErrorComponent = React.ComponentType<{\n error: Error\n // global-error, there's no `reset` function;\n // regular error boundary, there's a `reset` function.\n reset?: () => void\n}>\n\nexport interface ErrorBoundaryProps {\n children?: React.ReactNode\n errorComponent: ErrorComponent | undefined\n errorStyles?: React.ReactNode | undefined\n errorScripts?: React.ReactNode | undefined\n}\n\ninterface ErrorBoundaryHandlerProps extends ErrorBoundaryProps {\n pathname: string | null\n errorComponent: ErrorComponent\n}\n\ninterface ErrorBoundaryHandlerState {\n error: Error | null\n previousPathname: string | null\n}\n\n// if we are revalidating we want to re-throw the error so the\n// function crashes so we can maintain our previous cache\n// instead of caching the error page\nfunction HandleISRError({ error }: { error: any }) {\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore()\n if (store?.isRevalidate || store?.isStaticGeneration) {\n console.error(error)\n throw error\n }\n }\n\n return null\n}\n\nexport class ErrorBoundaryHandler extends React.Component<\n ErrorBoundaryHandlerProps,\n ErrorBoundaryHandlerState\n> {\n constructor(props: ErrorBoundaryHandlerProps) {\n super(props)\n this.state = { error: null, previousPathname: this.props.pathname }\n }\n\n static getDerivedStateFromError(error: Error) {\n if (isNextRouterError(error)) {\n // Re-throw if an expected internal Next.js router error occurs\n // this means it should be handled by a different boundary (such as a NotFound boundary in a parent segment)\n throw error\n }\n\n return { error }\n }\n\n static getDerivedStateFromProps(\n props: ErrorBoundaryHandlerProps,\n state: ErrorBoundaryHandlerState\n ): ErrorBoundaryHandlerState | null {\n const { error } = state\n\n // if we encounter an error while\n // a navigation is pending we shouldn't render\n // the error boundary and instead should fallback\n // to a hard navigation to attempt recovering\n if (process.env.__NEXT_APP_NAV_FAIL_HANDLING) {\n if (error && handleHardNavError(error)) {\n // clear error so we don't render anything\n return {\n error: null,\n previousPathname: props.pathname,\n }\n }\n }\n\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */\n if (props.pathname !== state.previousPathname && state.error) {\n return {\n error: null,\n previousPathname: props.pathname,\n }\n }\n return {\n error: state.error,\n previousPathname: props.pathname,\n }\n }\n\n reset = () => {\n this.setState({ error: null })\n }\n\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render(): React.ReactNode {\n if (this.state.error) {\n return (\n <>\n \n {this.props.errorStyles}\n {this.props.errorScripts}\n \n \n )\n }\n\n return this.props.children\n }\n}\n\nexport type GlobalErrorComponent = React.ComponentType<{\n error: any\n}>\nexport function GlobalError({ error }: { error: any }) {\n const digest: string | undefined = error?.digest\n return (\n \n \n \n \n

\n
\n

\n Application error: a {digest ? 'server' : 'client'}-side exception\n has occurred while loading {window.location.hostname} (see the{' '}\n {digest ? 'server logs' : 'browser console'} for more\n information).\n

\n {digest ?

{`Digest: ${digest}`}

: null}\n
\n
\n \n \n )\n}\n\n// Exported so that the import signature in the loaders can be identical to user\n// supplied custom global error signatures.\nexport default GlobalError\n\n/**\n * Handles errors through `getDerivedStateFromError`.\n * Renders the provided error component and provides a way to `reset` the error boundary state.\n */\n\n/**\n * Renders error boundary with the provided \"errorComponent\" property as the fallback.\n * If no \"errorComponent\" property is provided it renders the children without an error boundary.\n */\nexport function ErrorBoundary({\n errorComponent,\n errorStyles,\n errorScripts,\n children,\n}: ErrorBoundaryProps & {\n children: React.ReactNode\n}): JSX.Element {\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these errors can occur), we will get the correct pathname.\n const pathname = useUntrackedPathname()\n if (errorComponent) {\n return (\n \n {children}\n \n )\n }\n\n return <>{children}\n}\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] ;\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/** JSDoc */\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console ;\n const wrappedFuncs = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] ;\n wrappedFuncs[level] = console[level] ;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] ;\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\nconst logger = makeLogger();\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods };\n//# sourceMappingURL=logger.js.map\n","import type { Params } from '../../server/request/params'\nimport { wellKnownProperties } from '../../shared/lib/utils/reflect-utils'\n\ninterface CacheLifetime {}\nconst CachedParams = new WeakMap>()\n\nexport function makeUntrackedExoticParams(\n underlyingParams: Params\n): Promise {\n const cachedParams = CachedParams.get(underlyingParams)\n if (cachedParams) {\n return cachedParams\n }\n\n const promise = Promise.resolve(underlyingParams)\n CachedParams.set(underlyingParams, promise)\n\n Object.keys(underlyingParams).forEach((prop) => {\n if (wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n ;(promise as any)[prop] = underlyingParams[prop]\n }\n })\n\n return promise\n}\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (\n onReport,\n options = {},\n) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, options.reportAllChanges);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { observe } from '../observe.js';\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries) => {\n (entries ).forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nconst getInteractionCount = () => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nconst initInteractionCountPolyfill = () => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n } );\n};\n\nexport { getInteractionCount, initInteractionCountPolyfill };\n//# sourceMappingURL=interactionCountPolyfill.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\nimport { initInteractionCountPolyfill, getInteractionCount } from './lib/polyfills/interactionCountPolyfill.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = () => {\n return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry) => {\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const existingInteraction = longestInteractionMap[entry.interactionId];\n\n // Only process the entry if it's possibly one of the ten longest,\n // or if it's part of an existing interaction.\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction.latency\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n existingInteraction.entries.push(entry);\n existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n } else {\n const interaction = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: entry.interactionId,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap[interaction.id] = interaction;\n longestInteractionList.push(interaction);\n }\n\n // Sort the entries by latency (descending) and keep only the top ten.\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete longestInteractionMap[i.id];\n });\n }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = () => {\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50),\n );\n\n return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** INP should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onINP = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/inp/#what's-a-%22good%22-inp-value\n // const thresholds = [200, 500];\n\n // TODO(philipwalton): remove once the polyfill is no longer needed.\n initInteractionCountPolyfill();\n\n const metric = initMetric('INP');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n if (entry.interactionId) {\n processEntry(entry);\n }\n\n // Entries of type `first-input` don't currently have an `interactionId`,\n // so to consider them in INP we have to first check that an existing\n // entry doesn't match the `duration` and `startTime`.\n // Note that this logic assumes that `event` entries are dispatched\n // before `first-input` entries. This is true in Chrome but it is not\n // true in Firefox; however, Firefox doesn't support interactionId, so\n // it's not an issue at the moment.\n // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n if (entry.entryType === 'first-input') {\n const noMatchingEntry = !longestInteractionList.some(interaction => {\n return interaction.entries.some(prevEntry => {\n return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n });\n });\n if (noMatchingEntry) {\n processEntry(entry);\n }\n }\n });\n\n const inp = estimateP98LongestInteraction();\n\n if (inp && inp.latency !== metric.value) {\n metric.value = inp.latency;\n metric.entries = inp.entries;\n report();\n }\n };\n\n const po = observe('event', handleEntries, {\n // Event Timing entries have their durations rounded to the nearest 8ms,\n // so a duration of 40ms would be any event that spans 2.5 or more frames\n // at 60Hz. This threshold is chosen to strike a balance between usefulness\n // and performance. Running this callback for any interaction that spans\n // just one or two frames is likely not worth the insight that could be\n // gained.\n durationThreshold: opts.durationThreshold || 40,\n } );\n\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n // Also observe entries of type `first-input`. This is useful in cases\n // where the first interaction is less than the `durationThreshold`.\n po.observe({ type: 'first-input', buffered: true });\n\n onHidden(() => {\n handleEntries(po.takeRecords() );\n\n // If the interaction count shows that there were interactions but\n // none were captured by the PerformanceObserver, report a latency of 0.\n if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n metric.value = 0;\n metric.entries = [];\n }\n\n report(true);\n });\n }\n};\n\nexport { onINP };\n//# sourceMappingURL=getINP.js.map\n","import { WINDOW } from '../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","import { WINDOW } from '../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getNavigationEntry } from './lib/getNavigationEntry.js';\nimport { initMetric } from './lib/initMetric.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback) => {\n if (!WINDOW.document) {\n return;\n }\n\n if (WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => whenReady(callback), true);\n } else if (WINDOW.document.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback, 0);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nconst onTTFB = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n // const thresholds = [800, 1800];\n\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n whenReady(() => {\n const navEntry = getNavigationEntry() ;\n\n if (navEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n if (metric.value < 0 || metric.value > performance.now()) return;\n\n metric.entries = [navEntry];\n\n report(true);\n }\n });\n};\n\nexport { onTTFB };\n//# sourceMappingURL=onTTFB.js.map\n","import { logger, getFunctionName } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { onCLS } from './web-vitals/getCLS.js';\nimport { onFID } from './web-vitals/getFID.js';\nimport { onINP } from './web-vitals/getINP.js';\nimport { onLCP } from './web-vitals/getLCP.js';\nimport { observe } from './web-vitals/lib/observe.js';\nimport { onTTFB } from './web-vitals/onTTFB.js';\n\nconst handlers = {};\nconst instrumented = {};\n\nlet _previousCls;\nlet _previousFid;\nlet _previousLcp;\nlet _previousTtfb;\nlet _previousInp;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nfunction addClsInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nfunction addLcpInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nfunction addTtfbInstrumentationHandler(callback) {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addFidInstrumentationHandler(callback) {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addInpInstrumentationHandler(\n callback,\n) {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addPerformanceInstrumentationHandler(\n type,\n callback,\n) {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls() {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid() {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp() {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb() {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp() {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type,\n callback,\n instrumentFn,\n previousValue,\n stopOnCallback = false,\n) {\n addHandler(type, callback);\n\n let stopListening;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type) {\n const options = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type,\n callback,\n stopListening,\n) {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n\nexport { addClsInstrumentationHandler, addFidInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, addTtfbInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n copyNextErrorCode: null,\n createDigestWithErrorCode: null,\n extractNextErrorCode: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n copyNextErrorCode: function() {\n return copyNextErrorCode;\n },\n createDigestWithErrorCode: function() {\n return createDigestWithErrorCode;\n },\n extractNextErrorCode: function() {\n return extractNextErrorCode;\n }\n});\nconst ERROR_CODE_DELIMITER = '@';\nconst createDigestWithErrorCode = (thrownValue, originalDigest)=>{\n if (typeof thrownValue === 'object' && thrownValue !== null && '__NEXT_ERROR_CODE' in thrownValue) {\n return `${originalDigest}${ERROR_CODE_DELIMITER}${thrownValue.__NEXT_ERROR_CODE}`;\n }\n return originalDigest;\n};\nconst copyNextErrorCode = (source, target)=>{\n const errorCode = extractNextErrorCode(source);\n if (errorCode && typeof target === 'object' && target !== null) {\n Object.defineProperty(target, '__NEXT_ERROR_CODE', {\n value: errorCode,\n enumerable: false,\n configurable: true\n });\n }\n};\nconst extractNextErrorCode = (error)=>{\n if (typeof error === 'object' && error !== null && '__NEXT_ERROR_CODE' in error && typeof error.__NEXT_ERROR_CODE === 'string') {\n return error.__NEXT_ERROR_CODE;\n }\n if (typeof error === 'object' && error !== null && 'digest' in error && typeof error.digest === 'string') {\n const segments = error.digest.split(ERROR_CODE_DELIMITER);\n const errorCode = segments.find((segment)=>segment.startsWith('E'));\n return errorCode;\n }\n return undefined;\n};\n\n//# sourceMappingURL=error-telemetry-utils.js.map","import type { addLocale as Fn } from '../shared/lib/router/utils/add-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nexport const addLocale: typeof Fn = (path, ...args) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return normalizePathTrailingSlash(\n require('../shared/lib/router/utils/add-locale').addLocale(path, ...args)\n )\n }\n return path\n}\n","import {\n ACTION_NAVIGATE,\n ACTION_SERVER_PATCH,\n ACTION_RESTORE,\n ACTION_REFRESH,\n ACTION_PREFETCH,\n ACTION_HMR_REFRESH,\n ACTION_SERVER_ACTION,\n} from './router-reducer-types'\nimport type {\n ReducerActions,\n ReducerState,\n ReadonlyReducerState,\n} from './router-reducer-types'\nimport { navigateReducer } from './reducers/navigate-reducer'\nimport { serverPatchReducer } from './reducers/server-patch-reducer'\nimport { restoreReducer } from './reducers/restore-reducer'\nimport { refreshReducer } from './reducers/refresh-reducer'\nimport { prefetchReducer } from './reducers/prefetch-reducer'\nimport { hmrRefreshReducer } from './reducers/hmr-refresh-reducer'\nimport { serverActionReducer } from './reducers/server-action-reducer'\n\n/**\n * Reducer that handles the app-router state updates.\n */\nfunction clientReducer(\n state: ReadonlyReducerState,\n action: ReducerActions\n): ReducerState {\n switch (action.type) {\n case ACTION_NAVIGATE: {\n return navigateReducer(state, action)\n }\n case ACTION_SERVER_PATCH: {\n return serverPatchReducer(state, action)\n }\n case ACTION_RESTORE: {\n return restoreReducer(state, action)\n }\n case ACTION_REFRESH: {\n return refreshReducer(state, action)\n }\n case ACTION_HMR_REFRESH: {\n return hmrRefreshReducer(state, action)\n }\n case ACTION_PREFETCH: {\n return prefetchReducer(state, action)\n }\n case ACTION_SERVER_ACTION: {\n return serverActionReducer(state, action)\n }\n // This case should never be hit as dispatch is strongly typed.\n default:\n throw new Error('Unknown action')\n }\n}\n\nfunction serverReducer(\n state: ReadonlyReducerState,\n _action: ReducerActions\n): ReducerState {\n return state\n}\n\n// we don't run the client reducer on the server, so we use a noop function for better tree shaking\nexport const reducer =\n typeof window === 'undefined' ? serverReducer : clientReducer\n","import type { Segment } from '../../server/app-render/types'\n\nexport const matchSegment = (\n existingSegment: Segment,\n segment: Segment\n): boolean => {\n // segment is either Array or string\n if (typeof existingSegment === 'string') {\n if (typeof segment === 'string') {\n // Common case: segment is just a string\n return existingSegment === segment\n }\n return false\n }\n\n if (typeof segment === 'string') {\n return false\n }\n return existingSegment[0] === segment[0] && existingSegment[1] === segment[1]\n}\n","'use client'\n\nimport React, { useContext, type JSX } from 'react'\nimport { TemplateContext } from '../../shared/lib/app-router-context.shared-runtime'\n\nexport default function RenderFromTemplateContext(): JSX.Element {\n const children = useContext(TemplateContext)\n return <>{children}\n}\n","import {\n fetchServerResponse,\n type FetchServerResponseResult,\n} from './fetch-server-response'\nimport {\n PrefetchCacheEntryStatus,\n type PrefetchCacheEntry,\n PrefetchKind,\n type ReadonlyReducerState,\n} from './router-reducer-types'\nimport { prefetchQueue } from './reducers/prefetch-reducer'\n\nconst INTERCEPTION_CACHE_KEY_MARKER = '%'\n\nexport type AliasedPrefetchCacheEntry = PrefetchCacheEntry & {\n /** This is a special property that indicates a prefetch entry associated with a different URL\n * was returned rather than the requested URL. This signals to the router that it should only\n * apply the part that doesn't depend on searchParams (specifically the loading state).\n */\n aliased?: boolean\n}\n\n/**\n * Creates a cache key for the router prefetch cache\n *\n * @param url - The URL being navigated to\n * @param nextUrl - an internal URL, primarily used for handling rewrites. Defaults to '/'.\n * @return The generated prefetch cache key.\n */\nfunction createPrefetchCacheKeyImpl(\n url: URL,\n includeSearchParams: boolean,\n prefix?: string | null\n) {\n // Initially we only use the pathname as the cache key. We don't want to include\n // search params so that multiple URLs with the same search parameter can re-use\n // loading states.\n let pathnameFromUrl = url.pathname\n\n // RSC responses can differ based on search params, specifically in the case where we aren't\n // returning a partial response (ie with `PrefetchKind.AUTO`).\n // In the auto case, since loading.js & layout.js won't have access to search params,\n // we can safely re-use that cache entry. But for full prefetches, we should not\n // re-use the cache entry as the response may differ.\n if (includeSearchParams) {\n // if we have a full prefetch, we can include the search param in the key,\n // as we'll be getting back a full response. The server might have read the search\n // params when generating the full response.\n pathnameFromUrl += url.search\n }\n\n if (prefix) {\n return `${prefix}${INTERCEPTION_CACHE_KEY_MARKER}${pathnameFromUrl}`\n }\n\n return pathnameFromUrl\n}\n\nfunction createPrefetchCacheKey(\n url: URL,\n kind: PrefetchKind | undefined,\n nextUrl?: string | null\n) {\n return createPrefetchCacheKeyImpl(url, kind === PrefetchKind.FULL, nextUrl)\n}\n\nfunction getExistingCacheEntry(\n url: URL,\n kind: PrefetchKind = PrefetchKind.TEMPORARY,\n nextUrl: string | null,\n prefetchCache: Map,\n allowAliasing: boolean\n): AliasedPrefetchCacheEntry | undefined {\n // We first check if there's a more specific interception route prefetch entry\n // This is because when we detect a prefetch that corresponds with an interception route, we prefix it with nextUrl (see `createPrefetchCacheKey`)\n // to avoid conflicts with other pages that may have the same URL but render different things depending on the `Next-URL` header.\n for (const maybeNextUrl of [nextUrl, null]) {\n const cacheKeyWithParams = createPrefetchCacheKeyImpl(\n url,\n true,\n maybeNextUrl\n )\n const cacheKeyWithoutParams = createPrefetchCacheKeyImpl(\n url,\n false,\n maybeNextUrl\n )\n\n // First, we check if we have a cache entry that exactly matches the URL\n const cacheKeyToUse = url.search\n ? cacheKeyWithParams\n : cacheKeyWithoutParams\n\n const existingEntry = prefetchCache.get(cacheKeyToUse)\n if (existingEntry && allowAliasing) {\n // We know we're returning an aliased entry when the pathname matches but the search params don't,\n const isAliased =\n existingEntry.url.pathname === url.pathname &&\n existingEntry.url.search !== url.search\n\n if (isAliased) {\n return {\n ...existingEntry,\n aliased: true,\n }\n }\n\n return existingEntry\n }\n\n // If the request contains search params, and we're not doing a full prefetch, we can return the\n // param-less entry if it exists.\n // This is technically covered by the check at the bottom of this function, which iterates over cache entries,\n // but lets us arrive there quicker in the param-full case.\n const entryWithoutParams = prefetchCache.get(cacheKeyWithoutParams)\n if (\n process.env.NODE_ENV !== 'development' &&\n allowAliasing &&\n url.search &&\n kind !== PrefetchKind.FULL &&\n entryWithoutParams &&\n // We shouldn't return the aliased entry if it was relocated to a new cache key.\n // Since it's rewritten, it could respond with a completely different loading state.\n !entryWithoutParams.key.includes(INTERCEPTION_CACHE_KEY_MARKER)\n ) {\n return { ...entryWithoutParams, aliased: true }\n }\n }\n\n // If we've gotten to this point, we didn't find a specific cache entry that matched\n // the request URL.\n // We attempt a partial match by checking if there's a cache entry with the same pathname.\n // Regardless of what we find, since it doesn't correspond with the requested URL, we'll mark it \"aliased\".\n // This will signal to the router that it should only apply the loading state on the prefetched data.\n if (\n process.env.NODE_ENV !== 'development' &&\n kind !== PrefetchKind.FULL &&\n allowAliasing\n ) {\n for (const cacheEntry of prefetchCache.values()) {\n if (\n cacheEntry.url.pathname === url.pathname &&\n // We shouldn't return the aliased entry if it was relocated to a new cache key.\n // Since it's rewritten, it could respond with a completely different loading state.\n !cacheEntry.key.includes(INTERCEPTION_CACHE_KEY_MARKER)\n ) {\n return { ...cacheEntry, aliased: true }\n }\n }\n }\n\n return undefined\n}\n\n/**\n * Returns a prefetch cache entry if one exists. Otherwise creates a new one and enqueues a fetch request\n * to retrieve the prefetch data from the server.\n */\nexport function getOrCreatePrefetchCacheEntry({\n url,\n nextUrl,\n tree,\n prefetchCache,\n kind,\n allowAliasing = true,\n}: Pick & {\n url: URL\n kind?: PrefetchKind\n allowAliasing: boolean\n}): AliasedPrefetchCacheEntry {\n const existingCacheEntry = getExistingCacheEntry(\n url,\n kind,\n nextUrl,\n prefetchCache,\n allowAliasing\n )\n\n if (existingCacheEntry) {\n // Grab the latest status of the cache entry and update it\n existingCacheEntry.status = getPrefetchEntryCacheStatus(existingCacheEntry)\n\n // when `kind` is provided, an explicit prefetch was requested.\n // if the requested prefetch is \"full\" and the current cache entry wasn't, we want to re-prefetch with the new intent\n const switchedToFullPrefetch =\n existingCacheEntry.kind !== PrefetchKind.FULL &&\n kind === PrefetchKind.FULL\n\n if (switchedToFullPrefetch) {\n // If we switched to a full prefetch, validate that the existing cache entry contained partial data.\n // It's possible that the cache entry was seeded with full data but has a cache type of \"auto\" (ie when cache entries\n // are seeded but without a prefetch intent)\n existingCacheEntry.data.then((prefetchResponse) => {\n const isFullPrefetch =\n Array.isArray(prefetchResponse.flightData) &&\n prefetchResponse.flightData.some((flightData) => {\n // If we started rendering from the root and we returned RSC data (seedData), we already had a full prefetch.\n return flightData.isRootRender && flightData.seedData !== null\n })\n\n if (!isFullPrefetch) {\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n // If we didn't get an explicit prefetch kind, we want to set a temporary kind\n // rather than assuming the same intent as the previous entry, to be consistent with how we\n // lazily create prefetch entries when intent is left unspecified.\n kind: kind ?? PrefetchKind.TEMPORARY,\n })\n }\n })\n }\n\n // If the existing cache entry was marked as temporary, it means it was lazily created when attempting to get an entry,\n // where we didn't have the prefetch intent. Now that we have the intent (in `kind`), we want to update the entry to the more accurate kind.\n if (kind && existingCacheEntry.kind === PrefetchKind.TEMPORARY) {\n existingCacheEntry.kind = kind\n }\n\n // We've determined that the existing entry we found is still valid, so we return it.\n return existingCacheEntry\n }\n\n // If we didn't return an entry, create a new one.\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n kind: kind || PrefetchKind.TEMPORARY,\n })\n}\n\n/*\n * Used to take an existing cache entry and prefix it with the nextUrl, if it exists.\n * This ensures that we don't have conflicting cache entries for the same URL (as is the case with route interception).\n */\nfunction prefixExistingPrefetchCacheEntry({\n url,\n nextUrl,\n prefetchCache,\n existingCacheKey,\n}: Pick & {\n url: URL\n existingCacheKey: string\n}) {\n const existingCacheEntry = prefetchCache.get(existingCacheKey)\n if (!existingCacheEntry) {\n // no-op -- there wasn't an entry to move\n return\n }\n\n const newCacheKey = createPrefetchCacheKey(\n url,\n existingCacheEntry.kind,\n nextUrl\n )\n prefetchCache.set(newCacheKey, { ...existingCacheEntry, key: newCacheKey })\n prefetchCache.delete(existingCacheKey)\n\n return newCacheKey\n}\n\n/**\n * Use to seed the prefetch cache with data that has already been fetched.\n */\nexport function createSeededPrefetchCacheEntry({\n nextUrl,\n tree,\n prefetchCache,\n url,\n data,\n kind,\n}: Pick & {\n url: URL\n data: FetchServerResponseResult\n kind: PrefetchKind\n}) {\n // The initial cache entry technically includes full data, but it isn't explicitly prefetched -- we just seed the\n // prefetch cache so that we can skip an extra prefetch request later, since we already have the data.\n // if the prefetch corresponds with an interception route, we use the nextUrl to prefix the cache key\n const prefetchCacheKey = data.couldBeIntercepted\n ? createPrefetchCacheKey(url, kind, nextUrl)\n : createPrefetchCacheKey(url, kind)\n\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data: Promise.resolve(data),\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: Date.now(),\n staleTime: -1,\n key: prefetchCacheKey,\n status: PrefetchCacheEntryStatus.fresh,\n url,\n } satisfies PrefetchCacheEntry\n\n prefetchCache.set(prefetchCacheKey, prefetchEntry)\n\n return prefetchEntry\n}\n\n/**\n * Creates a prefetch entry entry and enqueues a fetch request to retrieve the data.\n */\nfunction createLazyPrefetchEntry({\n url,\n kind,\n tree,\n nextUrl,\n prefetchCache,\n}: Pick & {\n url: URL\n kind: PrefetchKind\n}): PrefetchCacheEntry {\n const prefetchCacheKey = createPrefetchCacheKey(url, kind)\n\n // initiates the fetch request for the prefetch and attaches a listener\n // to the promise to update the prefetch cache entry when the promise resolves (if necessary)\n const data = prefetchQueue.enqueue(() =>\n fetchServerResponse(url, {\n flightRouterState: tree,\n nextUrl,\n prefetchKind: kind,\n }).then((prefetchResponse) => {\n // TODO: `fetchServerResponse` should be more tighly coupled to these prefetch cache operations\n // to avoid drift between this cache key prefixing logic\n // (which is currently directly influenced by the server response)\n let newCacheKey\n\n if (prefetchResponse.couldBeIntercepted) {\n // Determine if we need to prefix the cache key with the nextUrl\n newCacheKey = prefixExistingPrefetchCacheEntry({\n url,\n existingCacheKey: prefetchCacheKey,\n nextUrl,\n prefetchCache,\n })\n }\n\n // If the prefetch was a cache hit, we want to update the existing cache entry to reflect that it was a full prefetch.\n // This is because we know that a static response will contain the full RSC payload, and can be updated to respect the `static`\n // staleTime.\n if (prefetchResponse.prerendered) {\n const existingCacheEntry = prefetchCache.get(\n // if we prefixed the cache key due to route interception, we want to use the new key. Otherwise we use the original key\n newCacheKey ?? prefetchCacheKey\n )\n if (existingCacheEntry) {\n existingCacheEntry.kind = PrefetchKind.FULL\n if (prefetchResponse.staleTime !== -1) {\n // This is the stale time that was collected by the server during\n // static generation. Use this in place of the default stale time.\n existingCacheEntry.staleTime = prefetchResponse.staleTime\n }\n }\n }\n\n return prefetchResponse\n })\n )\n\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data,\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: null,\n staleTime: -1,\n key: prefetchCacheKey,\n status: PrefetchCacheEntryStatus.fresh,\n url,\n }\n\n prefetchCache.set(prefetchCacheKey, prefetchEntry)\n\n return prefetchEntry\n}\n\nexport function prunePrefetchCache(\n prefetchCache: ReadonlyReducerState['prefetchCache']\n) {\n for (const [href, prefetchCacheEntry] of prefetchCache) {\n if (\n getPrefetchEntryCacheStatus(prefetchCacheEntry) ===\n PrefetchCacheEntryStatus.expired\n ) {\n prefetchCache.delete(href)\n }\n }\n}\n\n// These values are set by `define-env-plugin` (based on `nextConfig.experimental.staleTimes`)\n// and default to 5 minutes (static) / 0 seconds (dynamic)\nconst DYNAMIC_STALETIME_MS =\n Number(process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME) * 1000\n\nexport const STATIC_STALETIME_MS =\n Number(process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME) * 1000\n\nfunction getPrefetchEntryCacheStatus({\n kind,\n prefetchTime,\n lastUsedTime,\n staleTime,\n}: PrefetchCacheEntry): PrefetchCacheEntryStatus {\n if (staleTime !== -1) {\n // `staleTime` is the value sent by the server during static generation.\n // When this is available, it takes precedence over any of the heuristics\n // that follow.\n //\n // TODO: When PPR is enabled, the server will *always* return a stale time\n // when prefetching. We should never use a prefetch entry that hasn't yet\n // received data from the server. So the only two cases should be 1) we use\n // the server-generated stale time 2) the unresolved entry is discarded.\n return Date.now() < prefetchTime + staleTime\n ? PrefetchCacheEntryStatus.fresh\n : PrefetchCacheEntryStatus.stale\n }\n\n // We will re-use the cache entry data for up to the `dynamic` staletime window.\n if (Date.now() < (lastUsedTime ?? prefetchTime) + DYNAMIC_STALETIME_MS) {\n return lastUsedTime\n ? PrefetchCacheEntryStatus.reusable\n : PrefetchCacheEntryStatus.fresh\n }\n\n // For \"auto\" prefetching, we'll re-use only the loading boundary for up to `static` staletime window.\n // A stale entry will only re-use the `loading` boundary, not the full data.\n // This will trigger a \"lazy fetch\" for the full data.\n if (kind === PrefetchKind.AUTO) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return PrefetchCacheEntryStatus.stale\n }\n }\n\n // for \"full\" prefetching, we'll re-use the cache entry data for up to `static` staletime window.\n if (kind === PrefetchKind.FULL) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return PrefetchCacheEntryStatus.reusable\n }\n }\n\n return PrefetchCacheEntryStatus.expired\n}\n","const basePath = process.env.__NEXT_ROUTER_BASEPATH || ''\nconst pathname = `${basePath}/__nextjs_source-map`\n\nexport const findSourceMapURL =\n process.env.NODE_ENV === 'development'\n ? function findSourceMapURL(filename: string): string | null {\n if (filename === '') {\n return null\n }\n\n if (\n filename.startsWith(document.location.origin) &&\n filename.includes('/_next/static')\n ) {\n // This is a request for a client chunk. This can only happen when\n // using Turbopack. In this case, since we control how those source\n // maps are generated, we can safely assume that the sourceMappingURL\n // is relative to the filename, with an added `.map` extension. The\n // browser can just request this file, and it gets served through the\n // normal dev server, without the need to route this through\n // the `/__nextjs_source-map` dev middleware.\n return `${filename}.map`\n }\n\n const url = new URL(pathname, document.location.origin)\n url.searchParams.set('filename', filename)\n\n return url.href\n }\n : undefined\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { isNaN, isVueViewModel, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","import { node } from './node-stack-trace.js';\nexport { filenameIsInApp } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { SyncPromise, logger, isThenable, getGlobalSingleton } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nfunction addGlobalEventProcessor(callback) {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n\nexport { addGlobalEventProcessor, getGlobalEventProcessors, notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","export const createRenderParamsFromClient =\n process.env.NODE_ENV === 'development'\n ? (require('./params.browser.dev') as typeof import('./params.browser.dev'))\n .makeDynamicallyTrackedExoticParamsWithDevWarnings\n : (\n require('./params.browser.prod') as typeof import('./params.browser.prod')\n ).makeUntrackedExoticParams\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.js';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nfunction tracingContextFromHeaders(\n sentryTrace,\n baggage,\n)\n\n {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceparentData,\n dynamicSamplingContext: undefined,\n propagationContext: {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n },\n };\n } else {\n return {\n traceparentData,\n dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n propagationContext: {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n },\n };\n }\n}\n\n/**\n * Create a propagation context from incoming headers.\n */\nfunction propagationContextFromHeaders(\n sentryTrace,\n baggage,\n) {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n };\n } else {\n return {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n };\n }\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = uuid4(),\n spanId = uuid4().substring(16),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders, tracingContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","import type { CacheNode } from '../../../shared/lib/app-router-context.shared-runtime'\nimport type {\n FlightRouterState,\n CacheNodeSeedData,\n} from '../../../server/app-render/types'\nimport { createRouterCacheKey } from './create-router-cache-key'\nimport {\n PrefetchCacheEntryStatus,\n type PrefetchCacheEntry,\n} from './router-reducer-types'\n\nexport function fillLazyItemsTillLeafWithHead(\n newCache: CacheNode,\n existingCache: CacheNode | undefined,\n routerState: FlightRouterState,\n cacheNodeSeedData: CacheNodeSeedData | null,\n head: React.ReactNode,\n prefetchEntry: PrefetchCacheEntry | undefined\n): void {\n const isLastSegment = Object.keys(routerState[1]).length === 0\n if (isLastSegment) {\n newCache.head = head\n return\n }\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for (const key in routerState[1]) {\n const parallelRouteState = routerState[1][key]\n const segmentForParallelRoute = parallelRouteState[0]\n const cacheKey = createRouterCacheKey(segmentForParallelRoute)\n\n // TODO: We should traverse the cacheNodeSeedData tree instead of the router\n // state tree. Ideally, they would always be the same shape, but because of\n // the loading.js pattern, cacheNodeSeedData sometimes only represents a\n // partial tree. That's why this node is sometimes null. Once PPR lands,\n // loading.js will no longer have special behavior and we can traverse the\n // data tree instead.\n //\n // We should also consider merging the router state tree and the data tree\n // in the response format, so that we don't have to send the keys twice.\n // Then the client can convert them into separate representations.\n const parallelSeedData =\n cacheNodeSeedData !== null && cacheNodeSeedData[2][key] !== undefined\n ? cacheNodeSeedData[2][key]\n : null\n if (existingCache) {\n const existingParallelRoutesCacheNode =\n existingCache.parallelRoutes.get(key)\n if (existingParallelRoutesCacheNode) {\n const hasReusablePrefetch =\n prefetchEntry?.kind === 'auto' &&\n prefetchEntry.status === PrefetchCacheEntryStatus.reusable\n\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode)\n const existingCacheNode = parallelRouteCacheNode.get(cacheKey)\n let newCacheNode: CacheNode\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1]\n const loading = parallelSeedData[3]\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n // This is a PPR-only field. When PPR is enabled, we shouldn't hit\n // this path during a navigation, but until PPR is fully implemented\n // yet it's possible the existing node does have a non-null\n // `prefetchRsc`. As an incremental step, we'll just de-opt to the\n // old behavior — no PPR value.\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n loading,\n parallelRoutes: new Map(existingCacheNode?.parallelRoutes),\n }\n } else if (hasReusablePrefetch && existingCacheNode) {\n // No new data was sent from the server, but the existing cache node\n // was prefetched, so we should reuse that.\n newCacheNode = {\n lazyData: existingCacheNode.lazyData,\n rsc: existingCacheNode.rsc,\n // This is a PPR-only field. Unlike the previous branch, since we're\n // just cloning the existing cache node, we might as well keep the\n // PPR value, if it exists.\n prefetchRsc: existingCacheNode.prefetchRsc,\n head: existingCacheNode.head,\n prefetchHead: existingCacheNode.prefetchHead,\n parallelRoutes: new Map(existingCacheNode.parallelRoutes),\n loading: existingCacheNode.loading,\n } as CacheNode\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(existingCacheNode?.parallelRoutes),\n loading: null,\n }\n }\n\n // Overrides the cache key with the new cache node.\n parallelRouteCacheNode.set(cacheKey, newCacheNode)\n // Traverse deeper to apply the head / fill lazy items till the head.\n fillLazyItemsTillLeafWithHead(\n newCacheNode,\n existingCacheNode,\n parallelRouteState,\n parallelSeedData ? parallelSeedData : null,\n head,\n prefetchEntry\n )\n\n newCache.parallelRoutes.set(key, parallelRouteCacheNode)\n continue\n }\n }\n\n let newCacheNode: CacheNode\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1]\n const loading = parallelSeedData[3]\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading,\n }\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n }\n }\n\n const existingParallelRoutes = newCache.parallelRoutes.get(key)\n if (existingParallelRoutes) {\n existingParallelRoutes.set(cacheKey, newCacheNode)\n } else {\n newCache.parallelRoutes.set(key, new Map([[cacheKey, newCacheNode]]))\n }\n\n fillLazyItemsTillLeafWithHead(\n newCacheNode,\n undefined,\n parallelRouteState,\n parallelSeedData,\n head,\n prefetchEntry\n )\n }\n}\n","'use strict';\n\nmodule.exports = require('./client.browser');\n","// This import must go first because it needs to patch webpack chunk loading\n// before React patches chunk loading.\nimport './app-webpack'\nimport { appBootstrap } from './app-bootstrap'\n\nappBootstrap(() => {\n const { hydrate } = require('./app-index')\n // Include app-router and layout-router in the main chunk\n require('next/dist/client/components/app-router')\n require('next/dist/client/components/layout-router')\n hydrate()\n})\n","/**\n * Stores the Trusted Types Policy. Starts as undefined and can be set to null\n * if Trusted Types is not supported in the browser.\n */\nlet policy: TrustedTypePolicy | null | undefined\n\n/**\n * Getter for the Trusted Types Policy. If it is undefined, it is instantiated\n * here or set to null if Trusted Types is not supported in the browser.\n */\nfunction getPolicy() {\n if (typeof policy === 'undefined' && typeof window !== 'undefined') {\n policy =\n window.trustedTypes?.createPolicy('nextjs', {\n createHTML: (input) => input,\n createScript: (input) => input,\n createScriptURL: (input) => input,\n }) || null\n }\n\n return policy\n}\n\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will cause a browser to load and execute a resource, e.g. when\n * assigning to script.src.\n */\nexport function __unsafeCreateTrustedScriptURL(\n url: string\n): TrustedScriptURL | string {\n return getPolicy()?.createScriptURL(url) || url\n}\n","import type {\n FlightRouterState,\n FlightDataPath,\n Segment,\n} from '../../../server/app-render/types'\nimport { getNextFlightSegmentPath } from '../../flight-data-helpers'\nimport { matchSegment } from '../match-segments'\n\n// TODO-APP: flightSegmentPath will be empty in case of static response, needs to be handled.\nexport function shouldHardNavigate(\n flightSegmentPath: FlightDataPath,\n flightRouterState: FlightRouterState\n): boolean {\n const [segment, parallelRoutes] = flightRouterState\n // TODO-APP: Check if `as` can be replaced.\n const [currentSegment, parallelRouteKey] = flightSegmentPath as [\n Segment,\n string,\n ]\n\n // Check if current segment matches the existing segment.\n if (!matchSegment(currentSegment, segment)) {\n // If dynamic parameter in tree doesn't match up with segment path a hard navigation is triggered.\n if (Array.isArray(currentSegment)) {\n return true\n }\n\n // If the existing segment did not match soft navigation is triggered.\n return false\n }\n const lastSegment = flightSegmentPath.length <= 2\n\n if (lastSegment) {\n return false\n }\n\n return shouldHardNavigate(\n getNextFlightSegmentPath(flightSegmentPath),\n parallelRoutes[parallelRouteKey]\n )\n}\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient, getCurrentScope } from '../exports.js';\nimport { getRootSpan } from '../utils/getRootSpan.js';\nimport { spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(\n trace_id,\n client,\n scope,\n) {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) ;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) ;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\nexport { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","function _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\nexport { _class_private_field_loose_base as _ };\n","/**\n * Before starting the Next.js runtime and requiring any module, we need to make\n * sure the following scripts are executed in the correct order:\n * - Polyfills\n * - next/script with `beforeInteractive` strategy\n */\n\nconst version = process.env.__NEXT_VERSION\n\nwindow.next = {\n version,\n appDir: true,\n}\n\nfunction loadScriptsInSequence(\n scripts: [src: string, props: { [prop: string]: any }][],\n hydrate: () => void\n) {\n if (!scripts || !scripts.length) {\n return hydrate()\n }\n\n return scripts\n .reduce((promise, [src, props]) => {\n return promise.then(() => {\n return new Promise((resolve, reject) => {\n const el = document.createElement('script')\n\n if (props) {\n for (const key in props) {\n if (key !== 'children') {\n el.setAttribute(key, props[key])\n }\n }\n }\n\n if (src) {\n el.src = src\n el.onload = () => resolve()\n el.onerror = reject\n } else if (props) {\n el.innerHTML = props.children\n setTimeout(resolve)\n }\n\n document.head.appendChild(el)\n })\n })\n }, Promise.resolve())\n .catch((err: Error) => {\n console.error(err)\n // Still try to hydrate even if there's an error.\n })\n .then(() => {\n hydrate()\n })\n}\n\nexport function appBootstrap(hydrate: () => void) {\n loadScriptsInSequence((self as any).__next_s, () => {\n // If the static shell is being debugged, skip hydration if the\n // `__nextppronly` query is present. This is only enabled when the\n // environment variable `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` is\n // set to `1`. Otherwise the following is optimized out.\n if (process.env.__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING === '1') {\n const search = new URLSearchParams(window.location.search)\n if (\n search.get('__nextppronly') === 'fallback' ||\n search.get('__nextppronly') === '1'\n ) {\n console.warn(\n `Skipping hydration due to __nextppronly=${search.get('__nextppronly')}`\n )\n return\n }\n }\n\n hydrate()\n })\n}\n","export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401,\n}\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus))\n\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'\n\nexport type HTTPAccessFallbackError = Error & {\n digest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`\n}\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(\n error: unknown\n): error is HTTPAccessFallbackError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n const [prefix, httpStatus] = error.digest.split(';')\n\n return (\n prefix === HTTP_ERROR_FALLBACK_ERROR_CODE &&\n ALLOWED_CODES.has(Number(httpStatus))\n )\n}\n\nexport function getAccessFallbackHTTPStatus(\n error: HTTPAccessFallbackError\n): number {\n const httpStatus = error.digest.split(';')[1]\n return Number(httpStatus)\n}\n\nexport function getAccessFallbackErrorTypeByStatus(\n status: number\n): 'not-found' | 'forbidden' | 'unauthorized' | undefined {\n switch (status) {\n case 401:\n return 'unauthorized'\n case 403:\n return 'forbidden'\n case 404:\n return 'not-found'\n default:\n return\n }\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nconst PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nfunction parseMatchedParameter(param: string) {\n const optional = param.startsWith('[') && param.endsWith(']')\n if (optional) {\n param = param.slice(1, -1)\n }\n const repeat = param.startsWith('...')\n if (repeat) {\n param = param.slice(3)\n }\n return { key: param, repeat, optional }\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\n return () => {\n let routeKey = ''\n let j = ++i\n while (j > 0) {\n routeKey += String.fromCharCode(97 + ((j - 1) % 26))\n j = Math.floor((j - 1) / 26)\n }\n return routeKey\n }\n}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true\n }\n\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\n\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`\n }\n\n return optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (hasInterceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n segments.push(\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker: paramMatches[1],\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys\n ? NEXT_INTERCEPTION_MARKER_PREFIX\n : undefined,\n backreferenceDuplicateKeys,\n })\n )\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix: prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined,\n backreferenceDuplicateKeys,\n })\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import { RedirectStatusCode } from './redirect-status-code'\nimport {\n RedirectType,\n type RedirectError,\n isRedirectError,\n REDIRECT_ERROR_CODE,\n} from './redirect-error'\n\nconst actionAsyncStorage =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/action-async-storage.external') as typeof import('../../server/app-render/action-async-storage.external')\n ).actionAsyncStorage\n : undefined\n\nexport function getRedirectError(\n url: string,\n type: RedirectType,\n statusCode: RedirectStatusCode = RedirectStatusCode.TemporaryRedirect\n): RedirectError {\n const error = new Error(REDIRECT_ERROR_CODE) as RedirectError\n error.digest = `${REDIRECT_ERROR_CODE};${type};${url};${statusCode};`\n return error\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 307/303 to the caller.\n * - In a Server Action, type defaults to 'push' and 'replace' elsewhere.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function redirect(\n /** The URL to redirect to */\n url: string,\n type?: RedirectType\n): never {\n type ??= actionAsyncStorage?.getStore()?.isAction\n ? RedirectType.push\n : RedirectType.replace\n\n throw getRedirectError(url, type, RedirectStatusCode.TemporaryRedirect)\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 308/303 to the caller.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function permanentRedirect(\n /** The URL to redirect to */\n url: string,\n type: RedirectType = RedirectType.replace\n): never {\n throw getRedirectError(url, type, RedirectStatusCode.PermanentRedirect)\n}\n\n/**\n * Returns the encoded URL from the error if it's a RedirectError, null\n * otherwise. Note that this does not validate the URL returned.\n *\n * @param error the error that may be a redirect error\n * @return the url if the error was a redirect error\n */\nexport function getURLFromRedirectError(error: RedirectError): string\nexport function getURLFromRedirectError(error: unknown): string | null {\n if (!isRedirectError(error)) return null\n\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';')\n}\n\nexport function getRedirectTypeFromError(error: RedirectError): RedirectType {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return error.digest.split(';', 2)[1] as RedirectType\n}\n\nexport function getRedirectStatusCodeFromError(error: RedirectError): number {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return Number(error.digest.split(';').at(-2))\n}\n","import { parsePath } from '../shared/lib/router/utils/parse-path'\n\nexport function removeLocale(path: string, locale?: string) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const { pathname } = parsePath(path)\n const pathLower = pathname.toLowerCase()\n const localeLower = locale?.toLowerCase()\n\n return locale &&\n (pathLower.startsWith(`/${localeLower}/`) ||\n pathLower === `/${localeLower}`)\n ? `${pathname.length === locale.length + 1 ? `/` : ``}${path.slice(\n locale.length + 1\n )}`\n : path\n }\n return path\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n METADATA_BOUNDARY_NAME: null,\n OUTLET_BOUNDARY_NAME: null,\n VIEWPORT_BOUNDARY_NAME: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n METADATA_BOUNDARY_NAME: function() {\n return METADATA_BOUNDARY_NAME;\n },\n OUTLET_BOUNDARY_NAME: function() {\n return OUTLET_BOUNDARY_NAME;\n },\n VIEWPORT_BOUNDARY_NAME: function() {\n return VIEWPORT_BOUNDARY_NAME;\n }\n});\nconst METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nconst VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nconst OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\n\n//# sourceMappingURL=metadata-constants.js.map","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};404`\n\nexport function notFound(): never {\n // eslint-disable-next-line no-throw-literal\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n\n throw error\n}\n","import { useEffect } from 'react'\nimport { createHrefFromUrl } from './router-reducer/create-href-from-url'\n\nexport function handleHardNavError(error: unknown): boolean {\n if (\n error &&\n typeof window !== 'undefined' &&\n window.next.__pendingUrl &&\n createHrefFromUrl(new URL(window.location.href)) !==\n createHrefFromUrl(window.next.__pendingUrl)\n ) {\n console.error(\n `Error occurred during navigation, falling back to hard navigation`,\n error\n )\n window.location.href = window.next.__pendingUrl.toString()\n return true\n }\n return false\n}\n\nexport function useNavFailureHandler() {\n if (process.env.__NEXT_APP_NAV_FAIL_HANDLING) {\n // this if is only for DCE of the feature flag not conditional\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n const uncaughtExceptionHandler = (\n evt: ErrorEvent | PromiseRejectionEvent\n ) => {\n const error = 'reason' in evt ? evt.reason : evt.error\n // if we have an unhandled exception/rejection during\n // a navigation we fall back to a hard navigation to\n // attempt recovering to a good state\n handleHardNavError(error)\n }\n window.addEventListener('unhandledrejection', uncaughtExceptionHandler)\n window.addEventListener('error', uncaughtExceptionHandler)\n return () => {\n window.removeEventListener('error', uncaughtExceptionHandler)\n window.removeEventListener(\n 'unhandledrejection',\n uncaughtExceptionHandler\n )\n }\n }, [])\n }\n}\n","import type { FlightRouterState } from '../../../server/app-render/types'\n\nexport function isNavigatingToNewRootLayout(\n currentTree: FlightRouterState,\n nextTree: FlightRouterState\n): boolean {\n // Compare segments\n const currentTreeSegment = currentTree[0]\n const nextTreeSegment = nextTree[0]\n\n // If any segment is different before we find the root layout, the root layout has changed.\n // E.g. /same/(group1)/layout.js -> /same/(group2)/layout.js\n // First segment is 'same' for both, keep looking. (group1) changed to (group2) before the root layout was found, it must have changed.\n if (Array.isArray(currentTreeSegment) && Array.isArray(nextTreeSegment)) {\n // Compare dynamic param name and type but ignore the value, different values would not affect the current root layout\n // /[name] - /slug1 and /slug2, both values (slug1 & slug2) still has the same layout /[name]/layout.js\n if (\n currentTreeSegment[0] !== nextTreeSegment[0] ||\n currentTreeSegment[2] !== nextTreeSegment[2]\n ) {\n return true\n }\n } else if (currentTreeSegment !== nextTreeSegment) {\n return true\n }\n\n // Current tree root layout found\n if (currentTree[4]) {\n // If the next tree doesn't have the root layout flag, it must have changed.\n return !nextTree[4]\n }\n // Current tree didn't have its root layout here, must have changed.\n if (nextTree[4]) {\n return true\n }\n // We can't assume it's `parallelRoutes.children` here in case the root layout is `app/@something/layout.js`\n // But it's not possible to be more than one parallelRoutes before the root layout is found\n // TODO-APP: change to traverse all parallel routes\n const currentTreeChild = Object.values(currentTree[1])[0]\n const nextTreeChild = Object.values(nextTree[1])[0]\n if (!currentTreeChild || !nextTreeChild) return true\n return isNavigatingToNewRootLayout(currentTreeChild, nextTreeChild)\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import type { CacheNode } from '../../../shared/lib/app-router-context.shared-runtime'\nimport type { FlightRouterState } from '../../../server/app-render/types'\nimport { createRouterCacheKey } from './create-router-cache-key'\n\n/**\n * Invalidate cache one level down from the router state.\n */\nexport function invalidateCacheByRouterState(\n newCache: CacheNode,\n existingCache: CacheNode,\n routerState: FlightRouterState\n): void {\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for (const key in routerState[1]) {\n const segmentForParallelRoute = routerState[1][key][0]\n const cacheKey = createRouterCacheKey(segmentForParallelRoute)\n const existingParallelRoutesCacheNode =\n existingCache.parallelRoutes.get(key)\n if (existingParallelRoutesCacheNode) {\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode)\n parallelRouteCacheNode.delete(cacheKey)\n newCache.parallelRoutes.set(key, parallelRouteCacheNode)\n }\n }\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","const DOMAttributeNames: Record = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule',\n}\n\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets',\n]\n\nfunction isBooleanScriptAttribute(\n attr: string\n): attr is 'async' | 'defer' | 'noModule' {\n return ['async', 'defer', 'noModule'].includes(attr)\n}\n\nexport function setAttributesFromProps(el: HTMLElement, props: object) {\n for (const [p, value] of Object.entries(props)) {\n if (!props.hasOwnProperty(p)) continue\n if (ignoreProps.includes(p)) continue\n\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue\n }\n\n const attr = DOMAttributeNames[p] || p.toLowerCase()\n\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n ;(el as HTMLScriptElement)[attr] = !!value\n } else {\n el.setAttribute(attr, String(value))\n }\n\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (\n value === false ||\n (el.tagName === 'SCRIPT' &&\n isBooleanScriptAttribute(attr) &&\n (!value || value === 'false'))\n ) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '')\n el.removeAttribute(attr)\n }\n }\n}\n","let warnOnce = (_: string) => {}\nif (process.env.NODE_ENV !== 'production') {\n const warnings = new Set()\n warnOnce = (msg: string) => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\nexport { warnOnce }\n","import type { CacheNode } from '../../../../shared/lib/app-router-context.shared-runtime'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n} from '../../../../server/app-render/types'\nimport { fetchServerResponse } from '../fetch-server-response'\nimport { createHrefFromUrl } from '../create-href-from-url'\nimport { invalidateCacheBelowFlightSegmentPath } from '../invalidate-cache-below-flight-segmentpath'\nimport { applyRouterStatePatchToTree } from '../apply-router-state-patch-to-tree'\nimport { shouldHardNavigate } from '../should-hard-navigate'\nimport { isNavigatingToNewRootLayout } from '../is-navigating-to-new-root-layout'\nimport {\n PrefetchCacheEntryStatus,\n type Mutable,\n type NavigateAction,\n type ReadonlyReducerState,\n type ReducerState,\n} from '../router-reducer-types'\nimport { handleMutable } from '../handle-mutable'\nimport { applyFlightData } from '../apply-flight-data'\nimport { prefetchQueue } from './prefetch-reducer'\nimport { createEmptyCacheNode } from '../../app-router'\nimport { DEFAULT_SEGMENT_KEY } from '../../../../shared/lib/segment'\nimport { listenForDynamicRequest, startPPRNavigation } from '../ppr-navigations'\nimport {\n getOrCreatePrefetchCacheEntry,\n prunePrefetchCache,\n} from '../prefetch-cache-utils'\nimport { clearCacheNodeDataForSegmentPath } from '../clear-cache-node-data-for-segment-path'\nimport { handleAliasedPrefetchEntry } from '../aliased-prefetch-navigations'\nimport {\n navigate as navigateUsingSegmentCache,\n NavigationResultTag,\n type NavigationResult,\n} from '../../segment-cache'\n\nexport function handleExternalUrl(\n state: ReadonlyReducerState,\n mutable: Mutable,\n url: string,\n pendingPush: boolean\n) {\n mutable.mpaNavigation = true\n mutable.canonicalUrl = url\n mutable.pendingPush = pendingPush\n mutable.scrollableSegments = undefined\n\n return handleMutable(state, mutable)\n}\n\nfunction generateSegmentsFromPatch(\n flightRouterPatch: FlightRouterState\n): FlightSegmentPath[] {\n const segments: FlightSegmentPath[] = []\n const [segment, parallelRoutes] = flightRouterPatch\n\n if (Object.keys(parallelRoutes).length === 0) {\n return [[segment]]\n }\n\n for (const [parallelRouteKey, parallelRoute] of Object.entries(\n parallelRoutes\n )) {\n for (const childSegment of generateSegmentsFromPatch(parallelRoute)) {\n // If the segment is empty, it means we are at the root of the tree\n if (segment === '') {\n segments.push([parallelRouteKey, ...childSegment])\n } else {\n segments.push([segment, parallelRouteKey, ...childSegment])\n }\n }\n }\n\n return segments\n}\n\nfunction triggerLazyFetchForLeafSegments(\n newCache: CacheNode,\n currentCache: CacheNode,\n flightSegmentPath: FlightSegmentPath,\n treePatch: FlightRouterState\n) {\n let appliedPatch = false\n\n newCache.rsc = currentCache.rsc\n newCache.prefetchRsc = currentCache.prefetchRsc\n newCache.loading = currentCache.loading\n newCache.parallelRoutes = new Map(currentCache.parallelRoutes)\n\n const segmentPathsToFill = generateSegmentsFromPatch(treePatch).map(\n (segment) => [...flightSegmentPath, ...segment]\n )\n\n for (const segmentPaths of segmentPathsToFill) {\n clearCacheNodeDataForSegmentPath(newCache, currentCache, segmentPaths)\n\n appliedPatch = true\n }\n\n return appliedPatch\n}\n\nfunction handleNavigationResult(\n url: URL,\n state: ReadonlyReducerState,\n mutable: Mutable,\n pendingPush: boolean,\n result: NavigationResult\n): ReducerState {\n switch (result.tag) {\n case NavigationResultTag.MPA: {\n // Perform an MPA navigation.\n const newUrl = result.data\n return handleExternalUrl(state, mutable, newUrl, pendingPush)\n }\n case NavigationResultTag.NoOp: {\n // The server responded with no change to the current page. However, if\n // the URL changed, we still need to update that.\n const newCanonicalUrl = result.data.canonicalUrl\n mutable.canonicalUrl = newCanonicalUrl\n\n // Check if the only thing that changed was the hash fragment.\n const oldUrl = new URL(state.canonicalUrl, url)\n const onlyHashChange =\n // We don't need to compare the origins, because client-driven\n // navigations are always same-origin.\n url.pathname === oldUrl.pathname &&\n url.search === oldUrl.search &&\n url.hash !== oldUrl.hash\n if (onlyHashChange) {\n // The only updated part of the URL is the hash.\n mutable.onlyHashChange = true\n mutable.shouldScroll = result.data.shouldScroll\n mutable.hashFragment = url.hash\n // Setting this to an empty array triggers a scroll for all new and\n // updated segments. See `ScrollAndFocusHandler` for more details.\n mutable.scrollableSegments = []\n }\n\n return handleMutable(state, mutable)\n }\n case NavigationResultTag.Success: {\n // Received a new result.\n mutable.cache = result.data.cacheNode\n mutable.patchedTree = result.data.flightRouterState\n mutable.canonicalUrl = result.data.canonicalUrl\n mutable.scrollableSegments = result.data.scrollableSegments\n mutable.shouldScroll = result.data.shouldScroll\n mutable.hashFragment = result.data.hash\n return handleMutable(state, mutable)\n }\n case NavigationResultTag.Async: {\n return result.data.then(\n (asyncResult) =>\n handleNavigationResult(url, state, mutable, pendingPush, asyncResult),\n // If the navigation failed, return the current state.\n // TODO: This matches the current behavior but we need to do something\n // better here if the network fails.\n () => {\n return state\n }\n )\n }\n default: {\n result satisfies never\n return state\n }\n }\n}\n\nexport function navigateReducer(\n state: ReadonlyReducerState,\n action: NavigateAction\n): ReducerState {\n const { url, isExternalUrl, navigateType, shouldScroll, allowAliasing } =\n action\n const mutable: Mutable = {}\n const { hash } = url\n const href = createHrefFromUrl(url)\n const pendingPush = navigateType === 'push'\n // we want to prune the prefetch cache on every navigation to avoid it growing too large\n prunePrefetchCache(state.prefetchCache)\n\n mutable.preserveCustomHistoryState = false\n mutable.pendingPush = pendingPush\n\n if (isExternalUrl) {\n return handleExternalUrl(state, mutable, url.toString(), pendingPush)\n }\n\n // Handles case where `` tag is present,\n // which will trigger an MPA navigation.\n if (document.getElementById('__next-page-redirect')) {\n return handleExternalUrl(state, mutable, href, pendingPush)\n }\n\n if (process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n // (Very Early Experimental Feature) Segment Cache\n //\n // Bypass the normal prefetch cache and use the new per-segment cache\n // implementation instead. This is only supported if PPR is enabled, too.\n //\n // Temporary glue code between the router reducer and the new navigation\n // implementation. Eventually we'll rewrite the router reducer to a\n // state machine.\n const result = navigateUsingSegmentCache(\n url,\n state.cache,\n state.tree,\n state.nextUrl,\n shouldScroll\n )\n return handleNavigationResult(url, state, mutable, pendingPush, result)\n }\n\n const prefetchValues = getOrCreatePrefetchCacheEntry({\n url,\n nextUrl: state.nextUrl,\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n allowAliasing,\n })\n const { treeAtTimeOfPrefetch, data } = prefetchValues\n\n prefetchQueue.bump(data)\n\n return data.then(\n ({ flightData, canonicalUrl: canonicalUrlOverride, postponed }) => {\n let isFirstRead = false\n // we only want to mark this once\n if (!prefetchValues.lastUsedTime) {\n // important: we should only mark the cache node as dirty after we unsuspend from the call above\n prefetchValues.lastUsedTime = Date.now()\n isFirstRead = true\n }\n\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return handleExternalUrl(state, mutable, flightData, pendingPush)\n }\n\n const updatedCanonicalUrl = canonicalUrlOverride\n ? createHrefFromUrl(canonicalUrlOverride)\n : href\n\n const onlyHashChange =\n !!hash &&\n state.canonicalUrl.split('#', 1)[0] ===\n updatedCanonicalUrl.split('#', 1)[0]\n\n // If only the hash has changed, the server hasn't sent us any new data. We can just update\n // the mutable properties responsible for URL and scroll handling and return early.\n if (onlyHashChange) {\n mutable.onlyHashChange = true\n mutable.canonicalUrl = updatedCanonicalUrl\n mutable.shouldScroll = shouldScroll\n mutable.hashFragment = hash\n mutable.scrollableSegments = []\n return handleMutable(state, mutable)\n }\n\n if (prefetchValues.aliased) {\n const result = handleAliasedPrefetchEntry(\n state,\n flightData,\n url,\n mutable\n )\n\n // We didn't return new router state because we didn't apply the aliased entry for some reason.\n // We'll re-invoke the navigation handler but ensure that we don't attempt to use the aliased entry. This\n // will create an on-demand prefetch entry.\n if (result === false) {\n return navigateReducer(state, { ...action, allowAliasing: false })\n }\n\n return result\n }\n\n let currentTree = state.tree\n let currentCache = state.cache\n let scrollableSegments: FlightSegmentPath[] = []\n for (const normalizedFlightData of flightData) {\n const {\n pathToSegment: flightSegmentPath,\n seedData,\n head,\n isHeadPartial,\n isRootRender,\n } = normalizedFlightData\n let treePatch = normalizedFlightData.tree\n\n // TODO-APP: remove ''\n const flightSegmentPathWithLeadingEmpty = ['', ...flightSegmentPath]\n\n // Create new tree based on the flightSegmentPath and router state patch\n let newTree = applyRouterStatePatchToTree(\n // TODO-APP: remove ''\n flightSegmentPathWithLeadingEmpty,\n currentTree,\n treePatch,\n href\n )\n\n // If the tree patch can't be applied to the current tree then we use the tree at time of prefetch\n // TODO-APP: This should instead fill in the missing pieces in `currentTree` with the data from `treeAtTimeOfPrefetch`, then apply the patch.\n if (newTree === null) {\n newTree = applyRouterStatePatchToTree(\n // TODO-APP: remove ''\n flightSegmentPathWithLeadingEmpty,\n treeAtTimeOfPrefetch,\n treePatch,\n href\n )\n }\n\n if (newTree !== null) {\n if (\n // This is just a paranoid check. When a route is PPRed, the server\n // will send back a static response that's rendered from\n // the root. If for some reason it doesn't, we fall back to the\n // non-PPR implementation.\n // TODO: We should get rid of the else branch and do all navigations\n // via startPPRNavigation. The current structure is just\n // an incremental step.\n seedData &&\n isRootRender &&\n postponed\n ) {\n const task = startPPRNavigation(\n currentCache,\n currentTree,\n treePatch,\n seedData,\n head,\n isHeadPartial,\n false,\n scrollableSegments\n )\n\n if (task !== null) {\n if (task.route === null) {\n // Detected a change to the root layout. Perform an full-\n // page navigation.\n return handleExternalUrl(state, mutable, href, pendingPush)\n }\n // Use the tree computed by startPPRNavigation instead\n // of the one computed by applyRouterStatePatchToTree.\n // TODO: We should remove applyRouterStatePatchToTree\n // from the PPR path entirely.\n const patchedRouterState: FlightRouterState = task.route\n newTree = patchedRouterState\n\n const newCache = task.node\n if (newCache !== null) {\n // We've created a new Cache Node tree that contains a prefetched\n // version of the next page. This can be rendered instantly.\n mutable.cache = newCache\n }\n const dynamicRequestTree = task.dynamicRequestTree\n if (dynamicRequestTree !== null) {\n // The prefetched tree has dynamic holes in it. We initiate a\n // dynamic request to fill them in.\n //\n // Do not block on the result. We'll immediately render the Cache\n // Node tree and suspend on the dynamic parts. When the request\n // comes in, we'll fill in missing data and ping React to\n // re-render. Unlike the lazy fetching model in the non-PPR\n // implementation, this is modeled as a single React update +\n // streaming, rather than multiple top-level updates. (However,\n // even in the new model, we'll still need to sometimes update the\n // root multiple times per navigation, like if the server sends us\n // a different response than we expected. For now, we revert back\n // to the lazy fetching mechanism in that case.)\n const dynamicRequest = fetchServerResponse(url, {\n flightRouterState: dynamicRequestTree,\n nextUrl: state.nextUrl,\n })\n\n listenForDynamicRequest(task, dynamicRequest)\n // We store the dynamic request on the `lazyData` property of the CacheNode\n // because we're not going to await the dynamic request here. Since we're not blocking\n // on the dynamic request, `layout-router` will\n // task.node.lazyData = dynamicRequest\n } else {\n // The prefetched tree does not contain dynamic holes — it's\n // fully static. We can skip the dynamic request.\n }\n } else {\n // Nothing changed, so reuse the old cache.\n // TODO: What if the head changed but not any of the segment data?\n // Is that possible? If so, we should clone the whole tree and\n // update the head.\n newTree = treePatch\n }\n } else {\n // The static response does not include any dynamic holes, so\n // there's no need to do a second request.\n // TODO: As an incremental step this just reverts back to the\n // non-PPR implementation. We can simplify this branch further,\n // given that PPR prefetches are always static and return the whole\n // tree. Or in the meantime we could factor it out into a\n // separate function.\n\n if (isNavigatingToNewRootLayout(currentTree, newTree)) {\n return handleExternalUrl(state, mutable, href, pendingPush)\n }\n\n const cache: CacheNode = createEmptyCacheNode()\n let applied = false\n\n if (\n prefetchValues.status === PrefetchCacheEntryStatus.stale &&\n !isFirstRead\n ) {\n // When we have a stale prefetch entry, we only want to re-use the loading state of the route we're navigating to, to support instant loading navigations\n // this will trigger a lazy fetch for the actual page data by nulling the `rsc` and `prefetchRsc` values for page data,\n // while copying over the `loading` for the segment that contains the page data.\n // We only do this on subsequent reads, as otherwise there'd be no loading data to re-use.\n\n // We skip this branch if only the hash fragment has changed, as we don't want to trigger a lazy fetch in that case\n applied = triggerLazyFetchForLeafSegments(\n cache,\n currentCache,\n flightSegmentPath,\n treePatch\n )\n // since we re-used the stale cache's loading state & refreshed the data,\n // update the `lastUsedTime` so that it can continue to be re-used for the next 30s\n prefetchValues.lastUsedTime = Date.now()\n } else {\n applied = applyFlightData(\n currentCache,\n cache,\n normalizedFlightData,\n prefetchValues\n )\n }\n\n const hardNavigate = shouldHardNavigate(\n // TODO-APP: remove ''\n flightSegmentPathWithLeadingEmpty,\n currentTree\n )\n\n if (hardNavigate) {\n // Copy rsc for the root node of the cache.\n cache.rsc = currentCache.rsc\n cache.prefetchRsc = currentCache.prefetchRsc\n\n invalidateCacheBelowFlightSegmentPath(\n cache,\n currentCache,\n flightSegmentPath\n )\n // Ensure the existing cache value is used when the cache was not invalidated.\n mutable.cache = cache\n } else if (applied) {\n mutable.cache = cache\n // If we applied the cache, we update the \"current cache\" value so any other\n // segments in the FlightDataPath will be able to reference the updated cache.\n currentCache = cache\n }\n\n for (const subSegment of generateSegmentsFromPatch(treePatch)) {\n const scrollableSegmentPath = [\n ...flightSegmentPath,\n ...subSegment,\n ]\n // Filter out the __DEFAULT__ paths as they shouldn't be scrolled to in this case.\n if (\n scrollableSegmentPath[scrollableSegmentPath.length - 1] !==\n DEFAULT_SEGMENT_KEY\n ) {\n scrollableSegments.push(scrollableSegmentPath)\n }\n }\n }\n\n currentTree = newTree\n }\n }\n\n mutable.patchedTree = currentTree\n mutable.canonicalUrl = updatedCanonicalUrl\n mutable.scrollableSegments = scrollableSegments\n mutable.hashFragment = hash\n mutable.shouldScroll = shouldScroll\n\n return handleMutable(state, mutable)\n },\n () => state\n )\n}\n","import { handleGlobalErrors } from '../errors/use-error-handler'\n\nhandleGlobalErrors()\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","import { hasBasePath } from './has-base-path'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function removeBasePath(path: string): string {\n if (process.env.__NEXT_MANUAL_CLIENT_BASE_PATH) {\n if (!hasBasePath(path)) {\n return path\n }\n }\n\n // Can't trim the basePath if it has zero length!\n if (basePath.length === 0) return path\n\n path = path.slice(basePath.length)\n if (!path.startsWith('/')) path = `/${path}`\n return path\n}\n","import type { FlightRouterState } from '../../../server/app-render/types'\nimport type { CacheNode } from '../../../shared/lib/app-router-context.shared-runtime'\nimport type { AppRouterState } from './router-reducer-types'\nimport { applyFlightData } from './apply-flight-data'\nimport { fetchServerResponse } from './fetch-server-response'\nimport { PAGE_SEGMENT_KEY } from '../../../shared/lib/segment'\n\ninterface RefreshInactiveParallelSegments {\n state: AppRouterState\n updatedTree: FlightRouterState\n updatedCache: CacheNode\n includeNextUrl: boolean\n canonicalUrl: string\n}\n\n/**\n * Refreshes inactive segments that are still in the current FlightRouterState.\n * A segment is considered \"inactive\" when the server response indicates it didn't match to a page component.\n * This happens during a soft-navigation, where the server will want to patch in the segment\n * with the \"default\" component, but we explicitly ignore the server in this case\n * and keep the existing state for that segment. New data for inactive segments are inherently\n * not part of the server response when we patch the tree, because they were associated with a response\n * from an earlier navigation/request. For each segment, once it becomes \"active\", we encode the URL that provided\n * the data for it. This function traverses parallel routes looking for these markers so that it can re-fetch\n * and patch the new data into the tree.\n */\nexport async function refreshInactiveParallelSegments(\n options: RefreshInactiveParallelSegments\n) {\n const fetchedSegments = new Set()\n await refreshInactiveParallelSegmentsImpl({\n ...options,\n rootTree: options.updatedTree,\n fetchedSegments,\n })\n}\n\nasync function refreshInactiveParallelSegmentsImpl({\n state,\n updatedTree,\n updatedCache,\n includeNextUrl,\n fetchedSegments,\n rootTree = updatedTree,\n canonicalUrl,\n}: RefreshInactiveParallelSegments & {\n fetchedSegments: Set\n rootTree: FlightRouterState\n}) {\n const [, parallelRoutes, refetchPath, refetchMarker] = updatedTree\n const fetchPromises = []\n\n if (\n refetchPath &&\n refetchPath !== canonicalUrl &&\n refetchMarker === 'refresh' &&\n // it's possible for the tree to contain multiple segments that contain data at the same URL\n // we keep track of them so we can dedupe the requests\n !fetchedSegments.has(refetchPath)\n ) {\n fetchedSegments.add(refetchPath) // Mark this URL as fetched\n\n // Eagerly kick off the fetch for the refetch path & the parallel routes. This should be fine to do as they each operate\n // independently on their own cache nodes, and `applyFlightData` will copy anything it doesn't care about from the existing cache.\n const fetchPromise = fetchServerResponse(\n new URL(refetchPath, location.origin),\n {\n // refetch from the root of the updated tree, otherwise it will be scoped to the current segment\n // and might not contain the data we need to patch in interception route data (such as dynamic params from a previous segment)\n flightRouterState: [rootTree[0], rootTree[1], rootTree[2], 'refetch'],\n nextUrl: includeNextUrl ? state.nextUrl : null,\n }\n ).then(({ flightData }) => {\n if (typeof flightData !== 'string') {\n for (const flightDataPath of flightData) {\n // we only pass the new cache as this function is called after clearing the router cache\n // and filling in the new page data from the server. Meaning the existing cache is actually the cache that's\n // just been created & has been written to, but hasn't been \"committed\" yet.\n applyFlightData(updatedCache, updatedCache, flightDataPath)\n }\n } else {\n // When flightData is a string, it suggests that the server response should have triggered an MPA navigation\n // I'm not 100% sure of this decision, but it seems unlikely that we'd want to introduce a redirect side effect\n // when refreshing on-screen data, so handling this has been ommitted.\n }\n })\n\n fetchPromises.push(fetchPromise)\n }\n\n for (const key in parallelRoutes) {\n const parallelFetchPromise = refreshInactiveParallelSegmentsImpl({\n state,\n updatedTree: parallelRoutes[key],\n updatedCache,\n includeNextUrl,\n fetchedSegments,\n rootTree,\n canonicalUrl,\n })\n\n fetchPromises.push(parallelFetchPromise)\n }\n\n await Promise.all(fetchPromises)\n}\n\n/**\n * Walks the current parallel segments to determine if they are \"active\".\n * An active parallel route will have a `__PAGE__` segment in the FlightRouterState.\n * As opposed to a `__DEFAULT__` segment, which means there was no match for that parallel route.\n * We add a special marker here so that we know how to refresh its data when the router is revalidated.\n */\nexport function addRefreshMarkerToActiveParallelSegments(\n tree: FlightRouterState,\n path: string\n) {\n const [segment, parallelRoutes, , refetchMarker] = tree\n // a page segment might also contain concatenated search params, so we do a partial match on the key\n if (segment.includes(PAGE_SEGMENT_KEY) && refetchMarker !== 'refresh') {\n tree[2] = path\n tree[3] = 'refresh'\n }\n\n for (const key in parallelRoutes) {\n addRefreshMarkerToActiveParallelSegments(parallelRoutes[key], path)\n }\n}\n","import { htmlTreeAsString } from './browser.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { logger } from './logger.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input) {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) ).constructor.name;\n return !name || name === 'Object';\n } catch (e) {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n","import { isNodeEnv } from './node.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Returns true if we are in the browser.\n */\nfunction isBrowser() {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer() {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (GLOBAL_OBJ ).process !== undefined && ((GLOBAL_OBJ ).process ).type === 'renderer'\n );\n}\n\nexport { isBrowser };\n//# sourceMappingURL=isBrowser.js.map\n","'use client'\n\n/**\n * HTTPAccessFallbackBoundary is a boundary that catches errors and renders a\n * fallback component for HTTP errors.\n *\n * It receives the status code, and determine if it should render fallbacks for few HTTP 4xx errors.\n *\n * e.g. 404\n * 404 represents not found, and the fallback component pair contains the component and its styles.\n *\n */\n\nimport React, { useContext } from 'react'\nimport { useUntrackedPathname } from '../navigation-untracked'\nimport {\n HTTPAccessErrorStatus,\n getAccessFallbackHTTPStatus,\n getAccessFallbackErrorTypeByStatus,\n isHTTPAccessFallbackError,\n} from './http-access-fallback'\nimport { warnOnce } from '../../../shared/lib/utils/warn-once'\nimport { MissingSlotContext } from '../../../shared/lib/app-router-context.shared-runtime'\n\ninterface HTTPAccessFallbackBoundaryProps {\n notFound?: React.ReactNode\n forbidden?: React.ReactNode\n unauthorized?: React.ReactNode\n children: React.ReactNode\n missingSlots?: Set\n}\n\ninterface HTTPAccessFallbackErrorBoundaryProps\n extends HTTPAccessFallbackBoundaryProps {\n pathname: string | null\n missingSlots?: Set\n}\n\ninterface HTTPAccessBoundaryState {\n triggeredStatus: number | undefined\n previousPathname: string | null\n}\n\nclass HTTPAccessFallbackErrorBoundary extends React.Component<\n HTTPAccessFallbackErrorBoundaryProps,\n HTTPAccessBoundaryState\n> {\n constructor(props: HTTPAccessFallbackErrorBoundaryProps) {\n super(props)\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname,\n }\n }\n\n componentDidCatch(): void {\n if (\n process.env.NODE_ENV === 'development' &&\n this.props.missingSlots &&\n this.props.missingSlots.size > 0 &&\n // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')\n ) {\n let warningMessage =\n 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' +\n 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n'\n\n const formattedSlots = Array.from(this.props.missingSlots)\n .sort((a, b) => a.localeCompare(b))\n .map((slot) => `@${slot}`)\n .join(', ')\n\n warningMessage += 'Missing slots: ' + formattedSlots\n\n warnOnce(warningMessage)\n }\n }\n\n static getDerivedStateFromError(error: any) {\n if (isHTTPAccessFallbackError(error)) {\n const httpStatus = getAccessFallbackHTTPStatus(error)\n return {\n triggeredStatus: httpStatus,\n }\n }\n // Re-throw if error is not for 404\n throw error\n }\n\n static getDerivedStateFromProps(\n props: HTTPAccessFallbackErrorBoundaryProps,\n state: HTTPAccessBoundaryState\n ): HTTPAccessBoundaryState | null {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */\n if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname,\n }\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname,\n }\n }\n\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props\n const { triggeredStatus } = this.state\n const errorComponents = {\n [HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized,\n }\n\n if (triggeredStatus) {\n const isNotFound =\n triggeredStatus === HTTPAccessErrorStatus.NOT_FOUND && notFound\n const isForbidden =\n triggeredStatus === HTTPAccessErrorStatus.FORBIDDEN && forbidden\n const isUnauthorized =\n triggeredStatus === HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized\n\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children\n }\n\n return (\n <>\n \n {process.env.NODE_ENV === 'development' && (\n \n )}\n {errorComponents[triggeredStatus]}\n \n )\n }\n\n return children\n }\n}\n\nexport function HTTPAccessFallbackBoundary({\n notFound,\n forbidden,\n unauthorized,\n children,\n}: HTTPAccessFallbackBoundaryProps) {\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = useUntrackedPathname()\n const missingSlots = useContext(MissingSlotContext)\n const hasErrorFallback = !!(notFound || forbidden || unauthorized)\n\n if (hasErrorFallback) {\n return (\n \n {children}\n \n )\n }\n\n return <>{children}\n}\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chromeVar = (WINDOW ).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { fill } from '../object.js';\nimport '../debug-build.js';\nimport '../logger.js';\nimport { GLOBAL_OBJ } from '../worldwide.js';\nimport { supportsHistory } from '../vendor/supportsHistory.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet lastHref;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addHistoryInstrumentationHandler(handler) {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nexport { addHistoryInstrumentationHandler };\n//# sourceMappingURL=history.js.map\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\nexport function extractInterceptionRouteInformation(path: string) {\n let interceptingRoute: string | undefined,\n marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined,\n interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format //(..|...|..)(..)/`\n )\n }\n\n interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n\n switch (marker) {\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute\n }\n break\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .join('/')\n break\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute\n break\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","import {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from './interception-routes'\n\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/\n\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/\n\n/**\n * Check if a route is dynamic.\n *\n * @param route - The route to check.\n * @param strict - Whether to use strict mode which prohibits segments with prefixes/suffixes (default: true).\n * @returns Whether the route is dynamic.\n */\nexport function isDynamicRoute(route: string, strict: boolean = true): boolean {\n if (isInterceptionRouteAppPath(route)) {\n route = extractInterceptionRouteInformation(route).interceptedRoute\n }\n\n if (strict) {\n return TEST_STRICT_ROUTE.test(route)\n }\n\n return TEST_ROUTE.test(route)\n}\n","import type {\n ActionFlightResponse,\n ActionResult,\n} from '../../../../server/app-render/types'\nimport { callServer } from '../../../app-call-server'\nimport { findSourceMapURL } from '../../../app-find-source-map-url'\nimport {\n ACTION_HEADER,\n NEXT_IS_PRERENDER_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_URL,\n RSC_CONTENT_TYPE_HEADER,\n} from '../../app-router-headers'\n\n// // eslint-disable-next-line import/no-extraneous-dependencies\n// import { createFromFetch } from 'react-server-dom-webpack/client'\n// // eslint-disable-next-line import/no-extraneous-dependencies\n// import { encodeReply } from 'react-server-dom-webpack/client'\nconst { createFromFetch, createTemporaryReferenceSet, encodeReply } = (\n !!process.env.NEXT_RUNTIME\n ? // eslint-disable-next-line import/no-extraneous-dependencies\n require('react-server-dom-webpack/client.edge')\n : // eslint-disable-next-line import/no-extraneous-dependencies\n require('react-server-dom-webpack/client')\n) as typeof import('react-server-dom-webpack/client')\n\nimport {\n PrefetchKind,\n type ReadonlyReducerState,\n type ReducerState,\n type ServerActionAction,\n type ServerActionMutable,\n} from '../router-reducer-types'\nimport { assignLocation } from '../../../assign-location'\nimport { createHrefFromUrl } from '../create-href-from-url'\nimport { handleExternalUrl } from './navigate-reducer'\nimport { applyRouterStatePatchToTree } from '../apply-router-state-patch-to-tree'\nimport { isNavigatingToNewRootLayout } from '../is-navigating-to-new-root-layout'\nimport type { CacheNode } from '../../../../shared/lib/app-router-context.shared-runtime'\nimport { handleMutable } from '../handle-mutable'\nimport { fillLazyItemsTillLeafWithHead } from '../fill-lazy-items-till-leaf-with-head'\nimport { createEmptyCacheNode } from '../../app-router'\nimport { hasInterceptionRouteInCurrentTree } from './has-interception-route-in-current-tree'\nimport { handleSegmentMismatch } from '../handle-segment-mismatch'\nimport { refreshInactiveParallelSegments } from '../refetch-inactive-parallel-segments'\nimport {\n normalizeFlightData,\n type NormalizedFlightData,\n} from '../../../flight-data-helpers'\nimport { getRedirectError } from '../../redirect'\nimport { RedirectType } from '../../redirect-error'\nimport { createSeededPrefetchCacheEntry } from '../prefetch-cache-utils'\nimport { removeBasePath } from '../../../remove-base-path'\nimport { hasBasePath } from '../../../has-base-path'\nimport {\n extractInfoFromServerReferenceId,\n omitUnusedArgs,\n} from '../../../../shared/lib/server-reference-info'\nimport { revalidateEntireCache } from '../../segment-cache'\n\ntype FetchServerActionResult = {\n redirectLocation: URL | undefined\n redirectType: RedirectType | undefined\n actionResult?: ActionResult\n actionFlightData?: NormalizedFlightData[] | string\n isPrerender: boolean\n revalidatedParts: {\n tag: boolean\n cookie: boolean\n paths: string[]\n }\n}\n\nasync function fetchServerAction(\n state: ReadonlyReducerState,\n nextUrl: ReadonlyReducerState['nextUrl'],\n { actionId, actionArgs }: ServerActionAction\n): Promise {\n const temporaryReferences = createTemporaryReferenceSet()\n const info = extractInfoFromServerReferenceId(actionId)\n\n // TODO: Currently, we're only omitting unused args for the experimental \"use\n // cache\" functions. Once the server reference info byte feature is stable, we\n // should apply this to server actions as well.\n const usedArgs =\n info.type === 'use-cache' ? omitUnusedArgs(actionArgs, info) : actionArgs\n\n const body = await encodeReply(usedArgs, { temporaryReferences })\n\n const res = await fetch('', {\n method: 'POST',\n headers: {\n Accept: RSC_CONTENT_TYPE_HEADER,\n [ACTION_HEADER]: actionId,\n [NEXT_ROUTER_STATE_TREE_HEADER]: encodeURIComponent(\n JSON.stringify(state.tree)\n ),\n ...(process.env.NEXT_DEPLOYMENT_ID\n ? {\n 'x-deployment-id': process.env.NEXT_DEPLOYMENT_ID,\n }\n : {}),\n ...(nextUrl\n ? {\n [NEXT_URL]: nextUrl,\n }\n : {}),\n },\n body,\n })\n\n const redirectHeader = res.headers.get('x-action-redirect')\n const [location, _redirectType] = redirectHeader?.split(';') || []\n let redirectType: RedirectType | undefined\n switch (_redirectType) {\n case 'push':\n redirectType = RedirectType.push\n break\n case 'replace':\n redirectType = RedirectType.replace\n break\n default:\n redirectType = undefined\n }\n\n const isPrerender = !!res.headers.get(NEXT_IS_PRERENDER_HEADER)\n let revalidatedParts: FetchServerActionResult['revalidatedParts']\n try {\n const revalidatedHeader = JSON.parse(\n res.headers.get('x-action-revalidated') || '[[],0,0]'\n )\n revalidatedParts = {\n paths: revalidatedHeader[0] || [],\n tag: !!revalidatedHeader[1],\n cookie: revalidatedHeader[2],\n }\n } catch (e) {\n revalidatedParts = {\n paths: [],\n tag: false,\n cookie: false,\n }\n }\n\n const redirectLocation = location\n ? assignLocation(\n location,\n new URL(state.canonicalUrl, window.location.href)\n )\n : undefined\n\n const contentType = res.headers.get('content-type')\n\n if (contentType?.startsWith(RSC_CONTENT_TYPE_HEADER)) {\n const response: ActionFlightResponse = await createFromFetch(\n Promise.resolve(res),\n { callServer, findSourceMapURL, temporaryReferences }\n )\n\n if (location) {\n // if it was a redirection, then result is just a regular RSC payload\n return {\n actionFlightData: normalizeFlightData(response.f),\n redirectLocation,\n redirectType,\n revalidatedParts,\n isPrerender,\n }\n }\n\n return {\n actionResult: response.a,\n actionFlightData: normalizeFlightData(response.f),\n redirectLocation,\n redirectType,\n revalidatedParts,\n isPrerender,\n }\n }\n\n // Handle invalid server action responses\n if (res.status >= 400) {\n // The server can respond with a text/plain error message, but we'll fallback to something generic\n // if there isn't one.\n const error =\n contentType === 'text/plain'\n ? await res.text()\n : 'An unexpected response was received from the server.'\n\n throw new Error(error)\n }\n\n return {\n redirectLocation,\n redirectType,\n revalidatedParts,\n isPrerender,\n }\n}\n\n/*\n * This reducer is responsible for calling the server action and processing any side-effects from the server action.\n * It does not mutate the state by itself but rather delegates to other reducers to do the actual mutation.\n */\nexport function serverActionReducer(\n state: ReadonlyReducerState,\n action: ServerActionAction\n): ReducerState {\n const { resolve, reject } = action\n const mutable: ServerActionMutable = {}\n\n let currentTree = state.tree\n\n mutable.preserveCustomHistoryState = false\n\n // only pass along the `nextUrl` param (used for interception routes) if the current route was intercepted.\n // If the route has been intercepted, the action should be as well.\n // Otherwise the server action might be intercepted with the wrong action id\n // (ie, one that corresponds with the intercepted route)\n const nextUrl =\n state.nextUrl && hasInterceptionRouteInCurrentTree(state.tree)\n ? state.nextUrl\n : null\n\n return fetchServerAction(state, nextUrl, action).then(\n async ({\n actionResult,\n actionFlightData: flightData,\n redirectLocation,\n redirectType,\n isPrerender,\n revalidatedParts,\n }) => {\n let redirectHref: string | undefined\n\n // honor the redirect type instead of defaulting to push in case of server actions.\n if (redirectLocation) {\n if (redirectType === RedirectType.replace) {\n state.pushRef.pendingPush = false\n mutable.pendingPush = false\n } else {\n state.pushRef.pendingPush = true\n mutable.pendingPush = true\n }\n\n redirectHref = createHrefFromUrl(redirectLocation, false)\n mutable.canonicalUrl = redirectHref\n }\n\n if (!flightData) {\n resolve(actionResult)\n\n // If there is a redirect but no flight data we need to do a mpaNavigation.\n if (redirectLocation) {\n return handleExternalUrl(\n state,\n mutable,\n redirectLocation.href,\n state.pushRef.pendingPush\n )\n }\n return state\n }\n\n if (typeof flightData === 'string') {\n // Handle case when navigating to page in `pages` from `app`\n resolve(actionResult)\n\n return handleExternalUrl(\n state,\n mutable,\n flightData,\n state.pushRef.pendingPush\n )\n }\n\n const actionRevalidated =\n revalidatedParts.paths.length > 0 ||\n revalidatedParts.tag ||\n revalidatedParts.cookie\n\n for (const normalizedFlightData of flightData) {\n const {\n tree: treePatch,\n seedData: cacheNodeSeedData,\n head,\n isRootRender,\n } = normalizedFlightData\n\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('SERVER ACTION APPLY FAILED')\n resolve(actionResult)\n\n return state\n }\n\n // Given the path can only have two items the items are only the router state and rsc for the root.\n const newTree = applyRouterStatePatchToTree(\n // TODO-APP: remove ''\n [''],\n currentTree,\n treePatch,\n redirectHref ? redirectHref : state.canonicalUrl\n )\n\n if (newTree === null) {\n resolve(actionResult)\n\n return handleSegmentMismatch(state, action, treePatch)\n }\n\n if (isNavigatingToNewRootLayout(currentTree, newTree)) {\n resolve(actionResult)\n\n return handleExternalUrl(\n state,\n mutable,\n redirectHref || state.canonicalUrl,\n state.pushRef.pendingPush\n )\n }\n\n // The server sent back RSC data for the server action, so we need to apply it to the cache.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1]\n const cache: CacheNode = createEmptyCacheNode()\n cache.rsc = rsc\n cache.prefetchRsc = null\n cache.loading = cacheNodeSeedData[3]\n fillLazyItemsTillLeafWithHead(\n cache,\n // Existing cache is not passed in as server actions have to invalidate the entire cache.\n undefined,\n treePatch,\n cacheNodeSeedData,\n head,\n undefined\n )\n\n mutable.cache = cache\n if (process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n revalidateEntireCache(state.nextUrl, newTree)\n } else {\n mutable.prefetchCache = new Map()\n }\n if (actionRevalidated) {\n await refreshInactiveParallelSegments({\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl: Boolean(nextUrl),\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl,\n })\n }\n }\n\n mutable.patchedTree = newTree\n currentTree = newTree\n }\n\n if (redirectLocation && redirectHref) {\n if (!process.env.__NEXT_CLIENT_SEGMENT_CACHE && !actionRevalidated) {\n // Because the RedirectBoundary will trigger a navigation, we need to seed the prefetch cache\n // with the FlightData that we got from the server action for the target page, so that it's\n // available when the page is navigated to and doesn't need to be re-fetched.\n // We only do this if the server action didn't revalidate any data, as in that case the\n // client cache will be cleared and the data will be re-fetched anyway.\n // NOTE: We don't do this in the Segment Cache implementation.\n // Dynamic data should never be placed into the cache, unless it's\n // \"converted\" to static data using . What we\n // do instead is re-prefetch links and forms whenever the cache is\n // invalidated.\n createSeededPrefetchCacheEntry({\n url: redirectLocation,\n data: {\n flightData,\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n // TODO: We should be able to set this if the server action\n // returned a fully static response.\n staleTime: -1,\n },\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n nextUrl: state.nextUrl,\n kind: isPrerender ? PrefetchKind.FULL : PrefetchKind.AUTO,\n })\n mutable.prefetchCache = state.prefetchCache\n }\n\n // If the action triggered a redirect, the action promise will be rejected with\n // a redirect so that it's handled by RedirectBoundary as we won't have a valid\n // action result to resolve the promise with. This will effectively reset the state of\n // the component that called the action as the error boundary will remount the tree.\n // The status code doesn't matter here as the action handler will have already sent\n // a response with the correct status code.\n reject(\n getRedirectError(\n hasBasePath(redirectHref)\n ? removeBasePath(redirectHref)\n : redirectHref,\n redirectType || RedirectType.push\n )\n )\n } else {\n resolve(actionResult)\n }\n\n return handleMutable(state, mutable)\n },\n (e: any) => {\n // When the server action is rejected we don't update the state and instead call the reject handler of the promise.\n reject(e)\n\n return state\n }\n )\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // @ts-expect-error \"npm\" is injected by rollup during build process\n return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import type { default as Router } from '../router'\n\nexport function compareRouterStates(a: Router['state'], b: Router['state']) {\n const stateKeys = Object.keys(a)\n if (stateKeys.length !== Object.keys(b).length) return false\n\n for (let i = stateKeys.length; i--; ) {\n const key = stateKeys[i]\n if (key === 'query') {\n const queryKeys = Object.keys(a.query)\n if (queryKeys.length !== Object.keys(b.query).length) {\n return false\n }\n for (let j = queryKeys.length; j--; ) {\n const queryKey = queryKeys[j]\n if (\n !b.query.hasOwnProperty(queryKey) ||\n a.query[queryKey] !== b.query[queryKey]\n ) {\n return false\n }\n }\n } else if (\n !b.hasOwnProperty(key) ||\n a[key as keyof Router['state']] !== b[key as keyof Router['state']]\n ) {\n return false\n }\n }\n\n return true\n}\n","import { normalizeLocalePath } from '../../i18n/normalize-locale-path'\nimport { removePathPrefix } from './remove-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\nimport type { I18NProvider } from '../../../../server/lib/i18n-provider'\n\nexport interface NextPathnameInfo {\n /**\n * The base path in case the pathname included it.\n */\n basePath?: string\n /**\n * The buildId for when the parsed URL is a data URL. Parsing it can be\n * disabled with the `parseData` option.\n */\n buildId?: string\n /**\n * If there was a locale in the pathname, this will hold its value.\n */\n locale?: string\n /**\n * The processed pathname without a base path, locale, or data URL elements\n * when parsing it is enabled.\n */\n pathname: string\n /**\n * A boolean telling if the pathname had a trailingSlash. This can be only\n * true if trailingSlash is enabled.\n */\n trailingSlash?: boolean\n}\n\ninterface Options {\n /**\n * When passed to true, this function will also parse Nextjs data URLs.\n */\n parseData?: boolean\n /**\n * A partial of the Next.js configuration to parse the URL.\n */\n nextConfig?: {\n basePath?: string\n i18n?: { locales?: readonly string[] } | null\n trailingSlash?: boolean\n }\n\n /**\n * If provided, this normalizer will be used to detect the locale instead of\n * the default locale detection.\n */\n i18nProvider?: I18NProvider\n}\n\nexport function getNextPathnameInfo(\n pathname: string,\n options: Options\n): NextPathnameInfo {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}\n const info: NextPathnameInfo = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash,\n }\n\n if (basePath && pathHasPrefix(info.pathname, basePath)) {\n info.pathname = removePathPrefix(info.pathname, basePath)\n info.basePath = basePath\n }\n let pathnameNoDataPrefix = info.pathname\n\n if (\n info.pathname.startsWith('/_next/data/') &&\n info.pathname.endsWith('.json')\n ) {\n const paths = info.pathname\n .replace(/^\\/_next\\/data\\//, '')\n .replace(/\\.json$/, '')\n .split('/')\n\n const buildId = paths[0]\n info.buildId = buildId\n pathnameNoDataPrefix =\n paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'\n\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix\n }\n }\n\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider\n ? options.i18nProvider.analyze(info.pathname)\n : normalizeLocalePath(info.pathname, i18n.locales)\n\n info.locale = result.detectedLocale\n info.pathname = result.pathname ?? info.pathname\n\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider\n ? options.i18nProvider.analyze(pathnameNoDataPrefix)\n : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales)\n\n if (result.detectedLocale) {\n info.locale = result.detectedLocale\n }\n }\n }\n return info\n}\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import {\n getDefaultHydrationErrorMessage,\n isHydrationError,\n testReactHydrationWarning,\n} from '../is-hydration-error'\nimport {\n hydrationErrorState,\n getReactHydrationDiffSegments,\n} from './hydration-error-info'\n\nexport function attachHydrationErrorState(error: Error) {\n let parsedHydrationErrorState: typeof hydrationErrorState = {}\n const isHydrationWarning = testReactHydrationWarning(error.message)\n const isHydrationRuntimeError = isHydrationError(error)\n\n // If it's not hydration warnings or errors, skip\n if (!(isHydrationRuntimeError || isHydrationWarning)) {\n return\n }\n\n const reactHydrationDiffSegments = getReactHydrationDiffSegments(\n error.message\n )\n // If the reactHydrationDiffSegments exists\n // and the diff (reactHydrationDiffSegments[1]) exists\n // e.g. the hydration diff log error.\n if (reactHydrationDiffSegments) {\n const diff = reactHydrationDiffSegments[1]\n parsedHydrationErrorState = {\n ...(error as any).details,\n ...hydrationErrorState,\n // If diff is present in error, we don't need to pick up the console logged warning.\n // - if hydration error has diff, and is not hydration diff log, then it's a normal hydration error.\n // - if hydration error no diff, then leverage the one from the hydration diff log.\n\n warning: (diff && !isHydrationWarning\n ? null\n : hydrationErrorState.warning) || [getDefaultHydrationErrorMessage()],\n // When it's hydration diff log, do not show notes section.\n // This condition is only for the 1st squashed error.\n notes: isHydrationWarning ? '' : reactHydrationDiffSegments[0],\n reactOutputComponentDiff: diff,\n }\n // Cache the `reactOutputComponentDiff` into hydrationErrorState.\n // This is only required for now when we still squashed the hydration diff log into hydration error.\n // Once the all error is logged to dev overlay in order, this will go away.\n if (!hydrationErrorState.reactOutputComponentDiff && diff) {\n hydrationErrorState.reactOutputComponentDiff = diff\n }\n // If it's hydration runtime error that doesn't contain the diff, combine the diff from the cached hydration diff.\n if (\n !diff &&\n isHydrationRuntimeError &&\n hydrationErrorState.reactOutputComponentDiff\n ) {\n parsedHydrationErrorState.reactOutputComponentDiff =\n hydrationErrorState.reactOutputComponentDiff\n }\n } else {\n // Normal runtime error, where it doesn't contain the hydration diff.\n\n // If there's any extra information in the error message to display,\n // append it to the error message details property\n if (hydrationErrorState.warning) {\n // The patched console.error found hydration errors logged by React\n // Append the logged warning to the error message\n parsedHydrationErrorState = {\n ...(error as any).details,\n // It contains the warning, component stack, server and client tag names\n ...hydrationErrorState,\n }\n }\n // Consume the cached hydration diff.\n // This is only required for now when we still squashed the hydration diff log into hydration error.\n // Once the all error is logged to dev overlay in order, this will go away.\n if (hydrationErrorState.reactOutputComponentDiff) {\n parsedHydrationErrorState.reactOutputComponentDiff =\n hydrationErrorState.reactOutputComponentDiff\n }\n }\n // If it's a hydration error, store the hydration error state into the error object\n ;(error as any).details = parsedHydrationErrorState\n}\n","import { startTransition, useCallback } from 'react'\nimport {\n ACTION_SERVER_ACTION,\n type ReducerActions,\n type ServerActionDispatcher,\n} from './components/router-reducer/router-reducer-types'\n\nlet globalServerActionDispatcher = null as ServerActionDispatcher | null\n\nexport function useServerActionDispatcher(\n dispatch: React.Dispatch\n) {\n const serverActionDispatcher: ServerActionDispatcher = useCallback(\n (actionPayload) => {\n startTransition(() => {\n dispatch({\n ...actionPayload,\n type: ACTION_SERVER_ACTION,\n })\n })\n },\n [dispatch]\n )\n globalServerActionDispatcher = serverActionDispatcher\n}\n\nexport async function callServer(actionId: string, actionArgs: any[]) {\n const actionDispatcher = globalServerActionDispatcher\n\n if (!actionDispatcher) {\n throw new Error('Invariant: missing action dispatcher.')\n }\n\n return new Promise((resolve, reject) => {\n actionDispatcher({\n actionId,\n actionArgs,\n resolve,\n reject,\n })\n })\n}\n","import type {\n CacheNodeSeedData,\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../../server/app-render/types'\nimport type {\n CacheNode,\n ChildSegmentMap,\n HeadData,\n ReadyCacheNode,\n} from '../../../shared/lib/app-router-context.shared-runtime'\nimport { DEFAULT_SEGMENT_KEY } from '../../../shared/lib/segment'\nimport { matchSegment } from '../match-segments'\nimport { createRouterCacheKey } from './create-router-cache-key'\nimport type { FetchServerResponseResult } from './fetch-server-response'\nimport { isNavigatingToNewRootLayout } from './is-navigating-to-new-root-layout'\n\n// This is yet another tree type that is used to track pending promises that\n// need to be fulfilled once the dynamic data is received. The terminal nodes of\n// this tree represent the new Cache Node trees that were created during this\n// request. We can't use the Cache Node tree or Route State tree directly\n// because those include reused nodes, too. This tree is discarded as soon as\n// the navigation response is received.\ntype SPANavigationTask = {\n // The router state that corresponds to the tree that this Task represents.\n route: FlightRouterState\n // The CacheNode that corresponds to the tree that this Task represents. If\n // `children` is null (i.e. if this is a terminal task node), then `node`\n // represents a brand new Cache Node tree, which way or may not need to be\n // filled with dynamic data from the server.\n node: CacheNode | null\n // The tree sent to the server during the dynamic request. This is the\n // same as `route`, except with the `refetch` marker set on dynamic segments.\n // If all the segments are static, then this will be null, and no server\n // request is required.\n dynamicRequestTree: FlightRouterState | null\n children: Map | null\n}\n\n// A special type used to bail out and trigger a full-page navigation.\ntype MPANavigationTask = {\n // MPA tasks are distinguised from SPA tasks by having a null `route`.\n route: null\n node: null\n dynamicRequestTree: null\n children: null\n}\n\nconst MPA_NAVIGATION_TASK: MPANavigationTask = {\n route: null,\n node: null,\n dynamicRequestTree: null,\n children: null,\n}\n\nexport type Task = SPANavigationTask | MPANavigationTask\n\n// Creates a new Cache Node tree (i.e. copy-on-write) that represents the\n// optimistic result of a navigation, using both the current Cache Node tree and\n// data that was prefetched prior to navigation.\n//\n// At the moment we call this function, we haven't yet received the navigation\n// response from the server. It could send back something completely different\n// from the tree that was prefetched — due to rewrites, default routes, parallel\n// routes, etc.\n//\n// But in most cases, it will return the same tree that we prefetched, just with\n// the dynamic holes filled in. So we optimistically assume this will happen,\n// and accept that the real result could be arbitrarily different.\n//\n// We'll reuse anything that was already in the previous tree, since that's what\n// the server does.\n//\n// New segments (ones that don't appear in the old tree) are assigned an\n// unresolved promise. The data for these promises will be fulfilled later, when\n// the navigation response is received.\n//\n// The tree can be rendered immediately after it is created (that's why this is\n// a synchronous function). Any new trees that do not have prefetch data will\n// suspend during rendering, until the dynamic data streams in.\n//\n// Returns a Task object, which contains both the updated Cache Node and a path\n// to the pending subtrees that need to be resolved by the navigation response.\n//\n// A return value of `null` means there were no changes, and the previous tree\n// can be reused without initiating a server request.\nexport function startPPRNavigation(\n oldCacheNode: CacheNode,\n oldRouterState: FlightRouterState,\n newRouterState: FlightRouterState,\n prefetchData: CacheNodeSeedData | null,\n prefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n isSamePageNavigation: boolean,\n scrollableSegmentsResult: Array\n): Task | null {\n const segmentPath: Array = []\n return updateCacheNodeOnNavigation(\n oldCacheNode,\n oldRouterState,\n newRouterState,\n false,\n prefetchData,\n prefetchHead,\n isPrefetchHeadPartial,\n isSamePageNavigation,\n segmentPath,\n scrollableSegmentsResult\n )\n}\n\nfunction updateCacheNodeOnNavigation(\n oldCacheNode: CacheNode,\n oldRouterState: FlightRouterState,\n newRouterState: FlightRouterState,\n didFindRootLayout: boolean,\n prefetchData: CacheNodeSeedData | null,\n prefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n isSamePageNavigation: boolean,\n segmentPath: FlightSegmentPath,\n scrollableSegmentsResult: Array\n): Task | null {\n // Diff the old and new trees to reuse the shared layouts.\n const oldRouterStateChildren = oldRouterState[1]\n const newRouterStateChildren = newRouterState[1]\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null\n\n if (!didFindRootLayout) {\n // We're currently traversing the part of the tree that was also part of\n // the previous route. If we discover a root layout, then we don't need to\n // trigger an MPA navigation. See beginRenderingNewRouteTree for context.\n const isRootLayout = newRouterState[4] === true\n if (isRootLayout) {\n // Found a matching root layout.\n didFindRootLayout = true\n }\n }\n\n const oldParallelRoutes = oldCacheNode.parallelRoutes\n\n // Clone the current set of segment children, even if they aren't active in\n // the new tree.\n // TODO: We currently retain all the inactive segments indefinitely, until\n // there's an explicit refresh, or a parent layout is lazily refreshed. We\n // rely on this for popstate navigations, which update the Router State Tree\n // but do not eagerly perform a data fetch, because they expect the segment\n // data to already be in the Cache Node tree. For highly static sites that\n // are mostly read-only, this may happen only rarely, causing memory to\n // leak. We should figure out a better model for the lifetime of inactive\n // segments, so we can maintain instant back/forward navigations without\n // leaking memory indefinitely.\n const prefetchParallelRoutes = new Map(oldParallelRoutes)\n\n // As we diff the trees, we may sometimes modify (copy-on-write, not mutate)\n // the Route Tree that was returned by the server — for example, in the case\n // of default parallel routes, we preserve the currently active segment. To\n // avoid mutating the original tree, we clone the router state children along\n // the return path.\n let patchedRouterStateChildren: {\n [parallelRouteKey: string]: FlightRouterState\n } = {}\n let taskChildren = null\n\n // Most navigations require a request to fetch additional data from the\n // server, either because the data was not already prefetched, or because the\n // target route contains dynamic data that cannot be prefetched.\n //\n // However, if the target route is fully static, and it's already completely\n // loaded into the segment cache, then we can skip the server request.\n //\n // This starts off as `false`, and is set to `true` if any of the child\n // routes requires a dynamic request.\n let needsDynamicRequest = false\n // As we traverse the children, we'll construct a FlightRouterState that can\n // be sent to the server to request the dynamic data. If it turns out that\n // nothing in the subtree is dynamic (i.e. needsDynamicRequest is false at the\n // end), then this will be discarded.\n // TODO: We can probably optimize the format of this data structure to only\n // include paths that are dynamic. Instead of reusing the\n // FlightRouterState type.\n let dynamicRequestTreeChildren: {\n [parallelRouteKey: string]: FlightRouterState\n } = {}\n\n for (let parallelRouteKey in newRouterStateChildren) {\n const newRouterStateChild: FlightRouterState =\n newRouterStateChildren[parallelRouteKey]\n const oldRouterStateChild: FlightRouterState | void =\n oldRouterStateChildren[parallelRouteKey]\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey)\n const prefetchDataChild: CacheNodeSeedData | void | null =\n prefetchDataChildren !== null\n ? prefetchDataChildren[parallelRouteKey]\n : null\n\n const newSegmentChild = newRouterStateChild[0]\n const newSegmentPathChild = segmentPath.concat([\n parallelRouteKey,\n newSegmentChild,\n ])\n const newSegmentKeyChild = createRouterCacheKey(newSegmentChild)\n\n const oldSegmentChild =\n oldRouterStateChild !== undefined ? oldRouterStateChild[0] : undefined\n\n const oldCacheNodeChild =\n oldSegmentMapChild !== undefined\n ? oldSegmentMapChild.get(newSegmentKeyChild)\n : undefined\n\n let taskChild: Task | null\n if (newSegmentChild === DEFAULT_SEGMENT_KEY) {\n // This is another kind of leaf segment — a default route.\n //\n // Default routes have special behavior. When there's no matching segment\n // for a parallel route, Next.js preserves the currently active segment\n // during a client navigation — but not for initial render. The server\n // leaves it to the client to account for this. So we need to handle\n // it here.\n if (oldRouterStateChild !== undefined) {\n // Reuse the existing Router State for this segment. We spawn a \"task\"\n // just to keep track of the updated router state; unlike most, it's\n // already fulfilled and won't be affected by the dynamic response.\n taskChild = spawnReusedTask(oldRouterStateChild)\n } else {\n // There's no currently active segment. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(\n oldRouterStateChild,\n newRouterStateChild,\n didFindRootLayout,\n prefetchDataChild !== undefined ? prefetchDataChild : null,\n prefetchHead,\n isPrefetchHeadPartial,\n newSegmentPathChild,\n scrollableSegmentsResult\n )\n }\n } else if (\n isSamePageNavigation &&\n // Check if this is a page segment.\n // TODO: We're not consistent about how we do this check. Some places\n // check if the segment starts with PAGE_SEGMENT_KEY, but most seem to\n // check if there any any children, which is why I'm doing it here. We\n // should probably encode an empty children set as `null` though. Either\n // way, we should update all the checks to be consistent.\n Object.keys(newRouterStateChild[1]).length === 0\n ) {\n // We special case navigations to the exact same URL as the current\n // location. It's a common UI pattern for apps to refresh when you click a\n // link to the current page. So when this happens, we refresh the dynamic\n // data in the page segments.\n //\n // Note that this does not apply if the any part of the hash or search\n // query has changed. This might feel a bit weird but it makes more sense\n // when you consider that the way to trigger this behavior is to click\n // the same link multiple times.\n //\n // TODO: We should probably refresh the *entire* route when this case\n // occurs, not just the page segments. Essentially treating it the same as\n // a refresh() triggered by an action, which is the more explicit way of\n // modeling the UI pattern described above.\n //\n // Also note that this only refreshes the dynamic data, not static/\n // cached data. If the page segment is fully static and prefetched, the\n // request is skipped. (This is also how refresh() works.)\n taskChild = beginRenderingNewRouteTree(\n oldRouterStateChild,\n newRouterStateChild,\n didFindRootLayout,\n prefetchDataChild !== undefined ? prefetchDataChild : null,\n prefetchHead,\n isPrefetchHeadPartial,\n newSegmentPathChild,\n scrollableSegmentsResult\n )\n } else if (\n oldRouterStateChild !== undefined &&\n oldSegmentChild !== undefined &&\n matchSegment(newSegmentChild, oldSegmentChild)\n ) {\n if (\n oldCacheNodeChild !== undefined &&\n oldRouterStateChild !== undefined\n ) {\n // This segment exists in both the old and new trees. Recursively update\n // the children.\n taskChild = updateCacheNodeOnNavigation(\n oldCacheNodeChild,\n oldRouterStateChild,\n newRouterStateChild,\n didFindRootLayout,\n prefetchDataChild,\n prefetchHead,\n isPrefetchHeadPartial,\n isSamePageNavigation,\n newSegmentPathChild,\n scrollableSegmentsResult\n )\n } else {\n // There's no existing Cache Node for this segment. Switch to the\n // \"create\" path.\n taskChild = beginRenderingNewRouteTree(\n oldRouterStateChild,\n newRouterStateChild,\n didFindRootLayout,\n prefetchDataChild !== undefined ? prefetchDataChild : null,\n prefetchHead,\n isPrefetchHeadPartial,\n newSegmentPathChild,\n scrollableSegmentsResult\n )\n }\n } else {\n // This is a new tree. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(\n oldRouterStateChild,\n newRouterStateChild,\n didFindRootLayout,\n prefetchDataChild !== undefined ? prefetchDataChild : null,\n prefetchHead,\n isPrefetchHeadPartial,\n newSegmentPathChild,\n scrollableSegmentsResult\n )\n }\n\n if (taskChild !== null) {\n // Recursively propagate up the child tasks.\n\n if (taskChild.route === null) {\n // One of the child tasks discovered a change to the root layout.\n // Immediately unwind from this recursive traversal.\n return MPA_NAVIGATION_TASK\n }\n\n if (taskChildren === null) {\n taskChildren = new Map()\n }\n taskChildren.set(parallelRouteKey, taskChild)\n const newCacheNodeChild = taskChild.node\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild: ChildSegmentMap = new Map(oldSegmentMapChild)\n newSegmentMapChild.set(newSegmentKeyChild, newCacheNodeChild)\n prefetchParallelRoutes.set(parallelRouteKey, newSegmentMapChild)\n }\n\n // The child tree's route state may be different from the prefetched\n // route sent by the server. We need to clone it as we traverse back up\n // the tree.\n const taskChildRoute = taskChild.route\n patchedRouterStateChildren[parallelRouteKey] = taskChildRoute\n\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = taskChildRoute\n }\n } else {\n // The child didn't change. We can use the prefetched router state.\n patchedRouterStateChildren[parallelRouteKey] = newRouterStateChild\n dynamicRequestTreeChildren[parallelRouteKey] = newRouterStateChild\n }\n }\n\n if (taskChildren === null) {\n // No new tasks were spawned.\n return null\n }\n\n const newCacheNode: ReadyCacheNode = {\n lazyData: null,\n rsc: oldCacheNode.rsc,\n // We intentionally aren't updating the prefetchRsc field, since this node\n // is already part of the current tree, because it would be weird for\n // prefetch data to be newer than the final data. It probably won't ever be\n // observable anyway, but it could happen if the segment is unmounted then\n // mounted again, because LayoutRouter will momentarily switch to rendering\n // prefetchRsc, via useDeferredValue.\n prefetchRsc: oldCacheNode.prefetchRsc,\n head: oldCacheNode.head,\n prefetchHead: oldCacheNode.prefetchHead,\n loading: oldCacheNode.loading,\n\n // Everything is cloned except for the children, which we computed above.\n parallelRoutes: prefetchParallelRoutes,\n }\n\n return {\n // Return a cloned copy of the router state with updated children.\n route: patchRouterStateWithNewChildren(\n newRouterState,\n patchedRouterStateChildren\n ),\n node: newCacheNode,\n dynamicRequestTree: needsDynamicRequest\n ? patchRouterStateWithNewChildren(\n newRouterState,\n dynamicRequestTreeChildren\n )\n : null,\n children: taskChildren,\n }\n}\n\nfunction beginRenderingNewRouteTree(\n oldRouterState: FlightRouterState | void,\n newRouterState: FlightRouterState,\n didFindRootLayout: boolean,\n prefetchData: CacheNodeSeedData | null,\n possiblyPartialPrefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n segmentPath: FlightSegmentPath,\n scrollableSegmentsResult: Array\n): Task {\n if (!didFindRootLayout) {\n // The route tree changed before we reached a layout. (The highest-level\n // layout in a route tree is referred to as the \"root\" layout.) This could\n // mean that we're navigating between two different root layouts. When this\n // happens, we perform a full-page (MPA-style) navigation.\n //\n // However, the algorithm for deciding where to start rendering a route\n // (i.e. the one performed in order to reach this function) is stricter\n // than the one used to detect a change in the root layout. So just because\n // we're re-rendering a segment outside of the root layout does not mean we\n // should trigger a full-page navigation.\n //\n // Specifically, we handle dynamic parameters differently: two segments are\n // considered the same even if their parameter values are different.\n //\n // Refer to isNavigatingToNewRootLayout for details.\n //\n // Note that we only have to perform this extra traversal if we didn't\n // already discover a root layout in the part of the tree that is unchanged.\n // In the common case, this branch is skipped completely.\n if (\n oldRouterState === undefined ||\n isNavigatingToNewRootLayout(oldRouterState, newRouterState)\n ) {\n // The root layout changed. Perform a full-page navigation.\n return MPA_NAVIGATION_TASK\n }\n }\n return createCacheNodeOnNavigation(\n newRouterState,\n prefetchData,\n possiblyPartialPrefetchHead,\n isPrefetchHeadPartial,\n segmentPath,\n scrollableSegmentsResult\n )\n}\n\nfunction createCacheNodeOnNavigation(\n routerState: FlightRouterState,\n prefetchData: CacheNodeSeedData | null,\n possiblyPartialPrefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n segmentPath: FlightSegmentPath,\n scrollableSegmentsResult: Array\n): SPANavigationTask {\n // Same traversal as updateCacheNodeNavigation, but we switch to this path\n // once we reach the part of the tree that was not in the previous route. We\n // don't need to diff against the old tree, we just need to create a new one.\n if (prefetchData === null) {\n // There's no prefetch for this segment. Everything from this point will be\n // requested from the server, even if there are static children below it.\n // Create a terminal task node that will later be fulfilled by\n // server response.\n return spawnPendingTask(\n routerState,\n null,\n possiblyPartialPrefetchHead,\n isPrefetchHeadPartial,\n segmentPath,\n scrollableSegmentsResult\n )\n }\n\n const routerStateChildren = routerState[1]\n const isPrefetchRscPartial = prefetchData[4]\n\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const isLeafSegment = Object.keys(routerStateChildren).length === 0\n\n // If prefetch data is available for a segment, and it's fully static (i.e.\n // does not contain any dynamic holes), we don't need to request it from\n // the server.\n if (\n // Check if the segment data is partial\n isPrefetchRscPartial ||\n // Check if the head is partial (only relevant if this is a leaf segment)\n (isPrefetchHeadPartial && isLeafSegment)\n ) {\n // We only have partial data from this segment. Like missing segments, we\n // must request the full data from the server.\n return spawnPendingTask(\n routerState,\n prefetchData,\n possiblyPartialPrefetchHead,\n isPrefetchHeadPartial,\n segmentPath,\n scrollableSegmentsResult\n )\n }\n\n // The prefetched segment is fully static, so we don't need to request a new\n // one from the server. Keep traversing down the tree until we reach something\n // that requires a dynamic request.\n const prefetchDataChildren = prefetchData[2]\n const taskChildren = new Map()\n const cacheNodeChildren = new Map()\n let dynamicRequestTreeChildren: {\n [parallelRouteKey: string]: FlightRouterState\n } = {}\n let needsDynamicRequest = false\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath)\n } else {\n for (let parallelRouteKey in routerStateChildren) {\n const routerStateChild: FlightRouterState =\n routerStateChildren[parallelRouteKey]\n const prefetchDataChild: CacheNodeSeedData | void | null =\n prefetchDataChildren !== null\n ? prefetchDataChildren[parallelRouteKey]\n : null\n const segmentChild = routerStateChild[0]\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild,\n ])\n const segmentKeyChild = createRouterCacheKey(segmentChild)\n const taskChild = createCacheNodeOnNavigation(\n routerStateChild,\n prefetchDataChild,\n possiblyPartialPrefetchHead,\n isPrefetchHeadPartial,\n segmentPathChild,\n scrollableSegmentsResult\n )\n taskChildren.set(parallelRouteKey, taskChild)\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = routerStateChild\n }\n const newCacheNodeChild = taskChild.node\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild: ChildSegmentMap = new Map()\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild)\n cacheNodeChildren.set(parallelRouteKey, newSegmentMapChild)\n }\n }\n }\n\n const rsc = prefetchData[1]\n const loading = prefetchData[3]\n return {\n // Since we're inside a new route tree, unlike the\n // `updateCacheNodeOnNavigation` path, the router state on the children\n // tasks is always the same as the router state we pass in. So we don't need\n // to clone/modify it.\n route: routerState,\n node: {\n lazyData: null,\n // Since this is a fully static segment, we don't need to use the\n // `prefetchRsc` field.\n rsc,\n prefetchRsc: null,\n head: isLeafSegment ? possiblyPartialPrefetchHead : null,\n prefetchHead: null,\n loading,\n parallelRoutes: cacheNodeChildren,\n },\n dynamicRequestTree: needsDynamicRequest\n ? patchRouterStateWithNewChildren(routerState, dynamicRequestTreeChildren)\n : null,\n children: taskChildren,\n }\n}\n\nfunction patchRouterStateWithNewChildren(\n baseRouterState: FlightRouterState,\n newChildren: { [parallelRouteKey: string]: FlightRouterState }\n): FlightRouterState {\n const clone: FlightRouterState = [baseRouterState[0], newChildren]\n // Based on equivalent logic in apply-router-state-patch-to-tree, but should\n // confirm whether we need to copy all of these fields. Not sure the server\n // ever sends, e.g. the refetch marker.\n if (2 in baseRouterState) {\n clone[2] = baseRouterState[2]\n }\n if (3 in baseRouterState) {\n clone[3] = baseRouterState[3]\n }\n if (4 in baseRouterState) {\n clone[4] = baseRouterState[4]\n }\n return clone\n}\n\nfunction spawnPendingTask(\n routerState: FlightRouterState,\n prefetchData: CacheNodeSeedData | null,\n prefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n segmentPath: FlightSegmentPath,\n scrollableSegmentsResult: Array\n): SPANavigationTask {\n // Create a task that will later be fulfilled by data from the server.\n\n // Clone the prefetched route tree and the `refetch` marker to it. We'll send\n // this to the server so it knows where to start rendering.\n const dynamicRequestTree = patchRouterStateWithNewChildren(\n routerState,\n routerState[1]\n )\n dynamicRequestTree[3] = 'refetch'\n\n const newTask: Task = {\n route: routerState,\n\n // Corresponds to the part of the route that will be rendered on the server.\n node: createPendingCacheNode(\n routerState,\n prefetchData,\n prefetchHead,\n isPrefetchHeadPartial,\n segmentPath,\n scrollableSegmentsResult\n ),\n // Because this is non-null, and it gets propagated up through the parent\n // tasks, the root task will know that it needs to perform a server request.\n dynamicRequestTree,\n children: null,\n }\n return newTask\n}\n\nfunction spawnReusedTask(reusedRouterState: FlightRouterState): Task {\n // Create a task that reuses an existing segment, e.g. when reusing\n // the current active segment in place of a default route.\n return {\n route: reusedRouterState,\n node: null,\n dynamicRequestTree: null,\n children: null,\n }\n}\n\n// Writes a dynamic server response into the tree created by\n// updateCacheNodeOnNavigation. All pending promises that were spawned by the\n// navigation will be resolved, either with dynamic data from the server, or\n// `null` to indicate that the data is missing.\n//\n// A `null` value will trigger a lazy fetch during render, which will then patch\n// up the tree using the same mechanism as the non-PPR implementation\n// (serverPatchReducer).\n//\n// Usually, the server will respond with exactly the subset of data that we're\n// waiting for — everything below the nearest shared layout. But technically,\n// the server can return anything it wants.\n//\n// This does _not_ create a new tree; it modifies the existing one in place.\n// Which means it must follow the Suspense rules of cache safety.\nexport function listenForDynamicRequest(\n task: SPANavigationTask,\n responsePromise: Promise\n) {\n responsePromise.then(\n ({ flightData }: FetchServerResponseResult) => {\n if (typeof flightData === 'string') {\n // Happens when navigating to page in `pages` from `app`. We shouldn't\n // get here because should have already handled this during\n // the prefetch.\n return\n }\n for (const normalizedFlightData of flightData) {\n const {\n segmentPath,\n tree: serverRouterState,\n seedData: dynamicData,\n head: dynamicHead,\n } = normalizedFlightData\n\n if (!dynamicData) {\n // This shouldn't happen. PPR should always send back a response.\n // However, `FlightDataPath` is a shared type and the pre-PPR handling of\n // this might return null.\n continue\n }\n\n writeDynamicDataIntoPendingTask(\n task,\n segmentPath,\n serverRouterState,\n dynamicData,\n dynamicHead\n )\n }\n\n // Now that we've exhausted all the data we received from the server, if\n // there are any remaining pending tasks in the tree, abort them now.\n // If there's any missing data, it will trigger a lazy fetch.\n abortTask(task, null)\n },\n (error: any) => {\n // This will trigger an error during render\n abortTask(task, error)\n }\n )\n}\n\nfunction writeDynamicDataIntoPendingTask(\n rootTask: SPANavigationTask,\n segmentPath: FlightSegmentPath,\n serverRouterState: FlightRouterState,\n dynamicData: CacheNodeSeedData,\n dynamicHead: HeadData\n) {\n // The data sent by the server represents only a subtree of the app. We need\n // to find the part of the task tree that matches the server response, and\n // fulfill it using the dynamic data.\n //\n // segmentPath represents the parent path of subtree. It's a repeating pattern\n // of parallel route key and segment:\n //\n // [string, Segment, string, Segment, string, Segment, ...]\n //\n // Iterate through the path and finish any tasks that match this payload.\n let task = rootTask\n for (let i = 0; i < segmentPath.length; i += 2) {\n const parallelRouteKey: string = segmentPath[i]\n const segment: Segment = segmentPath[i + 1]\n const taskChildren = task.children\n if (taskChildren !== null) {\n const taskChild = taskChildren.get(parallelRouteKey)\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0]\n if (matchSegment(segment, taskSegment)) {\n // Found a match for this task. Keep traversing down the task tree.\n task = taskChild\n continue\n }\n }\n }\n // We didn't find a child task that matches the server data. Exit. We won't\n // abort the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n return\n }\n\n finishTaskUsingDynamicDataPayload(\n task,\n serverRouterState,\n dynamicData,\n dynamicHead\n )\n}\n\nfunction finishTaskUsingDynamicDataPayload(\n task: SPANavigationTask,\n serverRouterState: FlightRouterState,\n dynamicData: CacheNodeSeedData,\n dynamicHead: HeadData\n) {\n if (task.dynamicRequestTree === null) {\n // Everything in this subtree is already complete. Bail out.\n return\n }\n\n // dynamicData may represent a larger subtree than the task. Before we can\n // finish the task, we need to line them up.\n const taskChildren = task.children\n const taskNode = task.node\n if (taskChildren === null) {\n // We've reached the leaf node of the pending task. The server data tree\n // lines up the pending Cache Node tree. We can now switch to the\n // normal algorithm.\n if (taskNode !== null) {\n finishPendingCacheNode(\n taskNode,\n task.route,\n serverRouterState,\n dynamicData,\n dynamicHead\n )\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null\n }\n return\n }\n // The server returned more data than we need to finish the task. Skip over\n // the extra segments until we reach the leaf task node.\n const serverChildren = serverRouterState[1]\n const dynamicDataChildren = dynamicData[2]\n\n for (const parallelRouteKey in serverRouterState) {\n const serverRouterStateChild: FlightRouterState =\n serverChildren[parallelRouteKey]\n const dynamicDataChild: CacheNodeSeedData | null | void =\n dynamicDataChildren[parallelRouteKey]\n\n const taskChild = taskChildren.get(parallelRouteKey)\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0]\n if (\n matchSegment(serverRouterStateChild[0], taskSegment) &&\n dynamicDataChild !== null &&\n dynamicDataChild !== undefined\n ) {\n // Found a match for this task. Keep traversing down the task tree.\n return finishTaskUsingDynamicDataPayload(\n taskChild,\n serverRouterStateChild,\n dynamicDataChild,\n dynamicHead\n )\n }\n }\n // We didn't find a child task that matches the server data. We won't abort\n // the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n }\n}\n\nfunction createPendingCacheNode(\n routerState: FlightRouterState,\n prefetchData: CacheNodeSeedData | null,\n prefetchHead: HeadData | null,\n isPrefetchHeadPartial: boolean,\n segmentPath: FlightSegmentPath,\n scrollableSegmentsResult: Array\n): ReadyCacheNode {\n const routerStateChildren = routerState[1]\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null\n\n const parallelRoutes = new Map()\n for (let parallelRouteKey in routerStateChildren) {\n const routerStateChild: FlightRouterState =\n routerStateChildren[parallelRouteKey]\n const prefetchDataChild: CacheNodeSeedData | null | void =\n prefetchDataChildren !== null\n ? prefetchDataChildren[parallelRouteKey]\n : null\n\n const segmentChild = routerStateChild[0]\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild,\n ])\n const segmentKeyChild = createRouterCacheKey(segmentChild)\n\n const newCacheNodeChild = createPendingCacheNode(\n routerStateChild,\n prefetchDataChild === undefined ? null : prefetchDataChild,\n prefetchHead,\n isPrefetchHeadPartial,\n segmentPathChild,\n scrollableSegmentsResult\n )\n\n const newSegmentMapChild: ChildSegmentMap = new Map()\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild)\n parallelRoutes.set(parallelRouteKey, newSegmentMapChild)\n }\n\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const isLeafSegment = parallelRoutes.size === 0\n\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath)\n }\n\n const maybePrefetchRsc = prefetchData !== null ? prefetchData[1] : null\n const maybePrefetchLoading = prefetchData !== null ? prefetchData[3] : null\n return {\n lazyData: null,\n parallelRoutes: parallelRoutes,\n\n prefetchRsc: maybePrefetchRsc !== undefined ? maybePrefetchRsc : null,\n prefetchHead: isLeafSegment ? prefetchHead : [null, null],\n\n // TODO: Technically, a loading boundary could contain dynamic data. We must\n // have separate `loading` and `prefetchLoading` fields to handle this, like\n // we do for the segment data and head.\n loading: maybePrefetchLoading !== undefined ? maybePrefetchLoading : null,\n\n // Create a deferred promise. This will be fulfilled once the dynamic\n // response is received from the server.\n rsc: createDeferredRsc() as React.ReactNode,\n head: isLeafSegment ? (createDeferredRsc() as React.ReactNode) : null,\n }\n}\n\nfunction finishPendingCacheNode(\n cacheNode: CacheNode,\n taskState: FlightRouterState,\n serverState: FlightRouterState,\n dynamicData: CacheNodeSeedData,\n dynamicHead: HeadData\n): void {\n // Writes a dynamic response into an existing Cache Node tree. This does _not_\n // create a new tree, it updates the existing tree in-place. So it must follow\n // the Suspense rules of cache safety — it can resolve pending promises, but\n // it cannot overwrite existing data. It can add segments to the tree (because\n // a missing segment will cause the layout router to suspend).\n // but it cannot delete them.\n //\n // We must resolve every promise in the tree, or else it will suspend\n // indefinitely. If we did not receive data for a segment, we will resolve its\n // data promise to `null` to trigger a lazy fetch during render.\n const taskStateChildren = taskState[1]\n const serverStateChildren = serverState[1]\n const dataChildren = dynamicData[2]\n\n // The router state that we traverse the tree with (taskState) is the same one\n // that we used to construct the pending Cache Node tree. That way we're sure\n // to resolve all the pending promises.\n const parallelRoutes = cacheNode.parallelRoutes\n for (let parallelRouteKey in taskStateChildren) {\n const taskStateChild: FlightRouterState =\n taskStateChildren[parallelRouteKey]\n const serverStateChild: FlightRouterState | void =\n serverStateChildren[parallelRouteKey]\n const dataChild: CacheNodeSeedData | null | void =\n dataChildren[parallelRouteKey]\n\n const segmentMapChild = parallelRoutes.get(parallelRouteKey)\n const taskSegmentChild = taskStateChild[0]\n const taskSegmentKeyChild = createRouterCacheKey(taskSegmentChild)\n\n const cacheNodeChild =\n segmentMapChild !== undefined\n ? segmentMapChild.get(taskSegmentKeyChild)\n : undefined\n\n if (cacheNodeChild !== undefined) {\n if (\n serverStateChild !== undefined &&\n matchSegment(taskSegmentChild, serverStateChild[0])\n ) {\n if (dataChild !== undefined && dataChild !== null) {\n // This is the happy path. Recursively update all the children.\n finishPendingCacheNode(\n cacheNodeChild,\n taskStateChild,\n serverStateChild,\n dataChild,\n dynamicHead\n )\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render. This shouldn't happen because the Route Tree\n // and the Seed Data tree sent by the server should always be the same\n // shape when part of the same server response.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null)\n }\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null)\n }\n } else {\n // The server response matches what was expected to receive, but there's\n // no matching Cache Node in the task tree. This is a bug in the\n // implementation because we should have created a node for every\n // segment in the tree that's associated with this task.\n }\n }\n\n // Use the dynamic data from the server to fulfill the deferred RSC promise\n // on the Cache Node.\n const rsc = cacheNode.rsc\n const dynamicSegmentData = dynamicData[1]\n if (rsc === null) {\n // This is a lazy cache node. We can overwrite it. This is only safe\n // because we know that the LayoutRouter suspends if `rsc` is `null`.\n cacheNode.rsc = dynamicSegmentData\n } else if (isDeferredRsc(rsc)) {\n // This is a deferred RSC promise. We can fulfill it with the data we just\n // received from the server. If it was already resolved by a different\n // navigation, then this does nothing because we can't overwrite data.\n rsc.resolve(dynamicSegmentData)\n } else {\n // This is not a deferred RSC promise, nor is it empty, so it must have\n // been populated by a different navigation. We must not overwrite it.\n }\n\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved with the dynamic head from\n // the server.\n const head = cacheNode.head\n if (isDeferredRsc(head)) {\n head.resolve(dynamicHead)\n }\n}\n\nexport function abortTask(task: SPANavigationTask, error: any): void {\n const cacheNode = task.node\n if (cacheNode === null) {\n // This indicates the task is already complete.\n return\n }\n\n const taskChildren = task.children\n if (taskChildren === null) {\n // Reached the leaf task node. This is the root of a pending cache\n // node tree.\n abortPendingCacheNode(task.route, cacheNode, error)\n } else {\n // This is an intermediate task node. Keep traversing until we reach a\n // task node with no children. That will be the root of the cache node tree\n // that needs to be resolved.\n for (const taskChild of taskChildren.values()) {\n abortTask(taskChild, error)\n }\n }\n\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null\n}\n\nfunction abortPendingCacheNode(\n routerState: FlightRouterState,\n cacheNode: CacheNode,\n error: any\n): void {\n // For every pending segment in the tree, resolve its `rsc` promise to `null`\n // to trigger a lazy fetch during render.\n //\n // Or, if an error object is provided, it will error instead.\n const routerStateChildren = routerState[1]\n const parallelRoutes = cacheNode.parallelRoutes\n for (let parallelRouteKey in routerStateChildren) {\n const routerStateChild: FlightRouterState =\n routerStateChildren[parallelRouteKey]\n const segmentMapChild = parallelRoutes.get(parallelRouteKey)\n if (segmentMapChild === undefined) {\n // This shouldn't happen because we're traversing the same tree that was\n // used to construct the cache nodes in the first place.\n continue\n }\n const segmentChild = routerStateChild[0]\n const segmentKeyChild = createRouterCacheKey(segmentChild)\n const cacheNodeChild = segmentMapChild.get(segmentKeyChild)\n if (cacheNodeChild !== undefined) {\n abortPendingCacheNode(routerStateChild, cacheNodeChild, error)\n } else {\n // This shouldn't happen because we're traversing the same tree that was\n // used to construct the cache nodes in the first place.\n }\n }\n const rsc = cacheNode.rsc\n if (isDeferredRsc(rsc)) {\n if (error === null) {\n // This will trigger a lazy fetch during render.\n rsc.resolve(null)\n } else {\n // This will trigger an error during rendering.\n rsc.reject(error)\n }\n }\n\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved. If an error was provided, we\n // will not resolve it with an error, since this is rendered at the root of\n // the app. We want the segment to error, not the entire app.\n const head = cacheNode.head\n if (isDeferredRsc(head)) {\n head.resolve(null)\n }\n}\n\nexport function updateCacheNodeOnPopstateRestoration(\n oldCacheNode: CacheNode,\n routerState: FlightRouterState\n): ReadyCacheNode {\n // A popstate navigation reads data from the local cache. It does not issue\n // new network requests (unless the cache entries have been evicted). So, we\n // update the cache to drop the prefetch data for any segment whose dynamic\n // data was already received. This prevents an unnecessary flash back to PPR\n // state during a back/forward navigation.\n //\n // This function clones the entire cache node tree and sets the `prefetchRsc`\n // field to `null` to prevent it from being rendered. We can't mutate the node\n // in place because this is a concurrent data structure.\n\n const routerStateChildren = routerState[1]\n const oldParallelRoutes = oldCacheNode.parallelRoutes\n const newParallelRoutes = new Map(oldParallelRoutes)\n for (let parallelRouteKey in routerStateChildren) {\n const routerStateChild: FlightRouterState =\n routerStateChildren[parallelRouteKey]\n const segmentChild = routerStateChild[0]\n const segmentKeyChild = createRouterCacheKey(segmentChild)\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey)\n if (oldSegmentMapChild !== undefined) {\n const oldCacheNodeChild = oldSegmentMapChild.get(segmentKeyChild)\n if (oldCacheNodeChild !== undefined) {\n const newCacheNodeChild = updateCacheNodeOnPopstateRestoration(\n oldCacheNodeChild,\n routerStateChild\n )\n const newSegmentMapChild = new Map(oldSegmentMapChild)\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild)\n newParallelRoutes.set(parallelRouteKey, newSegmentMapChild)\n }\n }\n }\n\n // Only show prefetched data if the dynamic data is still pending.\n //\n // Tehnically, what we're actually checking is whether the dynamic network\n // response was received. But since it's a streaming response, this does not\n // mean that all the dynamic data has fully streamed in. It just means that\n // _some_ of the dynamic data was received. But as a heuristic, we assume that\n // the rest dynamic data will stream in quickly, so it's still better to skip\n // the prefetch state.\n const rsc = oldCacheNode.rsc\n const shouldUsePrefetch = isDeferredRsc(rsc) && rsc.status === 'pending'\n\n return {\n lazyData: null,\n rsc,\n head: oldCacheNode.head,\n\n prefetchHead: shouldUsePrefetch ? oldCacheNode.prefetchHead : [null, null],\n prefetchRsc: shouldUsePrefetch ? oldCacheNode.prefetchRsc : null,\n loading: oldCacheNode.loading,\n\n // These are the cloned children we computed above\n parallelRoutes: newParallelRoutes,\n }\n}\n\nconst DEFERRED = Symbol()\n\ntype PendingDeferredRsc = Promise & {\n status: 'pending'\n resolve: (value: React.ReactNode) => void\n reject: (error: any) => void\n tag: Symbol\n}\n\ntype FulfilledDeferredRsc = Promise & {\n status: 'fulfilled'\n value: React.ReactNode\n resolve: (value: React.ReactNode) => void\n reject: (error: any) => void\n tag: Symbol\n}\n\ntype RejectedDeferredRsc = Promise & {\n status: 'rejected'\n reason: any\n resolve: (value: React.ReactNode) => void\n reject: (error: any) => void\n tag: Symbol\n}\n\ntype DeferredRsc =\n | PendingDeferredRsc\n | FulfilledDeferredRsc\n | RejectedDeferredRsc\n\n// This type exists to distinguish a DeferredRsc from a Flight promise. It's a\n// compromise to avoid adding an extra field on every Cache Node, which would be\n// awkward because the pre-PPR parts of codebase would need to account for it,\n// too. We can remove it once type Cache Node type is more settled.\nfunction isDeferredRsc(value: any): value is DeferredRsc {\n return value && value.tag === DEFERRED\n}\n\nfunction createDeferredRsc(): PendingDeferredRsc {\n let resolve: any\n let reject: any\n const pendingRsc = new Promise((res, rej) => {\n resolve = res\n reject = rej\n }) as PendingDeferredRsc\n pendingRsc.status = 'pending'\n pendingRsc.resolve = (value: React.ReactNode) => {\n if (pendingRsc.status === 'pending') {\n const fulfilledRsc: FulfilledDeferredRsc = pendingRsc as any\n fulfilledRsc.status = 'fulfilled'\n fulfilledRsc.value = value\n resolve(value)\n }\n }\n pendingRsc.reject = (error: any) => {\n if (pendingRsc.status === 'pending') {\n const rejectedRsc: RejectedDeferredRsc = pendingRsc as any\n rejectedRsc.status = 'rejected'\n rejectedRsc.reason = error\n reject(error)\n }\n }\n pendingRsc.tag = DEFERRED\n return pendingRsc\n}\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n\n if (WINDOW.document) {\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n }\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { fetchServerResponse } from '../fetch-server-response'\nimport { createHrefFromUrl } from '../create-href-from-url'\nimport { applyRouterStatePatchToTree } from '../apply-router-state-patch-to-tree'\nimport { isNavigatingToNewRootLayout } from '../is-navigating-to-new-root-layout'\nimport type {\n Mutable,\n ReadonlyReducerState,\n ReducerState,\n RefreshAction,\n} from '../router-reducer-types'\nimport { handleExternalUrl } from './navigate-reducer'\nimport { handleMutable } from '../handle-mutable'\nimport type { CacheNode } from '../../../../shared/lib/app-router-context.shared-runtime'\nimport { fillLazyItemsTillLeafWithHead } from '../fill-lazy-items-till-leaf-with-head'\nimport { createEmptyCacheNode } from '../../app-router'\nimport { handleSegmentMismatch } from '../handle-segment-mismatch'\nimport { hasInterceptionRouteInCurrentTree } from './has-interception-route-in-current-tree'\nimport { refreshInactiveParallelSegments } from '../refetch-inactive-parallel-segments'\nimport { revalidateEntireCache } from '../../segment-cache'\n\nexport function refreshReducer(\n state: ReadonlyReducerState,\n action: RefreshAction\n): ReducerState {\n const { origin } = action\n const mutable: Mutable = {}\n const href = state.canonicalUrl\n\n let currentTree = state.tree\n\n mutable.preserveCustomHistoryState = false\n\n const cache: CacheNode = createEmptyCacheNode()\n\n // If the current tree was intercepted, the nextUrl should be included in the request.\n // This is to ensure that the refresh request doesn't get intercepted, accidentally triggering the interception route.\n const includeNextUrl = hasInterceptionRouteInCurrentTree(state.tree)\n\n // TODO-APP: verify that `href` is not an external url.\n // Fetch data from the root of the tree.\n cache.lazyData = fetchServerResponse(new URL(href, origin), {\n flightRouterState: [\n currentTree[0],\n currentTree[1],\n currentTree[2],\n 'refetch',\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null,\n })\n\n return cache.lazyData.then(\n async ({ flightData, canonicalUrl: canonicalUrlOverride }) => {\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return handleExternalUrl(\n state,\n mutable,\n flightData,\n state.pushRef.pendingPush\n )\n }\n\n // Remove cache.lazyData as it has been resolved at this point.\n cache.lazyData = null\n\n for (const normalizedFlightData of flightData) {\n const {\n tree: treePatch,\n seedData: cacheNodeSeedData,\n head,\n isRootRender,\n } = normalizedFlightData\n\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('REFRESH FAILED')\n return state\n }\n\n const newTree = applyRouterStatePatchToTree(\n // TODO-APP: remove ''\n [''],\n currentTree,\n treePatch,\n state.canonicalUrl\n )\n\n if (newTree === null) {\n return handleSegmentMismatch(state, action, treePatch)\n }\n\n if (isNavigatingToNewRootLayout(currentTree, newTree)) {\n return handleExternalUrl(\n state,\n mutable,\n href,\n state.pushRef.pendingPush\n )\n }\n\n const canonicalUrlOverrideHref = canonicalUrlOverride\n ? createHrefFromUrl(canonicalUrlOverride)\n : undefined\n\n if (canonicalUrlOverride) {\n mutable.canonicalUrl = canonicalUrlOverrideHref\n }\n\n // Handles case where prefetch only returns the router tree patch without rendered components.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1]\n const loading = cacheNodeSeedData[3]\n cache.rsc = rsc\n cache.prefetchRsc = null\n cache.loading = loading\n fillLazyItemsTillLeafWithHead(\n cache,\n // Existing cache is not passed in as `router.refresh()` has to invalidate the entire cache.\n undefined,\n treePatch,\n cacheNodeSeedData,\n head,\n undefined\n )\n if (process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n revalidateEntireCache(state.nextUrl, newTree)\n } else {\n mutable.prefetchCache = new Map()\n }\n }\n\n await refreshInactiveParallelSegments({\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl,\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl,\n })\n\n mutable.cache = cache\n mutable.patchedTree = newTree\n\n currentTree = newTree\n }\n\n return handleMutable(state, mutable)\n },\n () => state\n )\n}\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","'use client'\n\nimport React, {\n use,\n useEffect,\n useMemo,\n useCallback,\n startTransition,\n useInsertionEffect,\n useDeferredValue,\n} from 'react'\nimport {\n AppRouterContext,\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport type {\n CacheNode,\n AppRouterInstance,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport {\n ACTION_HMR_REFRESH,\n ACTION_NAVIGATE,\n ACTION_PREFETCH,\n ACTION_REFRESH,\n ACTION_RESTORE,\n ACTION_SERVER_PATCH,\n PrefetchKind,\n} from './router-reducer/router-reducer-types'\nimport type {\n AppRouterState,\n ReducerActions,\n RouterChangeByServerResponse,\n RouterNavigate,\n} from './router-reducer/router-reducer-types'\nimport { createHrefFromUrl } from './router-reducer/create-href-from-url'\nimport {\n SearchParamsContext,\n PathnameContext,\n PathParamsContext,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { useReducer, useUnwrapState } from './use-reducer'\nimport {\n default as DefaultGlobalError,\n ErrorBoundary,\n type GlobalErrorComponent,\n} from './error-boundary'\nimport { isBot } from '../../shared/lib/router/utils/is-bot'\nimport { addBasePath } from '../add-base-path'\nimport { AppRouterAnnouncer } from './app-router-announcer'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { findHeadInCache } from './router-reducer/reducers/find-head-in-cache'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { removeBasePath } from '../remove-base-path'\nimport { hasBasePath } from '../has-base-path'\nimport { getSelectedParams } from './router-reducer/compute-changed-path'\nimport type { FlightRouterState } from '../../server/app-render/types'\nimport { useNavFailureHandler } from './nav-failure-handler'\nimport { useServerActionDispatcher } from '../app-call-server'\nimport type { AppRouterActionQueue } from '../../shared/lib/router/action-queue'\nimport { prefetch as prefetchWithSegmentCache } from './segment-cache'\nimport { getRedirectTypeFromError, getURLFromRedirectError } from './redirect'\nimport { isRedirectError, RedirectType } from './redirect-error'\nimport { prefetchReducer } from './router-reducer/reducers/prefetch-reducer'\nimport { pingVisibleLinks } from './links'\n\nconst globalMutable: {\n pendingMpaPath?: string\n} = {}\n\nfunction isExternalURL(url: URL) {\n return url.origin !== window.location.origin\n}\n\n/**\n * Given a link href, constructs the URL that should be prefetched. Returns null\n * in cases where prefetching should be disabled, like external URLs, or\n * during development.\n * @param href The href passed to , router.prefetch(), or similar\n * @returns A URL object to prefetch, or null if prefetching should be disabled\n */\nexport function createPrefetchURL(href: string): URL | null {\n // Don't prefetch for bots as they don't navigate.\n if (isBot(window.navigator.userAgent)) {\n return null\n }\n\n let url: URL\n try {\n url = new URL(addBasePath(href), window.location.href)\n } catch (_) {\n // TODO: Does this need to throw or can we just console.error instead? Does\n // anyone rely on this throwing? (Seems unlikely.)\n throw new Error(\n `Cannot prefetch '${href}' because it cannot be converted to a URL.`\n )\n }\n\n // Don't prefetch during development (improves compilation performance)\n if (process.env.NODE_ENV === 'development') {\n return null\n }\n\n // External urls can't be prefetched in the same way.\n if (isExternalURL(url)) {\n return null\n }\n\n return url\n}\n\nfunction HistoryUpdater({\n appRouterState,\n}: {\n appRouterState: AppRouterState\n}) {\n useInsertionEffect(() => {\n if (process.env.__NEXT_APP_NAV_FAIL_HANDLING) {\n // clear pending URL as navigation is no longer\n // in flight\n window.next.__pendingUrl = undefined\n }\n\n const { tree, pushRef, canonicalUrl } = appRouterState\n const historyState = {\n ...(pushRef.preserveCustomHistoryState ? window.history.state : {}),\n // Identifier is shortened intentionally.\n // __NA is used to identify if the history entry can be handled by the app-router.\n // __N is used to identify if the history entry can be handled by the old router.\n __NA: true,\n __PRIVATE_NEXTJS_INTERNALS_TREE: tree,\n }\n if (\n pushRef.pendingPush &&\n // Skip pushing an additional history entry if the canonicalUrl is the same as the current url.\n // This mirrors the browser behavior for normal navigation.\n createHrefFromUrl(new URL(window.location.href)) !== canonicalUrl\n ) {\n // This intentionally mutates React state, pushRef is overwritten to ensure additional push/replace calls do not trigger an additional history entry.\n pushRef.pendingPush = false\n window.history.pushState(historyState, '', canonicalUrl)\n } else {\n window.history.replaceState(historyState, '', canonicalUrl)\n }\n }, [appRouterState])\n\n useEffect(() => {\n // The Next-Url and the base tree may affect the result of a prefetch\n // task. Re-prefetch all visible links with the updated values. In most\n // cases, this will not result in any new network requests, only if\n // the prefetch result actually varies on one of these inputs.\n if (process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n pingVisibleLinks(appRouterState.nextUrl, appRouterState.tree)\n }\n }, [appRouterState.nextUrl, appRouterState.tree])\n\n return null\n}\n\nexport function createEmptyCacheNode(): CacheNode {\n return {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n }\n}\n\n/**\n * Server response that only patches the cache and tree.\n */\nfunction useChangeByServerResponse(\n dispatch: React.Dispatch\n): RouterChangeByServerResponse {\n return useCallback(\n ({ previousTree, serverResponse }) => {\n startTransition(() => {\n dispatch({\n type: ACTION_SERVER_PATCH,\n previousTree,\n serverResponse,\n })\n })\n },\n [dispatch]\n )\n}\n\nfunction useNavigate(dispatch: React.Dispatch): RouterNavigate {\n return useCallback(\n (href, navigateType, shouldScroll) => {\n const url = new URL(addBasePath(href), location.href)\n\n if (process.env.__NEXT_APP_NAV_FAIL_HANDLING) {\n window.next.__pendingUrl = url\n }\n\n return dispatch({\n type: ACTION_NAVIGATE,\n url,\n isExternalUrl: isExternalURL(url),\n locationSearch: location.search,\n shouldScroll: shouldScroll ?? true,\n navigateType,\n allowAliasing: true,\n })\n },\n [dispatch]\n )\n}\n\nfunction copyNextJsInternalHistoryState(data: any) {\n if (data == null) data = {}\n const currentState = window.history.state\n const __NA = currentState?.__NA\n if (__NA) {\n data.__NA = __NA\n }\n const __PRIVATE_NEXTJS_INTERNALS_TREE =\n currentState?.__PRIVATE_NEXTJS_INTERNALS_TREE\n if (__PRIVATE_NEXTJS_INTERNALS_TREE) {\n data.__PRIVATE_NEXTJS_INTERNALS_TREE = __PRIVATE_NEXTJS_INTERNALS_TREE\n }\n\n return data\n}\n\nfunction Head({\n headCacheNode,\n}: {\n headCacheNode: CacheNode | null\n}): React.ReactNode {\n // If this segment has a `prefetchHead`, it's the statically prefetched data.\n // We should use that on initial render instead of `head`. Then we'll switch\n // to `head` when the dynamic response streams in.\n const head = headCacheNode !== null ? headCacheNode.head : null\n const prefetchHead =\n headCacheNode !== null ? headCacheNode.prefetchHead : null\n\n // If no prefetch data is available, then we go straight to rendering `head`.\n const resolvedPrefetchRsc = prefetchHead !== null ? prefetchHead : head\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n return useDeferredValue(head, resolvedPrefetchRsc)\n}\n\n/**\n * The global router that wraps the application components.\n */\nfunction Router({\n actionQueue,\n assetPrefix,\n globalError,\n}: {\n actionQueue: AppRouterActionQueue\n assetPrefix: string\n globalError: [GlobalErrorComponent, React.ReactNode]\n}) {\n const [state, dispatch] = useReducer(actionQueue)\n const { canonicalUrl } = useUnwrapState(state)\n // Add memoized pathname/query for useSearchParams and usePathname.\n const { searchParams, pathname } = useMemo(() => {\n const url = new URL(\n canonicalUrl,\n typeof window === 'undefined' ? 'http://n' : window.location.href\n )\n\n return {\n // This is turned into a readonly class in `useSearchParams`\n searchParams: url.searchParams,\n pathname: hasBasePath(url.pathname)\n ? removeBasePath(url.pathname)\n : url.pathname,\n }\n }, [canonicalUrl])\n\n const changeByServerResponse = useChangeByServerResponse(dispatch)\n const navigate = useNavigate(dispatch)\n useServerActionDispatcher(dispatch)\n\n /**\n * The app router that is exposed through `useRouter`. It's only concerned with dispatching actions to the reducer, does not hold state.\n */\n const appRouter = useMemo(() => {\n const routerInstance: AppRouterInstance = {\n back: () => window.history.back(),\n forward: () => window.history.forward(),\n prefetch: process.env.__NEXT_CLIENT_SEGMENT_CACHE\n ? // Unlike the old implementation, the Segment Cache doesn't store its\n // data in the router reducer state; it writes into a global mutable\n // cache. So we don't need to dispatch an action.\n (href, options) =>\n prefetchWithSegmentCache(\n href,\n actionQueue.state.nextUrl,\n actionQueue.state.tree,\n options?.kind === PrefetchKind.FULL\n )\n : (href, options) => {\n // Use the old prefetch implementation.\n const url = createPrefetchURL(href)\n if (url !== null) {\n // The prefetch reducer doesn't actually update any state or\n // trigger a rerender. It just writes to a mutable cache. So we\n // shouldn't bother calling setState/dispatch; we can just re-run\n // the reducer directly using the current state.\n // TODO: Refactor this away from a \"reducer\" so it's\n // less confusing.\n prefetchReducer(actionQueue.state, {\n type: ACTION_PREFETCH,\n url,\n kind: options?.kind ?? PrefetchKind.FULL,\n })\n }\n },\n replace: (href, options = {}) => {\n startTransition(() => {\n navigate(href, 'replace', options.scroll ?? true)\n })\n },\n push: (href, options = {}) => {\n startTransition(() => {\n navigate(href, 'push', options.scroll ?? true)\n })\n },\n refresh: () => {\n startTransition(() => {\n dispatch({\n type: ACTION_REFRESH,\n origin: window.location.origin,\n })\n })\n },\n hmrRefresh: () => {\n if (process.env.NODE_ENV !== 'development') {\n throw new Error(\n 'hmrRefresh can only be used in development mode. Please use refresh instead.'\n )\n } else {\n startTransition(() => {\n dispatch({\n type: ACTION_HMR_REFRESH,\n origin: window.location.origin,\n })\n })\n }\n },\n }\n\n return routerInstance\n }, [actionQueue, dispatch, navigate])\n\n useEffect(() => {\n // Exists for debugging purposes. Don't use in application code.\n if (window.next) {\n window.next.router = appRouter\n }\n }, [appRouter])\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { cache, prefetchCache, tree } = useUnwrapState(state)\n\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // Add `window.nd` for debugging purposes.\n // This is not meant for use in applications as concurrent rendering will affect the cache/tree/router.\n // @ts-ignore this is for debugging\n window.nd = {\n router: appRouter,\n cache,\n prefetchCache,\n tree,\n }\n }, [appRouter, cache, prefetchCache, tree])\n }\n\n useEffect(() => {\n // If the app is restored from bfcache, it's possible that\n // pushRef.mpaNavigation is true, which would mean that any re-render of this component\n // would trigger the mpa navigation logic again from the lines below.\n // This will restore the router to the initial state in the event that the app is restored from bfcache.\n function handlePageShow(event: PageTransitionEvent) {\n if (\n !event.persisted ||\n !window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE\n ) {\n return\n }\n\n // Clear the pendingMpaPath value so that a subsequent MPA navigation to the same URL can be triggered.\n // This is necessary because if the browser restored from bfcache, the pendingMpaPath would still be set to the value\n // of the last MPA navigation.\n globalMutable.pendingMpaPath = undefined\n\n dispatch({\n type: ACTION_RESTORE,\n url: new URL(window.location.href),\n tree: window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE,\n })\n }\n\n window.addEventListener('pageshow', handlePageShow)\n\n return () => {\n window.removeEventListener('pageshow', handlePageShow)\n }\n }, [dispatch])\n\n useEffect(() => {\n // Ensure that any redirect errors that bubble up outside of the RedirectBoundary\n // are caught and handled by the router.\n function handleUnhandledRedirect(\n event: ErrorEvent | PromiseRejectionEvent\n ) {\n const error = 'reason' in event ? event.reason : event.error\n if (isRedirectError(error)) {\n event.preventDefault()\n const url = getURLFromRedirectError(error)\n const redirectType = getRedirectTypeFromError(error)\n if (redirectType === RedirectType.push) {\n appRouter.push(url, {})\n } else {\n appRouter.replace(url, {})\n }\n }\n }\n window.addEventListener('error', handleUnhandledRedirect)\n window.addEventListener('unhandledrejection', handleUnhandledRedirect)\n\n return () => {\n window.removeEventListener('error', handleUnhandledRedirect)\n window.removeEventListener('unhandledrejection', handleUnhandledRedirect)\n }\n }, [appRouter])\n\n // When mpaNavigation flag is set do a hard navigation to the new url.\n // Infinitely suspend because we don't actually want to rerender any child\n // components with the new URL and any entangled state updates shouldn't\n // commit either (eg: useTransition isPending should stay true until the page\n // unloads).\n //\n // This is a side effect in render. Don't try this at home, kids. It's\n // probably safe because we know this is a singleton component and it's never\n // in . At least I hope so. (It will run twice in dev strict mode,\n // but that's... fine?)\n const { pushRef } = useUnwrapState(state)\n if (pushRef.mpaNavigation) {\n // if there's a re-render, we don't want to trigger another redirect if one is already in flight to the same URL\n if (globalMutable.pendingMpaPath !== canonicalUrl) {\n const location = window.location\n if (pushRef.pendingPush) {\n location.assign(canonicalUrl)\n } else {\n location.replace(canonicalUrl)\n }\n\n globalMutable.pendingMpaPath = canonicalUrl\n }\n // TODO-APP: Should we listen to navigateerror here to catch failed\n // navigations somehow? And should we call window.stop() if a SPA navigation\n // should interrupt an MPA one?\n use(unresolvedThenable)\n }\n\n useEffect(() => {\n const originalPushState = window.history.pushState.bind(window.history)\n const originalReplaceState = window.history.replaceState.bind(\n window.history\n )\n\n // Ensure the canonical URL in the Next.js Router is updated when the URL is changed so that `usePathname` and `useSearchParams` hold the pushed values.\n const applyUrlFromHistoryPushReplace = (\n url: string | URL | null | undefined\n ) => {\n const href = window.location.href\n const tree: FlightRouterState | undefined =\n window.history.state?.__PRIVATE_NEXTJS_INTERNALS_TREE\n\n startTransition(() => {\n dispatch({\n type: ACTION_RESTORE,\n url: new URL(url ?? href, href),\n tree,\n })\n })\n }\n\n /**\n * Patch pushState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */\n window.history.pushState = function pushState(\n data: any,\n _unused: string,\n url?: string | URL | null\n ): void {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if (data?.__NA || data?._N) {\n return originalPushState(data, _unused, url)\n }\n\n data = copyNextJsInternalHistoryState(data)\n\n if (url) {\n applyUrlFromHistoryPushReplace(url)\n }\n\n return originalPushState(data, _unused, url)\n }\n\n /**\n * Patch replaceState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */\n window.history.replaceState = function replaceState(\n data: any,\n _unused: string,\n url?: string | URL | null\n ): void {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if (data?.__NA || data?._N) {\n return originalReplaceState(data, _unused, url)\n }\n data = copyNextJsInternalHistoryState(data)\n\n if (url) {\n applyUrlFromHistoryPushReplace(url)\n }\n return originalReplaceState(data, _unused, url)\n }\n\n /**\n * Handle popstate event, this is used to handle back/forward in the browser.\n * By default dispatches ACTION_RESTORE, however if the history entry was not pushed/replaced by app-router it will reload the page.\n * That case can happen when the old router injected the history entry.\n */\n const onPopState = (event: PopStateEvent) => {\n if (!event.state) {\n // TODO-APP: this case only happens when pushState/replaceState was called outside of Next.js. It should probably reload the page in this case.\n return\n }\n\n // This case happens when the history entry was pushed by the `pages` router.\n if (!event.state.__NA) {\n window.location.reload()\n return\n }\n\n // TODO-APP: Ideally the back button should not use startTransition as it should apply the updates synchronously\n // Without startTransition works if the cache is there for this path\n startTransition(() => {\n dispatch({\n type: ACTION_RESTORE,\n url: new URL(window.location.href),\n tree: event.state.__PRIVATE_NEXTJS_INTERNALS_TREE,\n })\n })\n }\n\n // Register popstate event to call onPopstate.\n window.addEventListener('popstate', onPopState)\n return () => {\n window.history.pushState = originalPushState\n window.history.replaceState = originalReplaceState\n window.removeEventListener('popstate', onPopState)\n }\n }, [dispatch])\n\n const { cache, tree, nextUrl, focusAndScrollRef } = useUnwrapState(state)\n\n const matchingHead = useMemo(() => {\n return findHeadInCache(cache, tree[1])\n }, [cache, tree])\n\n // Add memoized pathParams for useParams.\n const pathParams = useMemo(() => {\n return getSelectedParams(tree)\n }, [tree])\n\n const layoutRouterContext = useMemo(() => {\n return {\n parentTree: tree,\n parentCacheNode: cache,\n parentSegmentPath: null,\n // Root node always has `url`\n // Provided in AppTreeContext to ensure it can be overwritten in layout-router\n url: canonicalUrl,\n }\n }, [tree, cache, canonicalUrl])\n\n const globalLayoutRouterContext = useMemo(() => {\n return {\n changeByServerResponse,\n tree,\n focusAndScrollRef,\n nextUrl,\n }\n }, [changeByServerResponse, tree, focusAndScrollRef, nextUrl])\n\n let head\n if (matchingHead !== null) {\n // The head is wrapped in an extra component so we can use\n // `useDeferredValue` to swap between the prefetched and final versions of\n // the head. (This is what LayoutRouter does for segment data, too.)\n //\n // The `key` is used to remount the component whenever the head moves to\n // a different segment.\n const [headCacheNode, headKey] = matchingHead\n head = \n } else {\n head = null\n }\n\n let content = (\n \n {head}\n {cache.rsc}\n \n \n )\n\n if (process.env.NODE_ENV !== 'production') {\n // In development, we apply few error boundaries and hot-reloader:\n // - DevRootHTTPAccessFallbackBoundary: avoid using navigation API like notFound() in root layout\n // - HotReloader:\n // - hot-reload the app when the code changes\n // - render dev overlay\n // - catch runtime errors and display global-error when necessary\n if (typeof window !== 'undefined') {\n const { DevRootHTTPAccessFallbackBoundary } =\n require('./dev-root-http-access-fallback-boundary') as typeof import('./dev-root-http-access-fallback-boundary')\n content = (\n \n {content}\n \n )\n }\n const HotReloader: typeof import('./react-dev-overlay/app/hot-reloader-client').default =\n require('./react-dev-overlay/app/hot-reloader-client').default\n\n content = (\n \n {content}\n \n )\n } else {\n // In production, we only apply the user-customized global error boundary.\n content = (\n \n {content}\n \n )\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n {content}\n \n \n \n \n \n \n \n )\n}\n\nexport default function AppRouter({\n actionQueue,\n globalErrorComponentAndStyles: [globalErrorComponent, globalErrorStyles],\n assetPrefix,\n}: {\n actionQueue: AppRouterActionQueue\n globalErrorComponentAndStyles: [GlobalErrorComponent, React.ReactNode]\n assetPrefix: string\n}) {\n useNavFailureHandler()\n\n return (\n \n \n \n )\n}\n\nconst runtimeStyles = new Set()\nlet runtimeStyleChanged = new Set<() => void>()\n\nglobalThis._N_E_STYLE_LOAD = function (href: string) {\n let len = runtimeStyles.size\n runtimeStyles.add(href)\n if (runtimeStyles.size !== len) {\n runtimeStyleChanged.forEach((cb) => cb())\n }\n // TODO figure out how to get a promise here\n // But maybe it's not necessary as react would block rendering until it's loaded\n return Promise.resolve()\n}\n\nfunction RuntimeStyles() {\n const [, forceUpdate] = React.useState(0)\n const renderedStylesSize = runtimeStyles.size\n useEffect(() => {\n const changed = () => forceUpdate((c) => c + 1)\n runtimeStyleChanged.add(changed)\n if (renderedStylesSize !== runtimeStyles.size) {\n changed()\n }\n return () => {\n runtimeStyleChanged.delete(changed)\n }\n }, [renderedStylesSize, forceUpdate])\n\n const dplId = process.env.NEXT_DEPLOYMENT_ID\n ? `?dpl=${process.env.NEXT_DEPLOYMENT_ID}`\n : ''\n return [...runtimeStyles].map((href, i) => (\n \n ))\n}\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","import type {\n FlightRouterState,\n FlightSegmentPath,\n} from '../../../server/app-render/types'\nimport { DEFAULT_SEGMENT_KEY } from '../../../shared/lib/segment'\nimport { getNextFlightSegmentPath } from '../../flight-data-helpers'\nimport { matchSegment } from '../match-segments'\nimport { addRefreshMarkerToActiveParallelSegments } from './refetch-inactive-parallel-segments'\n\n/**\n * Deep merge of the two router states. Parallel route keys are preserved if the patch doesn't have them.\n */\nfunction applyPatch(\n initialTree: FlightRouterState,\n patchTree: FlightRouterState\n): FlightRouterState {\n const [initialSegment, initialParallelRoutes] = initialTree\n const [patchSegment, patchParallelRoutes] = patchTree\n\n // if the applied patch segment is __DEFAULT__ then it can be ignored in favor of the initial tree\n // this is because the __DEFAULT__ segment is used as a placeholder on navigation\n if (\n patchSegment === DEFAULT_SEGMENT_KEY &&\n initialSegment !== DEFAULT_SEGMENT_KEY\n ) {\n return initialTree\n }\n\n if (matchSegment(initialSegment, patchSegment)) {\n const newParallelRoutes: FlightRouterState[1] = {}\n for (const key in initialParallelRoutes) {\n const isInPatchTreeParallelRoutes =\n typeof patchParallelRoutes[key] !== 'undefined'\n if (isInPatchTreeParallelRoutes) {\n newParallelRoutes[key] = applyPatch(\n initialParallelRoutes[key],\n patchParallelRoutes[key]\n )\n } else {\n newParallelRoutes[key] = initialParallelRoutes[key]\n }\n }\n\n for (const key in patchParallelRoutes) {\n if (newParallelRoutes[key]) {\n continue\n }\n\n newParallelRoutes[key] = patchParallelRoutes[key]\n }\n\n const tree: FlightRouterState = [initialSegment, newParallelRoutes]\n\n // Copy over the existing tree\n if (initialTree[2]) {\n tree[2] = initialTree[2]\n }\n\n if (initialTree[3]) {\n tree[3] = initialTree[3]\n }\n\n if (initialTree[4]) {\n tree[4] = initialTree[4]\n }\n\n return tree\n }\n\n return patchTree\n}\n\n/**\n * Apply the router state from the Flight response, but skip patching default segments.\n * Useful for patching the router cache when navigating, where we persist the existing default segment if there isn't a new one.\n * Creates a new router state tree.\n */\nexport function applyRouterStatePatchToTree(\n flightSegmentPath: FlightSegmentPath,\n flightRouterState: FlightRouterState,\n treePatch: FlightRouterState,\n path: string\n): FlightRouterState | null {\n const [segment, parallelRoutes, url, refetch, isRootLayout] =\n flightRouterState\n\n // Root refresh\n if (flightSegmentPath.length === 1) {\n const tree: FlightRouterState = applyPatch(flightRouterState, treePatch)\n\n addRefreshMarkerToActiveParallelSegments(tree, path)\n\n return tree\n }\n\n const [currentSegment, parallelRouteKey] = flightSegmentPath\n\n // Tree path returned from the server should always match up with the current tree in the browser\n if (!matchSegment(currentSegment, segment)) {\n return null\n }\n\n const lastSegment = flightSegmentPath.length === 2\n\n let parallelRoutePatch\n if (lastSegment) {\n parallelRoutePatch = applyPatch(parallelRoutes[parallelRouteKey], treePatch)\n } else {\n parallelRoutePatch = applyRouterStatePatchToTree(\n getNextFlightSegmentPath(flightSegmentPath),\n parallelRoutes[parallelRouteKey],\n treePatch,\n path\n )\n\n if (parallelRoutePatch === null) {\n return null\n }\n }\n\n const tree: FlightRouterState = [\n flightSegmentPath[0],\n {\n ...parallelRoutes,\n [parallelRouteKey]: parallelRoutePatch,\n },\n url,\n refetch,\n ]\n\n // Current segment is the root layout\n if (isRootLayout) {\n tree[4] = true\n }\n\n addRefreshMarkerToActiveParallelSegments(tree, path)\n\n return tree\n}\n","import { isPlainObject, dateTimestampInSeconds, uuid4, logger } from '@sentry/utils';\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors.js';\nimport { updateSession } from './session.js';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called after {@link applyToEvent}. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n\n /**\n * Transaction Name\n */\n\n /** Span */\n\n /** Session */\n\n /** Request Mode Session Status */\n\n /** The client on this scope */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n static clone(scope) {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n clone() {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n setClient(client) {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n getClient() {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext ;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n getAttachments() {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n getScopeData() {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n applyToEvent(\n event,\n hint = {},\n additionalEventProcessors = [],\n ) {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n captureException(exception, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n captureMessage(message, level, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nfunction setGlobalScope(scope) {\n globalScope = scope;\n}\n\nfunction generatePropagationContext() {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n\nexport { Scope, getGlobalScope, setGlobalScope };\n//# sourceMappingURL=scope.js.map\n","import { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input, textEncoder) {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(\n env,\n textEncoder,\n textDecoder,\n) {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length) {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson() {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) ;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n statsd: 'metric_bucket',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"next/dist/compiled/react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.0-canary-d55cc79b-20250228\";\n","'use client'\nimport { hexHash } from '../../../shared/lib/hash'\nimport {\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_URL,\n NEXT_RSC_UNION_QUERY,\n} from '../app-router-headers'\nimport type { RequestHeaders } from './fetch-server-response'\n\n/**\n * Mutates the provided URL by adding a cache-busting search parameter for CDNs that don't\n * support custom headers. This helps avoid caching conflicts by making each request unique.\n *\n * Rather than relying on the Vary header which some CDNs ignore, we append a search param\n * to create a unique URL that forces a fresh request.\n *\n * Example:\n * URL before: https://example.com/path?query=1\n * URL after: https://example.com/path?query=1&_rsc=abc123\n *\n * Note: This function mutates the input URL directly and does not return anything.\n *\n * TODO: Since we need to use a search param anyway, we could simplify by removing the custom\n * headers approach entirely and just use search params.\n */\nexport const setCacheBustingSearchParam = (\n url: URL,\n headers: RequestHeaders\n): void => {\n const uniqueCacheKey = hexHash(\n [\n headers[NEXT_ROUTER_PREFETCH_HEADER] || '0',\n headers[NEXT_ROUTER_SEGMENT_PREFETCH_HEADER] || '0',\n headers[NEXT_ROUTER_STATE_TREE_HEADER],\n headers[NEXT_URL],\n ].join(',')\n )\n\n /**\n * Note that we intentionally do not use `url.searchParams.set` here:\n *\n * const url = new URL('https://example.com/search?q=custom%20spacing');\n * url.searchParams.set('_rsc', 'abc123');\n * console.log(url.toString()); // Outputs: https://example.com/search?q=custom+spacing&_rsc=abc123\n * ^ <--- this is causing confusion\n * This is in fact intended based on https://url.spec.whatwg.org/#interface-urlsearchparams, but\n * we want to preserve the %20 as %20 if that's what the user passed in, hence the custom\n * logic below.\n */\n const existingSearch = url.search\n const rawQuery = existingSearch.startsWith('?')\n ? existingSearch.slice(1)\n : existingSearch\n const pairs = rawQuery.split('&').filter(Boolean)\n pairs.push(`${NEXT_RSC_UNION_QUERY}=${uniqueCacheKey}`)\n url.search = pairs.length ? `?${pairs.join('&')}` : ''\n}\n","/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nfunction getRootSpan(span) {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n\nexport { getRootSpan };\n//# sourceMappingURL=getRootSpan.js.map\n","'use client'\n\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n} from '../../../lib/metadata/metadata-constants'\n\n// We use a namespace object to allow us to recover the name of the function\n// at runtime even when production bundling/minification is used.\nconst NameSpace = {\n [METADATA_BOUNDARY_NAME]: function ({\n children,\n }: {\n children: React.ReactNode\n }) {\n return children\n },\n [VIEWPORT_BOUNDARY_NAME]: function ({\n children,\n }: {\n children: React.ReactNode\n }) {\n return children\n },\n [OUTLET_BOUNDARY_NAME]: function ({\n children,\n }: {\n children: React.ReactNode\n }) {\n return children\n },\n}\n\nexport const MetadataBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[METADATA_BOUNDARY_NAME.slice(0) as typeof METADATA_BOUNDARY_NAME]\n\nexport const ViewportBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[VIEWPORT_BOUNDARY_NAME.slice(0) as typeof VIEWPORT_BOUNDARY_NAME]\n\nexport const OutletBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[OUTLET_BOUNDARY_NAME.slice(0) as typeof OUTLET_BOUNDARY_NAME]\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n var dispatcher = ReactSharedInternals.H;\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0-canary-d55cc79b-20250228\";\n","import { RedirectStatusCode } from './redirect-status-code'\n\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'\n\nexport enum RedirectType {\n push = 'push',\n replace = 'replace',\n}\n\nexport type RedirectError = Error & {\n digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`\n}\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n\n const digest = error.digest.split(';')\n const [errorCode, type] = digest\n const destination = digest.slice(2, -2).join(';')\n const status = digest.at(-2)\n\n const statusCode = Number(status)\n\n return (\n errorCode === REDIRECT_ERROR_CODE &&\n (type === 'replace' || type === 'push') &&\n typeof destination === 'string' &&\n !isNaN(statusCode) &&\n statusCode in RedirectStatusCode\n )\n}\n","import { isDynamicRoute } from '../router/utils'\nimport { normalizePathSep } from './normalize-path-sep'\n\n/**\n * Performs the opposite transformation of `normalizePagePath`. Note that\n * this function is not idempotent either in cases where there are multiple\n * leading `/index` for the page. Examples:\n * - `/index` -> `/`\n * - `/index/foo` -> `/foo`\n * - `/index/index` -> `/index`\n */\nexport function denormalizePagePath(page: string) {\n let _page = normalizePathSep(page)\n return _page.startsWith('/index/') && !isDynamicRoute(_page)\n ? _page.slice(6)\n : _page !== '/index'\n ? _page\n : '/'\n}\n","export function omit(\n object: T,\n keys: K[]\n): Omit {\n const omitted: { [key: string]: unknown } = {}\n Object.keys(object).forEach((key) => {\n if (!keys.includes(key as K)) {\n omitted[key] = object[key]\n }\n })\n return omitted as Omit\n}\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&')\n }\n return str\n}\n","// minimal implementation MurmurHash2 hash function\nfunction murmurhash2(str: string) {\n let h = 0\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i)\n h = Math.imul(h ^ c, 0x5bd1e995)\n h ^= h >>> 13\n h = Math.imul(h, 0x5bd1e995)\n }\n return h >>> 0\n}\n\n// default to 0.01% error rate as the filter compresses very well\nconst DEFAULT_ERROR_RATE = 0.0001\n\nexport class BloomFilter {\n numItems: number\n errorRate: number\n numBits: number\n numHashes: number\n bitArray: number[]\n\n constructor(numItems: number, errorRate: number = DEFAULT_ERROR_RATE) {\n this.numItems = numItems\n this.errorRate = errorRate\n this.numBits = Math.ceil(\n -(numItems * Math.log(errorRate)) / (Math.log(2) * Math.log(2))\n )\n this.numHashes = Math.ceil((this.numBits / numItems) * Math.log(2))\n this.bitArray = new Array(this.numBits).fill(0)\n }\n\n static from(items: string[], errorRate = DEFAULT_ERROR_RATE) {\n const filter = new BloomFilter(items.length, errorRate)\n\n for (const item of items) {\n filter.add(item)\n }\n return filter\n }\n\n export() {\n const data = {\n numItems: this.numItems,\n errorRate: this.errorRate,\n numBits: this.numBits,\n numHashes: this.numHashes,\n bitArray: this.bitArray,\n }\n\n if (process.env.NEXT_RUNTIME === 'nodejs') {\n if (this.errorRate < DEFAULT_ERROR_RATE) {\n const filterData = JSON.stringify(data)\n const gzipSize = require('next/dist/compiled/gzip-size').sync(\n filterData\n )\n\n if (gzipSize > 1024) {\n console.warn(\n `Creating filter with error rate less than 0.1% (0.001) can increase the size dramatically proceed with caution. Received error rate ${this.errorRate} resulted in size ${filterData.length} bytes, ${gzipSize} bytes (gzip)`\n )\n }\n }\n }\n\n return data\n }\n\n import(data: ReturnType<(typeof this)['export']>) {\n this.numItems = data.numItems\n this.errorRate = data.errorRate\n this.numBits = data.numBits\n this.numHashes = data.numHashes\n this.bitArray = data.bitArray\n }\n\n add(item: string) {\n const hashValues = this.getHashValues(item)\n hashValues.forEach((hash) => {\n this.bitArray[hash] = 1\n })\n }\n\n contains(item: string) {\n const hashValues = this.getHashValues(item)\n return hashValues.every((hash) => this.bitArray[hash])\n }\n\n getHashValues(item: string) {\n const hashValues = []\n for (let i = 1; i <= this.numHashes; i++) {\n const hash = murmurhash2(`${item}${i}`) % this.numBits\n hashValues.push(hash)\n }\n return hashValues\n }\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`\n\nexport function forbidden(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n // eslint-disable-next-line no-throw-literal\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","// imports polyfill from `@next/polyfill-module` after build.\nimport '../build/polyfills/polyfill-module'\n\nimport './components/globals/patch-console'\nimport './components/globals/handle-global-errors'\n\nimport ReactDOMClient from 'react-dom/client'\nimport React, { use } from 'react'\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { createFromReadableStream } from 'react-server-dom-webpack/client'\nimport { HeadManagerContext } from '../shared/lib/head-manager-context.shared-runtime'\nimport { onRecoverableError } from './react-client-callbacks/on-recoverable-error'\nimport {\n onCaughtError,\n onUncaughtError,\n} from './react-client-callbacks/error-boundary-callbacks'\nimport { callServer } from './app-call-server'\nimport { findSourceMapURL } from './app-find-source-map-url'\nimport {\n type AppRouterActionQueue,\n createMutableActionQueue,\n} from '../shared/lib/router/action-queue'\nimport AppRouter from './components/app-router'\nimport type { InitialRSCPayload } from '../server/app-render/types'\nimport { createInitialRouterState } from './components/router-reducer/create-initial-router-state'\nimport { MissingSlotContext } from '../shared/lib/app-router-context.shared-runtime'\nimport { setAppBuildId } from './app-build-id'\nimport { shouldRenderRootLevelErrorOverlay } from './lib/is-error-thrown-while-rendering-rsc'\n\n/// \n\nconst appElement: HTMLElement | Document = document\n\nconst encoder = new TextEncoder()\n\nlet initialServerDataBuffer: (string | Uint8Array)[] | undefined = undefined\nlet initialServerDataWriter: ReadableStreamDefaultController | undefined =\n undefined\nlet initialServerDataLoaded = false\nlet initialServerDataFlushed = false\n\nlet initialFormStateData: null | any = null\n\ntype FlightSegment =\n | [isBootStrap: 0]\n | [isNotBootstrap: 1, responsePartial: string]\n | [isFormState: 2, formState: any]\n | [isBinary: 3, responseBase64Partial: string]\n\ntype NextFlight = Omit, 'push'> & {\n push: (seg: FlightSegment) => void\n}\n\ndeclare global {\n // If you're working in a browser environment\n interface Window {\n __next_f: NextFlight\n }\n}\n\nfunction nextServerDataCallback(seg: FlightSegment): void {\n if (seg[0] === 0) {\n initialServerDataBuffer = []\n } else if (seg[0] === 1) {\n if (!initialServerDataBuffer)\n throw new Error('Unexpected server data: missing bootstrap script.')\n\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(encoder.encode(seg[1]))\n } else {\n initialServerDataBuffer.push(seg[1])\n }\n } else if (seg[0] === 2) {\n initialFormStateData = seg[1]\n } else if (seg[0] === 3) {\n if (!initialServerDataBuffer)\n throw new Error('Unexpected server data: missing bootstrap script.')\n\n // Decode the base64 string back to binary data.\n const binaryString = atob(seg[1])\n const decodedChunk = new Uint8Array(binaryString.length)\n for (var i = 0; i < binaryString.length; i++) {\n decodedChunk[i] = binaryString.charCodeAt(i)\n }\n\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(decodedChunk)\n } else {\n initialServerDataBuffer.push(decodedChunk)\n }\n }\n}\n\nfunction isStreamErrorOrUnfinished(ctr: ReadableStreamDefaultController) {\n // If `desiredSize` is null, it means the stream is closed or errored. If it is lower than 0, the stream is still unfinished.\n return ctr.desiredSize === null || ctr.desiredSize < 0\n}\n\n// There might be race conditions between `nextServerDataRegisterWriter` and\n// `DOMContentLoaded`. The former will be called when React starts to hydrate\n// the root, the latter will be called when the DOM is fully loaded.\n// For streaming, the former is called first due to partial hydration.\n// For non-streaming, the latter can be called first.\n// Hence, we use two variables `initialServerDataLoaded` and\n// `initialServerDataFlushed` to make sure the writer will be closed and\n// `initialServerDataBuffer` will be cleared in the right time.\nfunction nextServerDataRegisterWriter(ctr: ReadableStreamDefaultController) {\n if (initialServerDataBuffer) {\n initialServerDataBuffer.forEach((val) => {\n ctr.enqueue(typeof val === 'string' ? encoder.encode(val) : val)\n })\n if (initialServerDataLoaded && !initialServerDataFlushed) {\n if (isStreamErrorOrUnfinished(ctr)) {\n ctr.error(\n new Error(\n 'The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection.'\n )\n )\n } else {\n ctr.close()\n }\n initialServerDataFlushed = true\n initialServerDataBuffer = undefined\n }\n }\n\n initialServerDataWriter = ctr\n}\n\n// When `DOMContentLoaded`, we can close all pending writers to finish hydration.\nconst DOMContentLoaded = function () {\n if (initialServerDataWriter && !initialServerDataFlushed) {\n initialServerDataWriter.close()\n initialServerDataFlushed = true\n initialServerDataBuffer = undefined\n }\n initialServerDataLoaded = true\n}\n\n// It's possible that the DOM is already loaded.\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', DOMContentLoaded, false)\n} else {\n // Delayed in marco task to ensure it's executed later than hydration\n setTimeout(DOMContentLoaded)\n}\n\nconst nextServerDataLoadingGlobal = (self.__next_f = self.__next_f || [])\nnextServerDataLoadingGlobal.forEach(nextServerDataCallback)\nnextServerDataLoadingGlobal.push = nextServerDataCallback\n\nconst readable = new ReadableStream({\n start(controller) {\n nextServerDataRegisterWriter(controller)\n },\n})\n\nconst initialServerResponse = createFromReadableStream(\n readable,\n { callServer, findSourceMapURL }\n)\n\n// React overrides `.then` and doesn't return a new promise chain,\n// so we wrap the action queue in a promise to ensure that its value\n// is defined when the promise resolves.\n// https://github.com/facebook/react/blob/163365a07872337e04826c4f501565d43dbd2fd4/packages/react-client/src/ReactFlightClient.js#L189-L190\nconst pendingActionQueue: Promise = new Promise(\n (resolve, reject) => {\n initialServerResponse.then(\n (initialRSCPayload) => {\n // setAppBuildId should be called only once, during JS initialization\n // and before any components have hydrated.\n setAppBuildId(initialRSCPayload.b)\n\n resolve(\n createMutableActionQueue(\n createInitialRouterState({\n initialFlightData: initialRSCPayload.f,\n initialCanonicalUrlParts: initialRSCPayload.c,\n initialParallelRoutes: new Map(),\n location: window.location,\n couldBeIntercepted: initialRSCPayload.i,\n postponed: initialRSCPayload.s,\n prerendered: initialRSCPayload.S,\n })\n )\n )\n },\n (err: Error) => reject(err)\n )\n }\n)\n\nfunction ServerRoot(): React.ReactNode {\n const initialRSCPayload = use(initialServerResponse)\n const actionQueue = use(pendingActionQueue)\n\n const router = (\n \n )\n\n if (process.env.NODE_ENV === 'development' && initialRSCPayload.m) {\n // We provide missing slot information in a context provider only during development\n // as we log some additional information about the missing slots in the console.\n return (\n \n {router}\n \n )\n }\n\n return router\n}\n\nconst StrictModeIfEnabled = process.env.__NEXT_STRICT_MODE_APP\n ? React.StrictMode\n : React.Fragment\n\nfunction Root({ children }: React.PropsWithChildren<{}>) {\n if (process.env.__NEXT_TEST_MODE) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n window.__NEXT_HYDRATED = true\n window.__NEXT_HYDRATED_CB?.()\n }, [])\n }\n\n return children\n}\n\nconst reactRootOptions: ReactDOMClient.RootOptions = {\n onRecoverableError,\n onCaughtError,\n onUncaughtError,\n}\n\nexport function hydrate() {\n const reactEl = (\n \n \n \n \n \n \n \n )\n\n if (\n document.documentElement.id === '__next_error__' ||\n !!window.__next_root_layout_missing_tags?.length\n ) {\n let element = reactEl\n // Server rendering failed, fall back to client-side rendering\n if (\n process.env.NODE_ENV !== 'production' &&\n shouldRenderRootLevelErrorOverlay()\n ) {\n const { createRootLevelDevOverlayElement } =\n require('./components/react-dev-overlay/app/client-entry') as typeof import('./components/react-dev-overlay/app/client-entry')\n\n // Note this won't cause hydration mismatch because we are doing CSR w/o hydration\n element = createRootLevelDevOverlayElement(element)\n }\n\n ReactDOMClient.createRoot(appElement, reactRootOptions).render(element)\n } else {\n React.startTransition(() => {\n ReactDOMClient.hydrateRoot(appElement, reactEl, {\n ...reactRootOptions,\n formState: initialFormStateData,\n })\n })\n }\n\n // TODO-APP: Remove this logic when Float has GC built-in in development.\n if (process.env.NODE_ENV !== 'production') {\n const { linkGc } =\n require('./app-link-gc') as typeof import('./app-link-gc')\n linkGc()\n }\n}\n","import { createHrefFromUrl } from '../create-href-from-url'\nimport type {\n ReadonlyReducerState,\n ReducerState,\n RestoreAction,\n} from '../router-reducer-types'\nimport { extractPathFromFlightRouterState } from '../compute-changed-path'\nimport { updateCacheNodeOnPopstateRestoration } from '../ppr-navigations'\n\nexport function restoreReducer(\n state: ReadonlyReducerState,\n action: RestoreAction\n): ReducerState {\n const { url, tree } = action\n const href = createHrefFromUrl(url)\n // This action is used to restore the router state from the history state.\n // However, it's possible that the history state no longer contains the `FlightRouterState`.\n // We will copy over the internal state on pushState/replaceState events, but if a history entry\n // occurred before hydration, or if the user navigated to a hash using a regular anchor link,\n // the history state will not contain the `FlightRouterState`.\n // In this case, we'll continue to use the existing tree so the router doesn't get into an invalid state.\n const treeToRestore = tree || state.tree\n\n const oldCache = state.cache\n const newCache = process.env.__NEXT_PPR\n ? // When PPR is enabled, we update the cache to drop the prefetch\n // data for any segment whose dynamic data was already received. This\n // prevents an unnecessary flash back to PPR state during a\n // back/forward navigation.\n updateCacheNodeOnPopstateRestoration(oldCache, treeToRestore)\n : oldCache\n\n return {\n // Set canonical url\n canonicalUrl: href,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // Ensures that the custom history state that was set is preserved when applying this update.\n preserveCustomHistoryState: true,\n },\n focusAndScrollRef: state.focusAndScrollRef,\n cache: newCache,\n prefetchCache: state.prefetchCache,\n // Restore provided tree\n tree: treeToRestore,\n nextUrl: extractPathFromFlightRouterState(treeToRestore) ?? url.pathname,\n }\n}\n","import { useEffect } from 'react'\nimport { attachHydrationErrorState } from './attach-hydration-error-state'\nimport { isNextRouterError } from '../is-next-router-error'\nimport { storeHydrationErrorStateFromConsoleArgs } from './hydration-error-info'\nimport { formatConsoleArgs, parseConsoleArgs } from '../../lib/console'\nimport isError from '../../../lib/is-error'\nimport { createUnhandledError } from './console-error'\nimport { enqueueConsecutiveDedupedError } from './enqueue-client-error'\nimport { getReactStitchedError } from '../errors/stitched-error'\n\nconst queueMicroTask =\n globalThis.queueMicrotask || ((cb: () => void) => Promise.resolve().then(cb))\n\nexport type ErrorHandler = (error: Error) => void\n\nconst errorQueue: Array = []\nconst errorHandlers: Array = []\nconst rejectionQueue: Array = []\nconst rejectionHandlers: Array = []\n\nexport function handleClientError(\n originError: unknown,\n consoleErrorArgs: any[],\n capturedFromConsole: boolean = false\n) {\n let error: Error\n if (!originError || !isError(originError)) {\n // If it's not an error, format the args into an error\n const formattedErrorMessage = formatConsoleArgs(consoleErrorArgs)\n const { environmentName } = parseConsoleArgs(consoleErrorArgs)\n error = createUnhandledError(formattedErrorMessage, environmentName)\n } else {\n error = capturedFromConsole\n ? createUnhandledError(originError)\n : originError\n }\n error = getReactStitchedError(error)\n\n storeHydrationErrorStateFromConsoleArgs(...consoleErrorArgs)\n attachHydrationErrorState(error)\n\n enqueueConsecutiveDedupedError(errorQueue, error)\n for (const handler of errorHandlers) {\n // Delayed the error being passed to React Dev Overlay,\n // avoid the state being synchronously updated in the component.\n queueMicroTask(() => {\n handler(error)\n })\n }\n}\n\nexport function useErrorHandler(\n handleOnUnhandledError: ErrorHandler,\n handleOnUnhandledRejection: ErrorHandler\n) {\n useEffect(() => {\n // Handle queued errors.\n errorQueue.forEach(handleOnUnhandledError)\n rejectionQueue.forEach(handleOnUnhandledRejection)\n\n // Listen to new errors.\n errorHandlers.push(handleOnUnhandledError)\n rejectionHandlers.push(handleOnUnhandledRejection)\n\n return () => {\n // Remove listeners.\n errorHandlers.splice(errorHandlers.indexOf(handleOnUnhandledError), 1)\n rejectionHandlers.splice(\n rejectionHandlers.indexOf(handleOnUnhandledRejection),\n 1\n )\n\n // Reset error queues.\n errorQueue.splice(0, errorQueue.length)\n rejectionQueue.splice(0, rejectionQueue.length)\n }\n }, [handleOnUnhandledError, handleOnUnhandledRejection])\n}\n\nfunction onUnhandledError(event: WindowEventMap['error']): void | boolean {\n if (isNextRouterError(event.error)) {\n event.preventDefault()\n return false\n }\n // When there's an error property present, we log the error to error overlay.\n // Otherwise we don't do anything as it's not logging in the console either.\n if (event.error) {\n handleClientError(event.error, [])\n }\n}\n\nfunction onUnhandledRejection(ev: WindowEventMap['unhandledrejection']): void {\n const reason = ev?.reason\n if (isNextRouterError(reason)) {\n ev.preventDefault()\n return\n }\n\n let error = reason\n if (error && !isError(error)) {\n error = createUnhandledError(error + '')\n }\n\n rejectionQueue.push(error)\n for (const handler of rejectionHandlers) {\n handler(error)\n }\n}\n\nexport function handleGlobalErrors() {\n if (typeof window !== 'undefined') {\n try {\n // Increase the number of stack frames on the client\n Error.stackTraceLimit = 50\n } catch {}\n\n window.addEventListener('error', onUnhandledError)\n window.addEventListener('unhandledrejection', onUnhandledRejection)\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n","\"trimStart\"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),\"trimEnd\"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),\"description\"in Symbol.prototype||Object.defineProperty(Symbol.prototype,\"description\",{configurable:!0,get:function(){var t=/\\((.*)\\)/.exec(this.toString());return t?t[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(t,r){return r=this.concat.apply([],this),t>1&&r.some(Array.isArray)?r.flat(t-1):r},Array.prototype.flatMap=function(t,r){return this.map(t,r).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(t){if(\"function\"!=typeof t)return this.then(t,t);var r=this.constructor||Promise;return this.then(function(n){return r.resolve(t()).then(function(){return n})},function(n){return r.resolve(t()).then(function(){throw n})})}),Object.fromEntries||(Object.fromEntries=function(t){return Array.from(t).reduce(function(t,r){return t[r[0]]=r[1],t},{})}),Array.prototype.at||(Array.prototype.at=function(t){var r=Math.trunc(t)||0;if(r<0&&(r+=this.length),!(r<0||r>=this.length))return this[r]}),Object.hasOwn||(Object.hasOwn=function(t,r){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");return Object.prototype.hasOwnProperty.call(Object(t),r)}),\"canParse\"in URL||(URL.canParse=function(t,r){try{return!!new URL(t,r)}catch(t){return!1}});\n","import isError from '../../../lib/is-error'\nimport { isNextRouterError } from '../is-next-router-error'\nimport { handleClientError } from '../errors/use-error-handler'\nimport { parseConsoleArgs } from '../../lib/console'\n\nexport const originConsoleError = globalThis.console.error\n\n// Patch console.error to collect information about hydration errors\nexport function patchConsoleError() {\n // Ensure it's only patched once\n if (typeof window === 'undefined') {\n return\n }\n window.console.error = function error(...args: any[]) {\n let maybeError: unknown\n if (process.env.NODE_ENV !== 'production') {\n const { error: replayedError } = parseConsoleArgs(args)\n if (replayedError) {\n maybeError = replayedError\n } else if (isError(args[0])) {\n maybeError = args[0]\n } else {\n // See https://github.com/facebook/react/blob/d50323eb845c5fde0d720cae888bf35dedd05506/packages/react-reconciler/src/ReactFiberErrorLogger.js#L78\n maybeError = args[1]\n }\n } else {\n maybeError = args[0]\n }\n\n if (!isNextRouterError(maybeError)) {\n if (process.env.NODE_ENV !== 'production') {\n handleClientError(\n // replayed errors have their own complex format string that should be used,\n // but if we pass the error directly, `handleClientError` will ignore it\n maybeError,\n args,\n true\n )\n }\n\n originConsoleError.apply(window.console, args)\n }\n }\n}\n","export const createRenderSearchParamsFromClient =\n process.env.NODE_ENV === 'development'\n ? (\n require('./search-params.browser.dev') as typeof import('./search-params.browser.dev')\n ).makeUntrackedExoticSearchParamsWithDevWarnings\n : (\n require('./search-params.browser.prod') as typeof import('./search-params.browser.prod')\n ).makeUntrackedExoticSearchParams\n","// Translates a logical route into its pages asset path (relative from a common prefix)\n// \"asset path\" being its javascript file, data file, prerendered html,...\nexport default function getAssetPathFromRoute(\n route: string,\n ext: string = ''\n): string {\n const path =\n route === '/'\n ? '/index'\n : /^\\/index(\\/|$)/.test(route)\n ? `/index${route}`\n : route\n return path + ext\n}\n","/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */\nexport const unstable_rethrow =\n typeof window === 'undefined'\n ? (\n require('./unstable-rethrow.server') as typeof import('./unstable-rethrow.server')\n ).unstable_rethrow\n : (\n require('./unstable-rethrow.browser') as typeof import('./unstable-rethrow.browser')\n ).unstable_rethrow\n","import { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport type { FlightRouterState } from '../../server/app-render/types'\n\nconst ANNOUNCER_TYPE = 'next-route-announcer'\nconst ANNOUNCER_ID = '__next-route-announcer__'\n\nfunction getAnnouncerNode() {\n const existingAnnouncer = document.getElementsByName(ANNOUNCER_TYPE)[0]\n if (existingAnnouncer?.shadowRoot?.childNodes[0]) {\n return existingAnnouncer.shadowRoot.childNodes[0] as HTMLElement\n } else {\n const container = document.createElement(ANNOUNCER_TYPE)\n container.style.cssText = 'position:absolute'\n const announcer = document.createElement('div')\n announcer.ariaLive = 'assertive'\n announcer.id = ANNOUNCER_ID\n announcer.role = 'alert'\n announcer.style.cssText =\n 'position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal'\n\n // Use shadow DOM here to avoid any potential CSS bleed\n const shadow = container.attachShadow({ mode: 'open' })\n shadow.appendChild(announcer)\n document.body.appendChild(container)\n return announcer\n }\n}\n\nexport function AppRouterAnnouncer({ tree }: { tree: FlightRouterState }) {\n const [portalNode, setPortalNode] = useState(null)\n\n useEffect(() => {\n const announcer = getAnnouncerNode()\n setPortalNode(announcer)\n return () => {\n const container = document.getElementsByTagName(ANNOUNCER_TYPE)[0]\n if (container?.isConnected) {\n document.body.removeChild(container)\n }\n }\n }, [])\n\n const [routeAnnouncement, setRouteAnnouncement] = useState('')\n const previousTitle = useRef(undefined)\n\n useEffect(() => {\n let currentTitle = ''\n if (document.title) {\n currentTitle = document.title\n } else {\n const pageHeader = document.querySelector('h1')\n if (pageHeader) {\n currentTitle = pageHeader.innerText || pageHeader.textContent || ''\n }\n }\n\n // Only announce the title change, but not for the first load because screen\n // readers do that automatically.\n if (\n previousTitle.current !== undefined &&\n previousTitle.current !== currentTitle\n ) {\n setRouteAnnouncement(currentTitle)\n }\n previousTitle.current = currentTitle\n }, [tree])\n\n return portalNode ? createPortal(routeAnnouncement, portalNode) : null\n}\n","import { createHrefFromUrl } from '../create-href-from-url'\nimport { applyRouterStatePatchToTree } from '../apply-router-state-patch-to-tree'\nimport { isNavigatingToNewRootLayout } from '../is-navigating-to-new-root-layout'\nimport type {\n ServerPatchAction,\n ReducerState,\n ReadonlyReducerState,\n Mutable,\n} from '../router-reducer-types'\nimport { handleExternalUrl } from './navigate-reducer'\nimport { applyFlightData } from '../apply-flight-data'\nimport { handleMutable } from '../handle-mutable'\nimport type { CacheNode } from '../../../../shared/lib/app-router-context.shared-runtime'\nimport { createEmptyCacheNode } from '../../app-router'\n\nexport function serverPatchReducer(\n state: ReadonlyReducerState,\n action: ServerPatchAction\n): ReducerState {\n const {\n serverResponse: { flightData, canonicalUrl: canonicalUrlOverride },\n } = action\n\n const mutable: Mutable = {}\n\n mutable.preserveCustomHistoryState = false\n\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return handleExternalUrl(\n state,\n mutable,\n flightData,\n state.pushRef.pendingPush\n )\n }\n\n let currentTree = state.tree\n let currentCache = state.cache\n\n for (const normalizedFlightData of flightData) {\n const { segmentPath: flightSegmentPath, tree: treePatch } =\n normalizedFlightData\n\n const newTree = applyRouterStatePatchToTree(\n // TODO-APP: remove ''\n ['', ...flightSegmentPath],\n currentTree,\n treePatch,\n state.canonicalUrl\n )\n\n // `applyRouterStatePatchToTree` returns `null` when it determined that the server response is not applicable to the current tree.\n // In other words, the server responded with a tree that doesn't match what the client is currently rendering.\n // This can happen if the server patch action took longer to resolve than a subsequent navigation which would have changed the tree.\n // Previously this case triggered an MPA navigation but it should be safe to simply discard the server response rather than forcing\n // the entire page to reload.\n if (newTree === null) {\n return state\n }\n\n if (isNavigatingToNewRootLayout(currentTree, newTree)) {\n return handleExternalUrl(\n state,\n mutable,\n state.canonicalUrl,\n state.pushRef.pendingPush\n )\n }\n\n const canonicalUrlOverrideHref = canonicalUrlOverride\n ? createHrefFromUrl(canonicalUrlOverride)\n : undefined\n\n if (canonicalUrlOverrideHref) {\n mutable.canonicalUrl = canonicalUrlOverrideHref\n }\n\n const cache: CacheNode = createEmptyCacheNode()\n applyFlightData(currentCache, cache, normalizedFlightData)\n\n mutable.patchedTree = newTree\n mutable.cache = cache\n\n currentCache = cache\n currentTree = newTree\n }\n\n return handleMutable(state, mutable)\n}\n","import { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nfunction spanToTraceContext(span) {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nfunction spanToJSON(span) {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span) {\n return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader };\n//# sourceMappingURL=spanUtils.js.map\n","import type {\n FlightRouterState,\n Segment,\n} from '../../../server/app-render/types'\nimport { INTERCEPTION_ROUTE_MARKERS } from '../../../shared/lib/router/utils/interception-routes'\nimport type { Params } from '../../../server/request/params'\nimport {\n isGroupSegment,\n DEFAULT_SEGMENT_KEY,\n PAGE_SEGMENT_KEY,\n} from '../../../shared/lib/segment'\nimport { matchSegment } from '../match-segments'\n\nconst removeLeadingSlash = (segment: string): string => {\n return segment[0] === '/' ? segment.slice(1) : segment\n}\n\nconst segmentToPathname = (segment: Segment): string => {\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return ''\n\n return segment\n }\n\n return segment[1]\n}\n\nfunction normalizeSegments(segments: string[]): string {\n return (\n segments.reduce((acc, segment) => {\n segment = removeLeadingSlash(segment)\n if (segment === '' || isGroupSegment(segment)) {\n return acc\n }\n\n return `${acc}/${segment}`\n }, '') || '/'\n )\n}\n\nexport function extractPathFromFlightRouterState(\n flightRouterState: FlightRouterState\n): string | undefined {\n const segment = Array.isArray(flightRouterState[0])\n ? flightRouterState[0][1]\n : flightRouterState[0]\n\n if (\n segment === DEFAULT_SEGMENT_KEY ||\n INTERCEPTION_ROUTE_MARKERS.some((m) => segment.startsWith(m))\n )\n return undefined\n\n if (segment.startsWith(PAGE_SEGMENT_KEY)) return ''\n\n const segments = [segmentToPathname(segment)]\n const parallelRoutes = flightRouterState[1] ?? {}\n\n const childrenPath = parallelRoutes.children\n ? extractPathFromFlightRouterState(parallelRoutes.children)\n : undefined\n\n if (childrenPath !== undefined) {\n segments.push(childrenPath)\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)) {\n if (key === 'children') continue\n\n const childPath = extractPathFromFlightRouterState(value)\n\n if (childPath !== undefined) {\n segments.push(childPath)\n }\n }\n }\n\n return normalizeSegments(segments)\n}\n\nfunction computeChangedPathImpl(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const [segmentA, parallelRoutesA] = treeA\n const [segmentB, parallelRoutesB] = treeB\n\n const normalizedSegmentA = segmentToPathname(segmentA)\n const normalizedSegmentB = segmentToPathname(segmentB)\n\n if (\n INTERCEPTION_ROUTE_MARKERS.some(\n (m) =>\n normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m)\n )\n ) {\n return ''\n }\n\n if (!matchSegment(segmentA, segmentB)) {\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return extractPathFromFlightRouterState(treeB) ?? ''\n }\n\n for (const parallelRouterKey in parallelRoutesA) {\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(\n parallelRoutesA[parallelRouterKey],\n parallelRoutesB[parallelRouterKey]\n )\n if (changedPath !== null) {\n return `${segmentToPathname(segmentB)}/${changedPath}`\n }\n }\n }\n\n return null\n}\n\nexport function computeChangedPath(\n treeA: FlightRouterState,\n treeB: FlightRouterState\n): string | null {\n const changedPath = computeChangedPathImpl(treeA, treeB)\n\n if (changedPath == null || changedPath === '/') {\n return changedPath\n }\n\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'))\n}\n\n/**\n * Recursively extracts dynamic parameters from FlightRouterState.\n */\nexport function getSelectedParams(\n currentTree: FlightRouterState,\n params: Params = {}\n): Params {\n const parallelRoutes = currentTree[1]\n\n for (const parallelRoute of Object.values(parallelRoutes)) {\n const segment = parallelRoute[0]\n const isDynamicParameter = Array.isArray(segment)\n const segmentValue = isDynamicParameter ? segment[1] : segment\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) continue\n\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll =\n isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc')\n\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/')\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1]\n }\n\n params = getSelectedParams(parallelRoute, params)\n }\n\n return params\n}\n","// This file is only used in app router due to the specific error state handling.\n\nimport type { ErrorInfo } from 'react'\nimport { getReactStitchedError } from '../components/errors/stitched-error'\nimport { handleClientError } from '../components/errors/use-error-handler'\nimport { isNextRouterError } from '../components/is-next-router-error'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { reportGlobalError } from './report-global-error'\nimport { originConsoleError } from '../components/globals/intercept-console-error'\nimport {\n ErrorBoundaryHandler,\n GlobalError as DefaultErrorBoundary,\n} from '../components/error-boundary'\n\nexport function onCaughtError(\n err: unknown,\n errorInfo: ErrorInfo & { errorBoundary?: React.Component }\n) {\n const errorBoundaryComponent = errorInfo.errorBoundary?.constructor\n\n let isImplicitErrorBoundary\n\n if (process.env.NODE_ENV !== 'production') {\n const { AppDevOverlayErrorBoundary } =\n require('../components/react-dev-overlay/app/app-dev-overlay-error-boundary') as typeof import('../components/react-dev-overlay/app/app-dev-overlay-error-boundary')\n\n isImplicitErrorBoundary =\n errorBoundaryComponent === AppDevOverlayErrorBoundary\n }\n\n isImplicitErrorBoundary =\n isImplicitErrorBoundary ||\n (errorBoundaryComponent === ErrorBoundaryHandler &&\n (errorInfo.errorBoundary! as InstanceType)\n .props.errorComponent === DefaultErrorBoundary)\n\n if (isImplicitErrorBoundary) {\n // We don't consider errors caught unless they're caught by an explicit error\n // boundary. The built-in ones are considered implicit.\n // This mimics how the same app would behave without Next.js.\n return onUncaughtError(err, errorInfo)\n }\n\n // Skip certain custom errors which are not expected to be reported on client\n if (isBailoutToCSRError(err) || isNextRouterError(err)) return\n\n if (process.env.NODE_ENV !== 'production') {\n const errorBoundaryName =\n // read react component displayName\n (errorBoundaryComponent as any)?.displayName ||\n errorBoundaryComponent?.name ||\n 'Unknown'\n\n const componentThatErroredFrame = errorInfo?.componentStack?.split('\\n')[1]\n\n // Match chrome or safari stack trace\n const matches =\n // regex to match the function name in the stack trace\n // example 1: at Page (http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1)\n // example 2: Page@http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1\n componentThatErroredFrame?.match(/\\s+at (\\w+)\\s+|(\\w+)@/) ?? []\n const componentThatErroredName = matches[1] || matches[2] || 'Unknown'\n\n // Create error location with errored component and error boundary, to match the behavior of default React onCaughtError handler.\n const errorBoundaryMessage = `It was handled by the <${errorBoundaryName}> error boundary.`\n const componentErrorMessage = componentThatErroredName\n ? `The above error occurred in the <${componentThatErroredName}> component.`\n : `The above error occurred in one of your components.`\n\n const errorLocation = `${componentErrorMessage} ${errorBoundaryMessage}`\n\n const stitchedError = getReactStitchedError(err)\n // TODO: change to passing down errorInfo later\n // In development mode, pass along the component stack to the error\n if (errorInfo.componentStack) {\n ;(stitchedError as any)._componentStack = errorInfo.componentStack\n }\n\n // Log and report the error with location but without modifying the error stack\n originConsoleError('%o\\n\\n%s', err, errorLocation)\n\n handleClientError(stitchedError, [])\n } else {\n originConsoleError(err)\n }\n}\n\nexport function onUncaughtError(err: unknown, errorInfo: React.ErrorInfo) {\n // Skip certain custom errors which are not expected to be reported on client\n if (isBailoutToCSRError(err) || isNextRouterError(err)) return\n\n if (process.env.NODE_ENV !== 'production') {\n const stitchedError = getReactStitchedError(err)\n // TODO: change to passing down errorInfo later\n // In development mode, pass along the component stack to the error\n if (errorInfo.componentStack) {\n ;(stitchedError as any)._componentStack = errorInfo.componentStack\n }\n\n // TODO: Add an adendum to the overlay telling people about custom error boundaries.\n reportGlobalError(stitchedError)\n } else {\n reportGlobalError(err)\n }\n}\n","'use client'\n\nimport ReactDOM from 'react-dom'\nimport React, { useEffect, useContext, useRef, type JSX } from 'react'\nimport type { ScriptHTMLAttributes } from 'react'\nimport { HeadManagerContext } from '../shared/lib/head-manager-context.shared-runtime'\nimport { setAttributesFromProps } from './set-attributes-from-props'\nimport { requestIdleCallback } from './request-idle-callback'\n\nconst ScriptCache = new Map()\nconst LoadCache = new Set()\n\nexport interface ScriptProps extends ScriptHTMLAttributes {\n strategy?: 'afterInteractive' | 'lazyOnload' | 'beforeInteractive' | 'worker'\n id?: string\n onLoad?: (e: any) => void\n onReady?: () => void | null\n onError?: (e: any) => void\n children?: React.ReactNode\n stylesheets?: string[]\n}\n\n/**\n * @deprecated Use `ScriptProps` instead.\n */\nexport type Props = ScriptProps\n\nconst insertStylesheets = (stylesheets: string[]) => {\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (ReactDOM.preinit) {\n stylesheets.forEach((stylesheet: string) => {\n ReactDOM.preinit(stylesheet, { as: 'style' })\n })\n\n return\n }\n\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (typeof window !== 'undefined') {\n let head = document.head\n stylesheets.forEach((stylesheet: string) => {\n let link = document.createElement('link')\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.href = stylesheet\n\n head.appendChild(link)\n })\n }\n}\n\nconst loadScript = (props: ScriptProps): void => {\n const {\n src,\n id,\n onLoad = () => {},\n onReady = null,\n dangerouslySetInnerHTML,\n children = '',\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n } = props\n\n const cacheKey = id || src\n\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return\n }\n\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey)\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError)\n return\n }\n\n /** Execute after the script first loaded */\n const afterLoad = () => {\n // Run onReady for the first time after load event\n if (onReady) {\n onReady()\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey)\n }\n\n const el = document.createElement('script')\n\n const loadPromise = new Promise((resolve, reject) => {\n el.addEventListener('load', function (e) {\n resolve()\n if (onLoad) {\n onLoad.call(this, e)\n }\n afterLoad()\n })\n el.addEventListener('error', function (e) {\n reject(e)\n })\n }).catch(function (e) {\n if (onError) {\n onError(e)\n }\n })\n\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = (dangerouslySetInnerHTML.__html as string) || ''\n\n afterLoad()\n } else if (children) {\n el.textContent =\n typeof children === 'string'\n ? children\n : Array.isArray(children)\n ? children.join('')\n : ''\n\n afterLoad()\n } else if (src) {\n el.src = src\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n\n ScriptCache.set(src, loadPromise)\n }\n\n setAttributesFromProps(el, props)\n\n if (strategy === 'worker') {\n el.setAttribute('type', 'text/partytown')\n }\n\n el.setAttribute('data-nscript', strategy)\n\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets)\n }\n\n document.body.appendChild(el)\n}\n\nexport function handleClientScriptLoad(props: ScriptProps) {\n const { strategy = 'afterInteractive' } = props\n if (strategy === 'lazyOnload') {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n } else {\n loadScript(props)\n }\n}\n\nfunction loadLazyScript(props: ScriptProps) {\n if (document.readyState === 'complete') {\n requestIdleCallback(() => loadScript(props))\n } else {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n }\n}\n\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'),\n ]\n scripts.forEach((script) => {\n const cacheKey = script.id || script.getAttribute('src')\n LoadCache.add(cacheKey)\n })\n}\n\nexport function initScriptLoader(scriptLoaderItems: ScriptProps[]) {\n scriptLoaderItems.forEach(handleClientScriptLoad)\n addBeforeInteractiveToCache()\n}\n\n/**\n * Load a third-party scripts in an optimized way.\n *\n * Read more: [Next.js Docs: `next/script`](https://nextjs.org/docs/app/api-reference/components/script)\n */\nfunction Script(props: ScriptProps): JSX.Element | null {\n const {\n id,\n src = '',\n onLoad = () => {},\n onReady = null,\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n ...restProps\n } = props\n\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } =\n useContext(HeadManagerContext)\n\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */\n const hasOnReadyEffectCalled = useRef(false)\n\n useEffect(() => {\n const cacheKey = id || src\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady()\n }\n\n hasOnReadyEffectCalled.current = true\n }\n }, [onReady, id, src])\n\n const hasLoadScriptEffectCalled = useRef(false)\n\n useEffect(() => {\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === 'afterInteractive') {\n loadScript(props)\n } else if (strategy === 'lazyOnload') {\n loadLazyScript(props)\n }\n\n hasLoadScriptEffectCalled.current = true\n }\n }, [props, strategy])\n\n if (strategy === 'beforeInteractive' || strategy === 'worker') {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps,\n },\n ])\n updateScripts(scripts)\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src)\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props)\n }\n }\n\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc) => {\n ReactDOM.preinit(styleSrc, { as: 'style' })\n })\n }\n\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native