{"version":3,"file":"637.f36212b05c5b10c0cee4.js","mappings":";+TAGO,SAASA,EAAaC,GAC3BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,cACZJ,KAAMA,GAEV,CAEO,SAASK,EAAaL,GAC3BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,cACZJ,KAAMA,GAEV,CAEO,SAASM,EAAWN,GACzBC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,YACZJ,KAAMA,GAEV,CAEO,SAASO,EAAqBP,GACnCC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,uBACZJ,KAAMA,GAEV,CAEO,SAASQ,EAAgBR,GAC9BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,iBACZJ,KAAMA,GAEV,CAEO,SAASS,EAAiCT,GAC/CC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,2BACZJ,KAAMA,GAEV,CASO,SAASU,EAAeV,GAC7BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,iBACZJ,KAAMA,GAEV,CAEO,SAASW,EAAsBX,GACpCC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,wBACZJ,KAAMA,GAEV,CAEO,SAASY,EAAgBZ,GAC9BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,kBACZJ,KAAMA,GAEV,CAgBO,SAASa,EAAWb,GACzBC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,YACZJ,KAAMA,GAEV,CAuBO,SAASc,EAAkBd,GAChCC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,oBACZJ,KAAMA,GAEV,CAgDO,SAASe,EAAyBC,GACvCf,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,4BACZJ,KAAMgB,GAEV,CAmCO,SAASC,EAAsBjB,GACpCC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,wBACZJ,KAAMA,GAEV,CAgBO,SAASkB,EAA6BlB,GAC3CC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,iCACZJ,KAAAA,GAEJ,CAuBO,SAASmB,EAAiBnB,GAC/BC,EAAAA,EAAcC,iBAAiB,CAC7BC,WAAYC,EAAAA,mBACZJ,KAAAA,GAEJ,8OC3PaoB,EAAkB,WAK7B,QAHEC,OAAOC,SAASC,SAASC,SAAS,WACjC,MAACC,EAAW,MAAMD,UAASE,EAAAA,EAAAA,IAAmB,aAC/CA,EAAAA,EAAAA,IAAmB,iBAEvB,oqBCfMC,EAAgBC,EAAAA,GAAaD,cCQnC,IAAMA,EAAgBC,EAAAA,GAAaD,cAEpB,SAASE,IACtB,IDMMC,ECNNC,GAA4BC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAClBI,EDVD,WACL,IAAMC,EAAeV,EAAAA,GAAaW,SAC9BF,EAAkB,UAStB,OARAV,EAAca,SAAQ,SAACC,GACrB,IAAMC,EAAeD,EAAKE,MAAM,KAAK,GACtBF,EAAKE,MAAM,KAAK,GACpBA,MAAM,KAAK,KAAOL,IAC3BD,EAAkBK,EAEtB,IAEOL,CACT,CCF0BO,GAClBC,GDIAf,EAAe,GACrBH,EAAca,SAAQ,SAACC,GACrB,IAAMC,EAAeD,EAAKE,MAAM,KAAK,GACrCb,EAAagB,KAAK,CAChBC,MAAOL,GAEX,IAEOZ,GCVP,IAAKe,EAAS,OAAO,KAsBrB,OACEG,IAAAA,cAAA,OAAKC,UAAU,iBACbD,IAAAA,cAAAE,EAAAA,GAAA,CAAQC,KAAK,KAAKC,QAtBH,SAACC,GAClBA,EAAMC,kBACNlB,GAAU,EACZ,GAoBOC,EACDW,IAAAA,cAAAO,EAAAA,IAAA,CAAeJ,KAAK,QAEtBH,IAAAA,cAAAQ,EAAAA,GAAA,CACErB,OAAQA,EACRU,QAASA,EACTY,YAfiB,SAACC,IACtBC,EAAAA,EAAAA,MACA,IAAMC,EAPU,SAACF,GACjB,IAAMjB,EAAOd,EAAc+B,GAC3B,MAAO,GAAPG,OAAUpB,EAAKE,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAE,KAAAkB,OAAIjC,EAAAA,GAAakC,QAC7D,CAIiBC,CAAUL,IDLtB,SAAoCE,GACzC,IAKII,EALEC,EAAY,SAAHJ,OAAYjC,EAAAA,GAAasC,MAAK,cAAAL,OAAaD,GAM1D,GAJEvC,OAAOC,SAAS6C,KAAKC,QAAQ,UAAY,IACxC,MAAC3C,EAAW,MAAMD,UAASE,EAAAA,EAAAA,IAAmB,WAG9B,CACjB,IAAM2C,EAAcC,mBAAmB,iBAADT,OAAkBI,IACxDD,EAAa,YAAHH,OAAeI,EAAS,iBAAAJ,OAAgBQ,EACpD,MACEL,EAAa,GAAHH,OAAMxC,OAAOC,SAAS6C,KAAKxB,MAAM,KAAK,GAAE,KAAAkB,OAAII,GAGxD5C,OAAOC,SAAS6C,KAAOH,CACzB,CCTIO,CAA2BX,EAC7B,EAYMY,QAzBc,WAClBpC,GAAU,EACZ,IA2BF,0lCC/CA,SAASqC,EAAeC,GAAkB,IAAfC,EAAED,EAAFC,GAAOC,GAAIC,EAAAA,EAAAA,GAAAH,EAAAI,GAC9BC,GAAaC,EAAAA,EAAAA,MACbC,EAAmB,IAAIC,EAAAA,EAAcH,EAAY,CACrDJ,GAAAA,IAGF,OACE3B,IAAAA,cAAA,QAEEmC,wBAAyB,CACvBC,OAAQC,EAAAA,SAAmBJ,EAAiBK,OAAMC,EAAC,CAAC,EAAIX,OAIhE,CAEAH,EAAgBe,UAAY,CAC1Bb,GAAIc,IAAAA,QAGN,UCnBO,IAAMC,EAAO,kBAClB1C,IAAAA,cAAA,UACEA,IAAAA,cAAA2C,EAAAA,EAAA,CAAMxB,KAAK,iBAAiBhB,KAAK,KAAKyC,WAAS,EAACC,OAAO,UACrD7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,sCAEX,EAGMoB,EAAW,kBACtB/C,IAAAA,cAAA,UACEA,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAK,0CACLhB,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,0CAEX,EAEMqB,EAA6B,kBACxChD,IAAAA,cAAA,UACEA,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAI,IAAAN,OAAMjC,EAAAA,GAAaqE,qBAAoB,wCAC3C9C,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,wCAEX,EAGMuB,EAAW,SAACC,GAAK,OAC5BnD,IAAAA,cAAA,MAAIC,UAAU,YACZD,IAAAA,cAAAE,EAAAA,GAAA,CAAQC,KAAK,KAAKC,QAAS+C,EAAMC,cAC/BpD,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,0CAEX,EAGM0B,EAAU,kBACrBrD,IAAAA,cAAA,UACEA,IAAAA,cAAA2C,EAAAA,EAAA,CACE1C,UAAU,YACVkB,KAAI,IAAAN,OAAMjC,EAAAA,GAAakC,QAAO,wBAC9BX,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,gDAEX,EAGM2B,EAAY,kBACvBtD,IAAAA,cAAA,KAAGC,UAAU,cACXD,IAAAA,cAACyB,EAAe,CACdE,GAAG,uCACH4B,aAAa,IAAIC,MAAOC,gBAExB,EAGOC,EAAU,kBACrB1D,IAAAA,cAAA,UACEA,IAAAA,cAAA,KAAGC,UAAU,6BACXD,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAI,IAAAN,OAAMjC,EAAAA,GAAakC,QAAO,gCAC9BX,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,0CAGb,EAGMgC,EAAQ,kBACnB3D,IAAAA,cAAA,UACEA,IAAAA,cAAA,KAAGC,UAAU,cACXD,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAI,IAAAN,OAAMjC,EAAAA,GAAakC,QAAO,iCAC9BX,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,wCAGb,EAGMiC,EAAS,kBACpB5D,IAAAA,cAAA,UACEA,IAAAA,cAAA,KAAGC,UAAU,cACXD,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAI,IAAAN,OAAMjC,EAAAA,GAAakC,QAAO,0CAC9BX,KAAK,KACLyC,WAAS,EACTC,OAAO,UAEP7C,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,2CAGb,EAGMkC,EAAgC,kBAC3C7D,IAAAA,cAAA8D,EAAAA,GAAA,KACE9D,IAAAA,cAAA+D,EAAAA,GAAA,KACE/D,IAAAA,cAAA,OAAKC,UAAU,kBACbD,IAAAA,cAAC8C,EAAAA,GAAO,CACNnB,GAAG,8DACHqC,KAAM,SAACC,GAAY,OACjBjE,IAAAA,cAAA2C,EAAAA,EAAA,CACExB,KAAI,IAAAN,OAAMjC,EAAAA,GAAakC,QAAO,0CAC9BX,KAAK,KACLyC,WAAS,EACTC,OAAO,UAENoB,EACI,MAKX,EAGRf,EAASV,UAAY,CACnBY,aAAcX,IAAAA,yQCNhB,SAAeyB,iCAAAA,IAxGf,WACE,IAAAnF,GACEC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GADVoF,EAAyBlF,EAAA,GAAEmF,EAA4BnF,EAAA,GAG9D,OAAIoF,EAAAA,EAAAA,QAAoBC,EAAAA,EAAAA,QAAiBC,EAAAA,EAAAA,MAChC,OAGTC,EAAAA,EAAAA,YAAU,WACRJ,EAA6BK,EAAAA,EAASC,4BAEtC,IAAMC,EAAqB1H,EAAAA,EAAc2H,UAAS,SAACC,GAAY,IAAAC,EAC7D,GAAmC,4BAAjB,QAAdA,EAAAD,EAAQE,cAAM,IAAAD,OAAA,EAAdA,EAAgB3H,YAAyC,CAC3D,IAAQH,EAAS6H,EAAQE,OAAjB/H,KACRoH,EAA6BpH,EAC/B,CACF,IAEA,OAAO,WACLC,EAAAA,EAAc+H,WAAWL,EAC3B,CACF,GAAG,IAqCD3E,IAAAA,cAAA,UAAQC,UAdDgF,IAAW,CAChBC,mBAAmBZ,EAAAA,EAAAA,OAAiBC,EAAAA,GACpCY,eAAeC,EAAAA,EAAAA,SAafpF,IAAAA,cAAAqF,EAAAA,GAAA,CAAWpF,UARNgF,IAAW,CAChBK,kBAAkB,EAClBC,yBAAyBH,EAAAA,EAAAA,QAMqBI,OAAO,GACnDxF,IAAAA,cAAA8D,EAAAA,GAAA,KACE9D,IAAAA,cAAA+D,EAAAA,GAAA,CAAK0B,GAAI,EAAGC,GAAI,EAAGzF,UAAU,gBAC3BD,IAAAA,cAAA,UACEA,IAAAA,cAAC0C,EAAI,MACL1C,IAAAA,cAAC+C,EAAQ,MACT/C,IAAAA,cAACgD,EAA0B,CAAC5C,QA1BhB,YACtBuF,EAAAA,EAAAA,IAAeC,EAAAA,GAAUC,YAC3B,IAyBY7F,IAAAA,cAACkD,EAAQ,CAACE,aA3CD,WACf/E,OAAOyH,UAAYzH,OAAOyH,SAASC,gBACrC1H,OAAOyH,SAASC,gBACd,gEAGFC,EAAAA,EAAAA,IAAa,CACXC,UAAW,IACXC,aACE,qFACFC,UACE,+DAGR,IA+Ba,CAAC,KAAM,KAAM,MAAM3H,SAASI,EAAAA,GAAakC,UAAYd,IAAAA,cAACqD,EAAO,QAIjEc,GACCnE,IAAAA,cAAA+D,EAAAA,GAAA,CAAK0B,GAAI,EAAGC,GAAI,GACd1F,IAAAA,cAACnB,EAAgB,QAIvBmB,IAAAA,cAAA8D,EAAAA,GAAA,CAAK7D,UAAU,gBACbD,IAAAA,cAAA+D,EAAAA,GAAA,KACE/D,IAAAA,cAAA,UACEA,IAAAA,cAAA,MAAIC,UAAU,eACZD,IAAAA,cAAA,OAAKC,UAAU,qBACbD,IAAAA,cAACsD,EAAS,QAGdtD,IAAAA,cAAA,UACEA,IAAAA,cAAA,OAAKC,UAAU,sBACbD,IAAAA,cAAC0D,EAAO,MACR1D,IAAAA,cAAC2D,EAAK,MACN3D,IAAAA,cAAC4D,EAAM,WAQS,OAAzBhF,EAAAA,GAAakC,SAAoBd,IAAAA,cAAC6D,EAA6B,QAIxE,ibC5GA,QAZA,SAAmBuC,GACjB,OAAO,SAACjD,GACN,OACEnD,IAAAA,cAACqG,EAAAA,EAAa,CACZC,OANNC,EAAAA,EAAAA,OAAsBlI,OAAOC,SAASC,SAASC,SAAS,kBAMhBgI,EAAAA,EAAkBC,EAAAA,GAEpDzG,IAAAA,cAACoG,EAAqBjD,GAG5B,CACF,wKCTA,cATsBuD,GAAO,IAAIC,EAAAA,WAAc,CAC7CzJ,iBAAgB,SAAC6H,GACf6B,KAAKC,SAAS,CACZC,OAAQ,cACR/B,OAAQA,GAEZ,6lCCqCEnG,EAAAA,GAjBFmI,iBAiBEnI,EAAAA,GAhBFoI,gBAFF,QAGEC,EAeErI,EAAAA,GAfFqI,eAOAC,GAQEtI,EAAAA,GAdFuI,aAcEvI,EAAAA,GAbFwI,aAaExI,EAAAA,GAZFyI,eAYEzI,EAAAA,GAXF0I,UAWE1I,EAAAA,GAVF2I,QAUE3I,EAAAA,GATF4I,SASE5I,EAAAA,GARFsI,aAwBWO,GAhBT7I,EAAAA,GAPF8I,KAOE9I,EAAAA,GANF+I,QAME/I,EAAAA,GALFgJ,UAKEhJ,EAAAA,GAJFsC,MAIEtC,EAAAA,GAHFiJ,sBAGEjJ,EAAAA,GAFFkJ,iBAEElJ,EAAAA,GADFmJ,8BAiB+B,WAC/B,IAAMC,EAASvD,EAAAA,EAASgD,qBAAuBR,EAC/C,OAAAgB,EAAAA,EAAAA,GAAA,GACGC,EAAAA,GAAUC,OAASH,EAExB,GAkMaI,EAAmB,SAACC,GAC/BhK,OAAOiK,KAAI/F,EAAAA,EAAAA,EAAA,GACNlE,OAAOiK,MACPD,GAAI,IAAAJ,EAAAA,EAAAA,GAAA,GACNC,EAAAA,GAAUK,UAAYC,EAAAA,GAAYC,cAEvC,EAEaC,EAAqB,WAChC,IAAMC,EAAMtK,OAAOC,SAAS6C,KACtByH,EAAmC,kBAAhB1B,EAEnB2B,EAAWC,IAAMC,EAAAA,IAAW,SAACC,GACjC,OAAOA,EAAKL,KAAOA,EAAIvH,QAAQ4H,EAAKL,MAAQ,CAC9C,IACA,OAAIE,IAIAF,EAAIvH,QAAQ,+BAAiC,EACxCwH,EACHG,EAAAA,GAAUE,8BACVF,EAAAA,GAAUG,mBACLP,EAAIvH,QAAQ,0BAA4B,EAC1CwH,EACHG,EAAAA,GAAUI,8BACVJ,EAAAA,GAAUK,oBACJhL,EAAAA,EAAAA,MAEDuK,EAAIvH,QAAQ,YAAc,EAC5B2H,EAAAA,GAAUM,aAEZR,EAJEE,EAAAA,GAAUO,sBAKrB,ECnSA,IAAMC,EAAkB,QAATC,EAAGnL,cAAM,IAAAmL,GAAQ,QAARA,EAANA,EAAQC,cAAM,IAAAD,GAAW,QAAXA,EAAdA,EAAgBD,iBAAS,IAAAC,OAAA,EAAzBA,EAA2BE,SAGvC,QAANC,EAAAtL,cAAM,IAAAsL,GAAQ,QAARA,EAANA,EAAQF,cAAM,IAAAE,GAAW,QAAXA,EAAdA,EAAgBJ,iBAAS,IAAAI,GAAzBA,EAA2BC,gmBCuCvBhL,EAAAA,GAJFkC,QAIElC,EAAAA,GAHFiL,uBAGEjL,EAAAA,GAFFkL,uBAEElL,EAAAA,GADFmL,0BAJF,IAsGa/D,EAAe,SAAAgE,GAMtB,IALJ/D,EAAS+D,EAAT/D,UACAC,EAAY8D,EAAZ9D,aACAC,EAAS6D,EAAT7D,UAAS8D,EAAAD,EACTnB,SAAAA,OAAQ,IAAAoB,EAAGvB,IAAoBuB,EAC/BC,EAAcF,EAAdE,gBD3FwB,SAAC7B,GACzBD,GAAgBH,EAAAA,EAAAA,GAAC,CAAC,EACfC,EAAAA,GAAUiC,OAAS,KAGtB9B,EAAK+B,MAAQ,gBACbb,SAAAA,EAAWc,YAAY,CAAEhC,KAAAA,GAC3B,CCwGEiC,CAlBU/H,EAAAA,EAAAA,EAAAA,EAAA,IACJ8B,EAAAA,EAAAA,MACA,CACEkG,UAAWC,EAAAA,WAAWC,+CACtBC,QAAQtM,EAAAA,EAAAA,MACJuM,EAAAA,YAAYC,8BACZD,EAAAA,YAAYE,oCAElB,CAAC,GAAC,IAAA5C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLC,EAAAA,GAAU4C,UAAY3E,GACtB+B,EAAAA,GAAU6C,SAAW9E,GACrBiC,EAAAA,GAAU8C,KAAO/E,GACjBiC,EAAAA,GAAU+C,KAAO/E,GACjBgC,EAAAA,GAAUgD,SAAWhF,GACnB2C,GACApB,KACAyC,GAGP,EAyFaiB,EAAmB,SAAAC,GAA6C,IAA1CvC,EAAQuC,EAARvC,SAAU5C,EAASmF,EAATnF,UAAWiE,EAAckB,EAAdlB,eAChDmB,GAAQpD,EAAAA,EAAAA,GAAA,GACXC,EAAAA,GAAU6C,SF6DqC,SAAC9E,GACnD,OAAOA,IAAcqF,EAAAA,eAAiBC,EAAAA,oBAAsBtF,CAC9D,CE/D0BuF,CAAqCvF,KD7NlC,SAACwF,EAAYJ,GAAgC,IAAtBK,EAASC,UAAAC,OAAA,QAAAnN,IAAAkN,UAAA,IAAAA,UAAA,GAC3DvD,GAAgBH,EAAAA,EAAAA,GAAC,CAAC,EACfC,EAAAA,GAAUiC,OAAS,KAGtBsB,EAAWrB,MAAQ,gBACnBb,SAAAA,EAAWsC,iBAAiB,CAAExD,KAAMoD,GAAcJ,EAAUK,EAC9D,CC6NEI,CALgBvJ,EAAAA,EAAA,GACXsG,GACAqB,GAGqBmB,EAC5B,EA2Ja1F,EAAiB,SAC5BoG,GAEG,IAAAC,EAAAL,UAAAC,OAAA,QAAAnN,IAAAkN,UAAA,GAAAA,UAAA,GAD8D,CAAC,EAAhEpB,EAASyB,EAATzB,UAAS0B,EAAAD,EAAEnD,SAAAA,OAAQ,IAAAoD,EAAGvD,IAAoBuD,EAAE/B,EAAc8B,EAAd9B,gBDzXtB,SAAC7B,GACzBD,GAAgBH,EAAAA,EAAAA,GAAC,CAAC,EACfC,EAAAA,GAAUiC,OAAS,KAGtB9B,EAAK+B,MAAQ,gBACbb,SAAAA,EAAW2C,YAAY,CAAE7D,KAAAA,GAC3B,CC6XE8D,CATU5J,EAAAA,EAAAA,GAAA0F,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPC,EAAAA,GAAUkE,KAAOL,GACjB7D,EAAAA,GAAUsC,WAAaD,GACvBrC,EAAAA,GAAUmE,UAAS,GAAAxL,OAAMgI,aAAQ,EAARA,EAAUG,KAAI,KAAAnI,OAAIkL,IAC3C7D,EAAAA,GAAUoE,gBAAe,GAAAzL,OAAMgI,aAAQ,EAARA,EAAU0D,KAAI,KAAA1L,OAAIkL,IAC/ClD,GACAqB,GACAzC,KAGP,ivBCpbA,IAAM+E,EAAa,CACjBC,EAAG,MAOQ1D,EAAY,CACvBM,aAAc,CACZkD,KAAM,2BACNvD,KAAM,iCACN0D,KAAM,4BAERC,WAAY,CACVJ,KAAM,kCACNvD,KAAM,wCACN0D,KAAM,yCAERxD,mBAAoB,CAClBqD,KAAM,gCACNvD,KAAM,sCACN0D,KAAM,uCAERE,0BAA2B,CACzBL,KAAM,gCACNvD,KAAM,sCACN0D,KAAM,uCAERtD,mBAAoB,CAClBmD,KAAM,gCACNvD,KAAM,sCACN0D,KAAM,uCAERG,mBAAoB,CAClBlE,IAAK,wBACL4D,KAAM,gCACNvD,KAAM,sCACN0D,KAAM,uCAERpD,sBAAuB,CACrBwD,KAAM,gBACNP,KAAM,oCACNvD,KAAM,0CACN0D,KAAM,2CAERzD,8BAA+B,CAC7BsD,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERvD,8BAA+B,CAC7BoD,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERK,oBAAqB,CACnBpE,IAAK,8BACL4D,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERM,oBAAqB,CACnBrE,IAAK,yBACL4D,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERO,oBAAqB,CACnBtE,IAAK,uBACL4D,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERQ,uBAAwB,CACtBvE,IAAK,kCACL4D,KAAM,iCACNvD,KAAM,uCACN0D,KAAM,wCAERS,mBAAoB,CAClBxE,IAAK,iBACL4D,KAAM,gCACNvD,KAAM,sCACN0D,KAAM,uCAERU,kBAAmB,CACjBzE,IAAK,4BACL4D,KAAM,oCACNvD,KAAM,0CACN0D,KAAM,2CAERW,gBAAiB,CACfd,KAAM,sCACNvD,KAAM,yCACN0D,KAAM,0CAERY,sBAAuB,CACrBf,KAAM,yCACNvD,KAAM,4CACN0D,KAAM,6CAERa,sBAAuB,CACrBhB,KAAM,mCACNvD,KAAM,yCACN0D,KAAM,0CAERc,mBAAoB,CAClBjB,KAAM,sCACNvD,KAAM,4CACN0D,KAAM,6CAERe,kBAAmB,CACjBlB,KAAM,yBACNvD,KAAM,+BACN0D,KAAM,gCAERgB,mBAAoB,CAClBnB,KAAM,kCACNvD,KAAM,wCACN0D,KAAM,yCAERiB,eAAgB,CACdpB,KAAM,8BACNvD,KAAM,oCACN0D,KAAM,sCA0BG9G,EAAY,CACvBgI,aAAc,YACdC,mBAAoB,qBACpBC,kBAAmB,mBACnBC,KAAM,OACNC,OAAQ,SACRC,eAAgB,gBAChBC,mBAAoB,qBACpBC,oBAAqB,8BACrBC,KAAM,OACNC,iCAAkC,SAClCC,QAAS,UACTC,SAAU,WACVC,sCAAuC,kBACvCC,cAAe,eACfC,iBAAkB,mBAClBC,mBAAoB,iBACpB9I,YAAa,6BACb+I,OAAQ,qBACRC,aAAc,eACdC,qBAAsB,qBACtBC,cAAe,sBACfC,QAAS,UACTC,cAAe,eACfC,cAAe,eACfC,KAAM,OACNC,OAAQ,UAGGlH,EAAY,CACvBmH,aAAc,eACdlF,OAAQ,SACRhC,OAAQ,SACRmH,oBAAqB,oBACrBC,WAAY,YACZC,SAAU,WACVC,YAAa,cACbC,mBAAoB,qBACpBC,qBAAsB,uBACtBC,iBAAkB,mBAClBC,aAAc,cACdC,SAAU,WACVC,QAAS,UACTC,qBAAsB,uBACtBC,SAAU,WACVC,iBAAkB,aAClB1F,WAAY,aACZQ,KAAM,OACNmF,oBAAqB,sBACrBlF,KAAM,OACNF,SAAU,aACVG,SAAU,aACVJ,UAAW,OACXsF,cAAe,KACfC,WAAY,UACZC,aAAc,WACdC,UAAW,YACXC,WAAY,aACZC,MAAO,QACPC,aAAc,eACdC,QAAS,UACTC,KAAM,OACNxE,KAAM,OACNyE,OAAQ,SACRjL,UAAW,YACXkL,aAAc,eACdC,KAAM,OACNC,aAAc,gBACdC,WAAY,WACZC,uBAAwB,yBACxBC,YAAa,cACbC,aAAc,eACdC,UAAW,mBACXC,gBAAiB,kBACjBC,SAAU,WACVC,WAAY,aACZnF,UAAW,OACXoF,UAAW,OACXC,WAAY,OACZpF,gBAAiB,OACjBqF,QAAS,UACTC,cAAe,gBACfrJ,UAAW,YACXsJ,OAAQ,SACRC,0BAA2B,QAC3BC,UAAW,eACXC,mBAAoB,qBACpBC,OAAQ,SACRC,YAAa,cACbC,eAAgB,iBAChBC,OAAQ,SACRC,MAAO,QACPC,wBAAyB,iBACzBC,sBAAuB,eACvBC,yBAA0B,kBAC1BC,2BAA4B,oBAC5BC,gBAAiB,aACjBC,uBAAwB,gBACxBC,4BAA6B,qBAC7BC,0BAA2B,mBAC3BC,iBAAkB,cAClBC,aAAc,KACdC,OAAQ,OACRC,QAAS,UACTC,IAAK,MACLC,gBAAiB,uBACjBC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,UAAW,YACXC,eAAgB,iBAChBC,MAAO,QACPC,MAAO,QACPC,YAAa,SACbC,aAAc,eACdC,eAAgB,iBAChBC,MAAO,QACPC,4BAA6B,+BAmElBvL,GA/BLjG,EAAA,GACCiK,GAMDjK,EAAA,GACCiK,GAKDjK,EAAA,GACCiK,GAKDjK,EAAA,GACCiK,GAKDjK,EAAA,GArUS,CACfkK,EAAG,OA0UsB,CACzBhE,aAAc,i9BCtUD,SAASuL,EAAY7Q,GAYlC,OACEnD,IAAAA,cAAAiU,EAAAA,GAAAC,EAAAA,EAAAA,GAAA,CACE,cAAY,eACZC,iBAAgBC,EAAAA,IAChBhU,QAfgB,YAClBuF,EAAAA,EAAAA,IAAeC,EAAAA,GAAUoI,OAAQ,CAC/BzD,WAAW8J,EAAAA,EAAAA,SAET/P,EAAAA,EAAAA,OACFgQ,EAAAA,EAAAA,MAGFjW,OAAOC,SAAS6C,KAAOoT,EAAAA,GAAaC,gBACtC,EAOIvU,UAAW,eACXwU,WAAW,YACPtR,GAEJnD,IAAAA,cAAC8C,EAAAA,GAAO,CAACnB,GAAG,+BAGlB,CAEAqS,EAAYxR,UAAY,CACtBkS,aAAcjS,IAAAA,wEC0BhB,SAAeyB,EAAAA,EAAAA,IApDf,SAAsBxC,GAUnB,IATD3B,EAAK2B,EAAL3B,MACA4U,EAAIjT,EAAJiT,KACAC,EAAKlT,EAALkT,MACAC,EAASnT,EAATmT,UACAC,EAAepT,EAAfoT,gBACAC,EAAWrT,EAAXqT,YACAC,EAAiBtT,EAAjBsT,kBAAiBC,EAAAvT,EACjBwT,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAAAzT,EACvB0T,WAAAA,OAAU,IAAAD,GAAQA,EAOlB,OALA3Q,EAAAA,EAAAA,YAAU,YACJF,EAAAA,EAAAA,QACF+Q,EAAAA,EAAAA,IAAS,wCAAyC,CAAC,eAEvD,GAAG,IAEDrV,IAAAA,cAAA,OACEC,UAAS,kBAAAY,QACPyU,EAAAA,EAAAA,MAAwB,cAAgB,GAAE,KAAAzU,QACxCyD,EAAAA,EAAAA,MAAgB,oBAAsB,GAAE,oBAE3CD,EAAAA,EAAAA,OAAoB6Q,GAAmBlV,IAAAA,cAACgU,EAAW,MACpDhU,IAAAA,cAAAuV,EAAAA,GAAA,CAAapV,KAAK,KAAKF,UAAU,SAC9BF,GAEF4U,EACC3U,IAAAA,cAAAwV,EAAAA,GAAA,CAAUvV,UAAS,QAAAY,OAAUuU,EAAa,cAAgB,KACvDT,GAED,KACHC,EACC5U,IAAAA,cAAAwV,EAAAA,GAAA,CAAUvV,UAAS,QAAAY,OAAUuU,EAAa,cAAgB,KACvDR,GAED,KAEHG,EACC/U,IAAAA,cAAAE,EAAAA,GAAA,CAAQ0C,WAAS,EAACxC,QAAS4U,EAAmB/U,UAAU,OACrD8U,GAED,KAEHF,EACC7U,IAAAA,cAAA2C,EAAAA,EAAA,CAAM1C,UAAU,MAAMG,QAAS0U,GAC5BD,GAED,KAGV,gPCtDMY,EAAW,CAAC,EAKlB,SAASC,EAAOC,EAAOC,GACrBH,EAASE,GAASC,CACpB,CAEA,IAAIC,EAAgBnP,IAAO,CAAC,EAAGoP,EAAAA,aAAaC,UAAW,CACrDC,WAAY,WACVpP,KAAKqP,KAbY,SAcnB,EAEAC,WAAY,WACV,OAAOT,CACT,EAEAhO,kBAAmB,WACjB,OAAIgO,EAASzN,OACJyN,EAASzN,OAAOmO,WAElBV,EAASzN,MAClB,EAEAoO,kBAAmB,WACjB,OAAOX,EAASY,MAClB,EAEAC,gBAAiB,WACf,OAAOb,EAASc,IAClB,EAEAC,kBAAmB,WACjB,OAAOf,EAASgB,cAClB,EAEAC,gBAAiB,WACf,OAAOjB,EAASkB,IAClB,EAEAC,qBAAsB,WACpB,OAAOnB,EAASoB,SAClB,EAEAC,8BAA+B,WAC7B,OAAOrB,EAASsB,0BAClB,EAEAC,wBAAyB,WACvB,OAAOvB,EAASwB,oBAClB,EAEAC,mBAAoB,WAClB,OAAOzB,EAAS0B,eAClB,EAEAC,uBAAwB,WACtB,OAAO3B,EAAS4B,QAClB,EAEAC,aAAc,WACZ,OAAO7B,EAASnO,SAClB,EAEAiQ,qBAAsB,WACpB,OAAO9B,EAAS+B,iBAClB,EAEAC,mBAAoB,WAClB,OAAOhC,EAASiC,eAClB,EAEAC,gBAAiB,WACf,OAAOlC,EAASmC,YAClB,EAEAC,gBAAiB,WACf,OAAOpC,EAASqC,YAClB,EAEAC,eAAgB,WACd,OAAOtC,EAASuC,WAClB,EAEAC,eAAgB,WACd,OAAOxC,EAASyC,YAClB,EAEAC,gBAAiB,WACf,OAAO1C,EAAS2C,YAClB,EAEAC,eAAgB,WACd,OAAO5C,EAAS6C,WAClB,EAEAC,kBAAmB,WACjB,OAAO9C,EAAS+C,cAClB,EAEAC,SAAU,WACR,OAAOhD,EAASiD,KAClB,EAEAC,kBAAmB,WACjB,OAAOlD,EAASmD,cAClB,EAEAC,eAAgB,WACd,OAAOpD,EAAS3U,OAClB,EAEAgY,sBAAuB,WACrB,OAAOrD,EAASzX,kBAClB,EAEA+a,uBAAwB,WACtB,OAAOtD,EAASuD,aAClB,EAEAC,gBAAiB,WACf,OAAOxD,EAASyD,YAClB,EAEAC,gBAAiB,WACf,OAAO1D,EAAS2D,YAClB,EAEAC,wBAAyB,WACvB,OAAOC,EAAAA,8BACT,EAEAC,mBAAoB,WAClB,OAAO9D,EAAS+D,eAClB,EAEAC,0BAA2B,WACzB,OAAOhE,EAAS3L,sBAClB,EAEA4P,YAAa,WACX,OAAOjE,EAASkE,QAClB,EAEAC,YAAa,WACX,OAAOnE,EAASoE,QAClB,EAEAC,sBAAuB,WACrB,OAAOrE,EAASsE,kBAClB,EAEArV,yBAA0B,WACxB,OAAO+Q,EAASuE,qBAClB,EAEAC,eAAgB,WACd,OAAOxE,EAASyE,WAClB,EAEAC,cAAe,WACb,OAAO1E,EAAS2E,UAClB,EAEAC,gBAAiBpd,EAAAA,EAAc2H,UAAS,SAAUC,GAAS,IAAAyV,EAGvDzD,EACAE,EACAE,EACAN,EACAN,EACAE,EACAE,EACA3V,EACA8W,EACAE,EACAE,EACAE,EACAE,EACAE,EACAE,EACAE,EACAE,EAEAvB,EACA/P,EAGA6P,EAxBEpS,EAASF,EAAQE,OA2BrB,OAAQA,EAAO5H,YACb,KAAKmc,EAAAA,cAEH5D,EAAO,SADE3Q,EAAO/H,KAAKgL,OAAOuS,QAE5B1E,EAAcG,aACd,MAEF,KAAKsD,EAAAA,cAEY,MADfjD,EAAStR,EAAO/H,KAAKqZ,OAAOkE,UAE1B7E,EAAO,SAAUW,GACjBR,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,YAEU,MADb/C,EAAOxR,EAAO/H,KAAKuZ,KAAKgE,UAEtB7E,EAAO,OAAQa,GACfV,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,uBAEoB,MADvB7C,EAAiB1R,EAAO/H,KAAKyZ,kBAE3Bf,EAAO,iBAAkBe,GACzBZ,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,2BAGgC,MAFnCvC,EACwC,QADduD,EACxBvV,EAAO/H,KAAK+Z,kCAA0B,IAAAuD,OAAA,EAAtCA,EAAwCC,UAExC7E,EAAO,6BAA8BqB,GACrClB,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,iBAEe,MADlBzC,EAAY9R,EAAO/H,KAAK6Z,UAAU0D,UAEhC7E,EAAO,YAAamB,GACpBhB,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,wBAEqB,MADxBnC,EAAkBpS,EAAO/H,KAAKma,gBAAgBoD,UAE5C7E,EAAO,kBAAmByB,GAC1BtB,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,iBAEc,MADjBjC,EAAWtS,EAAO/H,KAAKqa,SAASkD,UAE9B7E,EAAO,WAAY2B,GACnBxB,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,kBAEe,MADlBhS,EAAYvC,EAAO/H,KAAKsK,aAEtBoO,EAAO,YAAapO,GACpBuO,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,2BAEH5D,EAAO,oBADa3Q,EAAO/H,KAAKwa,mBAEhC3B,EAAcG,aACd,MAEF,KAAKsD,EAAAA,yBAEH5D,EAAO,kBADW3Q,EAAO/H,KAAK0a,iBAE9B7B,EAAcG,aACd,MAEF,KAAKsD,EAAAA,gBAE0B,MAD7BrC,EAAuBlS,EAAO/H,KAAKia,qBAAqBsD,UAEtD7E,EAAO,uBAAwBuB,GAC/BpB,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,YAEU,MADb3C,EAAO5R,EAAO/H,KAAK2Z,KAAK4D,SAEtB7E,EAAO,OAAQiB,GACfd,EAAcG,eAEdN,EAAO,OAAQ,IACfG,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,eAEa,MADhBxY,EAAUiE,EAAO/H,KAAK8D,QAAQyZ,UAE5B7E,EAAO,UAAW5U,GAClB+U,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,oBAEkB,MADrB1B,EAAe7S,EAAO/H,KAAK4a,gBAEzBlC,EAAO,eAAgBkC,GACvB/B,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,eAEkB,MADrBxB,EAAe/S,EAAO/H,KAAK8a,gBAEzBpC,EAAO,eAAgBoC,GACvBjC,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,oBAEiB,MADpBtB,EAAcjT,EAAO/H,KAAKgb,eAExBtC,EAAO,cAAesC,GACtBnC,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,qBAEkB,MADrBpB,EAAenT,EAAO/H,KAAKkb,gBAEzBxC,EAAO,eAAgBwC,GACvBrC,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,cAEkB,MADrBlB,EAAerT,EAAO/H,KAAKob,gBAEzB1C,EAAO,eAAgB0C,GACvBvC,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,qBAEiB,MADpBhB,EAAcvT,EAAO/H,KAAKsb,eAExB5C,EAAO,cAAe4C,GACtBzC,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,gBAEoB,MADvBd,EAAiBzT,EAAO/H,KAAKwb,kBAE3B9C,EAAO,iBAAkB8C,GACzB3C,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,MAEW,MADdZ,EAAQ3T,EAAO/H,KAAK0b,SAElBhD,EAAO,QAASgD,GAChB7C,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,gBAEoB,MADvBV,EAAiB7T,EAAO/H,KAAK4b,kBAE3BlD,EAAO,iBAAkBkD,GACzB/C,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,4BACH5D,EAAO,qBAAsB3Q,EAAO/H,MACpC6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,YAEH5D,EAAO,gBADS3Q,EAAO/H,KAAKgc,eAE5BnD,EAAcG,aACd,MAEF,KAAKsD,EAAAA,qBACH5D,EAAO,eAAgB3Q,EAAO/H,MAC9B6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,eACH5D,EAAO,eAAgB3Q,EAAO/H,MAC9B6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,wBACH5D,EAAO,kBAAmB3Q,EAAO/H,MACjC6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,iCACH5D,EAAO,yBAA0B3Q,EAAO/H,MACxC6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,iBACH5D,EAAO,WAAY3Q,EAAO/H,MAC1B6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,eACH5D,EAAO,WAAY3Q,EAAO/H,MAC1B6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,oBACH5D,EAAO,qBAAsB3Q,EAAO/H,MACpC6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,uBACH5D,EAAO,wBAAyB3Q,EAAO/H,MACvC6Y,EAAcG,aACd,MAEF,KAAKsD,EAAAA,oBAEiB,KADNvU,EAAO/H,KAAKkd,YAAYK,SAEpC7E,EAAO,cAAe3Q,EAAO/H,MAC7B6Y,EAAcG,cAEhB,MAEF,KAAKsD,EAAAA,mBACH5D,EAAO,aAAc3Q,EAAO/H,MAC5B6Y,EAAcG,aAOlB,OAAO,CACT,MAGF/Y,EAAAA,EAAc2H,UAAS,WACrB,OAAO,CACT,IAEA,8CC3cA,IAAM4V,EAAYC,EAAQ,yCAE1BC,EAAOC,QAAU,CACfC,cAAe,gBACfC,cAAe,gBACfC,YAAa,cACbC,iBAAkB,mBAClBC,2BAA4B,6BAC5BC,iBAAkB,mBAClBC,kBAAmB,oBACnBC,2BAA4B,6BAC5BC,yBAA0B,2BAC1BC,wBAAyB,0BACzBC,gBAAiB,kBACjBC,YAAa,cACbC,uBAAwB,yBAExBC,YAAa,cAEbxN,eAAgB,iBAEhByN,mBAAoB,qBACpBC,gBAAiB,kBACjBC,qBAAsB,uBACtBC,iBAAkB,mBAElBC,kBAAmB,oBACnBC,iBAAkB,mBAElBC,eAAgB,iBAEhBC,aAAc,eACdC,aAAc,eAEdC,gBAAiB,kBAEjBC,uBAAwB,yBAExBC,oBAAqB,sBAErBC,eAAgB,iBAEhBC,oBAAqB,sBAErBC,qBAAsB,uBAEtBC,cAAe,gBAEfC,qBAAsB,uBAEtBC,gBAAiB,kBAEjBC,MAAO,QAEPC,gBAAiB,kBAEjBC,4BAA6B,8BAE7BC,sBAAuB,wBAEvBC,qBAAsB,uBAEtBC,eAAgB,iBAEhBC,wBAAyB,0BAEzBC,eAAgB,iBAEhBC,oBAAqB,sBAErBC,iCAAkC,mCAElCC,oBAAqB,sBAErBC,mBAAoB,qBAEpBC,UACE,+LAEFC,kBAAmB,CACjBC,KAAM,OACNC,OAAQ,CACNC,SAAU,CACRC,UAAU,EACVC,QAAS,0BACTC,UAAW,IAEbC,eAAgB,CACdH,UAAU,EACVC,QAAS,4CACTC,UAAW,GAEbE,IAAK,CACHJ,UAAU,EACVC,QAAS,SACTC,UAAW,EACXG,UAAW,KAIjBC,+BAAgC,KAEhCC,2BAA4B,qCAC5BC,sBAAuB,+BACvBC,uBAAwB,aAExB3M,QAAS,CACP4M,iBAAkB,mBAClBC,mBAAoB,qBACpBC,6BAA8B,+BAC9BC,eAAgB,iBAChBC,uBAAwB,yBACxBC,aAAc,eAGdC,kCAAmC,oCACnCC,oCAAqC,uCAIvCC,aAAc,CACZC,QAAS,UACTC,SAAU,WACVC,8BAA+B,gCAC/BC,cAAe,iBAGjB3U,WAAY,CACV4U,oCAAqC,sCACrCC,uCACE,yCACFC,oCAAqC,sCACrCC,gDACE,sCACFC,uCACE,yCACFC,qCACE,uCACFC,uCACE,yCACFC,mDACE,qDACFC,qDACE,uDACFC,kCAAmC,oCACnCC,oCAAqC,sCACrCC,qCACE,uCACFC,wCACE,0CACFC,0CACE,4CACFC,uCACE,yCACFC,uCACE,yCACFC,uCACE,yCACFC,wCACE,0CACFC,6BAA8B,+BAC9BC,gCAAiC,kCACjCC,gCAAiC,kCACjCC,+BAAgC,iCAChCC,+BAAgC,iCAChCC,kCAAmC,oCACnClW,+CACE,iDACFmW,6CACE,2CACFC,6CACE,0DACFC,2CACE,wDACFC,gDACE,iDACFC,2CACE,8CACFC,0CACE,gDACFC,4CACE,kDACFC,+BACE,iDACFC,0BAA2B,4BAC3BC,6BAA8B,+BAC9BC,4BAA6B,8BAC7BC,6BAA8B,+BAC9BC,gCAAiC,kCACjCC,6BAA8B,+BAC9BC,oCAAqC,qCACrCC,4BAA6B,yCAC7BC,2BAA4B,gDAC5BC,+BAAgC,4CAChCC,6BACE,kDACFC,qCACE,0DACFC,qCACE,kDACFC,yCACE,kDACFC,yCACE,sDACFC,uCACE,oDACFC,oCACE,iDACFC,yCACE,sDACFC,yCACE,sDACFC,oCACE,uDACFC,8CACE,2DACFC,kCACE,8CACFC,yCACE,8CACFC,8CACE,mDACFC,4CACE,iDACFC,yCACE,gDACFC,2CACE,gDACFC,8CACE,mDACFC,wCACE,+CACFC,4CACE,iDACFC,4CACE,kDACFC,6CACE,kDACFC,2CACE,gDACFC,mDACE,wDACFC,+DACE,iEACFC,iEACE,mEACFC,wDACE,0DACFC,2DACE,6DACFC,8DACE,gEACFC,gEACE,kEACFC,0CACE,6CAGJjZ,YAAa,CACXC,8BAA+B,gCAC/BC,mCAAoC,sCAGtCgZ,aAAc,YACdC,SAAU,CACRC,IAAK,EACLC,WAAY,GACZC,SAAU,GACVC,YAAa,GACbC,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","sources":["webpack:///./actions/AppActions.js","webpack:///./components/coverFee/feeUtils.js","webpack:///./utility/languageSelector.js","webpack:///./components/languageSelectorMenu.js","webpack:///./components/MessageWithHtml.js","webpack:///./components/footer/footerLinks.js","webpack:///./components/footer/footer.js","webpack:///./components/withTheme.js","webpack:///./dispatcher/AppDispatcher.js","webpack:///./fpti/helper.js","webpack:///./fpti/analytics.js","webpack:///./fpti/fpti.js","webpack:///./fpti/fptiConstants.js","webpack:///./components/CloseButton.js","webpack:///./pages/error/FullPageError.js","webpack:///./stores/AppStore.js","webpack:///./utility/constants.js","webpack:///./utility/polyfillFetch.js","webpack:///./utility/domUtils.js","webpack:///./utility/formator.js","webpack:///./utility/getTemplateData.js","webpack:///./utility/ppccUtils.js","webpack:///./utility/helper.js","webpack:///./utility/inContextDonation.js","webpack:///./utility/personalizedMessages.js","webpack:///./utility/productIntegrationUtils.js","webpack:///./utility/queryStringHelper.js","webpack:///./utility/worldReadyUtils.js"],"sourcesContent":["import AppDispatcher from '../dispatcher/AppDispatcher';\nimport * as AppConstants from '../utility/constants';\n\nexport function changeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeSymbol(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_SYMBOL,\n item: item,\n });\n}\n\nexport function changeCode(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_CODE,\n item: item,\n });\n}\n\nexport function changeFormatedAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FORMATED_AMOUNT,\n item: item,\n });\n}\n\nexport function changeRecurring(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_RECURRING,\n item: item,\n });\n}\n\nexport function changeSelectedRecurringFrequency(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_RECURRING_FREQUENCY,\n item: item,\n });\n}\n\nexport function changeRecurringModalStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.RP_MODAL_CLOSED,\n item: item,\n });\n}\n\nexport function changeCoverFee(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_COVER_FEE,\n item: item,\n });\n}\n\nexport function changeAnonymousStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_ANONYMOUS_STATUS,\n item: item,\n });\n}\n\nexport function changeFeeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FEE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeFormatedFeeAmount(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_FORMATED_FEE_AMOUNT,\n item: item,\n });\n}\n\nexport function changeAmountBeforeFee(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_AMOUNT_BEFORE_FEE,\n item: item,\n });\n}\n\nexport function changeNote(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_NOTE,\n item: item,\n });\n}\n\nexport function changeCountry(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_COUNTRY,\n item: item,\n });\n}\n\nexport function updateConfirmation(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_CONFIRMATION,\n item: item,\n });\n}\n\nexport function updatePostBackData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.POST_BACK_DATA,\n item: item,\n });\n}\n\nexport function updateCurrentPage(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_CURRENT_PAGE,\n item: item,\n });\n}\n\nexport function updateServerErrors(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SERVER_ERRORS,\n item: item,\n });\n}\n\nexport function updatePaymentError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.PAYMENT_ERROR,\n item: item,\n });\n}\n\nexport function updateSignUpError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SIGN_UP_ERROR,\n item: item,\n });\n}\n\nexport function updateFundingOptions(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.FUNDING_OPTIONS,\n item: item,\n });\n}\n\nexport function updateEmail(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.EMAIL,\n item: item,\n });\n}\n\nexport function updateBillingAddress(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.BILLING_ADDRESS,\n item: item,\n });\n}\n\n/**\n * Sets the donation amount type\n * @param {String} type type of donation amount - \"preset\" or \"userinput\"\n */\nexport function updateDonationAmountType(donationAmountType) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_DONATION_AMOUNT_TYPE,\n item: donationAmountType,\n });\n}\n\n/**\n * Sets the giftaidit type\n * @param {Boolean}\n */\nexport function updateGiftaidItFlag(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.GIFT_AID_IT,\n item: item,\n });\n}\n\n/**\n * Sets the shareAddress checkbox\n * @param {Boolean} shareAddress checkbox value\n */\nexport function updateShareAddress(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_SHARE_ADDRESS,\n item: item,\n });\n}\n\n/**\n * Sets the any card releated errors\n * @param {String} card error\n */\nexport function updateAddCardError(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.ADD_CARD_ERROR,\n item: item,\n });\n}\n\nexport function updateSelectedProgram(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SELECTED_PROGRAM,\n item: item,\n });\n}\n\nexport function changeCardSpec(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.CHANGE_CARD_SPEC,\n item: item,\n });\n}\n\nexport function saveFormData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.SAVE_FORM_DATA,\n item,\n });\n}\n\nexport function updateSelectedPresetButtonId(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_SELECTED_PRESET_BUTTON_ID,\n item,\n });\n}\n\nexport function updateThreeDSData(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_THREEDS_DATA,\n item,\n });\n}\n\nexport function showLanguageSelector(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.SHOW_LANGUAGE_SELECTOR,\n item,\n });\n}\n\nexport function updateOrderStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_ORDER_STATUS,\n item,\n });\n}\n\nexport function updatePPCCStatus(item) {\n AppDispatcher.handleViewAction({\n actionType: AppConstants.UPDATE_PPCC_STATUS,\n item,\n });\n}\n","import AppStore from '../../stores/AppStore';\nimport * as AppActions from '../../actions/AppActions';\nimport { formatAmount, normalizeNumber } from '../../utility/formator';\nimport TemplateData from '../../utility/getTemplateData';\nimport { getParameterByName } from '../../utility/queryStringHelper';\nimport templateData from '../../utility/getTemplateData';\n\nexport const isOptInCoverFee = () => {\n return AppStore.getCoverFeeOptInStatus() === 'checked';\n};\n\nexport const isAtLandingPage = () => {\n const isGuestReviewPage =\n window.location.pathname.includes('guest') ||\n ![undefined, null].includes(getParameterByName('signup')) ||\n getParameterByName('countryChange');\n return !isGuestReviewPage;\n};\n\nexport const computeFeeAmount = () => {\n const donationAmount = parseFloat(AppStore.getDonationAmount()),\n flatFee = parseFloat(TemplateData.flatFee),\n feeRate = parseFloat(TemplateData.feeRate) * 0.01;\n\n if (donationAmount > 0) {\n // X is the full amount the donor needs to pay for the charity to receive $100\n // X - .03X - $0.30 = $100\n // If X is the full amount the donor needs to pay for the charity to receive Y\n // X - feeRate*X - flatFee = Y\n // X = (Y + flatFee) / (1 - feeRate)\n const totalAmountAfterFee = (donationAmount + flatFee) / (1 - feeRate),\n feeAmount = totalAmountAfterFee - donationAmount;\n return feeAmount;\n }\n\n return 0;\n};\n\nexport const computeAmountAfterFee = (donationAmount, feeAmount) => {\n const totalAmount = parseFloat(donationAmount) + normalizeNumber(feeAmount);\n\n return totalAmount.toString();\n};\n\nexport const setFeeAmountInStore = () => {\n const feeAmount = computeFeeAmount(),\n currencyCode = AppStore.getDonationCode(),\n formatedFeeAmount = formatAmount({\n currency: currencyCode,\n value: feeAmount,\n style: 'international',\n }),\n formatedFeeAmountValue = feeAmount;\n\n AppActions.changeFeeAmount({ feeAmount: formatedFeeAmountValue });\n AppActions.changeFormatedFeeAmount({\n formatedFeeAmount,\n });\n};\n\nexport const updateDonationAmount = (amount) => {\n const currencyCode = AppStore.getDonationCode(),\n formatedAmount = formatAmount({\n currency: currencyCode,\n value: amount,\n });\n AppActions.changeAmount({ amount });\n AppActions.changeFormatedAmount({ formatedAmount });\n};\n\nexport const restoreDonationAmount = () => {\n const rawAmount = AppStore.getAmountBeforeFee() || TemplateData.rawAmount;\n updateDonationAmount(rawAmount.toString());\n};\n\nexport const optOutCoverFee = () => {\n AppActions.changeCoverFee({ coverFee: 'unchecked' });\n AppActions.changeFeeAmount({ feeAmount: 0 });\n AppActions.changeFormatedAmount({ formatedFeeAmount: '' });\n};\n\nexport const shouldSelectPresetAmount = (amount) => {\n if (!amount) {\n return false;\n }\n if (templateData.presetAmounts?.length === 3) {\n const presetAmounts = TemplateData.presetAmounts;\n return presetAmounts.map(Number).includes(Number(amount));\n }\n};\n","import templateData from './getTemplateData';\nimport { getParameterByName } from './queryStringHelper';\nconst languagesList = templateData.languagesList;\n\nexport function getCurrentLangName() {\n const languageCode = templateData.language;\n let currentLanguage = 'English';\n languagesList.forEach((lang) => {\n const languageName = lang.split('-')[0];\n const locale = lang.split('-')[1];\n if (locale.split('_')[0] === languageCode) {\n currentLanguage = languageName;\n }\n });\n\n return currentLanguage;\n}\n\nexport function getLanguageOptions() {\n const lang_options = [];\n languagesList.forEach((lang) => {\n const languageName = lang.split('-')[0];\n lang_options.push({\n title: languageName,\n });\n });\n\n return lang_options;\n}\n\nexport function updatePageLanguageByLocale(locale) {\n const urlParams = `token=${templateData.token}&locale.x=${locale}`;\n const isOnGuestForm =\n window.location.href.indexOf('/guest') > 0 ||\n ![undefined, null].includes(getParameterByName('signup'));\n\n let updatedUrl;\n if (isOnGuestForm) {\n const clientState = encodeURIComponent(`/donate/guest?${urlParams}`);\n updatedUrl = `/donate/?${urlParams}&clientState=${clientState}`;\n } else {\n updatedUrl = `${window.location.href.split('?')[0]}?${urlParams}`;\n }\n\n window.location.href = updatedUrl;\n}\n","import React, { useState } from 'react';\nimport { ActionMenu, Button, ChevronUpIcon } from '@paypalcorp/pp-react';\nimport templateData from '../utility/getTemplateData';\nimport { showSpinnerOverlay } from '../utility/helper';\nimport {\n getCurrentLangName,\n updatePageLanguageByLocale,\n getLanguageOptions,\n} from '../utility/languageSelector';\n\nconst languagesList = templateData.languagesList;\n\nexport default function LanguageSelector() {\n const [isOpen, setIsOpen] = useState(false);\n const currentLanguage = getCurrentLangName();\n const options = getLanguageOptions();\n\n if (!options) return null;\n\n const handleOpen = (event) => {\n event.stopPropagation();\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n const getLocale = (index) => {\n const lang = languagesList[index];\n return `${lang.split('-')[1].split('_')[0]}_${templateData.country}`;\n };\n\n const selectMenuItem = (index) => {\n showSpinnerOverlay();\n const locale = getLocale(index);\n updatePageLanguageByLocale(locale);\n };\n\n return (\n
\n \n \n
\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from '../utility/worldReadyUtils';\nimport * as DOMPurify from 'dompurify';\n\nfunction MessageWithHTML({ id, ...rest }) {\n const worldReady = getWorldReady();\n const messageFormatter = new MessageFormat(worldReady, {\n id,\n });\n\n return (\n \n );\n}\n\nMessageWithHTML.propTypes = {\n id: PropTypes.string,\n};\n\nexport default MessageWithHTML;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col, Row, Link, Button } from '@paypalcorp/pp-react';\nimport { Message } from '@paypalcorp/worldready-react';\nimport templateData from '../../utility/getTemplateData';\nimport MessageWithHTML from '../MessageWithHtml';\n\nexport const Help = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const Security = () => (\n
  • \n \n \n \n
  • \n);\nexport const ReportInappropriateContent = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const Feedback = (props) => (\n
  • \n \n
  • \n);\n\nexport const Imprint = () => (\n
  • \n \n \n \n
  • \n);\n\nexport const CopyRight = () => (\n

    \n \n

    \n);\n\nexport const Privacy = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const Legal = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const Policy = () => (\n
  • \n

    \n \n \n \n

    \n
  • \n);\n\nexport const CombinedFinancialServicesText = () => (\n \n \n
    \n (\n \n {innerMessage}\n \n )}\n />\n
    \n \n
    \n);\n\nFeedback.propTypes = {\n handleSurvey: PropTypes.func,\n};\n","import React, { useState, useEffect } from 'react';\nimport { Container, Row, Col } from '@paypalcorp/pp-react';\nimport LanguageSelector from '../languageSelectorMenu';\nimport {\n Help,\n Security,\n Feedback,\n ReportInappropriateContent,\n Imprint,\n CopyRight,\n Privacy,\n Policy,\n Legal,\n CombinedFinancialServicesText,\n} from './footerLinks';\nimport templateData from '../../utility/getTemplateData';\nimport AppDispatcher from '../../dispatcher/AppDispatcher';\nimport AppStore from '../../stores/AppStore';\nimport {\n isNotFullScreen,\n isInContext,\n isMobileOrTablet,\n} from '../../utility/inContextDonation';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport { trackErrorIM, trackLinkClick } from '../../fpti/fpti';\nimport { LINK_NAME } from '../../fpti/fptiConstants';\nimport classNames from 'classnames';\nimport withTheme from '../withTheme';\n\nfunction Footer() {\n const [isLanguageSelectorEnabled, setIsLanguageSelectorEnabled] =\n useState(false);\n\n if (isExternalFlow() && isInContext() && isNotFullScreen()) {\n return null;\n }\n\n useEffect(() => {\n setIsLanguageSelectorEnabled(AppStore.getLanguageSelectorState());\n\n const dispatcherMessages = AppDispatcher.register((payload) => {\n if (payload.action?.actionType === 'SHOW_LANGUAGE_SELECTOR') {\n const { item } = payload.action;\n setIsLanguageSelectorEnabled(item);\n }\n });\n\n return () => {\n AppDispatcher.unregister(dispatcherMessages);\n };\n }, []);\n\n const handleSurvey = () => {\n if (window.latmconf && window.latmconf.trackSprigEvent) {\n window.latmconf.trackSprigEvent(\n 'donatenodeweb-consumermakedonation-feedbacklink-nov2023-web'\n );\n } else {\n trackErrorIM({\n errorCode: 400,\n errorMessage:\n 'window.latmconf or window.latmconf.trackSprigEvent is undefined, Sprig not loaded',\n fieldName:\n 'donatenodeweb-consumermakedonation-feedbacklink-nov2023-web',\n });\n }\n };\n\n const trackReportLink = () => {\n trackLinkClick(LINK_NAME.REPORT_LINK);\n };\n\n const footerClass = () => {\n return classNames({\n footer_in_context: isInContext() && isNotFullScreen,\n mobile_footer: isMobileOrTablet(),\n });\n };\n\n const footerContainerClass = () => {\n return classNames({\n footer_container: true,\n mobile_footer_container: isMobileOrTablet(),\n });\n };\n\n return (\n \n );\n}\n\nexport default withTheme(Footer);\n","import React from 'react';\nimport { PAYPAL_THEME } from '@paypalcorp/pp-react';\nimport { PAYPAL_THEME as PPUI4_PAYPAL_THEME } from 'ppui4theme';\nimport { ThemeProvider } from '@emotion/react';\nimport { isAndroidWebView } from '../utility/productIntegrationUtils';\n\n// We need to keep this as a function for it to not be memoized and apply\n// the styles when coming back from XO\nconst shouldApplyPPUI4Styles = () =>\n isAndroidWebView() && window.location.pathname.includes('/donate/member');\n\nfunction withTheme(WrappedComponent, theme = 'v2') {\n return (props) => {\n return (\n \n \n \n );\n };\n}\n\nexport default withTheme;\n","import { Dispatcher } from 'flux';\nimport assign from 'object-assign';\n\nconst AppDispatcher = assign(new Dispatcher(), {\n handleViewAction(action) {\n this.dispatch({\n source: 'VIEW_ACTION',\n action: action,\n });\n },\n});\n\nexport default AppDispatcher;\n","import {\n isSdkMode,\n isPopupMode,\n isFullPageRedirectionMode,\n} from '../utility/inContextDonation';\nimport { FPTI_TAGS, PAGE_SPEC, FPTI_VALUES } from './fptiConstants';\nimport templateData from '../utility/getTemplateData';\nimport {\n isAtLandingPage,\n isOptInCoverFee,\n} from '../components/coverFee/feeUtils';\nimport AppStore from '../stores/AppStore';\nimport _isEmpty from 'lodash/isEmpty';\nimport _get from 'lodash/get';\nimport _find from 'lodash/find';\nimport {\n isExternalFlow,\n isGNC,\n isPPFundraising,\n} from '../utility/productIntegrationUtils';\nimport {\n EVENT_NAME,\n FPTI_PRODUCT,\n INTERNAL_ERROR,\n DNW_UNHANDLED_ERROR,\n} from '../utility/constants';\nimport { isLoggedInUser } from '../utility/authUtils';\n\nconst {\n anonymousEnabled,\n coverFeeEnabled,\n donationAmount,\n donationCode,\n donationName,\n donorIpCountry,\n feeAmount,\n feeCurr,\n feePayer,\n fptPageName,\n npid,\n product,\n productId,\n token,\n integrationIdentifier,\n recurringEnabled,\n supportedRecurringFrequencies,\n} = templateData;\n\nexport const getUiType = () => {\n if (!isSdkMode()) {\n return 'full_page';\n }\n\n if (isPopupMode()) {\n return 'popup';\n }\n\n if (isFullPageRedirectionMode()) {\n return 'popup_blocked';\n }\n};\n\nexport const getDonationAmount = () => {\n const amount = AppStore.getDonationAmount() || donationAmount;\n return {\n [FPTI_TAGS.AMOUNT]: amount,\n };\n};\n\nexport const getFeeDataFromTemplateData = () => {\n return {\n ...(feePayer\n ? {\n [FPTI_TAGS.FEE_PAYER]: feePayer,\n [FPTI_TAGS.FEE_AMOUNT]: feeAmount,\n [FPTI_TAGS.FEE_CURRENCY]: feeCurr,\n }\n : {}),\n };\n};\n\nexport const getFeeData = () => {\n return {\n ...(coverFeeEnabled\n ? {\n [FPTI_TAGS.FEE_PAYER]: isOptInCoverFee() ? 'consumer' : 'merchant',\n [FPTI_TAGS.FEE_AMOUNT]: AppStore.getFeeAmount(),\n [FPTI_TAGS.FEE_CURRENCY]: AppStore.getDonationCode(),\n }\n : {}),\n };\n};\n\nexport const getAnonymousStatus = () => {\n return {\n ...(anonymousEnabled\n ? {\n [FPTI_TAGS.NONANONYMOUS]:\n AppStore.getAnonymousStatus() === 'unchecked',\n }\n : {}),\n };\n};\n\nexport const getNoteData = (data) => {\n return {\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.NOTE_ALLOWED]: data?.noteFieldDisplayed || false,\n [FPTI_TAGS.NOTE_ADDED]: !_isEmpty(AppStore.getDonationNote()),\n }\n : {}),\n };\n};\n\nexport const getRecurringStatus = () => {\n return {\n ...(recurringEnabled\n ? {\n [FPTI_TAGS.IS_RECURRING]:\n AppStore.getDonationRecurring() === 'checked',\n }\n : {}),\n };\n};\n\nexport const setEnabledRecurringFrequency = () => {\n if (recurringEnabled) {\n window.fpti[FPTI_TAGS.ENABLED_FREQUENCIES] =\n supportedRecurringFrequencies?.length > 0\n ? supportedRecurringFrequencies.join(',').toUpperCase()\n : 'MONTH';\n }\n};\n\nexport const getSelectedRecurringFrequency = () => {\n if (supportedRecurringFrequencies?.length > 0) {\n return {\n [FPTI_TAGS.SELECTED_FREQUENCY]:\n AppStore.getSelectedRecurringFrequency()?.toUpperCase(),\n };\n }\n return {\n [FPTI_TAGS.SELECTED_FREQUENCY]:\n AppStore.getDonationRecurring() === 'checked' ? 'MONTH' : null,\n };\n};\n\nexport const getFeePayer = () =>\n coverFeeEnabled && {\n [FPTI_TAGS.FEE_PAYER]: isOptInCoverFee() ? 'consumer' : 'merchant',\n };\n\nexport const addFeature = (feature) => {\n if (window.fpti[FPTI_TAGS.FEATURE]) {\n const featuresArray = window.fpti[FPTI_TAGS.FEATURE].split(',');\n if (!featuresArray.includes(feature)) {\n window.fpti[FPTI_TAGS.FEATURE] += ',' + feature;\n }\n } else {\n window.fpti.feature = feature || '';\n }\n};\n\nexport const setAmountTypeFpti = (value) => {\n const amttyp = window.fpti[FPTI_TAGS.AMOUNT_TYPE];\n\n if (amttyp !== value) {\n window.fpti[FPTI_TAGS.AMOUNT_TYPE] = value;\n }\n};\n\nexport const trackSelectedPresetAmount = (value) => {\n const opsl = window.fpti[FPTI_TAGS.SELECTED_PRESET_BUTTON_ID];\n if (opsl !== value) {\n window.fpti[FPTI_TAGS.SELECTED_PRESET_BUTTON_ID] = value;\n }\n\n setAmountTypeFpti(value === 'other' ? 'any' : 'preset');\n};\n\nexport const getLandingPageData = ({ noteFieldDisplayed }) => {\n return {\n ...getFeeData(),\n ...getDonationAmount(),\n ...getAnonymousStatus(),\n ...getNoteData({ noteFieldDisplayed }),\n ...getRecurringStatus(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n};\n\nexport const getThreeDSData = () => {\n const fundingOpts = AppStore.getFundingOptions();\n const contingencies = _get(fundingOpts, 'contingencies') || [];\n const threeDSContingency =\n _find(contingencies, { action: '3D_SECURE_DATA_COLLECTION_REQUIRED' }) ||\n {};\n\n return {\n [FPTI_TAGS.FI_ID]: _get(fundingOpts, 'id'),\n [FPTI_TAGS.FI_TYPE]: _get(fundingOpts, 'sources[0].payment_card.type'),\n [FPTI_TAGS.FI_NETWORK]: _get(\n fundingOpts,\n 'sources[0].payment_card.network'\n ),\n [FPTI_TAGS.FI_OPERATION]: 'add_card',\n [FPTI_TAGS.IS_3DS_ELIGIBLE]: true,\n [FPTI_TAGS.THREE_DS_VERSION]: '3DS2.0',\n [FPTI_TAGS.THREE_DS_REF_ID]: _get(\n threeDSContingency,\n 'three_ds_reference_id'\n ),\n [FPTI_TAGS.URL]: _get(threeDSContingency, 'device_data_collection_url'),\n };\n};\n\nexport const getExternalFlowData = () => {\n return {\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.PRODUCT]: FPTI_PRODUCT,\n [FPTI_TAGS.FLOW]: product,\n [FPTI_TAGS.INTEGRATION_IDENTIFIER]: integrationIdentifier,\n [FPTI_TAGS.DONOR_IP_COUNTRY]: donorIpCountry,\n [FPTI_TAGS.ACCOUNT_TYPE]: isLoggedInUser() ? 'member' : 'guest',\n [FPTI_TAGS.CURRENCY]: donationCode,\n ...(!_isEmpty(productId)\n ? {\n [FPTI_TAGS.CAMPAIGN_ID]: productId,\n }\n : {}),\n ...(!_isEmpty(npid)\n ? {\n [FPTI_TAGS.NPID]: npid,\n }\n : {}),\n ...(isGNC() || isPPFundraising()\n ? {\n [FPTI_TAGS.CHARITY_NAME]: donationName,\n }\n : {}),\n }\n : {}),\n };\n};\n\nexport const getToken = () => {\n return {\n [FPTI_TAGS.TOKEN]: token,\n };\n};\n\nexport const updateGlobalRespDuration = (respDuration) => {\n const globalRespDuration = window.fpti.resp_duration || {};\n window.fpti.resp_duration = {\n ...globalRespDuration,\n ...respDuration,\n };\n};\n\nexport const updateGlobalFPTI = (data) => {\n window.fpti = {\n ...window.fpti,\n ...data,\n [FPTI_TAGS.SPACE_KEY]: FPTI_VALUES.SPACE_KEY_ID,\n };\n};\n\nexport const getDefaultPageSpec = () => {\n const url = window.location.href;\n const isOnboardingFlow = fptPageName === 'guestULSignUp';\n\n const pageSpec = _find(PAGE_SPEC, (page) => {\n return page.url && url.indexOf(page.url) > -1;\n });\n if (pageSpec) {\n return pageSpec;\n }\n\n if (url.indexOf('/donate/guest/confirmation') > -1) {\n return isOnboardingFlow\n ? PAGE_SPEC.ONBOARDING_GUEST_SUCCESS_PAGE\n : PAGE_SPEC.GUEST_SUCCESS_PAGE;\n } else if (url.indexOf('/donate/guest/pending') > -1) {\n return isOnboardingFlow\n ? PAGE_SPEC.ONBOARDING_GUEST_PENDING_PAGE\n : PAGE_SPEC.GUEST_PENDING_PAGE;\n } else if (!isAtLandingPage()) {\n return PAGE_SPEC.ONBOARDING_GUEST_FORM;\n } else if (url.indexOf('/donate') > -1) {\n return PAGE_SPEC.LANDING_PAGE;\n }\n return pageSpec;\n};\n\nexport const getConfirmationData = (confirmationData) => {\n return {\n [FPTI_TAGS.AMOUNT]: confirmationData?.postBackData?.mc_gross,\n [FPTI_TAGS.CURRENCY]: confirmationData?.postBackData?.mc_currency,\n [FPTI_TAGS.TXN_ID]: confirmationData?.confirmationNumber || '',\n [FPTI_TAGS.SENDER_ID]: confirmationData?.postBackData?.payer_id,\n ...(confirmationData?.orderId\n ? {\n [FPTI_TAGS.ORDER_ID]: confirmationData.orderId,\n }\n : {}),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]: confirmationData?.isOfacPending\n ? EVENT_NAME.DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN\n : EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATION_CONFIRMATION_PAGE_IMP,\n }),\n ...getFeePayer(),\n };\n};\n\nexport const checkAndReplaceInternalErrWithDnwErr = (errorCode) => {\n return errorCode === INTERNAL_ERROR ? DNW_UNHANDLED_ERROR : errorCode;\n};\n\nexport const updateFPTIValue = (key, value) => {\n if (window.fpti[key]) {\n const valueArray = window.fpti[key]?.split(',');\n if (valueArray && !valueArray.includes(value)) {\n window.fpti[key] += ',' + value;\n }\n } else {\n window.fpti[key] = value || '';\n }\n};\n","import { FPTI_TAGS } from './fptiConstants';\nimport { updateGlobalFPTI } from './helper';\n\nconst analytics = window?.PAYPAL?.analytics?.instance;\n\n// Start client side error tracking\nwindow?.PAYPAL?.analytics?.startClientErrorTracking();\n\nexport const trackEventWithData = (spec = {}, additionalData = {}) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n const fptiData = {\n ...window.fpti,\n ...spec.data,\n ...additionalData,\n tsrce: 'donatenodeweb',\n };\n // ref: https://github.paypal.com/pages/Tracking-R/client-side-instrumentation/docs/fptiAnalytics.Analytics.html#recordEvent\n // the 3rd param is set to false meaning the data payload won't be merged\n // with window.fpti object\n analytics?.recordEvent(spec.event_name, fptiData, false);\n};\n\nexport const trackEventWithGlobalData = (spec = {}, additionalData = {}) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n const fptiData = {\n ...spec.data,\n ...additionalData,\n tsrce: 'donatenodeweb',\n };\n analytics?.recordEvent(spec.event_name, fptiData, true);\n};\n\nexport const trackPageLoad = (globalData, onceData, fromSetup = false) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n globalData.tsrce = 'donatenodeweb';\n analytics?.recordImpression({ data: globalData }, onceData, fromSetup);\n};\n\nexport const trackClick = (data) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n data.tsrce = 'donatenodeweb';\n analytics?.recordClick({ data });\n};\n\nexport const trackError = (data) => {\n updateGlobalFPTI({\n [FPTI_TAGS.ACTION]: '',\n });\n\n data.tsrce = 'donatenodeweb';\n analytics?.recordError({ data });\n};\n","import templateData from '../utility/getTemplateData';\nimport { isExternalFlow } from '../utility/productIntegrationUtils';\nimport { EVENT_NAME, SCREEN_NAME } from '../utility/constants';\nimport {\n CLOSE_SHEET_REASONS,\n DISMISS_METHODS,\n FPTI_TAGS,\n LINK_NAME,\n LOADING_STATES,\n PAGE_SPEC,\n} from './fptiConstants';\nimport {\n getAnonymousStatus,\n getConfirmationData,\n getDefaultPageSpec,\n getDonationAmount,\n getExternalFlowData,\n getFeeData,\n getFeeDataFromTemplateData,\n getFeePayer,\n getLandingPageData,\n getNoteData,\n getRecurringStatus,\n getThreeDSData,\n getToken,\n getUiType,\n updateGlobalRespDuration,\n getSelectedRecurringFrequency,\n updateGlobalFPTI,\n checkAndReplaceInternalErrWithDnwErr,\n} from './helper';\nimport {\n trackPageLoad,\n trackClick,\n trackError,\n trackEventWithData,\n} from './analytics';\nimport isNna from '../utility/nna';\nimport { isAtLandingPage } from '../components/coverFee/feeUtils';\nimport { getParameterByName } from '../utility/queryStringHelper';\nconst {\n country,\n donationAmountEditable,\n selectedPresetButtonId,\n sessionDeprecationEnabled,\n} = templateData;\n\nexport const trackLandingPageIM = (data) => {\n const shouldTrackExternalFlowData = isExternalFlow();\n const onceData = {\n ...getAnonymousStatus(),\n ...getNoteData(data),\n ...(shouldTrackExternalFlowData\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_SCREEN_SHOWN,\n }\n : { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_SCREEN_SHOWN }),\n ...(selectedPresetButtonId\n ? {\n [FPTI_TAGS.SELECTED_PRESET_BUTTON_ID]: selectedPresetButtonId,\n }\n : {}),\n ...getFeeDataFromTemplateData(),\n ...getDonationAmount(),\n ...(data.donationFraudEligibility && {\n donation_fraud_eligible: data.donationFraudEligibility,\n }),\n };\n\n const globalData = {\n [FPTI_TAGS.UI_TYPE]: getUiType(),\n [FPTI_TAGS.AMOUNT_EDIT_ALLOWED]: donationAmountEditable,\n [FPTI_TAGS.VERSION]: sessionDeprecationEnabled ? 'V2' : 'V1',\n ...getExternalFlowData(),\n ...PAGE_SPEC.LANDING_PAGE,\n ...(getParameterByName('fromUOB') ? { [FPTI_TAGS.SOURCE]: 'uob' } : {}),\n };\n\n updateGlobalFPTI(globalData);\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackRecurringFrequencySelectionClick = () => {\n const data = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED,\n };\n updateGlobalFPTI({\n ...getRecurringStatus(),\n ...getSelectedRecurringFrequency(),\n });\n trackClick(data);\n};\n\nexport const trackGuestFormIM = ({ isOnboarding = false } = {}) => {\n const onceData = {\n ...getDonationAmount(),\n ...getRecurringStatus(),\n ...(isExternalFlow()\n ? { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DW_GIVING_GUEST_FORM_SCREEN_SHOWN }\n : { [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_GUEST_FORM_SCREEN_SHOWN }),\n ...(isNna(country) && !isOnboarding\n ? { [FPTI_TAGS.OFFER_TYPE]: 'nna' }\n : {}),\n };\n const globalData = {\n ...(isOnboarding\n ? { ...PAGE_SPEC.ONBOARDING_GUEST_FORM }\n : { ...PAGE_SPEC.GUEST_FORM }),\n ...getSelectedRecurringFrequency(),\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackMemberReviewPageIM = ({\n status,\n statusCode,\n processStatus,\n}) => {\n const fromUOB = getParameterByName('fromUOB');\n const onceData = {};\n const globalData = {\n [FPTI_TAGS.STATUS]: status,\n [FPTI_TAGS.STATUS_CODE]: statusCode,\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_REVIEW_SCREEN_SHOWN,\n ...(fromUOB ? { [FPTI_TAGS.SOURCE]: 'uob' } : {}),\n ...PAGE_SPEC.MEMBER_REVIEW_PAGE,\n ...getUiType(),\n ...getSelectedRecurringFrequency(),\n };\n\n if (processStatus) {\n globalData[FPTI_TAGS.STATUS] = 'success';\n globalData[FPTI_TAGS.PROCESS_STATUS] = processStatus;\n globalData[FPTI_TAGS.SOURCE] = 'adroit';\n }\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackErrorIM = ({\n errorCode,\n errorMessage,\n fieldName,\n pageSpec = getDefaultPageSpec(),\n additionalData,\n}) => {\n const data = {\n ...(isExternalFlow()\n ? {\n eventName: EVENT_NAME.DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED,\n screen: isAtLandingPage()\n ? SCREEN_NAME.DW_GIVING_DONATE_SETUP_SCREEN\n : SCREEN_NAME.DW_GIVING_DONATE_GUEST_FORM_SCREEN,\n }\n : {}),\n [FPTI_TAGS.ERR_FIELD]: fieldName,\n [FPTI_TAGS.ERR_CODE]: errorCode,\n [FPTI_TAGS.ECCD]: errorCode,\n [FPTI_TAGS.ERPG]: errorMessage,\n [FPTI_TAGS.ERR_DESC]: errorMessage,\n ...pageSpec,\n ...getDonationAmount(),\n ...additionalData,\n };\n trackError(data);\n};\n\nexport const trackThreeDSIframeIM = ({\n threeDSRespDuration,\n confirmationStatus,\n}) => {\n const globalRespDuration = window.fpti.resp_duration || {};\n const globalData = {\n ...getThreeDSData(),\n ...PAGE_SPEC.THREE_DS_IFRAME_ONBRD,\n [FPTI_TAGS.THREE_DS_RESP_DURATION]: Object.assign(\n {},\n globalRespDuration,\n threeDSRespDuration\n ),\n [FPTI_TAGS.CHALLENGE_STATUS]: confirmationStatus,\n };\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_THREE_DS_IFRAME_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackConfirmationPageIM = ({\n isSignUp,\n pageSpec,\n flow,\n confirmationData,\n}) => {\n const globalData = {\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n ...getToken(),\n ...pageSpec,\n };\n const onceData = {};\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackSocialShareIM = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackPSLContentShow = ({\n isSignUp,\n pageSpec,\n flow,\n confirmationData,\n status,\n}) => {\n const globalData = {\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n ...getToken(),\n ...pageSpec,\n [FPTI_TAGS.EVENT_NAME]: `donate_donor_view_payment_${status}_psl_content_shown`,\n };\n const onceData = {};\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackCaptureOrderPageIM = ({ flow, confirmationData }) => {\n const pgrp = PAGE_SPEC.CAPTURE_ORDER_PAGE.pgrp.replace('{flow}', flow);\n const onceData = {\n [FPTI_TAGS.PAGE_NAME]: `${pgrp}:web::`,\n [FPTI_TAGS.PAGE_GROUP]: pgrp,\n };\n const globalData = {\n [FPTI_TAGS.ACCOUNT_TYPE]: flow,\n ...getToken(),\n ...getExternalFlowData(),\n ...getConfirmationData(confirmationData),\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackErrorPageIM = ({ pageSpec, errorCode, additionalData }) => {\n const onceData = {\n [FPTI_TAGS.ERR_CODE]: checkAndReplaceInternalErrWithDnwErr(errorCode),\n };\n const globalData = {\n ...pageSpec,\n ...additionalData,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackPageIM = ({ pageSpec, additionalData }) => {\n const onceData = {\n ...additionalData,\n };\n const globalData = {\n ...pageSpec,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackAnonymousCheckboxClick = (status) => {\n const data = {\n [FPTI_TAGS.LINK]: LINK_NAME.ANONYMOUS_CHECKBOX,\n [FPTI_TAGS.CHECKBOX]: status,\n [FPTI_TAGS.NONANONYMOUS]: !status,\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]: status\n ? EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED\n : EVENT_NAME.DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]: status\n ? EVENT_NAME.DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED\n : EVENT_NAME.DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED,\n }),\n ...getDonationAmount(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n trackClick(data);\n};\n\nexport const trackCoverFeeCheckboxClick = (status) => {\n const data = {\n [FPTI_TAGS.LINK]: LINK_NAME.COVER_FEE_CHECKBOX,\n [FPTI_TAGS.CHECKBOX]: status,\n ...getFeeData(),\n ...getDonationAmount(),\n ...PAGE_SPEC.LANDING_PAGE,\n };\n trackClick(data);\n};\n\nexport const trackDonateWithCardClick = ({ noteFieldDisplayed, fptiData }) => {\n const data = {\n [FPTI_TAGS.LINK]: 'donateWithCard',\n ...getLandingPageData({ noteFieldDisplayed }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED,\n }),\n ...fptiData,\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nexport const trackDonateWithPayPalClick = ({\n noteFieldDisplayed,\n fptiData,\n}) => {\n const data = {\n ...getLandingPageData({ noteFieldDisplayed }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED,\n }),\n [FPTI_TAGS.LINK]: 'donateWithPayPal',\n ...fptiData,\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nexport const trackNextClickForCheckout = ({ noteFieldDisplayed }) => {\n const data = {\n ...getLandingPageData({ noteFieldDisplayed }),\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DW_GIVING_DONATE_SETUP_NEXT_PRESSED,\n [FPTI_TAGS.LINK]: 'donateViaCheckout',\n };\n trackClick(data);\n};\n\nexport const trackSignupChekboxClick = (status, id) => {\n const data = {\n [FPTI_TAGS.LINK]: 'createAccount',\n [FPTI_TAGS.IS_SIGNUP]: status === 'checked',\n ...PAGE_SPEC.GUEST_FORM,\n };\n\n const target =\n id === 'createAccountSwitch' ? FPTI_TAGS.SWITCH : FPTI_TAGS.CHECKBOX;\n data[target] = status;\n trackClick(data);\n};\n\n// This submits the guest form\n// after passing all client side validations\nexport const trackPaymentSubmitClick = ({ isSignUp, isNNA, link }) => {\n const data = {\n ...getDonationAmount(),\n ...getRecurringStatus(),\n [FPTI_TAGS.LINK]: link,\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n ...(isNNA\n ? { [FPTI_TAGS.OFFER_TYPE]: 'nna' }\n : { [FPTI_TAGS.OFFER_TYPE]: undefined }),\n ...(isExternalFlow()\n ? {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DW_GIVING_GUEST_FORM_DONATE_PRESSED,\n }\n : {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED,\n }),\n ...(link === LINK_NAME.GUEST_FORM_PAYMENT_SUBMIT_BUTTON\n ? { ...PAGE_SPEC.GUEST_FORM }\n : { ...PAGE_SPEC.ONBOARDING_GUEST_FORM }),\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n };\n trackClick(data);\n};\n\nconst addGlobalFptiData = (data) => {\n window.fpti = Object.assign({}, window.fpti, data);\n};\n\nexport const trackOnbrdPaymentSubmitClick = ({ isSignUp, isCvvSent }) => {\n addGlobalFptiData({\n ...getDonationAmount(),\n ...getRecurringStatus(),\n [FPTI_TAGS.IS_SIGNUP]: isSignUp,\n [FPTI_TAGS.ACTION]: '',\n [FPTI_TAGS.IS_CVV_SENT]: isCvvSent,\n ...getFeePayer(),\n ...getSelectedRecurringFrequency(),\n });\n};\n\nexport const trackLinkClick = (\n linkName,\n { eventName, pageSpec = getDefaultPageSpec(), additionalData } = {}\n) => {\n const data = {\n [FPTI_TAGS.LINK]: linkName,\n [FPTI_TAGS.EVENT_NAME]: eventName,\n [FPTI_TAGS.PAGE_LINK]: `${pageSpec?.page}|${linkName}`,\n [FPTI_TAGS.PAGE_GROUP_LINK]: `${pageSpec?.pgrp}|${linkName}`,\n ...pageSpec,\n ...additionalData,\n ...getDonationAmount(),\n };\n trackClick(data);\n};\n\nexport const trackThreeDsDdcStart = (data) => {\n updateGlobalRespDuration(data);\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_START,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsDdcComplete = (data) => {\n updateGlobalRespDuration(data);\n\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_COMPLETE,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsDdcFailure = (data) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_DDC_FAILURE,\n data: {\n ...getThreeDSData(),\n ...data,\n },\n });\n};\n\nexport const trackThreeDsLookupStart = (data) => {\n updateGlobalRespDuration(data);\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_LOOKUP_START,\n data: { ...getThreeDSData() },\n });\n};\n\nexport const trackThreeDsLookupComplete = (data) => {\n updateGlobalRespDuration(data);\n if (data?.timestamp) {\n delete data.timestamp;\n }\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_LOOKUP_COMPLETE,\n data: { ...getThreeDSData(), ...data },\n });\n};\n\nexport const trackDonateLandingButtonClick = ({ noteFieldDisplayed }) => {\n const data = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED,\n ...getLandingPageData({ noteFieldDisplayed }),\n ...getFeePayer(),\n };\n trackClick(data);\n};\n\nexport const trackGuestReviewPageDonateClick = ({ isCvvSend }) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK,\n data: { [FPTI_TAGS.IS_CVV_SENT]: isCvvSend },\n });\n};\n\nexport const track3DSProceedToPayment = ({ isCvvSend }) => {\n trackEventWithData({\n event_name: EVENT_NAME.DONATE_THREE_DS_PROOCEED_TO_PAYMENT,\n data: { [FPTI_TAGS.IS_CVV_SENT]: isCvvSend },\n });\n};\n\nexport const trackOrganizerUpdatesLoad = (isPopulated) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_MODULE_SHOWN,\n [FPTI_TAGS.STATE]: isPopulated\n ? LOADING_STATES.POPULATED\n : LOADING_STATES.EMPTY,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesReadMorePressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_READ_MORE_PRESSED,\n });\n};\n\nexport const trackUpdatesShowMorePressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED,\n });\n};\n\nexport const trackUpdatesLikePressed = (\n updateId,\n positiveLike,\n status,\n likesCount = 0\n) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n status === 'REQUEST_SENT'\n ? EVENT_NAME.DONATE_LANDING_UPDATES_LIKE_PRESSED\n : EVENT_NAME.DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n [FPTI_TAGS.LINK_NAME]: positiveLike ? LINK_NAME.LIKE : LINK_NAME.UNLIKE,\n [FPTI_TAGS.STATUS]: status,\n [FPTI_TAGS.COUNT]: likesCount,\n });\n};\n\nexport const trackOrganizerUpdatesListIM = (count = 0) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LIST_SHOWN,\n [FPTI_TAGS.COUNT]: count,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesListSelectionPressed = (updateId) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n });\n};\n\nexport const trackUpdatesListLikePressed = (updateId, positiveLike) => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n [FPTI_TAGS.LINK_NAME]: positiveLike ? LINK_NAME.LIKE : LINK_NAME.UNLIKE,\n });\n};\n\nexport const trackUpdatesListDismissPressed = (reason) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n });\n};\n\nexport const trackUpdatesDetailDismissPressed = (reason, updateId) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n });\n};\n\nexport const trackUpdatesLoginDismissPressed = (reason) => {\n const dismissMethod =\n reason === CLOSE_SHEET_REASONS.BACKDROP_CLICK\n ? DISMISS_METHODS.BACKGROUND\n : DISMISS_METHODS.CLOSE;\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED,\n [FPTI_TAGS.DISMISS_METHOD]: dismissMethod,\n });\n};\n\nexport const trackUpdatesDetailIM = (updateId) => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN,\n [FPTI_TAGS.UPDATE_ID]: updateId,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesLoginIM = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]: EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n\nexport const trackUpdatesLoginButtonPressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED,\n });\n};\n\nexport const trackUpdatesLoginSignupPressed = () => {\n trackClick({\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED,\n });\n};\n\nexport const trackUpdatesLoadingError = () => {\n const globalData = {};\n const onceData = {\n [FPTI_TAGS.EVENT_NAME]:\n EVENT_NAME.DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN,\n };\n\n trackPageLoad(globalData, onceData);\n};\n","const IMPRESSION = {\n e: 'im',\n};\n\nconst ACTIVITY = {\n e: 'ac',\n};\n\nexport const PAGE_SPEC = {\n LANDING_PAGE: {\n pgrp: 'main:donate:wps::landing',\n page: 'main:donate:wps::landing:web::',\n tmpl: 'main:donate:wps::landing',\n },\n GUEST_FORM: {\n pgrp: 'main:donate:wps:guest:guestform',\n page: 'main:donate:wps:guest:guestform:web::',\n tmpl: 'main:donate:wps:guest:guestform:web::',\n },\n GUEST_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:guest:success',\n page: 'main:donate:wps:guest:success:web::',\n tmpl: 'main:donate:wps:guest:success:web::',\n },\n GUEST_SIGNUP_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:guest:upgrade',\n page: 'main:donate:wps:guest:upgrade:web::',\n tmpl: 'main:donate:wps:guest:upgrade:web::',\n },\n GUEST_PENDING_PAGE: {\n pgrp: 'main:donate:wps:guest:pending',\n page: 'main:donate:wps:guest:pending:web::',\n tmpl: 'main:donate:wps:guest:pending:web::',\n },\n GUEST_FAILURE_PAGE: {\n url: '/donate/error/payment',\n pgrp: 'main:donate:wps:guest:failure',\n page: 'main:donate:wps:guest:failure:web::',\n tmpl: 'main:donate:wps:guest:failure:web::',\n },\n ONBOARDING_GUEST_FORM: {\n comp: 'donatenodeweb', // Overriding the comp to tell that this event is fired by DNW\n pgrp: 'main:donate:wps:signup:signupform',\n page: 'main:donate:wps:signup:signupform:web::',\n tmpl: 'main:donate:wps:signup:signupform:web::',\n },\n ONBOARDING_GUEST_SUCCESS_PAGE: {\n pgrp: 'main:donate:wps:signup:success',\n page: 'main:donate:wps:signup:success:web::',\n tmpl: 'main:donate:wps:signup:success:web::',\n },\n ONBOARDING_GUEST_PENDING_PAGE: {\n pgrp: 'main:donate:wps:signup:pending',\n page: 'main:donate:wps:signup:pending:web::',\n tmpl: 'main:donate:wps:signup:pending:web::',\n },\n MEMBER_SUCCESS_PAGE: {\n url: '/donate/member/confirmation',\n pgrp: 'main:donate:wps:member:success',\n page: 'main:donate:wps:member:success:web::',\n tmpl: 'main:donate:wps:member:success:web::',\n },\n MEMBER_PENDING_PAGE: {\n url: '/donate/member/pending',\n pgrp: 'main:donate:wps:member:pending',\n page: 'main:donate:wps:member:pending:web::',\n tmpl: 'main:donate:wps:member:pending:web::',\n },\n MEMBER_FAILURE_PAGE: {\n url: '/donate/member/error',\n pgrp: 'main:donate:wps:member:failure',\n page: 'main:donate:wps:member:failure:web::',\n tmpl: 'main:donate:wps:member:failure:web::',\n },\n RECURRING_SUCCESS_PAGE: {\n url: '/donate/member/confirmation-rec',\n pgrp: 'main:donate:wps:member:success',\n page: 'main:donate:wps:member:success:web::',\n tmpl: 'main:donate:wps:member:success:web::',\n },\n MEMBER_REVIEW_PAGE: {\n url: '/donate/member',\n pgrp: 'main:donate:wps:member:review',\n page: 'main:donate:wps:member:review:web::',\n tmpl: 'main:donate:wps:member:review:web::',\n },\n CROSS_BORDER_PAGE: {\n url: '/donate/guest/crossborder',\n pgrp: 'main:donate:wps:guest:crossborder',\n page: 'main:donate:wps:guest:crossborder:web::',\n tmpl: 'main:donate:wps:guest:crossborder:web::',\n },\n THREE_DS_IFRAME: {\n pgrp: 'main:donate:wps:guest:3DS-challenge',\n page: 'main:donate:wps:guest:3DS-challenge:::',\n tmpl: 'main:donate:wps:guest:3DS-challenge:::',\n },\n THREE_DS_IFRAME_ONBRD: {\n pgrp: 'main:onbrd:signup:donate:3DS-challenge',\n page: 'main:onbrd:signup:donate:3DS-challenge:::',\n tmpl: 'main:onbrd:signup:donate:3DS-challenge:::',\n },\n UNILATERAL_ERROR_PAGE: {\n pgrp: 'main:donate:wps:guest:unilateral',\n page: 'main:donate:wps:guest:unilateral:web::',\n tmpl: 'main:donate:wps:guest:unilateral:web::',\n },\n CAPTURE_ORDER_PAGE: {\n pgrp: 'main:donate:wps:{flow}:captureOrder',\n page: 'main:donate:wps:{flow}:captureOrder:web::',\n tmpl: 'main:donate:wps:{flow}:captureOrder:web::',\n },\n WEBSCR_ERROR_PAGE: {\n pgrp: 'main:donate:wps::error',\n page: 'main:donate:wps::error:web::',\n tmpl: 'main:donate:wps::error:web::',\n },\n GENERIC_ERROR_PAGE: {\n pgrp: 'main:donate:wps:generic:failure',\n page: 'main:donate:wps:generic:failure:web::',\n tmpl: 'main:donate:wps:generic:failure:web::',\n },\n CRS_ERROR_PAGE: {\n pgrp: 'main:donate:wps:crs:failure',\n page: 'main:donate:wps:crs:failure:web::',\n tmpl: 'main:donate:wps:crs:failure:web::',\n },\n};\n\nexport const CPL_PAGE_SPEC = {\n LANDING_PAGE: {\n pgrp: 'main:donate:wps::landing:landingPageComponent',\n page: 'main:donate:wps::landing:landingPageComponent:web::',\n action: 'landing_page_loaded',\n uicomp: 'landingPageComponent',\n uitype: 'page',\n },\n GUEST_FORM: {\n pgrp: 'main:donate:wps:guest:guestform:guestFormComponent',\n page: 'main:donate:wps:guest:guestform:guestFormComponent:web:',\n action: 'guest_form_loaded',\n uicomp: 'guestForm',\n },\n TESLA_GUEST_FORM: {\n pgrp: 'main:onbrd:signup:donate:guestFormComponent',\n page: 'main:onbrd:signup:donate:guestFormComponent:web:',\n action: 'tesla_form_loaded',\n uicomp: 'teslaForm',\n },\n};\n\nexport const LINK_NAME = {\n ACCOUNT_HOME: 'myAccount',\n ANONYMOUS_CHECKBOX: 'anonymous_checkbox',\n ANONYMOUS_TOOLTIP: 'anonymousTooltip',\n BACK: 'back',\n CANCEL: 'cancel',\n CHANGE_COUNTRY: 'changeCountry',\n COVER_FEE_CHECKBOX: 'cover_fee_checkbox',\n CURRENCY_CONVERSION: 'showCurrencyConversionModal',\n DONE: 'done',\n GUEST_FORM_PAYMENT_SUBMIT_BUTTON: 'donate',\n NOT_YOU: 'not-you',\n NOTE_PAD: 'note_pad',\n ONBOARDING_FORM_PAYMENT_SUBMIT_BUTTON: 'guestPaymentBtn',\n PRESET_AMOUNT: 'presetAmount',\n PROGRAM_SELECTED: 'campaignSelected',\n RECURRING_CHECKBOX: 'recurringChkBx',\n REPORT_LINK: 'reportInappropriateContent',\n RETURN: 'return_to_merchant',\n SOCIAL_SHARE: 'social_share',\n SOCIAL_SHARE_DISMISS: 'close_social_share',\n UNIFIED_LOGIN: 'requestUnifiedLogin',\n VOUCHER: 'voucher',\n VOUCHER_PRINT: 'voucherprint',\n VOUCHER_SHARE: 'vouchershare',\n LIKE: 'like',\n UNLIKE: 'unlike',\n};\n\nexport const FPTI_TAGS = {\n ACCOUNT_TYPE: 'account_type',\n ACTION: 'action',\n AMOUNT: 'amount',\n AMOUNT_EDIT_ALLOWED: 'allow_amount_edit',\n AUTH_STATE: 'authState',\n CAMPAIGN: 'campaign',\n CAMPAIGN_ID: 'campaign_id',\n CHALLENGE_END_TIME: 'challenge_end_time',\n CHALLENGE_START_TIME: 'challenge_start_time',\n CHALLENGE_STATUS: 'challenge_status', // for 3ds\n CHARITY_NAME: 'charityname',\n CHECKBOX: 'checkbox',\n COUNTRY: 'country',\n CONTINGENCY_RESOLVED: 'contingency_resolved',\n CURRENCY: 'currency',\n DONOR_IP_COUNTRY: 'acct_cntry',\n EVENT_NAME: 'event_name',\n ECCD: 'eccd', // error code\n ENABLED_FREQUENCIES: 'enabled_frequencies',\n ERPG: 'erpg', // error message\n ERR_CODE: 'error_code',\n ERR_DESC: 'error_desc',\n ERR_FIELD: 'erfd',\n EXPERIMENT_ID: 'xe',\n FEE_AMOUNT: 'fee_amt',\n FEE_CURRENCY: 'fee_curr',\n FEE_PAYER: 'fee_payer',\n FI_NETWORK: 'sel_fmx_tp', // payment card network\n FI_ID: 'fi_id',\n FI_OPERATION: 'fi_operation',\n FI_TYPE: 'fi_type', // payment card type\n FLOW: 'flow',\n LINK: 'link',\n MODULE: 'module',\n LINK_NAME: 'link_name',\n NONANONYMOUS: 'nonanonymous',\n NPID: 'crid', // non-profit ID\n NOTE_ALLOWED: 'is_allow_note',\n NOTE_ADDED: 'has_note',\n INTEGRATION_IDENTIFIER: 'integration_identifier',\n IS_CVV_SENT: 'is_cvv_sent',\n IS_RECURRING: 'is_recurring',\n IS_SIGNUP: 'user_opts_signup',\n IS_3DS_ELIGIBLE: 'is_3ds_eligible',\n ORDER_ID: 'order_id',\n OFFER_TYPE: 'offer_type',\n PAGE_LINK: 'pgln',\n PAGE_NAME: 'page',\n PAGE_GROUP: 'pgrp',\n PAGE_GROUP_LINK: 'pglk',\n PRODUCT: 'product',\n RESP_DURATION: 'resp_duration', // for 3ds\n SPACE_KEY: 'space_key',\n SCREEN: 'screen',\n SELECTED_PRESET_BUTTON_ID: 'opsel',\n SENDER_ID: 'encr_cust_id',\n SELECTED_FREQUENCY: 'selected_frequency',\n STATUS: 'status',\n STATUS_CODE: 'status_code',\n PROCESS_STATUS: 'process_status',\n SWITCH: 'switch',\n TOKEN: 'token',\n THREE_DS_DCC_START_TIME: 'dcc_start_time',\n THREE_DS_DCC_END_TIME: 'dcc_end_time',\n THREE_DS_LOOKUP_END_TIME: 'lookup_end_time',\n THREE_DS_LOOKUP_START_TIME: 'lookup_start_time',\n THREE_DS_REF_ID: '3ds_ref_id',\n THREE_DS_RESP_DURATION: 'resp_duration',\n THREE_DS_SPINNER_START_TIME: 'spinner_start_time',\n THREE_DS_SPINNER_END_TIME: 'spinner_end_time',\n THREE_DS_VERSION: '3ds_version',\n TREATMENT_ID: 'xt',\n TXN_ID: 'trid',\n UI_TYPE: 'ui_type', // full_page/popup/popup_blocked\n URL: 'url',\n UOB_BUNDLE_TYPE: 'onboardingBundleType',\n VERSION: 'version',\n FEATURE: 'feature',\n SOURCE: 'source',\n UPDATE_ID: 'update_id',\n DISMISS_METHOD: 'dismiss_method',\n COUNT: 'count',\n STATE: 'state',\n AMOUNT_TYPE: 'amttyp',\n ENCR_RCVR_ID: 'encr_rcvr_id',\n MERCHANT_EMAIL: 'merchant_email',\n NP_ID: 'np_id',\n RECURRING_VISUAL_EXPERIMENT: 'recurring_visual_experiment',\n};\n\nexport const CLOSE_SHEET_REASONS = {\n BACKDROP_CLICK: 'backdropClick',\n CLOSE_BUTTON: 'closeButton',\n ESC: 'ESC',\n SWIPE_DOWN: 'swipeDown',\n};\n\nexport const DISMISS_METHODS = {\n CLOSE: 'close',\n BACKGROUND: 'background',\n};\n\nexport const LOADING_STATES = {\n POPULATED: 'populated',\n EMPTY: 'empty',\n};\n\nexport const FEATURES = {\n CTF: 'CTF',\n RECURRING: 'recurring',\n PRESET: 'preset',\n ANONYMOUS: 'anonymous',\n CHARITY_NOTE: 'charityNote',\n DONATION_AMOUNT_EDITABLE: 'donationAmountEditable',\n GUEST: 'guest',\n GIFT_AID: 'giftAid',\n MAILING_ADDRESS: 'mailingAddress',\n SOCIAL_SHARE_PREFERENCE: 'socialSharePreference',\n};\n\nexport const FPTI_SPEC = {\n CONFIRMATION_PAGE_SET_FAV_CHARITY_MODULE_SHOWN: {\n event_name: 'donate_donor_view_post_donation_set_fav_charity_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_CREATE_FUNDRAISER_MODULE_SHOWN: {\n event_name:\n 'donate_donor_view_post_donation_create_fundraiser_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_INSIGHTS_MODULE_SHOWN: {\n event_name: 'donate_donor_view_post_donation_insights_module_shown',\n data: {\n ...IMPRESSION,\n },\n },\n CONFIRMATION_PAGE_SET_FAV_CHARITY_SUCCESS: {\n event_name: 'donate_donor_view_post_donation_set_favorite_charity_success',\n data: {\n ...IMPRESSION,\n },\n },\n DONATE_ADROIT_REDIRECTION_FOR_CIP_VERIFICATION: {\n event_name: 'donate_adroit_redirection_for_cip_verification',\n data: {\n ...ACTIVITY,\n },\n },\n};\n\nexport const FPTI_VALUES = {\n SPACE_KEY_ID: 'SKBWIZ',\n};\n","import React from 'react';\nimport { IconButton, CloseIcon } from '@paypalcorp/pp-react';\nimport { closeWindow, isInContext } from '../utility/inContextDonation';\nimport TemplateData from '../utility/getTemplateData';\nimport { getDismissEventName } from '../utility/productIntegrationUtils';\nimport { Message } from '@paypalcorp/worldready-react';\nimport PropTypes from 'prop-types';\nimport { trackLinkClick } from '../fpti/fpti';\nimport { LINK_NAME } from '../fpti/fptiConstants';\n\nexport default function CloseButton(props) {\n const handleClose = () => {\n trackLinkClick(LINK_NAME.CANCEL, {\n eventName: getDismissEventName(),\n });\n if (isInContext()) {\n closeWindow();\n return;\n }\n window.location.href = TemplateData.charityCancelUrl;\n };\n\n return (\n \n \n \n );\n}\n\nCloseButton.propTypes = {\n isDarkButton: PropTypes.bool,\n};\n","import React, { useEffect } from 'react';\nimport { HeadingText, BodyText, Link, Button } from '@paypalcorp/pp-react';\nimport CloseButton from '../../components/CloseButton';\nimport {\n isInContext,\n isMobileOrInContext,\n} from '../../utility/inContextDonation';\nimport withTheme from '../../components/withTheme';\nimport { isExternalFlow } from '../../utility/productIntegrationUtils';\nimport { addClass } from '../../utility/domUtils';\n\nfunction FullPageError({\n title,\n body,\n body2,\n linkLabel,\n handleLinkClick,\n buttonLabel,\n handleButtonClick,\n showCloseButton = false,\n centerBody = false,\n}) {\n useEffect(() => {\n if (isInContext()) {\n addClass('#mainWrapper header.donate_global_nav', ['hide-header']);\n }\n }, []);\n return (\n \n {isExternalFlow() && showCloseButton && }\n \n {title}\n \n {body ? (\n \n {body}\n \n ) : null}\n {body2 ? (\n \n {body2}\n \n ) : null}\n\n {buttonLabel ? (\n \n ) : null}\n\n {linkLabel ? (\n \n {linkLabel}\n \n ) : null}\n \n );\n}\n\nexport default withTheme(FullPageError);\n","import AppDispatcher from '../dispatcher/AppDispatcher';\nimport assign from 'object-assign';\nimport { EventEmitter } from 'events';\nimport * as DonationConstants from '../utility/constants';\n\nconst CHANGE_EVENT = 'change';\n\nconst _alldata = {}; // collection of donation data\n\n/**\n * @param {string} text The content donation\n */\nfunction create(field, value) {\n _alldata[field] = value;\n}\n\nvar DonationStore = assign({}, EventEmitter.prototype, {\n emitChange: function () {\n this.emit(CHANGE_EVENT);\n },\n\n getAllData: function () {\n return _alldata;\n },\n\n getDonationAmount: function () {\n if (_alldata.amount) {\n return _alldata.amount.toString();\n }\n return _alldata.amount;\n },\n\n getDonationSymbol: function () {\n return _alldata.symbol;\n },\n\n getDonationCode: function () {\n return _alldata.code;\n },\n\n getFormatedAmount: function () {\n return _alldata.formatedAmount;\n },\n\n getDonationNote: function () {\n return _alldata.note;\n },\n\n getDonationRecurring: function () {\n return _alldata.recurring;\n },\n\n getSelectedRecurringFrequency: function () {\n return _alldata.selectedRecurringFrequency;\n },\n\n getRecurringModalStatus: function () {\n return _alldata.recurringModalStatus;\n },\n\n getAnonymousStatus: function () {\n return _alldata.anonymousStatus;\n },\n\n getCoverFeeOptInStatus: function () {\n return _alldata.coverFee;\n },\n\n getFeeAmount: function () {\n return _alldata.feeAmount;\n },\n\n getFormatedFeeAmount: function () {\n return _alldata.formatedFeeAmount;\n },\n\n getAmountBeforeFee: function () {\n return _alldata.amountBeforeFee;\n },\n\n getConfirmation: function () {\n return _alldata.confirmation;\n },\n\n getPostBackData: function () {\n return _alldata.postBackData;\n },\n\n getCurrentPage: function () {\n return _alldata.currentPage;\n },\n\n getServerErros: function () {\n return _alldata.serverErrors;\n },\n\n getPaymentError: function () {\n return _alldata.paymentError;\n },\n\n getSignUpError: function () {\n return _alldata.signUpError;\n },\n\n getFundingOptions: function () {\n return _alldata.fundingOptions;\n },\n\n getEmail: function () {\n return _alldata.email;\n },\n\n getBillingAddress: function () {\n return _alldata.billingAddress;\n },\n\n getUserCountry: function () {\n return _alldata.country;\n },\n\n getDonationAmountType: function () {\n return _alldata.donationAmountType;\n },\n\n getGiftaidItFlagStatus: function () {\n return _alldata.giftAidItFlag;\n },\n\n getShareAddress: function () {\n return _alldata.shareAddress;\n },\n\n getAddCardError: function () {\n return _alldata.addCardError;\n },\n\n getGiftAidItExtraAmount: function () {\n return DonationConstants.DONATE_GIFTAID_IT_EXTRA_AMOUNT;\n },\n\n getSelectedProgram: function () {\n return _alldata.selectedProgram;\n },\n\n getSelectedPresetButtonId: function () {\n return _alldata.selectedPresetButtonId;\n },\n\n getCardSpec: function () {\n return _alldata.cardSpec;\n },\n\n getFormData: function () {\n return _alldata.formData;\n },\n\n getThreeDSContingency: function () {\n return _alldata.threeDSContingency;\n },\n\n getLanguageSelectorState: function () {\n return _alldata.languageSelectorState;\n },\n\n getOrderStatus: function () {\n return _alldata.orderStatus;\n },\n\n getPPCCStatus: function () {\n return _alldata.ppccStatus;\n },\n\n dispatcherIndex: AppDispatcher.register(function (payload) {\n var action = payload.action;\n var amount,\n recurring,\n selectedRecurringFrequency,\n recurringModalStatus,\n note,\n symbol,\n code,\n formatedAmount,\n country,\n confirmation,\n postBackData,\n currentPage,\n serverErrors,\n paymentError,\n signUpError,\n fundingOptions,\n email,\n billingAddress,\n giftAidItFlag,\n coverFee,\n feeAmount,\n formatedFeeAmount,\n amountBeforeFee,\n anonymousStatus,\n orderStatus;\n\n switch (action.actionType) {\n case DonationConstants.CHANGE_AMOUNT:\n amount = action.item.amount.trim();\n create('amount', amount);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_SYMBOL:\n symbol = action.item.symbol.trim();\n if (symbol !== '') {\n create('symbol', symbol);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_CODE:\n code = action.item.code.trim();\n if (code !== '') {\n create('code', code);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FORMATED_AMOUNT:\n formatedAmount = action.item.formatedAmount;\n if (formatedAmount !== '') {\n create('formatedAmount', formatedAmount);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_RECURRING_FREQUENCY:\n selectedRecurringFrequency =\n action.item.selectedRecurringFrequency?.trim();\n if (selectedRecurringFrequency !== '') {\n create('selectedRecurringFrequency', selectedRecurringFrequency);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_RECURRING:\n recurring = action.item.recurring.trim();\n if (recurring !== '') {\n create('recurring', recurring);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_ANONYMOUS_STATUS:\n anonymousStatus = action.item.anonymousStatus.trim();\n if (anonymousStatus !== '') {\n create('anonymousStatus', anonymousStatus);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_COVER_FEE:\n coverFee = action.item.coverFee.trim();\n if (coverFee !== '') {\n create('coverFee', coverFee);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FEE_AMOUNT:\n feeAmount = action.item.feeAmount;\n if (feeAmount !== '') {\n create('feeAmount', feeAmount);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_FORMATED_FEE_AMOUNT:\n formatedFeeAmount = action.item.formatedFeeAmount;\n create('formatedFeeAmount', formatedFeeAmount);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_AMOUNT_BEFORE_FEE:\n amountBeforeFee = action.item.amountBeforeFee;\n create('amountBeforeFee', amountBeforeFee);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.RP_MODAL_CLOSED:\n recurringModalStatus = action.item.recurringModalStatus.trim();\n if (recurringModalStatus !== '') {\n create('recurringModalStatus', recurringModalStatus);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_NOTE:\n note = action.item.note.trim();\n if (note !== '') {\n create('note', note);\n DonationStore.emitChange();\n } else {\n create('note', '');\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.CHANGE_COUNTRY:\n country = action.item.country.trim();\n if (country !== '') {\n create('country', country);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_CONFIRMATION:\n confirmation = action.item.confirmation;\n if (confirmation !== '') {\n create('confirmation', confirmation);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.POST_BACK_DATA:\n postBackData = action.item.postBackData;\n if (postBackData !== '') {\n create('postBackData', postBackData);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_CURRENT_PAGE:\n currentPage = action.item.currentPage;\n if (currentPage !== '') {\n create('currentPage', currentPage);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_SERVER_ERRORS:\n serverErrors = action.item.serverErrors;\n if (serverErrors !== '') {\n create('serverErrors', serverErrors);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.PAYMENT_ERROR:\n paymentError = action.item.paymentError;\n if (paymentError !== '') {\n create('paymentError', paymentError);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_SIGN_UP_ERROR:\n signUpError = action.item.signUpError;\n if (signUpError !== '') {\n create('signUpError', signUpError);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.FUNDING_OPTIONS:\n fundingOptions = action.item.fundingOptions;\n if (fundingOptions !== '') {\n create('fundingOptions', fundingOptions);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.EMAIL:\n email = action.item.email;\n if (email !== '') {\n create('email', email);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.BILLING_ADDRESS:\n billingAddress = action.item.billingAddress;\n if (billingAddress !== '') {\n create('billingAddress', billingAddress);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_DONATION_AMOUNT_TYPE:\n create('donationAmountType', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.GIFT_AID_IT:\n giftAidItFlag = action.item.giftAidItFlag;\n create('giftAidItFlag', giftAidItFlag);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_SHARE_ADDRESS:\n create('shareAddress', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.ADD_CARD_ERROR:\n create('addCardError', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_SELECTED_PROGRAM:\n create('selectedProgram', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_SELECTED_PRESET_BUTTON_ID:\n create('selectedPresetButtonId', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.CHANGE_CARD_SPEC:\n create('cardSpec', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.SAVE_FORM_DATA:\n create('formData', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_THREEDS_DATA:\n create('threeDSContingency', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.SHOW_LANGUAGE_SELECTOR:\n create('languageSelectorState', action.item);\n DonationStore.emitChange();\n break;\n\n case DonationConstants.UPDATE_ORDER_STATUS:\n orderStatus = action.item.orderStatus.trim();\n if (orderStatus !== '') {\n create('orderStatus', action.item);\n DonationStore.emitChange();\n }\n break;\n\n case DonationConstants.UPDATE_PPCC_STATUS:\n create('ppccStatus', action.item);\n DonationStore.emitChange();\n break;\n\n default:\n break;\n }\n\n return true; // No errors. Needed by promise in Dispatcher.\n }),\n});\n\nAppDispatcher.register((payload) => {\n return true;\n});\n\nexport default DonationStore;\n","const keyMirror = require('keymirror');\n\nmodule.exports = {\n CHANGE_AMOUNT: 'CHANGE_AMOUNT',\n CHANGE_SYMBOL: 'CHANGE_SYMBOL',\n CHANGE_CODE: 'CHANGE_CODE',\n CHANGE_RECURRING: 'CHANGE_RECURRING',\n CHANGE_RECURRING_FREQUENCY: 'CHANGE_RECURRING_FREQUENCY',\n CHANGE_COVER_FEE: 'CHANGE_COVER_FEE',\n CHANGE_FEE_AMOUNT: 'CHANGE_FEE_AMOUNT',\n CHANGE_FORMATED_FEE_AMOUNT: 'CHANGE_FORMATED_FEE_AMOUNT',\n CHANGE_AMOUNT_BEFORE_FEE: 'CHANGE_AMOUNT_BEFORE_FEE',\n CHANGE_ANONYMOUS_STATUS: 'CHANGE_ANONYMOUS_STATUS',\n RP_MODAL_CLOSED: 'RP_MODAL_CLOSED',\n GIFT_AID_IT: 'GIFT_AID_IT',\n CHANGE_FORMATED_AMOUNT: 'CHANGE_FORMATED_AMOUNT',\n\n CHANGE_NOTE: 'CHANGE_NOTE',\n\n CHANGE_COUNTRY: 'CHANGE_COUNTRY',\n\n CHANGE_CARD_NUMBER: 'CHANGE_CARD_NUMBER',\n CHANGE_EXP_DATE: 'CHANGE_EXP_DATE',\n CHANGE_SECURITY_CODE: 'CHANGE_SECURITY_CODE',\n CHANGE_CARD_SPEC: 'CHANGE_CARD_SPEC',\n\n CHANGE_FIRST_NAME: 'CHANGE_FIRST_NAME',\n CHANGE_LAST_NAME: 'CHANGE_LAST_NAME',\n\n CHANGE_ADDRESS: 'CHANGE_ADDRESS',\n\n CHANGE_PHONE: 'CHANGE_PHONE',\n CHANGE_EMAIL: 'CHANGE_EMAIL',\n\n CHANGE_PASSWORD: 'CHANGE_PASSWORD',\n\n SHOW_LANGUAGE_SELECTOR: 'SHOW_LANGUAGE_SELECTOR',\n\n UPDATE_CONFIRMATION: 'UPDATE_CONFIRMATION',\n\n POST_BACK_DATA: 'POST_BACK_DATA',\n\n UPDATE_CURRENT_PAGE: 'UPDATE_CURRENT_PAGE',\n\n UPDATE_SERVER_ERRORS: 'UPDATE_SERVER_ERRORS',\n\n PAYMENT_ERROR: 'PAYMENT_ERROR',\n\n UPDATE_SIGN_UP_ERROR: 'UPDATE_SIGN_UP_ERROR',\n\n FUNDING_OPTIONS: 'FUNDING_OPTIONS',\n\n EMAIL: 'EMAIL',\n\n BILLING_ADDRESS: 'BILLING_ADDRESS',\n\n UPDATE_DONATION_AMOUNT_TYPE: 'UPDATE_DONATION_AMOUNT_TYPE',\n\n ENABLE_PRESET_AMOUNTS: 'ENABLE_PRESET_AMOUNTS',\n\n CHANGE_SHARE_ADDRESS: 'CHANGE_SHARE_ADDRESS',\n\n ADD_CARD_ERROR: 'ADD_CARD_ERROR',\n\n UPDATE_SELECTED_PROGRAM: 'UPDATE_SELECTED_PROGRAM',\n\n SAVE_FORM_DATA: 'SAVE_FORM_DATA',\n\n UPDATE_THREEDS_DATA: 'UPDATE_THREEDS_DATA',\n\n UPDATE_SELECTED_PRESET_BUTTON_ID: 'UPDATE_SELECTED_PRESET_BUTTON_ID',\n\n UPDATE_ORDER_STATUS: 'UPDATE_ORDER_STATUS',\n\n UPDATE_PPCC_STATUS: 'UPDATE_PPCC_STATUS',\n\n EMAIL_REX:\n /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~]+(\\.[-!#$%&'*+\\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,\n\n DEFAULT_CARD_SPEC: {\n type: 'card',\n fields: {\n ccNumber: {\n required: true,\n pattern: '4[0-9]{12}(?:[0-9]{3})?',\n maxlength: 19,\n },\n expirationDate: {\n required: true,\n pattern: '(0[1-9]|1[012])[/]((20)[0-9]{2}|[0-9]{2})',\n maxlength: 7,\n },\n csc: {\n required: true,\n pattern: '[0-9]*',\n maxlength: 3,\n minlength: 3,\n },\n },\n },\n DONATE_GIFTAID_IT_EXTRA_AMOUNT: 1.25,\n\n PPGF_DISCLAIMER_TOUCHPOINT: 'Donate_PPGF_Disclaimers_Touchpoint',\n GN_CONTENT_TOUCHPOINT: 'Donate_GN_Content_Touchpoint',\n NNA_CONTENT_TOUCHPOINT: 'Donate_NNA',\n\n PRODUCT: {\n BRANDED_CAMPAIGN: 'BRANDED_CAMPAIGN',\n GENEROSITY_NETWORK: 'GENEROSITY_NETWORK',\n GENEROSITY_NETWORK_CHARITIES: 'GENEROSITY_NETWORK_CHARITIES',\n PP_FUNDRAISING: 'PP_FUNDRAISING',\n DONATE_BUTTON_CAMPAIGN: 'DONATE_BUTTON_CAMPAIGN',\n WPS_DONATION: 'WPS_DONATION',\n\n // externalIntegeration\n PAYPAL_FUNDRAISER_LISTED_CAMPAIGN: 'PAYPAL_FUNDRAISER_LISTED_CAMPAIGN',\n PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN: 'PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN',\n },\n\n // Post payment product type identifiers\n PRODUCT_TYPE: {\n DBUTTON: 'DBUTTON',\n DBUTTONC: 'DBUTTONC',\n SEND_MONEY_RECURRING_DONATION: 'SEND_MONEY_RECURRING_DONATION',\n DONATE_BUTTON: 'DONATE_BUTTON',\n },\n\n EVENT_NAME: {\n DW_GIVING_DONATE_SETUP_SCREEN_SHOWN: 'dw_giving_donate_setup_screen_shown',\n DW_GIVING_DONATE_SETUP_COMMENT_PRESSED:\n 'dw_giving_donate_setup_comment_pressed',\n DW_GIVING_DONATE_SETUP_NEXT_PRESSED: 'dw_giving_donate_setup_next_pressed',\n DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED:\n 'dw_giving_donate_setup_card_pressed',\n DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED:\n 'dw_giving_donate_setup_tooltip_pressed',\n DW_GIVING_DONATE_SETUP_TERMS_PRESSED:\n 'dw_giving_donate_setup_terms_pressed',\n DW_GIVING_DONATE_SETUP_DISMISS_PRESSED:\n 'dw_giving_donate_setup_dismiss_pressed',\n DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED:\n 'dw_giving_donate_setup_share_contact_check_pressed',\n DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED:\n 'dw_giving_donate_setup_share_contact_uncheck_pressed',\n DW_GIVING_GUEST_FORM_SCREEN_SHOWN: 'dw_giving_guest_form_screen_shown',\n DW_GIVING_GUEST_FORM_DONATE_PRESSED: 'dw_giving_guest_form_donate_pressed',\n DW_GIVING_GUEST_FORM_DISMISS_PRESSED:\n 'dw_giving_guest_form_dismiss_pressed',\n DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED:\n 'dw_giving_member_review_dismiss_pressed',\n DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED:\n 'dw_giving_payment_success_dismiss_pressed',\n DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED:\n 'dw_giving_payment_success_done_pressed',\n DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN:\n 'dw_giving_payment_success_screen_shown',\n DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN:\n 'dw_giving_payment_pending_screen_shown',\n DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED:\n 'dw_giving_payment_success_share_pressed',\n DW_GIVING_SHARE_SCREEN_SHOWN: 'dw_giving_share_screen_shown',\n DW_GIVING_SHARE_CHANNEL_PRESSED: 'dw_giving_share_channel_pressed',\n DW_GIVING_SHARE_DISMISS_PRESSED: 'dw_giving_share_dismiss_pressed',\n DW_GIVING_REDIRCT_SCREEN_SHOWN: 'dw_giving_redirct_screen_shown',\n DW_GIVING_REDIRCT_OPEN_PRESSED: 'dw_giving_redirct_open_pressed',\n DW_GIVING_REDIRCT_DISMISS_PRESSED: 'dw_giving_redirct_dismiss_pressed',\n DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED:\n 'dw_giving_failed_customer_interaction_occurred',\n DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED:\n 'donate_donor_view_landing_donate_pressed',\n DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED:\n 'donate_donor_view_embed_page_donate_with_paypal_pressed',\n DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED:\n 'donate_donor_view_embed_page_donate_with_card_pressed',\n DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED:\n 'donate_donor_view_embed_page_frequency_pressed',\n DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED:\n 'donate_donor_view_guest_form_donate_pressed',\n DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED:\n 'donate_donor_view_share_contact_check_pressed',\n DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED:\n 'donate_donor_view_share_contact_uncheck_pressed',\n DONATION_CONFIRMATION_PAGE_IMP:\n 'donate_donor_view_payment_success_screen_shown',\n DONATE_THREE_DS_DDC_START: 'donate_three_ds_ddc_start',\n DONATE_THREE_DS_DDC_COMPLETE: 'donate_three_ds_ddc_complete',\n DONATE_THREE_DS_DDC_FAILURE: 'donate_three_ds_ddc_failure',\n DONATE_THREE_DS_LOOKUP_START: 'donate_three_ds_lookup_start',\n DONATE_THREE_DS_LOOKUP_COMPLETE: 'donate_three_ds_lookup_complete',\n DONATE_THREE_DS_IFRAME_SHOWN: 'donate_three_ds_iframe_shown',\n DONATE_THREE_DS_PROOCEED_TO_PAYMENT: 'donate_three_ds_proceed_to_payment',\n DONATE_LANDING_SCREEN_SHOWN: 'donate_donor_view_landing_screen_shown',\n DONATE_REVIEW_SCREEN_SHOWN: 'donate_donor_view_payment_review_screen_shown',\n DONATE_GUEST_FORM_SCREEN_SHOWN: 'donate_donor_view_guest_form_screen_shown',\n DONATE_SUCCESS_SHARE_MESSAGE:\n 'donate_donor_view_payment_success_share_pressed',\n DONATE_SUCCESS_MERCHANT_SITE_PRESSED:\n 'donate_donor_view_payment_success_merchant_site_pressed',\n DONATE_LANDING_MERCHANT_SITE_PRESSED:\n 'donate_donor_view_landing_merchant_site_pressed',\n DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK:\n 'donate_donor_view_payment_review_donate_pressed',\n DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN:\n 'donate_donor_view_generic_social_share_screen_shown',\n DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN:\n 'donate_donor_view_match_social_share_screen_shown',\n DONATE_LANDING_UPDATES_MODULE_SHOWN:\n 'donate_donor_view_landing_updates_module_shown',\n DONATE_LANDING_UPDATES_READ_MORE_PRESSED:\n 'donate_donor_view_landing_updates_read_more_pressed',\n DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED:\n 'donate_donor_view_landing_updates_show_more_pressed',\n DONATE_LANDING_UPDATES_LIKE_PRESSED:\n 'donate_donor_view_landing_updates_like_pressed_start',\n DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED:\n 'donate_donor_view_landing_updates_like_pressed_completed',\n DONATE_LANDING_UPDATES_LIST_SHOWN:\n 'donate_donor_view_updates_list_screen_shown',\n DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED:\n 'donate_donor_view_updates_list_like_pressed',\n DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED:\n 'donate_donor_view_updates_list_selection_pressed',\n DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED:\n 'donate_donor_view_updates_list_dismiss_pressed',\n DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN:\n 'donate_donor_view_updates_detail_screen_shown',\n DONATE_LANDING_UPDATES_DETAIL_LIKE_PRESSED:\n 'donate_donor_view_updates_detail_like_pressed',\n DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED:\n 'donate_donor_view_updates_detail_dismiss_pressed',\n DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN:\n 'donate_donor_view_updates_login_screen_shown',\n DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED:\n 'donate_donor_view_updates_login_log_in_pressed',\n DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED:\n 'donate_donor_view_updates_login_sign_up_pressed',\n DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED:\n 'donate_donor_view_updates_login_dismiss_pressed',\n DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN:\n 'donate_donor_view_updates_loading_error_shown',\n DONATE_LANDING_UPDATES_LOADING_ERROR_RETRY_PRESSED:\n 'donate_donor_view_updates_loading_error_retry_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_SET_FAV_CHARITY_MODULE_PRESSED:\n 'donate_donor_view_post_donation_set_fav_charity_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODULE_PRESSED:\n 'donate_donor_view_post_donation_create_fundraiser_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_INSIGHTS_MODULE_PRESSED:\n 'donate_donor_view_post_donation_insights_module_pressed',\n DONATE_DONOR_VIEW_POST_DONATION_SET_FAVORITE_CHARITY_ERROR:\n 'donate_donor_view_post_donation_set_favorite_charity_error',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_SHOWN:\n 'donate_donor_view_post_donation_create_fundraiser_modal_shown',\n DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_PRESSED:\n 'donate_donor_view_post_donation_create_fundraiser_modal_pressed',\n DONATE_DONOR_VIEW_REPORT_MERCHANT_PRESSED:\n 'donate_donor_view_report_merchant_pressed',\n },\n\n SCREEN_NAME: {\n DW_GIVING_DONATE_SETUP_SCREEN: 'dw_giving_donate_setup_screen',\n DW_GIVING_DONATE_GUEST_FORM_SCREEN: 'dw_giving_donate_guest_form_screen',\n },\n\n FPTI_PRODUCT: 'dw_giving',\n KEY_DOWN: {\n TAB: 9,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n SPACE: 32,\n ENTER: 13,\n },\n\n AU_CRS: {\n STATUS: {\n ABORTED: 'ABORTED',\n FAILURE: 'FAILURE',\n SUCCESS: 'SUCCESS',\n },\n ABORTED_STATUS_CODE: ['DOC_UPLOAD_PENDING', 'INFO_NOT_COLLECTED'],\n FAILURE_STATUS_CODE: [\n 'INVALID_REQUEST',\n 'NOT_APPLICABLE',\n 'SERVICE_UNAVAILABLE',\n 'THIRD_PARTY_VERIFICATION_FAIL',\n 'UNAUTHORIZED',\n ],\n SUCCESS_STATUS_CODE: ['COMPLETED', 'VERIFIED'],\n SINGLE_TAX_RESIDENCY: 'tax_inside_legal_country',\n MULTI_TAX_RESIDENCY: 'tax_outside_legal_country',\n },\n ALLOWED_IMAGE_TYPES: [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/png',\n 'image/bmp',\n ],\n MAX_IMAGE_SIZE: 12582912,\n KILOBYTE: 1024,\n MEGABYTE: 1048576,\n BTN_IMAGE_MAX_FILE_SIZE: 2000000, // 2MB;\n ALLOWED_FILE_EXTENSIONS: ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'tiff', 'tif'],\n IMG_SCALE_SIZE: {\n WIDTH_STEP_1: 300,\n WIDTH_BANNER: 750,\n WIDTH_LOGO: 400,\n WIDTH_CAMPAIGN: 3000,\n },\n INSTRUMENT_TYPES: {\n HOLDING: 'HOLDING',\n PAYMENT_CARD: 'PAYMENT_CARD',\n PAYMENT_TOKEN: 'PAYMENT_TOKEN',\n BANK_ACCOUNT: 'BANK_ACCOUNT',\n CREDIT: 'CREDIT',\n UNKNOWN: 'UNKNOWN',\n },\n PAYMENT_CARDS: keyMirror({\n VISA: null,\n MASTERCARD: null,\n MASTER_CARD: null,\n MAESTRO: null,\n AMEX: null,\n DISCOVER: null,\n JCB: null,\n CHINA_UNION_PAY: null,\n }),\n CDN_HOST_NAME: 'https://www.paypalobjects.com',\n MERCHANT_PPCC_CONFIRMED_STATUS: 'CONFIRMED',\n FULL: 'CTRL',\n VARIANT_VALUEPROP_1: 'TRMT_1',\n VARIANT_VALUEPROP_2: 'TRMT_2',\n VARIANT_VALUEPROP_3: 'TRMT_3',\n APP_ID: '321983581337375',\n ORGANIZER_UPDATES: {\n INITIAL_UPDATES_COUNT: 3, // initial number of updates to show on overview page\n MAX_UPDATES_PER_PAGE: 30, // max updates returned by FRS API per page\n MAX_CHARACTERS_SUBJECT: 50, // max number of characters in the subject of an update\n MAX_ORGANIZER_UPDATES: 200, // max number of updates allowed for an account\n ACTIONS: {\n SHOW_UPDATE_DETAIL_VIEW: 'showUpdateDetailView',\n SHOW_UPDATE_LIST: 'showUpdatesList',\n ORGANIZER_UPDATE_SINGLE_UPDATE_ERROR: 'showSingleUpdateError',\n },\n },\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n DNW_UNHANDLED_ERROR: 'DNW_UNHANDLED_ERROR',\n POST_DONATION_MODULES: {\n SET_FAVORITE_CHARITY: 'SET_FAVORITE_CHARITY',\n CREATE_FUNDRAISER: 'CREATE_FUNDRAISER',\n GIVING_SUMMARY: 'GIVING_SUMMARY',\n SHARE: 'SHARE',\n },\n};\n","import { fetch as fetchPolyfill } from 'whatwg-fetch';\nimport 'consumerweb-shim';\n\nexport const polyfillFetch = (url, options) => {\n return fetchPolyfill(url, options);\n};\n","import dompurify from 'dompurify';\nimport { polyfillFetch } from './polyfillFetch';\n\n/**\n * This will take a node and select the given range of text from start to end in a\n * way that works for iOS\n * @param {HTMLInputElement} node - the input to select the text in\n * @param {Number} start - the index to start the selection\n * @param {Number} end - the index to end the selection\n */\nexport function selectRangeOfText(node, start, end) {\n // select all the text, but do it on the next tick because iOS has issues otherwise\n setTimeout(() => {\n // we're using setSelectionRange rather than select because select doesn't work with iOS\n node.setSelectionRange(start, end);\n });\n}\n\n/**\n * This moves the cursor position to the end of the text in the input node in a way\n * that works on iOS\n * @param {HTMLInputElement} node - the input to set the cursor position in\n */\nexport function moveCursorToTheEnd(node) {\n const { length } = node.value;\n node.setSelectionRange(length, length);\n}\n\nexport function sanitizeInPlace(node) {\n if (!node) return null;\n return dompurify.sanitize(node, { IN_PLACE: true });\n}\n\nexport function sanitizeURL(url = '') {\n const dirtyNode = document.createElement('a');\n dirtyNode.setAttribute('href', url);\n const clean = sanitizeInPlace(dirtyNode);\n return clean?.getAttribute('href');\n}\n\n/**\n * Sanitizes HTML\n */\nexport function sanitizeOrgName(input) {\n try {\n return dompurify\n .sanitize(input)\n .replace(//g, '>');\n } catch (e) {\n return '';\n }\n}\n\n/**\n * Sanitizes HTML\n */\nexport function sanitize(input) {\n try {\n return escapeHtml(dompurify.sanitize(input));\n } catch (e) {\n return '';\n }\n}\n\nfunction escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * This function shows the hidden element\n * @param {string} selector - element selector\n * @param {string} [display] - display property value\n */\nexport function show(selector, display = 'block') {\n const elementsToShow = document.querySelectorAll(selector);\n for (let i = 0; i < elementsToShow.length; i++) {\n elementsToShow[i].style.display = display;\n }\n}\n\n/**\n * This function hides the selected element\n * @param {string} selector - element selector\n */\nexport function hide(selector) {\n const elementsToHide = document.querySelectorAll(selector);\n for (let i = 0; i < elementsToHide.length; i++) {\n elementsToHide[i].style.display = 'none';\n }\n}\n\n/**\n * This function sets the value of the value attribute for all matched elements\n * @param {string} selector - elements selector\n * @param {string} value - value to set\n */\nexport function setValue(selector, value) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].value = value;\n }\n}\n\n/**\n * This function creates a serialized representation of an array or an object for use in a URL query string or Ajax request\n * @param {Array|Object} arrORObj - array or Object\n */\nexport var objectOrArrayToQueryString = function (arrOrObj) {\n var prefix, s, add, name, r20, output;\n s = [];\n r20 = /%20/g;\n add = function (key, value) {\n // If value is a function, invoke it and return its value\n const val = value === null ? '' : value;\n value = typeof value === 'function' ? value() : val;\n s[s.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);\n };\n if (arrOrObj instanceof Array) {\n for (name in arrOrObj) {\n add(name, arrOrObj[name]);\n }\n } else {\n for (prefix in arrOrObj) {\n buildParams(prefix, arrOrObj[prefix], add);\n }\n }\n output = s.join('&').replace(r20, '+');\n return output;\n};\n\nfunction buildParams(prefix, obj, add) {\n var name, i, l, rbracket;\n rbracket = /\\[\\]$/;\n if (obj instanceof Array) {\n for (i = 0, l = obj.length; i < l; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(\n prefix + '[' + (typeof obj[i] === 'object' ? i : '') + ']',\n obj[i],\n add\n );\n }\n }\n } else if (typeof obj === 'object') {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + '[' + name + ']', obj[name], add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n}\n\n/**\n * Gets the offset top value relative to the document of the first DOM element that match the selector received as argument\n * @param {String} selector\n */\nexport function getOffsetTop(selector) {\n try {\n const element = document.querySelector(selector);\n return element.getBoundingClientRect().top + window.scrollY;\n } catch (e) {\n return 0;\n }\n}\n\n/**\n * This function will return the children of the selected element\n * @param {string} selector - element selector\n */\nexport function getChildren(selector) {\n const elementsSelected = document.querySelector(selector);\n return elementsSelected.children;\n}\n\n/**\n * This function will add the class provided to the element or elements\n * @param {string} selector - elements selector\n * @param {string[]} classNames - array of class name(s) to add\n */\nexport function addClass(selector, classNames) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].classList.add(...classNames);\n }\n}\n\n/**\n * This function will remove the class provided from the element or elements\n * @param {string} selector - elements selector\n * @param {string[]} classNames - array of class name(s) to remove\n */\nexport function removeClass(selector, classNames) {\n const elementsSelected = document.querySelectorAll(selector);\n for (let i = 0; i < elementsSelected.length; i++) {\n elementsSelected[i].classList.remove(...classNames);\n }\n}\n\n/**\n * This function will call fetch with additional headers and also uses a polyfill for IE\n * @param {string} url - url to access\n * @param {object} options - optional parameters\n */\nexport function fetcher(url, options = {}) {\n const csrf = document.querySelector('body').dataset.csrf;\n // This event is fired every time that a fetch is made and helps the user to extend session\n fireEvent('fetchCall');\n options.headers = {\n ...options.headers,\n 'X-CSRF-Token': csrf,\n 'Content-Type': 'application/json; charset=UTF-8',\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n if (window.fetch) {\n if (window.location.href.indexOf('donate/buttons') > -1) {\n return fetch(url, options).then((response) => handleErrors(response));\n }\n return fetch(url, options);\n }\n return polyfillFetch(url, options);\n}\n/**\n * This function will look at the fetch response and determine if there are any network\n * erros and how to respond\n */\n\nfunction handleErrors(response) {\n if (response.status !== 401) {\n return response;\n }\n handleFetch401Error();\n}\n\nfunction handleFetch401Error() {\n const currentTargetPath = window.location.pathname;\n const returnPath = currentTargetPath.replace(/(\\/*donate)/, ''); // some browsers don't put a leading '/'\n const renderURL = `/donate/buttons/login?returnUri=${returnPath}`;\n // Need to do in this way because window.location.href doesn't update referer in http req header\n window.history.pushState(null, null, renderURL);\n location.reload();\n}\n\n/**\n * Utility function for firing an event\n * @param {*} eventName\n */\nfunction fireEvent(eventName) {\n const event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n document.dispatchEvent(event);\n}\n\n/**\n * Executes the callback received just when all the DOM elements are safe to be manipulated. Similar to jQuery $.ready() function.\n * @param {function} callback\n */\nexport function documentReady(callback) {\n // in case the document is already rendered\n if (document.readyState !== 'loading') {\n return callback();\n }\n // modern browsers\n else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', callback);\n }\n // IE <= 8\n else {\n document.attachEvent('onreadystatechange', function () {\n if (document.readyState === 'complete') {\n return callback();\n }\n });\n }\n}\n\nfunction isElement(obj) {\n try {\n return obj instanceof HTMLElement;\n } catch (e) {\n return (\n typeof obj === 'object' &&\n obj.nodeType === 1 &&\n typeof obj.style === 'object' &&\n typeof obj.ownerDocument === 'object'\n );\n }\n}\n\nfunction getElement(selectorOrElement) {\n if (isElement(selectorOrElement)) {\n return selectorOrElement;\n } else if (typeof selectorOrElement === 'string') {\n return document.querySelector(selectorOrElement);\n }\n return null;\n}\n\n/**\n * Scrolls element into view\n * @param {String | HTMLElement} selectorOrElement\n */\nexport function scrollElementIntoView(selectorOrElement) {\n const element = getElement(selectorOrElement);\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n });\n }\n}\n\nconst _noOpFunction = () => {};\n\nconst body = document.querySelector('body');\nconst safeScrollElement = body.scrollTo\n ? (element, options) => {\n element.scrollTo(options);\n }\n : _noOpFunction;\n\nconst safeScrollWindow = window.scrollTo\n ? (options) => {\n window.scrollTo(options);\n }\n : _noOpFunction;\n\n/**\n * Scrolls element or window to specified y location\n * @param {String | HTMLElement} selectorOrElement\n * @param { Number } scrollY\n */\nexport function scrollElementTo(selectorOrElement, scrollY = 0) {\n const element = getElement(selectorOrElement);\n if (element && element.scrollTop !== scrollY) {\n safeScrollElement(element, {\n top: scrollY,\n behavior: 'smooth',\n });\n } else if (window.pageYOffset !== scrollY) {\n safeScrollWindow({\n top: scrollY,\n behavior: 'smooth',\n });\n }\n}\n\n/**\n * Get {x, y} coordinates for HTML element\n * @param {String | HTMLElement} selectorOrElement\n */\nexport function getPosition(selectorOrElement) {\n let element = getElement(selectorOrElement);\n\n let xPosition = 0;\n let yPosition = 0;\n\n while (element) {\n xPosition += element.offsetLeft - element.scrollLeft + element.clientLeft;\n yPosition += element.offsetTop - element.scrollTop + element.clientTop;\n element = element.offsetParent;\n }\n\n return { x: xPosition, y: yPosition };\n}\n\n/**\n * Scrolls to specified y location\n * @param {String | HTMLElement} selectorOrElement\n * @param { Number } scrollY\n */\nexport function scrollTo(selectorOrElement, scrollY) {\n const element = getElement(selectorOrElement);\n if (element && typeof scrollY === 'number' && !Number.isNaN(scroll)) {\n safeScrollElement(element, {\n top: scrollY,\n behavior: 'smooth',\n });\n }\n}\n","import {\n formatCurrency,\n formatDate,\n formatNumber,\n formatPhoneNumber,\n getDateMaskFormat,\n getRelativeTime,\n wrNormalizeNumber,\n parsePhoneNumber,\n} from './worldReadyUtils';\n\n/**\n * Grabs the griffin metadata\n */\nexport function __getInitialData() {\n const initialDataNode = document.getElementById('initialData');\n const initialDataJSON =\n (initialDataNode && initialDataNode.innerHTML) || '{}';\n try {\n // parse the JSON strings to JavaScript objects\n return JSON.parse(initialDataJSON);\n } catch (e) {\n console.warn('ERROR:donate:initialData', e);\n return {};\n }\n}\n\n/**\n * getCurrencyParts\n */\nexport function getCurrencyParts() {\n return __getInitialData().currencyParts;\n}\n\n/**\n * getInitialData\n */\nexport function getInitialData() {\n return __getInitialData();\n}\n\n/**\n * Formats getAmountPlaceHolder\n * {string} placeholder\n */\nexport function getAmountPlaceHolder() {\n const allParts = __getInitialData().currencyParts || [];\n const amount = allParts.find((item) => item.$ === 'amount');\n return (amount && amount._) || '';\n}\n\nexport function formatNormalizedAmount(amount) {\n if (\n isNaN(amount.value) ||\n !amount.currency ||\n (!amount.value && amount.value !== 0)\n ) {\n return '';\n }\n return formatCurrency(Number(amount.value), { currency: amount.currency });\n}\n\n/**\n * formatAmount\n * {amount} { currency, value }\n */\nexport function formatAmount(amount) {\n if (!amount.currency || (!amount.value && amount.value !== 0)) {\n return '';\n }\n const amountValue =\n typeof amount.value === 'number'\n ? amount.value\n : wrNormalizeNumber(amount.value);\n return formatCurrency(amountValue, {\n currency: amount.currency,\n style: amount.style || 'symbol',\n });\n}\n\n/**\n * Uses Griffin to format a voucher offer detail percentage\n * @param {string} value percentage value\n */\nexport function formatPercentage(value) {\n return formatNumber(Number(value), { style: 'percent' });\n}\n\nexport function formatCurrencyNoDecimals(value) {\n if (!value) {\n return '';\n }\n\n return formatNumber(Number(value), { maximumFractionDigits: 0 });\n}\n\nexport function formatCurrencyAsString(params) {\n if (!params.value || !params.currency) {\n return '';\n }\n\n // for campaigns, params.value is comming as a number, so we need to convert to string.\n const options = {\n currency: params.currency,\n maximumFractionDigits: params.maximumFractionDigits || 2,\n style: 'international',\n };\n const numericAmount = Number(params.value);\n return formatCurrency(numericAmount, options);\n}\n\n/**\n * normalizer number\n * {number} {amount}\n * https://github.paypal.com/Globalization-R/griffin-paypal/blob/develop/lib/client/README.md#normalizenumber\n */\nexport function normalizeNumber(amount) {\n if (typeof amount === 'number') {\n return amount;\n }\n if (!amount && amount !== 0) {\n return '';\n }\n return wrNormalizeNumber(amount);\n}\n\n/**\n * formatInputAmount\n * {string} amount\n */\nexport function formatInputAmount(amount) {\n if (!amount) {\n return '';\n }\n return wrNormalizeNumber(amount);\n}\n\n/**\n * Uses griffin to format phone number\n *\n * @param {String} countryCode country phone code. Eg: '1', '41', '91'\n * @param {String} nationalNumber Phone number Eg: '012312', '418419'\n * @return {String} Formatted phone number Eg: '(418) 400 1234'\n */\nexport function formatPhone(phoneRegion, countryCode, nationalNumber) {\n if (!nationalNumber || !countryCode || !phoneRegion) {\n return '';\n }\n const options = { phoneRegion };\n const phoneObject = { countryCode, nationalNumber };\n\n return formatPhoneNumber(options, phoneObject);\n}\n\nexport function validatePhone(phoneRegion, nationalNumber) {\n try {\n const normalizedPhone = parsePhoneNumber({ phoneRegion }, nationalNumber);\n\n if (!normalizedPhone || normalizedPhone.errors) {\n return false;\n }\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Removes country code from phoneNumber\n * Eg:\n * Input: \"+49 6645878508\"\n * Output: \"6645878508\"\n */\nexport function getPhoneNumberWithoutCountryCode(phoneNumber) {\n if (!phoneNumber || typeof phoneNumber !== 'string') {\n return phoneNumber;\n }\n\n const firstCharacter = phoneNumber[0];\n if (firstCharacter !== '+') {\n // No country code\n return phoneNumber;\n }\n\n const firstSpaceIndex = phoneNumber.indexOf(' ');\n // No Space !! Malformed?\n if (firstSpaceIndex === -1) {\n return phoneNumber;\n }\n\n // First space is last character?\n if (phoneNumber.length < firstSpaceIndex + 1) {\n return phoneNumber;\n }\n\n return phoneNumber.substring(firstSpaceIndex + 1);\n}\n\nexport function getDateFormat() {\n return getDateMaskFormat({ style: 'date-short' });\n}\n\nexport function formatCurrencyWithSymbol(params) {\n return formatCurrency(params.value, { currency: params.currency });\n}\n\nexport function formatRelativeDate(date) {\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n )\n );\n return getRelativeTime(utcDate, {\n unit: 'day',\n timeZone: 'Etc/UTC',\n });\n}\n\nexport function getRemainingDays(date) {\n const now = new Date();\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n )\n );\n\n return Math.ceil((now - utcDate) / (1000 * 3600 * 24));\n}\n\nexport function roundUpAndFormatCurrency(amount, currency) {\n const roundedUpValue = Math.ceil(amount);\n return formatCurrency(roundedUpValue, { currency, maximumFractionDigits: 0 });\n}\n\n// Format date object to short format string, e.g.: 6/4/22\nexport function parseDateOnly(date) {\n date.setHours(0, 0, 0, 0);\n return formatDate(date, { timeZone: 'Etc/UTC' });\n}\n","import * as AppActions from '../actions/AppActions';\nimport '../stores/AppStore';\nimport { formatAmount } from './formator';\nimport _map from 'lodash/map';\nimport _get from 'lodash/get';\nimport _set from 'lodash/set';\nimport _isEmpty from 'lodash/isEmpty';\nimport { init } from 'pp-react-l10n';\nimport { getPersonalizedMessagesAsContentLoaderStandard } from './personalizedMessages';\nimport { loadPPCCStatus } from './ppccUtils';\nimport { isAtLandingPage } from '../components/coverFee/feeUtils';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from './worldReadyUtils';\n\nconst rawTemplateData =\n document.getElementById('templateData') &&\n document.getElementById('templateData').innerHTML;\nconst templateData = JSON.parse(rawTemplateData ? rawTemplateData : '{}');\n\nif (!_isEmpty(templateData)) {\n if (!_isEmpty(templateData.giftAid)) {\n _set(templateData, 'giftAid', JSON.parse(templateData.giftAid));\n }\n if (!_isEmpty(templateData.webscrData)) {\n _set(templateData, 'webscrData', JSON.parse(templateData.webscrData));\n }\n if (!_isEmpty(templateData.giftAidAddress)) {\n _set(\n templateData,\n 'giftAidAddress',\n JSON.parse(templateData.giftAidAddress)\n );\n }\n}\n\nconst localsMessagesNode =\n document.getElementById('localeMessages') &&\n document.getElementById('localeMessages').innerHTML;\nconst locals = (localsMessagesNode && JSON.parse(localsMessagesNode)) || {};\nconst personalized = getPersonalizedMessagesAsContentLoaderStandard();\nconst content = {\n locals,\n personalized,\n};\ninit({ content });\n\n/**\n * Normalize charity name and donation ID strings from template data.\n */\nif (templateData.charityName) {\n const charityName = templateData.charityName;\n try {\n templateData.charityName = decodeURIComponent(charityName);\n } catch (er) {\n templateData.charityName = charityName;\n }\n}\nif (templateData.donationId) {\n const donationId = templateData.donationId;\n try {\n templateData.donationId = decodeURIComponent(donationId);\n } catch (er) {\n templateData.donationId = donationId;\n }\n}\n\nexport const shouldSelectPresetAmount = (amount) => {\n if (!amount) {\n return false;\n }\n if (templateData.presetAmounts?.length === 3) {\n const presetAmounts = templateData.presetAmounts || [];\n return presetAmounts.map(Number).includes(Number(amount));\n }\n};\n\n/**\n * Attempting update default value for amount in flux store\n */\nconst donorCoversFee = templateData.feePayer === 'consumer';\nconst donationAmount =\n donorCoversFee && isAtLandingPage()\n ? templateData.rawAmount.toString()\n : templateData.donationAmount.toString();\nAppActions.changeAmount({\n amount: donationAmount,\n});\n\nif (donorCoversFee) {\n AppActions.changeCoverFee({ coverFee: 'checked' });\n AppActions.changeFeeAmount({ feeAmount: templateData.feeAmount });\n AppActions.changeFormatedAmount({\n formatedFeeAmount: formatAmount({\n currency: templateData.feeCurr,\n value: templateData.rawAmount,\n }),\n });\n}\n\nif (templateData.anonymousEnabled) {\n const anonymousStatus = templateData.anonymousStatus\n ? 'checked'\n : 'unchecked';\n AppActions.changeAnonymousStatus({ anonymousStatus });\n}\n\n/**\n * Attempting update default value for currency symbol in flux store\n */\nAppActions.changeSymbol({\n symbol: templateData.donationSymbol,\n});\n\n/**\n * Attempting update default value for currency code in flux store\n */\nAppActions.changeCode({\n code: templateData.donationCode,\n});\n\n/**\n * Attempting update default value for note in flux store\n */\nAppActions.changeNote({\n note: templateData.donationNote,\n});\n\n/**\n * Attempting update default value for recurring in flux store\n */\nAppActions.changeRecurring({\n recurring:\n templateData.recurringStatus === 'checked' ||\n templateData.recurringEnabled === 'checked'\n ? 'checked'\n : 'unchecked',\n});\n\nif (templateData.selectedRecurringFrequency) {\n AppActions.changeSelectedRecurringFrequency({\n selectedRecurringFrequency: templateData.selectedRecurringFrequency,\n });\n}\n\nAppActions.updateSelectedPresetButtonId(templateData.selectedPresetButtonId);\n\ntemplateData.enablePresetAmounts = shouldEnablePresetAmounts();\n\nif (_isEmpty(templateData.presetAmounts)) {\n templateData.presetAmounts = _get(\n templateData,\n 'donateContext.amount_options'\n );\n}\n\nif (\n templateData.donationAmountType === 'preset' &&\n templateData.presetAmounts?.length === 3\n) {\n if (!_isEmpty(donationAmount) && !shouldSelectPresetAmount(donationAmount)) {\n AppActions.updateDonationAmountType('userinput');\n } else {\n AppActions.updateDonationAmountType('preset');\n }\n}\n\nexport const isOldButtonFactory = () => {\n return _isEmpty(templateData.donateContext);\n};\n\nexport const isNewButtonFactory = () => {\n return !isOldButtonFactory();\n};\n\n// Prepopulate donationId in the dropdown\nif (isNewButtonFactory() && templateData.donationId) {\n AppActions.updateSelectedProgram(templateData.donationId);\n}\n\n/**\n * Attempting to parse all locals messages from DOM\n */\nfunction parseMessages(templateName) {\n if (!templateName) {\n console.warn('Missing template name');\n }\n try {\n const localsAllMessages = JSON.parse(\n document.getElementById('localeMessages').innerHTML || {}\n );\n const path = templateName.replaceAll('/', '.');\n return _get(localsAllMessages, path) || localsAllMessages;\n } catch (e) {\n console.warn('Please attach locales to DOM');\n return {};\n }\n}\n\n/**\n * Attempting to get all data from template\n */\nexport default templateData;\n\n/**\n * Attempting to grab all locals messages\n */\nexport function localsMessages(templateName) {\n return parseMessages(templateName);\n}\n\n/**\n * Attempting to grab all locals messages for guest billing page\n */\n\nexport function guestLocalsMessages() {\n const worldReady = getWorldReady();\n const guestMessages = localsMessages('guest/guestForm') || {};\n const guestsignup = guestMessages.guestsignup || {};\n\n let nationalIds = [];\n\n try {\n nationalIds = _map(guestsignup.nationalIds, (label, value) => {\n return {\n label,\n value,\n };\n });\n } catch (e) {\n /* nothing required as nationalIds are only applicable for limited countries */\n }\n\n const createAccountPreProps = {\n mainTitle: '', // guestsignup.mainTitle\n mainBlurb: '', // guestsignup.mainBlurb\n itsFreeLine: '', // guestsignup.itsFreeLine\n mainTitle2: 'guestsignup.mainTitle2',\n createAccountCheckboxContent: 'guestsignup.createAccountCheckboxContent',\n createAccountHelp1: 'guestsignup.expcreateAccountHelpContent',\n label1: 'guestsignup.explabel1',\n label2: 'guestsignup.explabel2',\n legalBlurbHTML: 'guestsignup.legalBlurbHTML',\n legalBlurbWithFeeInformationDoc:\n 'guestsignup.legalBlurbWithFeeInformationDoc',\n incentiveTitle: 'guestsignup.incentive.title',\n incentiveCreateAccountCheckboxContent:\n 'guestsignup.incentive.createAccountCheckboxContent',\n incentiveTerms: 'guestsignup.incentive.terms',\n labeldob: 'guestsignup.labeldob',\n labelnationality: 'guestsignup.labelnationality',\n dobPattern: 'guestsignup.dobPattern',\n dobHelp: 'guestsignup.dobPattern',\n labelocc: 'guestsignup.labelocc',\n legalOnlyHTML: 'guestsignup.legalOnlyHTML',\n consentBlurbHTML: 'guestsignup.consentBlurbHTML',\n labelNationalIdType: 'guestsignup.labelNationalIdType',\n labelNationalIdNumber: 'guestsignup.labelNationalIdNumber',\n nationalIds,\n defaultIdType: 'NATIONAL_ID', // Setting up deafult ID type\n passwordWarnings: {\n _MISMATCH: 'passwordWarnings.MISMATCH',\n _IS_NULL: 'passwordWarnings.IS_NULL',\n _TOO_SHORT: 'passwordWarnings.TOO_SHORT',\n _TOO_LONG: 'passwordWarnings.TOO_LONG',\n _CONTAINS_REPEATED_CHARACTERS:\n 'passwordWarnings.CONTAINS_REPEATED_CHARACTERS',\n _CONTAINS_NUMBER_SEQUENCE: 'passwordWarnings.CONTAINS_NUMBER_SEQUENCE',\n _CONTAINS_LETTER_SEQUENCE: 'passwordWarnings.CONTAINS_LETTER_SEQUENCE',\n _CONTAINS_NUMBER_LETTER_SEQUENCE:\n 'passwordWarnings.CONTAINS_NUMBER_LETTER_SEQUENCE',\n _IS_BLACKLISTED: 'passwordWarnings.IS_BLACKLISTED',\n _CONTAINS_SPACES: 'passwordWarnings.CONTAINS_SPACES',\n _HAS_ILLEGAL_CHARACTERS: 'passwordWarnings.HAS_ILLEGAL_CHARACTERS',\n _LEGAL_CHECKBOX: 'passwordWarnings.LEGAL_CHECKBOX',\n _REQUIRED_DOB: 'passwordWarnings.REQUIRED_DOB',\n _INVALID_DOB: 'passwordWarnings.INVALID_DOB',\n _OCCUPATION: 'passwordWarnings.OCCUPATION',\n _NATIONALITY: 'passwordWarnings.NATIONALITY',\n _HINT1: 'passwordWarnings.HINT1',\n _HINT2: 'passwordWarnings.HINT2',\n _HINT3: 'passwordWarnings.HINT3',\n _NATIONAL_ID_TYPE: 'passwordWarnings._NATIONAL_ID_TYPE',\n _NATIONAL_ID_NUMBER: 'passwordWarnings._NATIONAL_ID_NUMBER',\n },\n };\n\n const createAccountPost = {\n mainTitle: '', // guestsignup.mainTitle\n mainBlurb: '', // guestsignup.mainBlurb\n itsFreeLine: '', // guestsignup.itsFreeLine\n createAccountCheckboxContent: 'guestsignup.createAccountCheckboxContent',\n pplogo: 'guestsignup.pplogo',\n mainTitle1: 'guestsignup.mainTitle1',\n mainTitle2: 'guestsignup.expmainTitle2',\n mainTitle3: 'guestsignup.expmainTitle3',\n notNow: 'guestsignup.notNow',\n label1: 'guestsignup.explabel1',\n label2: 'guestsignup.explabel2',\n legalBlurbHTML: 'guestsignup.legalBlurbHTML',\n legalBlurbWithFeeInformationDoc:\n 'guestsignup.legalBlurbWithFeeInformationDoc',\n\n labeldob: 'guestsignup.labeldob',\n labelnationality: 'guestsignup.labelnationality',\n dobPattern: 'guestsignup.dobPattern',\n labelocc: 'guestsignup.labelocc',\n legalOnlyHTML: 'guestsignup.legalOnlyHTML',\n consentBlurbHTML: 'guestsignup.consentBlurbHTML',\n\n passwordWarnings: {\n _MISMATCH: 'passwordWarnings.MISMATCH',\n _IS_NULL: 'passwordWarnings.IS_NULL',\n _TOO_SHORT: 'passwordWarnings.TOO_SHORT',\n _TOO_LONG: 'passwordWarnings.TOO_LONG',\n _CONTAINS_REPEATED_CHARACTERS:\n 'passwordWarnings.CONTAINS_REPEATED_CHARACTERS',\n _CONTAINS_NUMBER_SEQUENCE: 'passwordWarnings.CONTAINS_NUMBER_SEQUENCE',\n _CONTAINS_LETTER_SEQUENCE: 'passwordWarnings.CONTAINS_LETTER_SEQUENCE',\n _CONTAINS_NUMBER_LETTER_SEQUENCE:\n 'passwordWarnings.CONTAINS_NUMBER_LETTER_SEQUENCE',\n _IS_BLACKLISTED: 'passwordWarnings.IS_BLACKLISTED',\n _CONTAINS_SPACES: 'passwordWarnings.CONTAINS_SPACES',\n _HAS_ILLEGAL_CHARACTERS: 'passwordWarnings.HAS_ILLEGAL_CHARACTERS',\n _LEGAL_CHECKBOX: 'passwordWarnings.LEGAL_CHECKBOX',\n\n _REQUIRED_DOB: 'passwordWarnings.REQUIRED_DOB',\n _INVALID_DOB: 'passwordWarnings.INVALID_DOB',\n _OCCUPATION: 'passwordWarnings.OCCUPATION',\n _NATIONALITY: 'passwordWarnings.NATIONALITY',\n _HINT1: 'passwordWarnings.HINT1',\n _HINT2: 'passwordWarnings.HINT2',\n _HINT3: 'passwordWarnings.HINT3',\n },\n buttonText: 'guestsignup.agreeanddonate',\n };\n\n for (const ca in createAccountPreProps) {\n if (!createAccountPreProps[ca]) {\n continue;\n }\n if (typeof createAccountPreProps[ca] === 'string') {\n const path = `guest.guestForm.${createAccountPreProps[ca]}`;\n createAccountPreProps[ca] = new MessageFormat(worldReady, {\n id: path,\n }).format({\n country: '{country}',\n locale: '{locale}',\n brand: '{brand}',\n language: '{language}',\n });\n } else if (ca === 'passwordWarnings') {\n for (const cp in createAccountPreProps[ca]) {\n const path2 = `guest.guestForm.${createAccountPreProps[ca][cp]}`;\n createAccountPreProps[ca][cp] = new MessageFormat(worldReady, {\n id: path2,\n }).format();\n }\n }\n }\n\n createAccountPreProps.dobPattern =\n createAccountPreProps.dobPattern.toUpperCase();\n for (const ca in createAccountPost) {\n if (!createAccountPost[ca]) {\n continue;\n }\n if (typeof createAccountPost[ca] === 'string') {\n const path = `guest.guestForm.${createAccountPost[ca]}`;\n\n createAccountPost[ca] = new MessageFormat(worldReady, {\n id: path,\n }).format({\n country: '{country}',\n locale: '{locale}',\n brand: '{brand}',\n language: '{language}',\n });\n } else if (ca === 'passwordWarnings') {\n for (const cp in createAccountPost[ca]) {\n const path2 = `guest.guestForm.${createAccountPost[ca][cp]}`;\n createAccountPost[ca][cp] = new MessageFormat(worldReady, {\n id: path2,\n }).format();\n }\n }\n }\n\n const cpf = {\n label: new MessageFormat(worldReady, {\n id: 'guest.guestForm.guestsignup.cpf',\n }).format(),\n warnings: {\n _REQUIRED_CPF: new MessageFormat(worldReady, {\n id: 'guest.guestForm.cpfWarnings.REQUIRED_CPF',\n }).format(),\n _INVALID_CPF: new MessageFormat(worldReady, {\n id: 'guest.guestForm.cpfWarnings.INVALID_CPF',\n }).format(),\n },\n };\n\n return {\n guestMessages: guestMessages,\n guestLabels: guestMessages.label || {},\n guestHelp: guestMessages.help || {},\n guestCaptcha: guestMessages.captcha || {},\n createAccountPreProps: createAccountPreProps,\n createAccountPost: createAccountPost,\n cpf: cpf,\n };\n}\n\nfunction shouldEnablePresetAmounts() {\n return (\n (templateData.donationAmountType === 'preset' &&\n templateData.presetAmounts?.length === 3) ||\n (templateData.donateContext &&\n templateData.donateContext.amount_type === 'MERCHANT_RECOMMENDED' &&\n templateData.donateContext.amount_options.length === 3) ||\n false\n );\n}\n\nif (templateData.ppccLookupRequired) {\n loadPPCCStatus();\n}\n\nlet currencyLists;\nexport function getCurrencySymbol(currencyCode) {\n if (!currencyLists) {\n try {\n currencyLists = JSON.parse(\n document.getElementById('currencyLists').innerHTML || {}\n );\n } catch (e) {\n currencyLists = {};\n }\n }\n return (currencyLists.symbols && currencyLists.symbols[currencyCode]) || '';\n}\n\nexport const isMobileHeaderExp = () => {\n return _get(templateData, 'pxp.moveMobileHeaderExp.experiment', false);\n};\n\nexport const isPartnerFlow = () => {\n return _get(templateData, 'isPartnerFlow', false);\n};\n\nexport const hasPartnerSource = () => {\n return _get(templateData, 'hasPartnerSource', false);\n};\n","import { fetcher } from './domUtils';\nimport templateData from './getTemplateData';\nimport _get from 'lodash/get';\nimport * as DonateAppActions from '../actions/AppActions';\n\nconst MERCHANT_PPCC_CONFIRMED_STATUS = 'CONFIRMED';\n\nexport const loadPPCCStatus = () => {\n return fetcher(`/donate/api/ppcc/?token=${templateData.token}`)\n .then((response) => response.json())\n .then((result) => {\n const isPPCC =\n _get(result, 'data.PPCC', '') === MERCHANT_PPCC_CONFIRMED_STATUS;\n DonateAppActions.updatePPCCStatus(isPPCC);\n })\n .catch(() => {});\n};\n\nexport const loadPPCCSetupStatus = () => {\n return fetcher('/donate/api/setupFlow/ppcc')\n .then((response) => response.json())\n .then((result) => {\n return _get(result, 'data.clientData.ppccSetupStatus', '');\n })\n .catch(() => {});\n};\n","import templateData from '../utility/getTemplateData';\nimport appStore from '../stores/AppStore';\nimport { isAmountGreaterThanZero } from '../components/amount/amountUtils';\nimport { getParameterByName } from './queryStringHelper';\nimport { show, hide, addClass, removeClass, fetcher } from './domUtils';\nimport { isOptInCoverFee } from '../components/coverFee/feeUtils';\nimport find from 'lodash/find';\nconst FROMUL_QUERY_PARAM = 'fromUL';\nconst FROMUOB_QUERY_PARAM = 'fromUOB';\nconst SDKMETA_QUERY_PARAM = 'sdkMeta';\n\nexport const addShake = () => {\n addClass('.inputField .money_input', ['animated', 'shake']);\n setTimeout(() => {\n removeClass('.inputField .money_input', ['animated', 'shake']);\n }, 1000);\n};\n\nexport const showSpinnerOverlay = () => {\n show('.spinneroverlay');\n\n const waitTextEl = document.getElementById('waitText');\n if (waitTextEl) {\n waitTextEl.focus();\n\n // Added this so mouse user will not always see the focus box\n waitTextEl.style.outline = 'none';\n\n // Since there is only one focusable element within the spinner\n // overlay, prevent any behaviour from occurring when the user\n // presses the TAB key\n waitTextEl.onkeydown = function (event) {\n // Add style back when user tries to manually focus on it\n waitTextEl.style.outline = 'thin dotted';\n waitTextEl.style.outline = '5px auto -webkit-focus-ring-color';\n waitTextEl.style.outlineOffset = '-2px';\n if (event.keyCode === 9 && document.activeElement === waitTextEl) {\n event.preventDefault();\n }\n };\n }\n};\n\nconst getFirstNonHiddenFocusableEl = (elements) => {\n return find(elements, (el) => {\n return el.type !== 'hidden';\n });\n};\n\n// After spinner exits, we need to set focus to the first fosable element\n// Assuming that focus should be set with either the gdpr cookie banner or donateWrapper\n// If any flow use a different main component, should update here\nexport const setFocus = () => {\n const elementWrapper =\n document.getElementById('gdprCookieContent_wrapper') ||\n document.getElementById('donateWrapper');\n\n if (elementWrapper) {\n // If there is no focusable element, will get text element\n const focusable =\n elementWrapper.querySelectorAll(\n 'button:not([hidden]),[href]:not([hidden]), input:not([hidden]), select:not([hidden]), textarea:not([hidden]), [tabindex]:not([tabindex=\"-1\"]):not([hidden])'\n ) ||\n elementWrapper.querySelectorAll('p:not([hidden]), span:not([hidden])');\n\n const firstFocusableEl = getFirstNonHiddenFocusableEl(focusable);\n\n if (firstFocusableEl) {\n firstFocusableEl.style.outline = 'none';\n firstFocusableEl.focus();\n\n firstFocusableEl.onkeydown = function () {\n firstFocusableEl.style.outline = 'thin dotted';\n firstFocusableEl.style.outline = '5px auto -webkit-focus-ring-color';\n firstFocusableEl.style.outlineOffset = '-2px';\n };\n\n firstFocusableEl.onblur = function () {\n firstFocusableEl.style.outline = 'none';\n };\n }\n }\n};\n\nexport const hideSpinnerOverlay = () => {\n hide('.spinneroverlay');\n};\n\nexport const updateDonation = (redirecturl, clearSavedFormData) => {\n const data = {\n token: templateData.token,\n amount: appStore.getDonationAmount(),\n donationAmountType:\n appStore.getDonationAmountType() === 'preset' ? 'preset' : 'userinput',\n currencyCode: templateData.donationCode,\n donationNote: appStore.getDonationNote() || '',\n recurring: appStore.getDonationRecurring(),\n addCardError: appStore.getAddCardError(),\n giftAidItFlag: appStore.getGiftaidItFlagStatus(),\n selectedProgram: appStore.getSelectedProgram(),\n selectedPresetButtonId: appStore.getSelectedPresetButtonId(),\n selectedRecurringFrequency: appStore.getSelectedRecurringFrequency(),\n };\n\n if (templateData.coverFeeEnabled) {\n data.feePayer = isOptInCoverFee() ? 'consumer' : 'merchant';\n data.feeCurr = appStore.getDonationCode();\n data.feeAmount = appStore.getFeeAmount();\n data.rawAmount = appStore.getAmountBeforeFee();\n }\n\n if (templateData.anonymousEnabled) {\n data.anonymousStatus = appStore.getAnonymousStatus();\n }\n\n if (clearSavedFormData) {\n data.clearSavedFormData = clearSavedFormData;\n }\n\n showSpinnerOverlay();\n let updateUrl = `/donate/update/donation`;\n if (templateData.token) {\n updateUrl = `${updateUrl}?token=${templateData.token}`;\n }\n fetcher(updateUrl, {\n method: 'POST',\n body: JSON.stringify(data),\n })\n .then((result) => {\n if (result && result.status === 401) {\n const failureUrl = '/donate/?token=' + templateData.token;\n window.location.href = failureUrl;\n return;\n }\n\n showSpinnerOverlay();\n window.location.href = redirecturl;\n })\n .catch(() => {\n showSpinnerOverlay();\n // On juno update failure, redirecting to landing page\n // Juno token will be re-validated and will handle following cases\n // Case 1: Display generic error page for expired token\n // Case 2: Start new flow, if token is valid.\n const failureUrl = '/donate/?token=' + templateData.token;\n window.location.href = failureUrl;\n });\n};\n\n/*\n * Handles for loaging any CAL event.\n */\nexport const logCalEvent = (message) => {\n fetcher('/donate/event/logger', {\n method: 'POST',\n body: JSON.stringify({\n message,\n }),\n });\n};\n\n/*\n * Handles for redirect to UL.\n */\nexport const handleLogIn = () => {\n const donationAmount = appStore.getDonationAmount();\n\n if (isAmountGreaterThanZero(donationAmount)) {\n let url = `/donate/member?token=${templateData.token}`;\n if (getParameterByName(FROMUL_QUERY_PARAM) === 'true') {\n url = `${url}&${FROMUL_QUERY_PARAM}=true`;\n }\n if (getParameterByName(FROMUOB_QUERY_PARAM) === 'true') {\n url = `${url}&${FROMUOB_QUERY_PARAM}=true`;\n }\n const sdkMeta = templateData.sdkMeta;\n const targetMeta = getParameterByName('targetMeta') || '';\n\n if (sdkMeta) {\n url = `${url}&${SDKMETA_QUERY_PARAM}=${sdkMeta}`;\n }\n if (targetMeta) {\n url = `${url}&targetMeta=${targetMeta}`;\n }\n\n updateDonation(url);\n } else {\n addShake();\n }\n};\n\n/*\n * Handles for redirect to guest.\n */\nexport const handleGuestCountryChange = (url) => {\n updateDonation(url, true);\n};\n\n/*\n * Handles if token is reused to access donate app to make second payment.\n */\nexport const handleTokenReuse = () => {\n const paymentStatus = templateData.paymentStatus || '';\n const token = templateData.token;\n if (paymentStatus === 'complete') {\n window.location.href = `/donate/paymentComplete?token=${token}`;\n }\n};\n\nexport const removeDuplicateErrors = (errorMessages = []) => {\n return errorMessages.reduce((uniqueErr, errMsg) => {\n if (!uniqueErr.some((errMsgObj) => errMsgObj.value === errMsg.value)) {\n uniqueErr.push(errMsg);\n }\n return uniqueErr;\n }, []);\n};\n\nexport const parseErrorResponse = (errors, errorMessages) => {\n let messages = [],\n allErrorCodes = errors.details;\n\n for (const i in allErrorCodes) {\n const code = allErrorCodes[i].name,\n message = errorMessages[code];\n if (message) {\n messages.push({\n key: i,\n value: message,\n });\n }\n }\n messages = removeDuplicateErrors(messages);\n\n if (messages.length === 0) {\n const message = errorMessages.GENERIC_ERROR;\n if (message) {\n messages.push({\n key: 0,\n value: message,\n });\n }\n }\n return messages;\n};\n\nexport const parseValErrResp = (errors, dump, GENERIC_ERROR) => {\n const messages = [],\n allErrorCodes = errors.errorData || [];\n for (const allError in allErrorCodes) {\n const code =\n allErrorCodes[allError].errorCode || allErrorCodes[allError].code,\n message = dump[code];\n\n if (message) {\n messages.push({\n key: allError,\n value: message,\n });\n }\n }\n\n if (messages.length === 0) {\n const message = dump[GENERIC_ERROR];\n if (message) {\n messages.push({\n key: 0,\n value: message,\n });\n }\n }\n return messages;\n};\n\nexport const getErrFields = (errors) => {\n const allFields = [],\n allErrorCodes = errors.errorData || [];\n for (const allError in allErrorCodes) {\n allFields.push({\n key: allError,\n type: allErrorCodes[allError].code,\n fields: allErrorCodes[allError].fields,\n });\n }\n\n if (allFields.length === 0) {\n allFields.push({\n key: 0,\n type: 'VALIDATION_ERROR',\n });\n }\n\n return allFields;\n};\n\n/**\n * Checks whether minimum donation restriction should be enforced.\n * @return {Boolean} true if currency code is USD\n */\nexport const shouldEnforceMinimumDonation = () => {\n // @TODO: Check for corpIp\n // TemplateData.isCorpIp\n if (\n templateData.donationAmountEditable &&\n ['USD'].indexOf(templateData.donationCode) >= 0\n ) {\n return true;\n }\n return false;\n};\n\n/**\n * Gets minimum donation for current currency\n * @return {Number} 1 for USD, 0 otherwise\n */\nexport const getMinimumDonation = () => {\n // @TODO: Check for corpIp\n // && !TemplateData.isCorpIp\n if (['USD'].indexOf(templateData.donationCode) >= 0) {\n return 1;\n }\n return 0;\n};\n\n/**\n * Validates the donation amount restriction for USD\n * @return { Boolean } Returns false if validation fails, true otherwise\n */\nexport const validateDonationAmountForUS = () => {\n if (shouldEnforceMinimumDonation()) {\n const donationAmount = appStore.getDonationAmount() || 0;\n const minimumDonation = getMinimumDonation();\n if (donationAmount < minimumDonation) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Checks whether to show the promotion for HurricaneHarvey or not\n * Please note: Currently disabled. Always returns false.\n */\nexport const shouldShowHurricaneHarveyPromotion = () => {\n return false;\n // Check merchant and user country\n // const userCountry = templateData.country;\n // const userLanguage = templateData.language;\n\n // return userCountry === 'US' && userLanguage === 'en';\n};\n\n/**\n * Sets country and locale in the provided string\n * @param {String} str String to set country and locale on\n * @param {String} country Country code like 'AU', 'US'\n * @param {String} locale locale code like 'en_AU', en_US'\n * @return {String} Original string with country and locale\n */\nexport const setCountryAndLocale = (str) => {\n str = str.replace(new RegExp('{country}', 'g'), templateData.country);\n str = str.replace(\n new RegExp('{locale}', 'g'),\n `${templateData.language}_${templateData.country}`\n );\n str = str.replace(new RegExp('{brand}', 'g'), templateData.brand);\n str = str.replace(new RegExp('{language}', 'g'), templateData.language);\n return str;\n};\n\nexport const isLTR = () => {\n const { contextLocalityDir } = templateData;\n return contextLocalityDir === 'ltr';\n};\n\nexport const getPPCCStatus = () => {\n const { merchantPpccStatus } = templateData;\n return merchantPpccStatus\n ? merchantPpccStatus.toUpperCase()\n : merchantPpccStatus;\n};\n\nexport const waitForElementToDisplay = (selector, time, callback) => {\n if (document.querySelector(selector) !== null) {\n callback(); // eslint-disable-line\n } else {\n setTimeout(function () {\n waitForElementToDisplay(selector, time, callback);\n }, time);\n }\n};\n\nexport const observeUntilEventObserved = (targetNode, options, callback) => {\n const mutationObserver = new MutationObserver(function (mutations, observer) {\n callback(observer);\n });\n\n mutationObserver.observe(targetNode, options);\n};\n\nexport const getInitialDataInDom = () => {\n const initialDataInDom = document.getElementById('initialData');\n if (initialDataInDom) {\n return JSON.parse(initialDataInDom.innerHTML || '{}');\n }\n};\n\n// export default {\n// \taddShake: addShake,\n// \tupdateDonation: updateDonation,\n// \tlogCalEvent: logCalEvent,\n// \thandleLogIn: handleLogIn,\n// \thandleGuestCountryChange: handleGuestCountryChange,\n// \thandleTokenReuse: handleTokenReuse,\n// \tremoveErrors: removeErrors,\n// \tserializeFormData: serializeFormData,\n// \tparseErrorResponse: parseErrorResponse,\n// \tparseValErrResp: parseValErrResp,\n// \tgetErrFields: getErrFields,\n// \tisLTR,\n// \tgetPPCCStatus,\n// \tshouldEnforceMinimumDonation,\n// \tvalidateDonationAmountForUS,\n// \tshouldShowHurricaneHarveyPromotion,\n// \tsetCountryAndLocale,\n// \tshowSpinnerOverlay,\n// \thideSpinnerOverlay\n// }\n","import templateData from './getTemplateData';\nimport { isExternalFlow } from './productIntegrationUtils';\nimport _get from 'lodash/get';\n\nexport function isInContext() {\n return isPopupMode();\n}\n\nexport function onComplete(postBackData) {\n const data = _get(postBackData, 'postBackData') || {};\n\n const transactionDetails = {\n tx: data.txn_id,\n st: data.payment_status,\n amt: data.mc_gross,\n cc: data.mc_currency,\n cm: data.custom_data,\n item_number: data.item_number,\n item_name: data.item_name,\n };\n // Add token if it is an external flow\n // so that they can call the GET TOKEN API\n if (isExternalFlow()) {\n transactionDetails.token = templateData.token;\n }\n if (window && window.xprops && window.xprops.onComplete) {\n window.xprops.onComplete({\n ...transactionDetails,\n });\n }\n}\n\nexport function onCancel(redirectUrl) {\n if (window && window.xprops && window.xprops.onCancel) {\n window.xprops.onCancel({\n redirectUrl,\n });\n }\n}\n\nexport function closeWindow() {\n if (window && window.xprops && window.xprops.close) {\n window.xprops.close();\n }\n}\n\n/**\n * Returns true if Donate is being rendered inside an iframe\n */\nexport function isIframeMode() {\n return window.parent !== window;\n}\n\nexport function isSdkMode() {\n return Boolean(templateData.sdkMeta || templateData.targetMeta);\n}\n\n/**\n * Returns true if window was opened by window.opener such as for pop-up windows.\n *\n */\nexport function isPopupMode() {\n // eslint-disable-next-line no-extra-boolean-cast\n if (Boolean(window.xprops)) {\n return isSdkMode() && Boolean(window.opener);\n }\n\n if (templateData.isdesktop) {\n return (\n isSdkMode() && Boolean(window.opener) && window && window.outerWidth < 650\n );\n }\n\n // default\n return isSdkMode() && Boolean(window.opener);\n}\n/**\n * We are in SDK Mode but we do not have window.xprops so this is FullPageRedirection Mode\n */\nexport function isFullPageRedirectionMode() {\n return isSdkMode() && Boolean(!window.xprops);\n}\n\nexport function isMobileOrInContext() {\n return isPopupMode() || templateData.ismobile || templateData.istablet;\n}\n\nexport function isMobileOrTablet() {\n return templateData.ismobile || templateData.istablet;\n}\n\nexport function isMWebNoCancelURL() {\n return !isInContext() && isMobileOrTablet() && !templateData.charityCancelUrl;\n}\n\nexport function isMWebNoReturnURL() {\n return !isInContext() && isMobileOrTablet() && !templateData.charityReturnUrl;\n}\n\nexport function isNotFullScreen() {\n var isNotAtMaxWidth = window.screen.availWidth - window.outerWidth > 0;\n var isNotAtMaxHeight = window.screen.availHeight - window.outerHeight > 0;\n return isNotAtMaxHeight && isNotAtMaxWidth;\n}\n","import { getInitialData } from './formator';\nimport get from 'lodash/get';\nimport getContent from 'pp-react-l10n';\n\nconst cache = {};\n\nexport const getTouchpoint = (touchpointCode) => {\n if (cache[touchpointCode]) {\n return cache[touchpointCode];\n }\n const personalizedMessages = getInitialData().personalizedMessages || [];\n\n for (const touchpoint of personalizedMessages) {\n if (touchpoint.touchpoint_code === touchpointCode) {\n cache[touchpointCode] = touchpoint;\n return touchpoint;\n }\n }\n return null;\n};\n\nexport const getPersonalizedMessages = (\n touchpointCode,\n { merge = false, isHtml = true, includeImpressionUrl = false } = {}\n) => {\n const touchpoint = getTouchpoint(touchpointCode);\n if (!touchpoint || !touchpoint.messages) {\n return merge ? [] : {};\n }\n\n if (merge) {\n const messages = [];\n touchpoint.messages.forEach((message) => {\n if (message.content?.json) {\n Object.keys(message.content.json)\n .sort()\n .forEach((contentKey) => {\n if (isHtml) {\n messages.push(\n getContent(\n `personalized.${touchpointCode}.${contentKey}`,\n null,\n {\n useHTML: true,\n }\n ),\n ' '\n );\n } else {\n messages.push(message.content.json[contentKey]);\n }\n });\n }\n });\n return messages;\n }\n\n let messages = {};\n touchpoint.messages.forEach((message) => {\n if (message.content?.json) {\n Object.keys(message.content.json).forEach((contentKey) => {\n messages[contentKey] = isHtml\n ? getContent(`personalized.${touchpointCode}.${contentKey}`, null, {\n useHTML: true,\n })\n : message.content.json[contentKey];\n });\n }\n if (includeImpressionUrl) {\n messages = {\n content: messages,\n trackingDetails: {\n impressionUrl: message.tracking_details.impression_url,\n },\n };\n }\n });\n return messages;\n};\n\nexport const hasPersonalizedMessages = (touchpointCode) => {\n const touchpoint = getTouchpoint(touchpointCode);\n return touchpoint?.messages[0]?.content?.json;\n};\n\nexport const getPersonalizedMessagesAsContentLoaderStandard = () => {\n const personalizedMessages = getInitialData().personalizedMessages || [];\n const result = {};\n for (const touchpoint of personalizedMessages) {\n result[touchpoint.touchpoint_code] = get(\n touchpoint,\n 'messages[0].content.json',\n {}\n );\n }\n return result;\n};\n","import { EVENT_NAME, PRODUCT } from './constants';\nimport TemplateData from './getTemplateData';\nimport AppStore from '../stores/AppStore';\nimport { formatCurrencyWithSymbol } from './formator';\nimport { getPersonalizedMessages } from './personalizedMessages';\nimport { GN_CONTENT_TOUCHPOINT } from './constants';\nimport { isInContext } from './inContextDonation';\nimport { MessageFormat } from '@paypalcorp/worldready';\nimport { getWorldReady } from './worldReadyUtils';\nimport { getParameterByName } from './queryStringHelper';\n\nexport const isGNC = () =>\n TemplateData.product === PRODUCT.GENEROSITY_NETWORK_CHARITIES;\nexport const isGN = () => TemplateData.product === PRODUCT.GENEROSITY_NETWORK;\nexport const isBrandedCampaign = () =>\n TemplateData.product === PRODUCT.BRANDED_CAMPAIGN;\nexport const isPPFundraising = () =>\n TemplateData.product === PRODUCT.PP_FUNDRAISING;\nexport const isCampaigns = () =>\n TemplateData.product === PRODUCT.DONATE_BUTTON_CAMPAIGN;\nexport const isPPListedCampaign = () =>\n TemplateData.product === PRODUCT.PAYPAL_FUNDRAISER_LISTED_CAMPAIGN;\nexport const isPPUnlistedCampaign = () =>\n TemplateData.product === PRODUCT.PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN;\n\n// TODO: isGN is considered as isPPCampaign. Later we need to remove isGN completely.\nexport const isPPCampaign = () =>\n isPPListedCampaign() || isPPUnlistedCampaign() || isGN();\n\nexport const isCheckoutRail = () => isGNC() || isPPFundraising();\nexport const isSendMoneyRail = () => isPPCampaign() || isBrandedCampaign();\n\nexport const isExternalFlow = () =>\n isGNC() || isPPCampaign() || isBrandedCampaign() || isPPFundraising();\n\nexport const prepareOrderParams = () => {\n const worldReady = getWorldReady();\n\n return {\n amount: AppStore.getDonationAmount(),\n addressSharingConsent: false,\n currencyCode: AppStore.getDonationCode(),\n currencySymbol: AppStore.getDonationSymbol(),\n donationAmountType:\n AppStore.getDonationAmountType() === 'preset' ? 'preset' : 'userinput',\n donationNote: AppStore.getDonationNote() || '',\n recurring: AppStore.getDonationRecurring(),\n selectedProgram: AppStore.getSelectedProgram(),\n selectedPresetButtonId: AppStore.getSelectedPresetButtonId(),\n token: TemplateData.token,\n anonymousStatus: AppStore.getAnonymousStatus(),\n ppgfMessage: new MessageFormat(worldReady, {\n id: 'clients.generosityNetworkCharities.ppgfMessage',\n }).format(),\n directMessage: new MessageFormat(worldReady, {\n id: 'clients.generosityNetworkCharities.directMessage',\n }).format(),\n isInContext: isInContext(),\n };\n};\n\nexport const getMaximumDonationAlertMessage = (limitReason) => {\n const formatedMaximumAmount = formatCurrencyWithSymbol({\n value: Number(TemplateData.maximumDonationAmount),\n currency: TemplateData.maximumDonationCurrency,\n });\n\n const worldReady = getWorldReady();\n return new MessageFormat(worldReady, {\n id:\n limitReason === 'cip'\n ? 'landing.cip.amountError'\n : 'clients.generosityNetworkCharities.maximumAmountAlert',\n }).format({ amount: formatedMaximumAmount });\n};\n\nexport const getPersonalizedNoteToPayeeLabel = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n return psMessages?.noteToPayeeLabel;\n};\n\nexport const getPersonalizedNoteToPayeeTextboxCommentLabel = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n return psMessages?.noteToPayeeTextboxCommentLabel;\n};\n\nexport const getPersonalizedAnonymousContent = () => {\n const psMessages = getPersonalizedMessages(GN_CONTENT_TOUCHPOINT, {\n isHtml: false,\n });\n if (isCampaigns()) {\n psMessages.anonymousLabel = 'Donate anonymously';\n psMessages.anonymousTooltip =\n 'Your name won’t appear on the fundraiser page and your name and email won’t be shared with the charity. Only the organizer will see your name.';\n }\n return {\n label: psMessages?.anonymousLabel,\n tooltip: psMessages?.anonymousTooltip,\n };\n};\n\nexport const getDismissEventName = () => {\n const url = window.location.href;\n\n if (url.includes('confirmation') || url.includes('pending')) {\n return EVENT_NAME.DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED;\n } else if (url.includes('guest')) {\n return EVENT_NAME.DW_GIVING_GUEST_FORM_DISMISS_PRESSED;\n } else if (url.includes('member')) {\n return EVENT_NAME.DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED;\n }\n return EVENT_NAME.DW_GIVING_DONATE_SETUP_DISMISS_PRESSED;\n};\n\nexport const isAndroidWebView = () => {\n return getParameterByName('_fpti.platform') === 'android';\n};\n","export function getParameterByName(name, url) {\n if (!url) {\n url = window.location.href;\n }\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return '';\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nexport function getParameterByNameFromURL(name, url) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n\n if (!results[2]) {\n return '';\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nexport function getValuesFromULState(keys, url) {\n const queryStringObj = {};\n keys.forEach((key) => {\n queryStringObj[key] = getParameterByName(key, url);\n });\n return queryStringObj;\n}\n\nexport function getParametersFromUrl(url) {\n if (!url) {\n url = window.location.href;\n }\n\n if (url.indexOf('?') >= 0) {\n let queryString = /[^?]*$/.exec(url)[0]; // eslint-disable-line\n return JSON.parse(\n '{\"' +\n decodeURI(queryString)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(new RegExp('=', 'g'), '\":\"') +\n '\"}'\n );\n }\n return {};\n}\n","// See WR documentation: https://github.paypal.com/pages/Globalization-R/worldready-js/docs/about.html\n\nimport {\n WorldReady,\n NumberFormat,\n CurrencyFormat,\n PhoneNumberFormat,\n DateInputMaskFormat,\n RelativeTimeFormat,\n DateTimeFormat,\n} from '@paypalcorp/worldready';\n\nlet worldReady;\nconst getLocale = () => {\n const { country = 'US', language = 'en' } =\n JSON.parse(document.getElementById('templateData').innerHTML) || {};\n return `${language}-${country}`;\n};\n\nexport const initializeWorldReady = () => {\n if (!worldReady) {\n const worldReadyData = JSON.parse(\n document.getElementById('worldReady').textContent\n );\n WorldReady.load(worldReadyData);\n // WorldReady has loaded!\n\n const locale = getLocale();\n worldReady = new WorldReady(locale);\n }\n};\n\n/**\n * It returns a WorldReady instance\n * @returns a WorldReady instance.\n */\nexport const getWorldReady = () => {\n return worldReady;\n};\n\n/**\n * It takes a number and returns a localized number string\n * @param value - The number to format.\n * @param [options] - An object with the following properties: { maximumFractionDigits }\n * Example input: 1000\n * Example output: '1,000.00'\n */\nexport const formatNumber = (value, options = {}) =>\n new NumberFormat(worldReady, options).format(value);\n\n/**\n * It takes a string, and returns a number\n * @param value - The value to be formatted.\n * @param [options] - An object with the following properties:\n * Example input: '1,000.00'\n * Example output: 1000\n */\nexport const wrNormalizeNumber = (value, options = {}) =>\n new NumberFormat(worldReady, options).parse(value);\n\n/**\n * It takes a value and an options object, and returns a formatted currency string\n * @param value - The value to format.\n * @param options - An object containing the following properties: { currency, maximumFractionDigits, style }\n * Example input: 1000, currency: 'USD'\n * Example output: '$1,000.00'\n */\nexport const formatCurrency = (value, options) =>\n options && new CurrencyFormat(worldReady, options).format(value);\n\n/**\n * It takes a number and an options object, and returns an array of objects\n * @param value - The value to be formatted.\n * @param options - An object with the following properties: { style }\n * Input: 1234.5\n * Output: [\n * { type: \"currencySymbol\", value: \"$\" },\n * { type: \"integer\", value: \"1\" },\n * { type: \"group\", value: \",\" },\n * { type: \"integer\", value: \"234\" },\n * { type: \"decimal\", value: \".\" },\n * { type: \"fraction\", value: \"50\" },\n * { type: \"literal\", value: \" \" },\n * { type: \"currencyCode\", value: \"USD\" }\n * ] (considering locale is en-US)\n */\nexport const formatCurrencyToParts = (value, options) =>\n options && new CurrencyFormat(worldReady, options).formatToParts(value);\n\n/**\n * \"If the options object has a phoneRegion property, and the phoneObject is truthy, then format the\n * phoneObject using the PhoneNumberFormat class.\"\n *\n * The PhoneNumberFormat class is a class that I wrote to format phone numbers. It's not part of the\n * Google libphonenumber library\n * @param [options] - An object with the following properties:\n * @param phoneObject - The phone number object returned by the parsePhoneNumberFromString function.\n * Input: { countryCode: \"1\", nationalNumber: \"4088430088\" }\n * Output: \"+1 408-843-0088\" (considering phoneRegion is US)\n */\nexport const formatPhoneNumber = (options = {}, phoneObject) =>\n options.phoneRegion &&\n phoneObject &&\n new PhoneNumberFormat(options).format(phoneObject);\n\n/**\n * It takes a phone number and a phone region and returns a parsed phone number\n * @param options - The options object that you pass to the PhoneNumberFormat constructor.\n * @param phoneNumber - The phone number to parse.\n * Input: \"+1 408-843-0088\" (considering phoneRegion is US)\n * Output: { countryCode: \"1\", nationalNumber: \"4088430088\" }\n */\nexport const parsePhoneNumber = (options, phoneNumber) =>\n options.phoneRegion &&\n phoneNumber &&\n new PhoneNumberFormat(options).parse(phoneNumber);\n\n/**\n * It returns a new instance of the DateInputMaskFormat class, which is a class that extends the\n * InputMaskFormat class\n * @param options - An object with the following properties:\n * Input: { style: 'date-short' }\n * Output: \"mm/dd/yy\" (considering locale is en-US)\n */\nexport const getDateMaskFormat = (options) =>\n new DateInputMaskFormat(worldReady, options).format();\n\n/**\n * It returns a string that represents the relative time between the given date and the current time\n * @param date - The date to format.\n * @param options - An object with the following properties:\n */\nexport const getRelativeTime = (date, options) =>\n new RelativeTimeFormat(worldReady, options).format(date);\n\n/**\n * It takes a date and an optional options object, and returns a string\n * @param date - The date to format.\n * @param [options] - An object with the following properties:\n */\nexport const formatDate = (date, options = {}) =>\n new DateTimeFormat(worldReady, options).format(date);\n\ninitializeWorldReady();\n"],"names":["changeAmount","item","AppDispatcher","handleViewAction","actionType","AppConstants","changeSymbol","changeCode","changeFormatedAmount","changeRecurring","changeSelectedRecurringFrequency","changeCoverFee","changeAnonymousStatus","changeFeeAmount","changeNote","updateCurrentPage","updateDonationAmountType","donationAmountType","updateSelectedProgram","updateSelectedPresetButtonId","updatePPCCStatus","isAtLandingPage","window","location","pathname","includes","undefined","getParameterByName","languagesList","templateData","LanguageSelector","lang_options","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","currentLanguage","languageCode","language","forEach","lang","languageName","split","getCurrentLangName","options","push","title","React","className","_Button","size","onClick","event","stopPropagation","_ChevronUpIcon","_ActionMenu","onSelection","index","showSpinnerOverlay","locale","concat","country","getLocale","updatedUrl","urlParams","token","href","indexOf","clientState","encodeURIComponent","updatePageLanguageByLocale","onClose","MessageWithHTML","_ref","id","rest","_objectWithoutProperties","_excluded","worldReady","getWorldReady","messageFormatter","MessageFormat","dangerouslySetInnerHTML","__html","DOMPurify","format","_objectSpread","propTypes","PropTypes","Help","_Link","secondary","target","Message","Security","ReportInappropriateContent","countryForReportLink","Feedback","props","handleSurvey","Imprint","CopyRight","currentYear","Date","getFullYear","Privacy","Legal","Policy","CombinedFinancialServicesText","_Row","_Col","link","innerMessage","withTheme","isLanguageSelectorEnabled","setIsLanguageSelectorEnabled","isExternalFlow","isInContext","isNotFullScreen","useEffect","AppStore","getLanguageSelectorState","dispatcherMessages","register","payload","_payload$action","action","unregister","classNames","footer_in_context","mobile_footer","isMobileOrTablet","_Container","footer_container","mobile_footer_container","fluid","xs","md","trackLinkClick","LINK_NAME","REPORT_LINK","latmconf","trackSprigEvent","trackErrorIM","errorCode","errorMessage","fieldName","WrappedComponent","ThemeProvider","theme","isAndroidWebView","PPUI4_PAYPAL_THEME","_PAYPAL_THEME","assign","Dispatcher","this","dispatch","source","anonymousEnabled","coverFeeEnabled","donationAmount","fptPageName","donationCode","donationName","donorIpCountry","feeAmount","feeCurr","feePayer","getDonationAmount","npid","product","productId","integrationIdentifier","recurringEnabled","supportedRecurringFrequencies","amount","_defineProperty","FPTI_TAGS","AMOUNT","updateGlobalFPTI","data","fpti","SPACE_KEY","FPTI_VALUES","SPACE_KEY_ID","getDefaultPageSpec","url","isOnboardingFlow","pageSpec","_find","PAGE_SPEC","page","ONBOARDING_GUEST_SUCCESS_PAGE","GUEST_SUCCESS_PAGE","ONBOARDING_GUEST_PENDING_PAGE","GUEST_PENDING_PAGE","LANDING_PAGE","ONBOARDING_GUEST_FORM","analytics","_window","PAYPAL","instance","_window2","startClientErrorTracking","donationAmountEditable","selectedPresetButtonId","sessionDeprecationEnabled","_ref11","_ref11$pageSpec","additionalData","ACTION","tsrce","recordError","trackError","eventName","EVENT_NAME","DW_GIVING_FAILED_CUSTOMER_INTERACTION_OCCURRED","screen","SCREEN_NAME","DW_GIVING_DONATE_SETUP_SCREEN","DW_GIVING_DONATE_GUEST_FORM_SCREEN","ERR_FIELD","ERR_CODE","ECCD","ERPG","ERR_DESC","trackErrorPageIM","_ref16","onceData","INTERNAL_ERROR","DNW_UNHANDLED_ERROR","checkAndReplaceInternalErrWithDnwErr","globalData","fromSetup","arguments","length","recordImpression","trackPageLoad","linkName","_ref33","_ref33$pageSpec","recordClick","trackClick","LINK","PAGE_LINK","PAGE_GROUP_LINK","pgrp","IMPRESSION","e","tmpl","GUEST_FORM","GUEST_SIGNUP_SUCCESS_PAGE","GUEST_FAILURE_PAGE","comp","MEMBER_SUCCESS_PAGE","MEMBER_PENDING_PAGE","MEMBER_FAILURE_PAGE","RECURRING_SUCCESS_PAGE","MEMBER_REVIEW_PAGE","CROSS_BORDER_PAGE","THREE_DS_IFRAME","THREE_DS_IFRAME_ONBRD","UNILATERAL_ERROR_PAGE","CAPTURE_ORDER_PAGE","WEBSCR_ERROR_PAGE","GENERIC_ERROR_PAGE","CRS_ERROR_PAGE","ACCOUNT_HOME","ANONYMOUS_CHECKBOX","ANONYMOUS_TOOLTIP","BACK","CANCEL","CHANGE_COUNTRY","COVER_FEE_CHECKBOX","CURRENCY_CONVERSION","DONE","GUEST_FORM_PAYMENT_SUBMIT_BUTTON","NOT_YOU","NOTE_PAD","ONBOARDING_FORM_PAYMENT_SUBMIT_BUTTON","PRESET_AMOUNT","PROGRAM_SELECTED","RECURRING_CHECKBOX","RETURN","SOCIAL_SHARE","SOCIAL_SHARE_DISMISS","UNIFIED_LOGIN","VOUCHER","VOUCHER_PRINT","VOUCHER_SHARE","LIKE","UNLIKE","ACCOUNT_TYPE","AMOUNT_EDIT_ALLOWED","AUTH_STATE","CAMPAIGN","CAMPAIGN_ID","CHALLENGE_END_TIME","CHALLENGE_START_TIME","CHALLENGE_STATUS","CHARITY_NAME","CHECKBOX","COUNTRY","CONTINGENCY_RESOLVED","CURRENCY","DONOR_IP_COUNTRY","ENABLED_FREQUENCIES","EXPERIMENT_ID","FEE_AMOUNT","FEE_CURRENCY","FEE_PAYER","FI_NETWORK","FI_ID","FI_OPERATION","FI_TYPE","FLOW","MODULE","NONANONYMOUS","NPID","NOTE_ALLOWED","NOTE_ADDED","INTEGRATION_IDENTIFIER","IS_CVV_SENT","IS_RECURRING","IS_SIGNUP","IS_3DS_ELIGIBLE","ORDER_ID","OFFER_TYPE","PAGE_NAME","PAGE_GROUP","PRODUCT","RESP_DURATION","SCREEN","SELECTED_PRESET_BUTTON_ID","SENDER_ID","SELECTED_FREQUENCY","STATUS","STATUS_CODE","PROCESS_STATUS","SWITCH","TOKEN","THREE_DS_DCC_START_TIME","THREE_DS_DCC_END_TIME","THREE_DS_LOOKUP_END_TIME","THREE_DS_LOOKUP_START_TIME","THREE_DS_REF_ID","THREE_DS_RESP_DURATION","THREE_DS_SPINNER_START_TIME","THREE_DS_SPINNER_END_TIME","THREE_DS_VERSION","TREATMENT_ID","TXN_ID","UI_TYPE","URL","UOB_BUNDLE_TYPE","VERSION","FEATURE","SOURCE","UPDATE_ID","DISMISS_METHOD","COUNT","STATE","AMOUNT_TYPE","ENCR_RCVR_ID","MERCHANT_EMAIL","NP_ID","RECURRING_VISUAL_EXPERIMENT","CloseButton","_IconButton","_extends","svgIconComponent","_CloseIcon","getDismissEventName","closeWindow","TemplateData","charityCancelUrl","buttonType","isDarkButton","body","body2","linkLabel","handleLinkClick","buttonLabel","handleButtonClick","_ref$showCloseButton","showCloseButton","_ref$centerBody","centerBody","addClass","isMobileOrInContext","_HeadingText","_BodyText","_alldata","create","field","value","DonationStore","EventEmitter","prototype","emitChange","emit","getAllData","toString","getDonationSymbol","symbol","getDonationCode","code","getFormatedAmount","formatedAmount","getDonationNote","note","getDonationRecurring","recurring","getSelectedRecurringFrequency","selectedRecurringFrequency","getRecurringModalStatus","recurringModalStatus","getAnonymousStatus","anonymousStatus","getCoverFeeOptInStatus","coverFee","getFeeAmount","getFormatedFeeAmount","formatedFeeAmount","getAmountBeforeFee","amountBeforeFee","getConfirmation","confirmation","getPostBackData","postBackData","getCurrentPage","currentPage","getServerErros","serverErrors","getPaymentError","paymentError","getSignUpError","signUpError","getFundingOptions","fundingOptions","getEmail","email","getBillingAddress","billingAddress","getUserCountry","getDonationAmountType","getGiftaidItFlagStatus","giftAidItFlag","getShareAddress","shareAddress","getAddCardError","addCardError","getGiftAidItExtraAmount","DonationConstants","getSelectedProgram","selectedProgram","getSelectedPresetButtonId","getCardSpec","cardSpec","getFormData","formData","getThreeDSContingency","threeDSContingency","languageSelectorState","getOrderStatus","orderStatus","getPPCCStatus","ppccStatus","dispatcherIndex","_action$item$selected","trim","keyMirror","require","module","exports","CHANGE_AMOUNT","CHANGE_SYMBOL","CHANGE_CODE","CHANGE_RECURRING","CHANGE_RECURRING_FREQUENCY","CHANGE_COVER_FEE","CHANGE_FEE_AMOUNT","CHANGE_FORMATED_FEE_AMOUNT","CHANGE_AMOUNT_BEFORE_FEE","CHANGE_ANONYMOUS_STATUS","RP_MODAL_CLOSED","GIFT_AID_IT","CHANGE_FORMATED_AMOUNT","CHANGE_NOTE","CHANGE_CARD_NUMBER","CHANGE_EXP_DATE","CHANGE_SECURITY_CODE","CHANGE_CARD_SPEC","CHANGE_FIRST_NAME","CHANGE_LAST_NAME","CHANGE_ADDRESS","CHANGE_PHONE","CHANGE_EMAIL","CHANGE_PASSWORD","SHOW_LANGUAGE_SELECTOR","UPDATE_CONFIRMATION","POST_BACK_DATA","UPDATE_CURRENT_PAGE","UPDATE_SERVER_ERRORS","PAYMENT_ERROR","UPDATE_SIGN_UP_ERROR","FUNDING_OPTIONS","EMAIL","BILLING_ADDRESS","UPDATE_DONATION_AMOUNT_TYPE","ENABLE_PRESET_AMOUNTS","CHANGE_SHARE_ADDRESS","ADD_CARD_ERROR","UPDATE_SELECTED_PROGRAM","SAVE_FORM_DATA","UPDATE_THREEDS_DATA","UPDATE_SELECTED_PRESET_BUTTON_ID","UPDATE_ORDER_STATUS","UPDATE_PPCC_STATUS","EMAIL_REX","DEFAULT_CARD_SPEC","type","fields","ccNumber","required","pattern","maxlength","expirationDate","csc","minlength","DONATE_GIFTAID_IT_EXTRA_AMOUNT","PPGF_DISCLAIMER_TOUCHPOINT","GN_CONTENT_TOUCHPOINT","NNA_CONTENT_TOUCHPOINT","BRANDED_CAMPAIGN","GENEROSITY_NETWORK","GENEROSITY_NETWORK_CHARITIES","PP_FUNDRAISING","DONATE_BUTTON_CAMPAIGN","WPS_DONATION","PAYPAL_FUNDRAISER_LISTED_CAMPAIGN","PAYPAL_FUNDRAISER_UNLISTED_CAMPAIGN","PRODUCT_TYPE","DBUTTON","DBUTTONC","SEND_MONEY_RECURRING_DONATION","DONATE_BUTTON","DW_GIVING_DONATE_SETUP_SCREEN_SHOWN","DW_GIVING_DONATE_SETUP_COMMENT_PRESSED","DW_GIVING_DONATE_SETUP_NEXT_PRESSED","DW_GIVING_DONATE_SETUP_DONATE_WITH_CARD_PRESSED","DW_GIVING_DONATE_SETUP_TOOLTIP_PRESSED","DW_GIVING_DONATE_SETUP_TERMS_PRESSED","DW_GIVING_DONATE_SETUP_DISMISS_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_CHECK_PRESSED","DW_GIVING_DONATE_SETUP_SHARE_CONTACT_UNCHECK_PRESSED","DW_GIVING_GUEST_FORM_SCREEN_SHOWN","DW_GIVING_GUEST_FORM_DONATE_PRESSED","DW_GIVING_GUEST_FORM_DISMISS_PRESSED","DW_GIVING_MEMBER_REVIEW_DISMISS_PRESSED","DW_GIVING_PAYMENT_SUCCESS_DISMISS_PRESSED","DW_GIVING_PAYMENT_SUCCESS_DONE_PRESSED","DW_GIVING_PAYMENT_SUCCESS_SCREEN_SHOWN","DW_GIVING_PAYMENT_PENDING_SCREEN_SHOWN","DW_GIVING_PAYMENT_SUCCESS_SHARE_PRESSED","DW_GIVING_SHARE_SCREEN_SHOWN","DW_GIVING_SHARE_CHANNEL_PRESSED","DW_GIVING_SHARE_DISMISS_PRESSED","DW_GIVING_REDIRCT_SCREEN_SHOWN","DW_GIVING_REDIRCT_OPEN_PRESSED","DW_GIVING_REDIRCT_DISMISS_PRESSED","DONATION_PAYMENT_VIEW_LANDING_DONATE_PRESSED","DONATION_PAYMENT_VIEW_LANDING_PAYPAL_PRESSED","DONATION_PAYMENT_VIEW_LANDING_CARD_PRESSED","DONATION_PAYMENT_VIEW_LANDING_FREQUENCY_PRESSED","DONATION_PAYMENT_GUEST_FORM_DONATE_PRESSED","DONATION_ANONYMOUS_CHECKBOX_CHECK_PRESSED","DONATION_ANONYMOUS_CHECKBOX_UNCHECK_PRESSED","DONATION_CONFIRMATION_PAGE_IMP","DONATE_THREE_DS_DDC_START","DONATE_THREE_DS_DDC_COMPLETE","DONATE_THREE_DS_DDC_FAILURE","DONATE_THREE_DS_LOOKUP_START","DONATE_THREE_DS_LOOKUP_COMPLETE","DONATE_THREE_DS_IFRAME_SHOWN","DONATE_THREE_DS_PROOCEED_TO_PAYMENT","DONATE_LANDING_SCREEN_SHOWN","DONATE_REVIEW_SCREEN_SHOWN","DONATE_GUEST_FORM_SCREEN_SHOWN","DONATE_SUCCESS_SHARE_MESSAGE","DONATE_SUCCESS_MERCHANT_SITE_PRESSED","DONATE_LANDING_MERCHANT_SITE_PRESSED","DONATE_GUEST_REVIEW_PROCESS_DONATE_CLICK","DONATE_GENERIC_SOCIAL_SHARE_SCREEN_SHOWN","DONATE_MATCH_SOCIAL_SHARE_SCREEN_SHOWN","DONATE_LANDING_UPDATES_MODULE_SHOWN","DONATE_LANDING_UPDATES_READ_MORE_PRESSED","DONATE_LANDING_UPDATES_SHOW_MORE_PRESSED","DONATE_LANDING_UPDATES_LIKE_PRESSED","DONATE_LANDING_UPDATES_LIKE_PRESSED_COMPLETED","DONATE_LANDING_UPDATES_LIST_SHOWN","DONATE_LANDING_UPDATES_LIST_LIKE_PRESSED","DONATE_LANDING_UPDATES_LIST_SELECTION_PRESSED","DONATE_LANDING_UPDATES_LIST_DISMISS_PRESSED","DONATE_LANDING_UPDATES_DETAIL_VIEW_SHOWN","DONATE_LANDING_UPDATES_DETAIL_LIKE_PRESSED","DONATE_LANDING_UPDATES_DETAIL_DISMISS_PRESSED","DONATE_LANDING_UPDATES_LOGIN_VIEW_SHOWN","DONATE_LANDING_UPDATES_LOGIN_BUTTON_PRESSED","DONATE_LANDING_UPDATES_LOGIN_SIGNUP_PRESSED","DONATE_LANDING_UPDATES_LOGIN_DISMISS_PRESSED","DONATE_LANDING_UPDATES_LOADING_ERROR_SHOWN","DONATE_LANDING_UPDATES_LOADING_ERROR_RETRY_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_SET_FAV_CHARITY_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_INSIGHTS_MODULE_PRESSED","DONATE_DONOR_VIEW_POST_DONATION_SET_FAVORITE_CHARITY_ERROR","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_SHOWN","DONATE_DONOR_VIEW_POST_DONATION_CREATE_FUNDRAISER_MODAL_PRESSED","DONATE_DONOR_VIEW_REPORT_MERCHANT_PRESSED","FPTI_PRODUCT","KEY_DOWN","TAB","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","SPACE","ENTER","AU_CRS","ABORTED","FAILURE","SUCCESS","ABORTED_STATUS_CODE","FAILURE_STATUS_CODE","SUCCESS_STATUS_CODE","SINGLE_TAX_RESIDENCY","MULTI_TAX_RESIDENCY","ALLOWED_IMAGE_TYPES","MAX_IMAGE_SIZE","KILOBYTE","MEGABYTE","BTN_IMAGE_MAX_FILE_SIZE","ALLOWED_FILE_EXTENSIONS","IMG_SCALE_SIZE","WIDTH_STEP_1","WIDTH_BANNER","WIDTH_LOGO","WIDTH_CAMPAIGN","INSTRUMENT_TYPES","HOLDING","PAYMENT_CARD","PAYMENT_TOKEN","BANK_ACCOUNT","CREDIT","UNKNOWN","PAYMENT_CARDS","VISA","MASTERCARD","MASTER_CARD","MAESTRO","AMEX","DISCOVER","JCB","CHINA_UNION_PAY","CDN_HOST_NAME","MERCHANT_PPCC_CONFIRMED_STATUS","FULL","VARIANT_VALUEPROP_1","VARIANT_VALUEPROP_2","VARIANT_VALUEPROP_3","APP_ID","ORGANIZER_UPDATES","INITIAL_UPDATES_COUNT","MAX_UPDATES_PER_PAGE","MAX_CHARACTERS_SUBJECT","MAX_ORGANIZER_UPDATES","ACTIONS","SHOW_UPDATE_DETAIL_VIEW","SHOW_UPDATE_LIST","ORGANIZER_UPDATE_SINGLE_UPDATE_ERROR","POST_DONATION_MODULES","SET_FAVORITE_CHARITY","CREATE_FUNDRAISER","GIVING_SUMMARY","SHARE","polyfillFetch","fetchPolyfill","sanitize","input","dompurify","replace","show","selector","display","elementsToShow","document","querySelectorAll","i","style","hide","elementsToHide","elementsSelected","_elementsSelected$i$c","classList","add","apply","_toConsumableArray","fetcher","csrf","querySelector","dataset","createEvent","initEvent","dispatchEvent","headers","fetch","then","response","status","returnPath","renderURL","history","pushState","reload","handleErrors","_noOpFunction","scrollTo","__getInitialData","initialDataNode","getElementById","initialDataJSON","innerHTML","JSON","parse","console","warn","getInitialData","formatAmount","currency","amountValue","wrNormalizeNumber","formatCurrency","rawTemplateData","_isEmpty","giftAid","_set","webscrData","giftAidAddress","localsMessagesNode","content","locals","personalized","getPersonalizedMessagesAsContentLoaderStandard","init","charityName","decodeURIComponent","er","donationId","_templateData$presetA3","_templateData$presetA","donorCoversFee","rawAmount","AppActions","donationSymbol","donationNote","recurringStatus","enablePresetAmounts","presetAmounts","donateContext","amount_type","amount_options","_get","_templateData$presetA2","map","Number","ppccLookupRequired","json","result","isPPCC","DonateAppActions","catch","waitTextEl","focus","outline","onkeydown","outlineOffset","keyCode","activeElement","preventDefault","hideSpinnerOverlay","isPopupMode","xprops","close","isSdkMode","Boolean","sdkMeta","targetMeta","opener","isdesktop","outerWidth","ismobile","istablet","isNotAtMaxWidth","availWidth","availHeight","outerHeight","_step2","_iterator2","_createForOfIteratorHelper","personalizedMessages","s","n","done","touchpoint","touchpoint_code","get","err","f","isGNC","isBrandedCampaign","isPPFundraising","isPPCampaign","name","results","RegExp","exec","initializeWorldReady","worldReadyData","textContent","WorldReady","load","_ref$country","_ref$language","NumberFormat","CurrencyFormat"],"sourceRoot":""}