{"version":3,"file":"static/js/application.initial~d734051a.3cbdef22.js","mappings":"maAYaA,EAAuB,SAAAC,GAAa,OAC/CC,EAAAA,EAAAA,OAAMD,GACHE,KAAI,SAAAC,GAAA,IAASC,EAAgBD,EAAtBE,KAAwBC,EAAgBH,EAAhBG,iBAAgB,OAC7CA,EAAmB,CAACF,EAAkBE,GAAoB,IAAI,IAChEC,UACAC,SACAC,OAAQ,EAEAC,EAAyB,SAACC,GACrC,IAAMC,EAlB0B,SAAAD,GAAyB,OACzDV,EAAAA,EAAAA,OAAMU,GACHE,QACAX,KAAI,SAAAY,GAAA,IAAAC,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAAEV,EAAgBW,EAAA,GAAIE,EAAgBF,EAAA,GAAhBE,iBAAgB,OACxCA,EAAmB,CAACA,EAAkBb,GAAoB,IAAI,IAChEG,UACAC,SACAC,OAAQ,CAWYS,CAA0BP,GACjD,MAAO,CACLQ,uBAAwB,SAAAC,GAAW,OACjClB,EAAAA,EAAAA,KAAIkB,GAAa,SAAAC,GAAU,OAAIC,EAAAA,EAAAA,QAAOV,EAAgBS,EAAYA,EAAW,GAAC,EAEpF,EAEaE,EAA0B,SAAAZ,GAAyB,MAAK,CACnEa,2BAA4B,SAAFC,GAGnB,IAFWC,EAAmBD,EAAnCE,eACaC,EAAgBH,EAA7BI,YAEMC,GAAGC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACJL,EAAsB,CAAEC,eAAgBD,GAAwB,CAAC,GACjEE,EAAmB,CAAEC,YAAaD,GAAqB,CAAC,GAG7D,IAAII,EAAAA,EAAAA,UAASN,KACXO,EAAAA,EAAAA,UAASP,EAAoBrB,SAC5B6B,EAAAA,EAAAA,SAAQR,EAAoBrB,MAAO,CACpC,IAAM8B,GAAyBlC,EAAAA,EAAAA,OAAMU,GAClCE,QACAuB,MAAK,SAAAC,GAAA,IAAI/B,GAAJU,EAAAA,EAAAA,GAAAqB,EAAA,GAAoB,UACxB/B,EAAiBW,mBAAqBS,EAAoBrB,MAC1DC,EAAiBgC,sBAAsB,IACxC7B,QACH,GAAI0B,EAAwB,CAC1B,IAAAI,GAAAvB,EAAAA,EAAAA,GACImB,EAAsB,GADnB/B,EAAgBmC,EAAA,GAAAC,EAAAD,EAAA,GAAID,EAAsBE,EAAtBF,uBAAwBG,EAAsBD,EAAtBC,uBAQnD,GALAX,EAAIH,gBAAcI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbL,GAAmB,IACtBrB,KAAMD,IAGJwB,IAAoBc,EAAAA,EAAAA,SAAQd,GAAmB,CACjD,IAAMC,GAAcc,EAAAA,EAAAA,WAAUf,IAE9BgB,EAAAA,EAAAA,MAAKf,GAAa,SAACgB,GACbA,EAAYC,MAAQL,IAEtBI,EAAYC,IAAMR,EAEtB,IACAR,EAAID,YAAcA,CACpB,CACF,CACF,CAEA,OAAOC,CACT,EACD,EAEYiB,EAAmC,SAAApC,GAAyB,OAAAoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACpErB,EAAuBC,IACvBY,EAAwBZ,GAA0B,E,uBC1E1CqC,EAAyB,CAEpCC,YAAa,oBACbC,IAAK,uBACLC,eAAgB,wBAChBC,iBAAkB,0BAClBC,eAAgB,uBAChBC,kBAAmB,2BACnBC,0BAA2B,mCAC3BC,2BAA4B,oCAC5BC,uBAAwB,+BACxBC,WAAY,+BAMP,SAASC,IAA0D,IAARC,EAAKC,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACrEC,GADyDH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,GAE3DI,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAKQE,EAElBD,EAFFE,mBACkBC,EAChBH,EADFI,iBAMF,OAFEH,GAA+BE,GAG3B1B,EAAAA,EAAAA,SAAQkB,IACH1D,EAAAA,EAAAA,KAAI0D,GAAO,SAAAvD,GAAI,OACpBiB,EAAAA,EAAAA,QAAO0B,EAAwB3C,EAAMA,EAAK,KAEvCiB,EAAAA,EAAAA,QAAO0B,EAAwBY,EAAOA,GAExCA,CACT,CAEA,IAAMU,EAAkC,CACtCC,sBAAsB,EACtBC,qBAAqB,EACrBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,EAClBC,gBAAgB,EAChBC,iBAAiB,GAQbC,EAA6B,SAAC7D,EAAkBb,GAAgB,OAAA2E,EAAAA,EAAAA,GAAA,GACnE3E,EANmC,SAACa,EAAkBb,GAAgB,MAAM,CAC7Ea,iBAAAA,EACAwB,uBAAuB,sBAADuC,OAAwB/D,GAC9CqB,uBAAuB,sBAAD0C,OAAwB5E,GAC/C,CAEqB6E,CAA8BhE,EAAkBb,GAAiB,EAsFhF,SAAS8E,EAAwBC,EAAaC,GACnD,IApFkDhE,EAoF5CiE,GAAaC,EAAAA,EAAAA,GA9DrB,SAAmCF,EAAaD,GAC9C,IACEI,EAGEH,EAHFG,+BACAC,EAEEJ,EAFFI,uCAAsCC,EAEpCL,EADFnB,QAMIyB,QANG,IAAAD,EAAG,CAAC,EAACA,GAGZtB,oBAIGG,EAAgCa,GAE/BQ,EAAoB,GAAAX,QAAAM,EAAAA,EAAAA,GACrBI,EAAwB,CACzB,uBACA,oBACA,yBACE,CACF,MACA,cACA,mBACD,CACD,4BACA,qBAAkBJ,EAAAA,EAAAA,GAEfI,EAAwB,CACzB,0BACA,uBACA,4BACE,CACF,mBACA,iBACA,sBACD,CAED,yCACA,kCAqBF,OAlBIH,GAAkCG,EACpCC,EAAqBC,KAAK,gCACjBL,IAAmCG,GAC5CC,EAAqBC,KAAK,0BAGxBJ,GAA0CE,GAC5CC,EAAqBC,KAAK,iCAC1BD,EAAqBC,KAAK,oCAC1BD,EAAqBC,KAAK,yCAC1BD,EAAqBC,KAAK,sCACjBJ,IAA2CE,IACpDC,EAAqBC,KAAK,iCAC1BD,EAAqBC,KAAK,6BAC1BD,EAAqBC,KAAK,yCAC1BD,EAAqBC,KAAK,+BAGrBD,CACT,CAIOE,CAA0BT,EAAaD,IAM5C,OAJ8BpD,EAAAA,EAAAA,GAAA,IAvFoBX,EAwFFiE,GAvFzCS,EAAAA,EAAAA,OAAI/D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACR+C,EAA2B,MAAO,yBAClCA,EAA2B,uBAAwB,QACnDA,EAA2B,cAAe,sBAC1CA,EAA2B,oBAAqB,gBAChDA,EAA2B,iBAAkB,0BAC7CA,EAA2B,wBAAyB,mBACpDA,EAA2B,mBAAoB,4BAC/CA,EAA2B,0BAA2B,qBACtDA,EAA2B,iBAAkB,yBAC7CA,EAA2B,uBAAwB,mBACnDA,EAA2B,oBAAqB,6BAChDA,EAA2B,2BAA4B,sBACvDA,EAA2B,yBAA0B,iCACrDA,EAA2B,+BAAgC,2BAC3DA,EAA2B,4BAA6B,qCACxDA,EAA2B,mCAAoC,8BAC/DA,EAA2B,6BAA8B,sCACzDA,EAA2B,oCAAqC,+BAClE1D,IAwEL,C,mgBCvJI2E,E,wDAQG,SAASC,EAAyBC,GAwCvC,IAAMC,KAxCqDrC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAwCpCsC,EAAAA,UAAkBC,IAAAA,UAAYH,GAC/CI,EAAqBF,EAAAA,IAAUD,EAAQ,iCACvCI,EAA+BH,EAAAA,IAAUE,EAAoB,qBAEnE,GAAIC,EAA8B,CAChC,IAAMC,EAAaH,IAAAA,MAAQE,GACxBzF,QACA2F,QAAO,SAAAzF,GAAA,IAAAZ,GAAAa,EAAAA,EAAAA,GAAAD,EAAA,GAAE0F,EAAQtG,EAAA,GAAM,OAAAA,EAAA,GACjBuG,WA/CX,SAAsBC,EAAYF,GAChC,IAAIG,EAAsB,CACxB,UACA,WACA,UACA,UACA,OAGA,UAEIC,EAAoBT,IAAAA,QAAU,CAClC,8BACA,gCACA,0BACe,sBAAfO,GAAsC,oBACvB,iBAAfA,GAAiC,sBAoBnC,OAjBIZ,EAAYe,uCACXV,IAAAA,SAAW,CACZ,2BACA,oBACA,mCACA,6BACCK,KACHG,EAAsBA,EAAoB5B,OAAO,CAC/C,KAAM,aAAc,gBACpB,YAAa,2BACb,4BAA6B,eAC7B,mBAAoB,sBAAuB,qBAC3C,OAAQ,sBAAuB,oBAC/B,oBAAqB,6BAIlBoB,IAAAA,SAAWQ,EAAqBD,KAAgBP,IAAAA,SAAWS,EAAmBJ,EACvF,CAUwBM,CAAab,EAAO7F,KAAMoG,EAAS,IACtDvG,IAAIkG,IAAAA,OACJ3F,QAEC2F,IAAAA,QAAUC,EAAmBW,YAC/BX,EAAmBW,WAAaZ,IAAAA,MAAQC,EAAmBW,YACxDC,MAAMV,GACN9F,QAEH2F,IAAAA,KAAOE,GAA8B,SAACY,EAAMT,GACtCL,IAAAA,SAAWG,EAAYE,KAEzBS,EAAKF,YAAa,EAEtB,GAEJ,CAEA,OAAOd,CACT,C,ICxEIH,EACAoB,EACAC,E,oCAYJ,ICjBIrB,EACAsB,ECDAtB,ECYAuB,EHKEC,EAAmB,CACvBC,QAAS,4CACTC,SAAU,sCACVC,QAAS,qCACTC,GAAI,gCACJC,uBAAwB,yCACxBC,QAAS,qCACTC,WAAY,yCAGRC,EAAoB,CACxBP,QAAS,kBACTC,SAAU,uBACVC,QAAS,uBACTC,GAAI,iBACJE,QAAS,sBACTC,WAAY,2BAGRE,EAAmB,CACvB,iCCZK,SAASC,EACdhC,GAGC,IADDiC,EAAUrE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAEPqC,KAHFrC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAGmBsC,EAAAA,UAAkBC,IAAAA,UAAYH,GAC/CI,EAAqBF,EAAAA,IAAUD,EAAQ,kCAAoCC,EAAAA,IAAUD,EAAQ,uBAAyBC,EAAAA,IAAUD,EAAQ,cAE9I,GAAIG,EAAoB,CACtB,IAAMC,EAA+BH,EAAAA,IAAUE,EAAoB,qBAE/DC,GACFF,IAAAA,KAAOiB,GAAe,SAACc,GACjBD,GACE9B,IAAAA,QAAUC,EAAmBW,aAC/BX,EAAmBW,WAAWpB,KAAKuC,EAASrF,KAE9CwD,EAA6B6B,EAASrF,KAAOqF,EAAS1H,cAE/C6F,EAA6B6B,EAASrF,IAEjD,GAEJ,CAEA,OAAOoD,CACT,CC1CO,SAASkC,EAA6BlC,GAC3C,IAAMS,EAAaT,EAAO7F,KACpBuG,EAAsB,CAAC,UAAW,WAAY,WAChDC,EAAoB,CACtB,4BACA,mCACA,iCACA,eAGEd,EAAYsC,sBAAwBjC,IAAAA,SAAWQ,EAAqBD,KAEpEE,EADiB,YAAfF,EACkB,CAClB,eAGkB,IAIxB,IAAMN,EAAqBF,EAAAA,IAAUD,EAAQ,iCACvCI,EAA+BH,EAAAA,IAAUE,EAAoB,qBAC7DiC,EAAqB,CACzB,4BACA,mCACA,iCACA,eAGF,GAAIhC,EAA8B,CAEhC,IAAMiC,EAAenC,IAAAA,OAASkC,GAAoB,SAACE,GACjD,OAAOrC,EAAAA,IAAUG,EAA8BkC,IAC/CpC,IAAAA,SAAWQ,EAAqBD,KAC/BP,IAAAA,SAAWS,EAAmB2B,EACjC,IAEIpC,IAAAA,QAAUC,EAAmBW,YAC/BX,EAAmBW,WAAaZ,IAAAA,MAAQC,EAAmBW,YACxDC,MAAMsB,GACN9H,QAEH2F,IAAAA,KAAOkC,GAAoB,SAACE,GACtBpC,IAAAA,SAAWmC,EAAcC,KAE3BtC,EAAOuC,WAAWC,mBAAmBxC,OAAOuC,WAAWD,GAAmBxB,YAC1E,EAEJ,GAEJ,CAEA,OAAOd,CACT,CCjDA,IAAIH,EAAc,KAEX,SAAS4C,EAAWC,GACtBtB,EAAiBsB,EAAjBtB,aACHvB,EAAcuB,EAAauB,IAAI,eJf1B,SAAmB/H,GAEtB,IADFwG,EAAYxG,EAAZwG,aAEAvB,EAAcuB,EAAauB,IAAI,cACjC,CIYEC,CAAcF,GHXT,SAAmB9H,GAItB,IAHFwG,EAAYxG,EAAZwG,aAAYyB,EAAAjI,EACZqE,YAAAA,OAAW,IAAA4D,EAAG,GAAEA,EACQC,EAAgBlI,EAAxCsG,uBAEArB,EAAcuB,EAAauB,IAAI,eAC/B1B,EAAchC,EACdiC,EAAyB4B,CAC3B,CGIEC,CAAuBL,GFhBlB,SAAmB9H,GAEtB,IADFwG,EAAYxG,EAAZwG,aAEAvB,EAAcuB,EAAauB,IAAI,eAE/BxB,EAAgBjB,IAAAA,QAAU,CACxBD,EAAAA,IAAUJ,EAAa,yCACrB,CACEjD,IAAK,kBACLrC,MAAO,CACLyI,MAAO,CAAEC,OAAQ,mBACjBC,mBAAmB,EACnBC,YAAQtF,EACR1D,KAAM,SACNiJ,KAAM,SACNtC,YAAY,EACZuC,UAAU,IAEV,MAEV,CEHEC,CAA0BZ,GDlBrB,SAAmB9H,GAEtB,IADFwG,EAAYxG,EAAZwG,aAEAvB,EAAcuB,EAAauB,IAAI,cACjC,CCeEY,CAAsBb,EACxB,CAGA,SAASc,EAAmCC,GAC1C,OAAQA,EAAaC,eACnB,IAAK,eACH,OAAQ7D,EAAY8D,oCACjB9D,EAAY+D,8BACZ/D,EAAYgE,qBAEjB,IAAK,WACH,OAAOhE,EAAYiE,kCAErB,IAAK,oBACL,IAAK,iBACH,OAAOjE,EAAYkE,kCAErB,IAAK,eACH,OAAOlE,EAAYmE,qBAErB,IAAK,YACH,OAAOnE,EAAYoE,mBAErB,IAAK,UAkCL,IAAK,0BACH,OAAO,EAhCT,IAAK,cACH,OAAOpE,EAAYR,+BAErB,IAAK,qBACH,OAAOQ,EAAYP,uCAErB,IAAK,+BACH,OAAOO,EAAYe,sCAErB,IAAK,SACH,OAAOf,EAAYqE,mBAErB,IAAK,SACH,OAAOrE,EAAYsE,6BAErB,IAAK,WACH,OAAOtE,EAAYuE,6BAErB,IAAK,cACH,OAAOlE,IAAAA,OAASL,EAAY9B,QAAS,qCAGvC,IAAK,kBACH,OAAOmC,IAAAA,OAASL,EAAY9B,QAAS,wBAEvC,IAAK,eACH,OAAOmC,IAAAA,OAASL,EAAY9B,QAAS,gBAEvC,IAAK,iBACH,OAAOmC,IAAAA,OAASL,EAAY9B,QAAS,6BAKvC,IAAK,sBACH,OAAOmC,IAAAA,OAASL,EAAY9B,QAAS,kBAEvC,QACE,OAAO,EAEb,CAYA,SAASsG,EAAoBrE,GAC3B,IAAMsE,EAAatE,EAAO7F,KAAKuJ,cAGzBa,EAAkB,CACtB,CACEC,UAAW3E,EAAY+D,6BAA+C,OAAfU,EACvDrC,SAAU,OACVwC,cAAe,CAAC,kBAElB,CACED,SAAyB,aAAfF,EACVrC,SAAU,eACVwC,cAAe,CAAC,qBAElB,CAIED,UAAW3E,EAAY6E,6BACvBzC,SAAU,eACVwC,cAAe,CAAC,UAElB,CACED,WAAY3E,EAAY9B,SAAW8B,EAAY9B,QAAQ4G,eACvD1C,SAAU,eACVwC,cAAe,CAAC,UAElB,CACED,WAAY3E,EAAY9B,SAAW8B,EAAY9B,QAAQ6G,yBACvD3C,SAAU,eACVwC,cAAe,CAAC,mBAElB,CACED,SAAyB,aAAfF,EACVrC,SAAU,SACVwC,cAAe,CAAC,eAElB,CACED,UAAU,EACVvC,SAAU,WACVwC,cAAe,CAAC,uBAElB,CACED,UAAU,EACVvC,SAAU,iBACVwC,cAAe,CAAC,uBAElB,CACED,UAAU,EACVvC,SAAU,OACVwC,cAAe,CAAC,qBAElB,CACED,UAAU,EACVvC,SAAU,6BACVwC,cAAe,CAAC,cAElB,CACED,UAAU,EACVvC,SAAU,6BACVwC,cAAe,CAAC,oBAAqB,UAAW,sBAElD,CACED,WAAY3E,EAAYgF,wCACtBhF,EAAYiF,2CACd7C,SAAU,6BACVwC,cAAe,CAAC,eAElB,CACED,UAAW3E,EAAYkF,mCAAqClF,EAAYmF,+BACxE/C,SAAU,6BACVwC,cAAe,CAAC,uBAElB,CACED,UAAW3E,EAAYoF,+BACvBhD,SAAU,6BACVwC,cAAe,CAAC,0BAElB,CACED,UAAW3E,EAAYqF,qBACvBjD,SAAU,6BACVwC,cAAe,CAAC,gBAElB,CACED,WAAY3E,EAAY9B,SAAW8B,EAAY9B,QAAQ4G,eACvD1C,SAAU,6BACVwC,cAAe,CAAC,aAAc,eAEhC,CACED,UAAW3E,EAAYgE,sBAAwC,aAAfS,EAChDrC,SAAU,eACVwC,cAAe,CAAC,aAElB,CACED,UAAW3E,EAAYsF,gCACvBlD,SAAU,WACVwC,cAAe,CAAC,QAAS,SAAU,YAAa,WAAY,QAAS,WAAY,YAAa,UAAW,aAAc,UAAW,WAAY,SAAU,cAE1J,CACED,UAAW3E,EAAYuF,gCACvBnD,SAAU,WACVwC,cAAe,CAAC,UAAW,UAAW,UAAW,WAAY,aAAc,cAE7E,CACED,UAAW3E,EAAYwF,gCACvBpD,SAAU,WACVwC,cAAe,CAAC,SAAU,SAAU,YAEtC,CACED,UAAW3E,EAAYyF,qCACvBrD,SAAU,WACVwC,cAAe,CAAC,aAElB,CACED,UAAW3E,EAAY0F,gCACvBtD,SAAU,WACVwC,cAAe,CAAC,QAAS,QAAS,OAAQ,aAAc,YAE1D,CACED,UAAW3E,EAAY2F,kCACvBvD,SAAU,WACVwC,cAAe,CAAC,gBAIpBvE,IAAAA,MAAQqE,GACLjE,OAAO,CAAEkE,UAAU,IACnB9H,MAAK,SAAC+I,IA1IX,SAAsCzF,EAAQyD,EAAciC,GAC1D,IAAMC,EAAa3F,EACdE,IAAAA,QAAUF,EAAOuC,WAAWkB,MAC/BkC,EAAWpD,WAAWkB,GAAcmC,KAClC1F,IAAAA,WAAaF,EAAOuC,WAAWkB,GAAcmC,KAAMF,GAIzD,CAmIMG,CAA6B7F,EAAQyF,EAAOxD,SAAUwD,EAAOhB,cAC/D,GACJ,CAiBA,SAASqB,EAA2C9F,EAAQ+F,EAAiBC,GAC3E,IAAML,EAAa3F,EACbG,EAAqBF,EAAAA,IAAU0F,EAAY,iCAC3CvF,EAA+BH,EAAAA,IAAUE,EAAoB,qBAcnE,OAbIC,IACEF,IAAAA,QAAUC,EAAmBW,cAC/BX,EAAmBW,WAAakF,EAC9B9F,IAAAA,MAAQC,EAAmBW,WAAYiF,GACvC7F,IAAAA,WAAaC,EAAmBW,WAAYiF,IAEhD7F,IAAAA,KAAOE,GAA8B,SAACY,EAAMT,GACtCL,IAAAA,SAAW6F,EAAiBxF,KAE9BS,EAAKF,WAAakF,EAEtB,KAEKL,CACT,CA0CA,SAASM,EAAyCjG,EAAQkG,EAAWH,GAEnE,OAAOD,EAA2C9F,EAAQ+F,EADxCvC,EAAmC0C,GAEvD,CAwHA,IAAMC,EAAuC,CAC3C,WACA,UACA,KACA,UACA,aACA,4BACA,WACA,YACA,gBACA,yBACA,uBACA,4BACA,2BAEA,mBACA,qBACA,sBACA,qBACA,0BACA,OACA,qBACA,gBACA,qBACA,sBACA,sBACA,oBACA,oBAEA,0BACA,eAEA,OAEA,SACA,UACA,eACA,mBA2CK,SAASC,EAAwCpG,GACtD,IAAMqG,EAA6BnG,IAAAA,OAASL,EAAY9B,QAAS,sBAC3DuI,EAA4BpG,IAAAA,OAASL,EAAY9B,QAAS,oBAC1DwI,EAAgBrG,IAAAA,SAAWiG,EAAsCnG,EAAO7F,MAI9E,OA/CF,SACE6F,EACAwG,GAEA,IAAMb,EAAa3F,EACbG,EAAqBF,EAAAA,IAAU0F,EAAY,iCAC3CvF,EAA+BH,EAAAA,IAAUE,EAAoB,qBACnE,GAAIC,EAA8B,CAChC,IAAMqG,EAAkBtG,EAAmBW,WACrC4F,EAAqBxG,IAAAA,QAAUuG,IACrC/J,EAAAA,EAAAA,MAAKI,EAAAA,IAAwB,SAACvC,EAAOqC,GACnC,IAAM+J,EAAwBH,EAAmB5J,EAAMrC,EACjDqM,EAAuBJ,EAAmBjM,EAAQqC,EAClDiK,EAAoBzG,EAA6BuG,GACjDG,EAAmB1G,EAA6BwG,GAEhDG,EAA0B7G,IAAAA,SAAWuG,EAAiBE,IACtDE,GAAqBA,EAAkB/F,WACvCkG,EAAyB9G,IAAAA,SAAWuG,EAAiBG,IACrDE,GAAoBA,EAAiBhG,YAEvCiG,GAA2BC,KACzBN,IACFvG,EAAmBW,WAAaZ,IAAAA,MAAQC,EAAmBW,YACxDmG,WAAW,CAACN,IACZ5F,MAAM,CAAC6F,IACPrM,SAEDsM,IACFA,EAAkB/F,YAAa,GAE7BgG,IACFA,EAAiBhG,YAAa,GAGpC,GACF,CACF,CASEoG,CAA8ClH,EAFrBsG,GAA6BC,GAAiBF,GAGhErG,CACT,CAMO,SAASmH,EAAmCpH,EAAgBqH,GAAqE,IAAzDC,EAAiB1J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAM2J,EAA4B3J,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC7HmC,EAASC,EAAAA,UAAgBF,GA0B/B,OAvBAD,EAAyBE,GAAQ,GAC7BoH,IH1eC,SAA2CrH,GAAwD,IAA3BsH,EAAiB1J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAC3FqC,GAD8DrC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC3BuC,IAAAA,SAAlBD,EAAAA,WAA8BF,GAC/CU,EAAaT,EAAO7F,KACpBgG,EAAqBF,EAAAA,IAAUD,EAAQ,iCACvCI,EAA+BH,EAAAA,IAAUE,EAAoB,qBAEnE,GAAIe,GACFd,GACAP,EAAYwB,EAAiBZ,KAC7BZ,EAAY0H,+BAAiCzF,EAAiB0F,QAAQvG,GAAe,EAAG,CACxF,IAAMwG,EAA4B,2BAAfhH,EAA0CoB,EAAkBpB,GAAcQ,EAKvFyG,EAJsB,IAAIC,EAAAA,2BAA2B,CACzDxN,MAAMyN,EAAAA,EAAAA,+BAA8BH,GACpCI,cAAe3G,EAAuB4G,+BAA+BL,KAE1BM,SAEzCL,GACFxH,IAAAA,KAAOwH,GAAkB,SAACM,GACxB,IAAMpL,EAAG,eAAAkC,OAAkBkJ,EAAaC,IAExC7H,EAA6BxD,GAAO,CAClCsL,oBAAoBC,EAAAA,EAAAA,mBAAkB,CACpC1H,WAAAA,EACAuB,WAAYgG,EAAahG,WACzB9C,YAAaW,IAEfuI,MAAOJ,EAAa7N,KACpB8N,GAAID,EAAaC,GACjBD,cAAc,EACd7E,OAAQ6E,EAAa7E,OACrBhJ,KAAM,SACNiJ,KAAM,SACNtC,YAAY,EACZuC,UAAU,GAGRnD,IAAAA,QAAUC,EAAmBW,cAC9BZ,IAAAA,SAAWC,EAAmBW,WAAYlE,IAC3CuD,EAAmBW,WAAWpB,KAAK9C,EAEvC,IAGEyK,GACFnH,IAAAA,KAAOmH,GAAmB,SAACgB,GACzB,IAAMzL,EAAMyL,EAAiBC,eACzB1L,EAAI2L,WAAW,iBAAmB3L,KAAOwD,KAAiC,IAC5EA,EAA6BxD,GAAO,CAClCsG,mBAAmB,EACnB+E,GAAIrL,EAAI4L,MAAM,gBAAgB,GAC9BR,cAAc,EACd7E,YAAQtF,EACR1D,KAAM,SACNiJ,KAAM,SACNtC,YAAY,EACZuC,UAAU,GAGRnD,IAAAA,QAAUC,EAAmBW,aAC/BX,EAAmBW,WAAWpB,KAAK9C,GAGzC,GAEJ,CAGF,CGuaI6L,CAAkCzI,GAAQ,EAAOqH,GArPrD,SAAyDrH,GACvD,IACM2F,EAAa3F,EADKE,IAAAA,SAAW,CAAC,YAAaF,EAAO7F,OAGjCwL,EAAWpD,WAAWmG,0BAC3C/C,EAAWpD,WAAWmG,wBAA0B,CAC9CC,KAAM,uBACN1G,SAAU,0BACVmB,KAAM,SACNtC,YAAY,EACZ8H,SAAU,kBACVhD,KAAM,CAAC,QAAS,aAAc,SAC9BiD,WAAY,WACZC,UAAW,CAAC,aAGlB,CAsOIC,CAAgD/I,IAElDkC,EAA6BlC,GACzBsH,GACFvF,EAA+C/B,GAAQ,EAAOqH,GA9S3D,SAAoCrH,EAAQgJ,GACjD,IAAMC,EAAYpJ,EAAYmE,qBACxBkF,GAAkB9H,EAAauB,IAAI,mBACnCwG,EAAmBnJ,EAAOuC,WAAWhB,SACrC6H,EAAuBnJ,EAAAA,IAAUkJ,EAAkB,kCAErDF,KAAeD,GAAaE,IAAmBC,GAAoBC,IACjED,EAAiBrI,aACnBqI,EAAiBrI,WAAaZ,IAAAA,MAAQiJ,EAAiBrI,WAAY,CAAC,kBAEtEsI,EAAqBtI,YAAa,EAEtC,CAoSEuI,CAA2BrJ,GA7Q7B,SAA8CA,GAC5C,IAAMiJ,EAAY/I,IAAAA,OAASL,EAAY9B,QAAS,wBAC1CuL,EAAkBpJ,IAAAA,SAAW,CAAC,UAAW,WAAYF,EAAO7F,MAC5DgP,EAAmBnJ,EAAOuC,WAAWhB,SACrCgI,EAA0BtJ,EAAAA,IAAUkJ,EAAkB,qCAExDF,GAAaK,GAAmBH,GAAoBI,IAClDJ,EAAiBrI,aACnBqI,EAAiBrI,WAAaZ,IAAAA,MAAQiJ,EAAiBrI,WAAY,CAAC,qBAEtEyI,EAAwBzI,YAAa,EAEzC,CAkQE0I,CAAqCxJ,GAjOvC,SAAgDA,GAC9CiG,EAAyCjG,EAAQ,cAAe,CAAC,2BACjEiG,EAAyCjG,EAAQ,qBAAsB,CACrE,gCACA,4BACA,wCACA,8BAGJ,CAyNEyJ,CAAuCzJ,GAvNzC,SAA6CA,GAC3CiG,EACEjG,EAAQ,sBACR,CAAC,sCAAuC,mDAAoD,2CAGhG,CAkNE0J,CAAoC1J,GAhNtC,SAAuDA,GACrDiG,EAAyCjG,EAAQ,UAAW,CAC1D,mBACA,iBACA,oBACA,yCACA,iCAEJ,CAyME2J,CAA8C3J,GAvMhD,SAA8CA,GAC5C,IACI4J,EAAgB,GAChB1J,IAAAA,SAFuB,CAAC,UAAW,WAAY,UAAW,MAE3BF,EAAO7F,QAASyP,EAAgB,YAEnE3D,EAAyCjG,EAAQ4J,EAAe,CAC9D,aACA,kBACA,aACA,qBACA,gCACA,+BACA,wBACA,wBACA,wBACA,sBACA,uBAGJ,CAqLEC,CAAqC7J,GAnLvC,SAA0CA,GACxC,IACI4J,EAAgB,GAChB1J,IAAAA,SAFuB,CAAC,YAEOF,EAAO7F,QAASyP,EAAgB,eAEnE3D,EAAyCjG,EAAQ4J,EAAe,CAC9D,YACA,gBACA,YACA,gBACA,wBACA,kBACA,2BACA,qBACA,0BACA,kBACA,8BACA,uBAGJ,CAgKEE,CAAiC9J,GA9JnC,SAAkCA,GAChC,IACI4J,EAAgB,GAChB1J,IAAAA,SAFuB,CAAC,UAAW,WAAY,UAAW,gBAE3BF,EAAO7F,QAASyP,EAAgB,gBAEnE3D,EAAyCjG,EAAQ4J,EAAe,CAC9D,aACA,cAGJ,CAqJEG,CAAyB/J,GAnJ3B,SAA6CA,GAC3C,IACI4J,EAAgB,GAChB1J,IAAAA,SAFuB,CAAC,UAAW,WAAY,UAAW,gBAE3BF,EAAO7F,QAASyP,EAAgB,kBACnE3D,EAAyCjG,EAAQ4J,EAAe,CAC9D,WACA,iBACA,qBAGJ,CA0IEI,CAAoChK,GAhItC,SAAwCA,EAAQiK,GAC9C,IAAMtE,EAAa3F,EACnBE,IAAAA,KAAO+J,GAAmB,SAACxG,GACrBD,EAAmCC,KACjCvD,IAAAA,QAAUyF,EAAWpD,WAAWkB,MACpCkC,EAAWpD,WAAWkB,GAAc3C,YAAa,EAErD,GAGF,CAuHEoJ,CAA+BlK,EAAQ,CAAC,eAAgB,WAAY,oBAAqB,iBAAkB,eAAgB,YAAa,SAAU,SAAU,kBAAmB,4BAG/KqE,EAAoBrE,GAEbA,CACT,CC1iBA,IAAImK,EAAO,KACJ,SAAS1H,EAAWC,GAEvByH,EACEzH,EADFyH,IAEJ,CA0DO,SAASC,EAAiCC,IAvD1C,SAA6BA,GAClC,IAAMC,EAAY,MACZC,EAAY,gCACZC,EAAmB,uBAInBC,EAAgB,cAIhBC,EAAkB,eAExBxK,IAAAA,KAAOmK,EAAa9H,YAAY,SAACoI,GAC/B,IAAQpI,EAAe8H,EAAf9H,WACR,GAAIgI,EAAUK,KAAKD,EAAQ1I,UAAW,CACpC,IAAM4I,EAAiBF,EAAQ3C,cAC5B2C,EAAQG,kBAA0E,IAAtDH,EAAQG,iBAAiBtD,QAAQkD,GAC1DnK,EAAWsK,EAAiBH,EAAkBC,EAAQ1I,SAASuG,MAAM,KAAK,GAC1EuC,EAAUF,EAAiBF,EAAQG,iBAAmBH,EAAQxQ,KACpEoI,EAAW,GAADzD,OAAIwL,GAASxL,OAAGiM,IAAa7K,IAAAA,SAAW,CAChD/F,KAAK,GAAD2E,OAAKwL,GAASxL,OAAG6L,EAAQxQ,MAC7B8H,SAAS,GAADnD,OAAKwL,GAASxL,OAAG6L,EAAQ1I,UACjCmG,MAAOqC,EAAgBlK,EAfC,WAgBxByK,aAAa,EACbhI,MAAO,KACP8H,iBAAiB,GAADhM,OAAKwL,GAASxL,OAAG6L,EAAQG,kBACzCG,cAAeN,EAAQvC,OACtBuC,GACHpI,EAAW,GAADzD,OAAIwL,GAASxL,OAAGiM,EAAO,WAAY7K,IAAAA,SAAW,CACtD/F,KAAK,GAAD2E,OAAKwL,GAASxL,OAAG6L,EAAQxQ,KAAI,UACjC8H,SAAS,GAADnD,OAAKwL,GAASxL,OAAG6L,EAAQ1I,SAASiJ,QAAQV,EA3BvC,8BA4BXpC,MAAOqC,EAAgBlK,EAvBA,UAwBvByK,aAAa,EACbhI,MAAO,KACP8H,iBAAiB,GAADhM,OAAKwL,GAASxL,OAAG6L,EAAQG,iBAAgB,UACzDG,cAAeN,EAAQvC,OACtBuC,GACHpI,EAAW,GAADzD,OAAIwL,GAASxL,OAAGiM,EAAO,kBAAmB7K,IAAAA,SAAW,CAC7D/F,KAAK,GAAD2E,OAAKwL,GAASxL,OAAG6L,EAAQxQ,KAAI,iBACjC8H,SAAS,GAADnD,OAAKwL,GAASxL,OAAG6L,EAAQ1I,SAASiJ,QAAQV,EAnChC,wCAoClBM,iBAAiB,GAADhM,OAAKwL,GAASxL,OAAG6L,EAAQG,iBAAgB,iBACzD1C,MAAOqC,EAAgBlK,EAhCO,qBAiC9B6C,KAAM,SACN+H,gBAAgB,EAChBC,SAAU,iBACVC,QAAS,iBACTL,aAAa,EACbhI,MAAO,KACPiI,cAAeN,EAAQvC,OACtBuC,EACL,CACF,GACF,CAGEW,CAAoBjB,GAEpBnK,IAAAA,KAAOmK,EAAa9H,YAAY,SAACvB,GAC/B,IAAMuK,EAAWvK,EACbuK,EAASP,cACXO,EAASnD,MAAQmD,EAASvD,cAAiBuD,EAAST,kBAAoBS,EAAST,iBAAiBtD,QAAQ,iBAAmB,EAC3H2C,EAAKqB,UAAUxK,EAAKoH,OAAO8C,QAAQ,MAAOlK,EAAKiK,eAC/Cd,EAAKqB,UAAUxK,EAAKoH,cACfmD,EAASP,mBACTO,EAASN,cAEpB,GACF,C,eCrEO,SAASQ,EAAgC7Q,GAE5C,IADFyP,EAAYzP,EAAZyP,aAAYqB,EAAA9Q,EAAEqH,SAAAA,OAAQ,IAAAyJ,EAAG,wBAAuBA,EAAExM,EAAWtE,EAAXsE,YAAayM,EAAwB/Q,EAAxB+Q,yBAEzDC,EAAyB1L,IAAAA,MAAQhB,GAAa9D,OAAO,WAAWA,OAAO,iBAAiBb,QACxFsR,EAA0B3L,IAAAA,MAAQhB,GAAa9D,OAAO,WAAWA,OAAO,2BAA2Bb,QACnGuR,EAA4B5L,IAAAA,MAAQhB,GAAa9D,OAAO,WAAWA,OAAO,qBAAqBb,QAC/FwR,EAAgC7L,IAAAA,MAAQhB,GAAa9D,OAAO,WAAWA,OAAO,iCAAiCb,QAC/GyR,EAAa,CACjBC,aAAc,CACZnL,YAAY,EACZ3G,KAAM,eACN2Q,iBAAkB,eAClB7I,SAAAA,EACAmB,KAAM,SACNwF,SAAU,eACVhD,KAAM1F,IAAAA,WAAaA,IAAAA,QAAU,CAC3B,6BACA,8BACA,8BACA,2BACA0L,GAA0B,2BAC1BC,GAA2B,oCAC3BC,GAA6B,gCAC3BH,GACJO,aAAchM,IAAAA,MAAMrE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACnB,6BAA8B,UAC9B,8BAA+B,WAC/B,8BAA+B,WAC/B,2BAA4B,SACzB+P,EAAyB,CAAE,2BAA4BG,EAAgC,UAAY,SAAY,CAAC,GAChHF,EAA0B,CAAE,oCAAqC,kBAAqB,CAAC,GACvFC,EAA4B,CAAE,8BAA+B,YAAe,CAAC,GAC/EH,GACH9C,WAAY,WACZ7F,MAAO,CACLC,OAAQ,0BAId/C,IAAAA,OAASmK,EAAa9H,WAAYyJ,EACpC,CC/CA,IAAI7B,EAAO,KAMJ,SAASgC,EAAsBvD,EAAUwD,GAC9C,MAAM,QAANtN,OAAe8J,EAAQ,KAAA9J,OAAIsN,EAAS,IACtC,CAGA,IAAMC,EAA8B,CAElCC,SAAU,EACVC,IAAK,EACLC,iCAAkC,EAClCC,mCAAoC,EACpCC,uBAAwB,EACxBC,yBAA0B,EAC1BC,wBAAyB,EAGzBC,yBAA0B,EAC1BC,uCAAwC,EACxCC,UAAW,EACXC,WAAY,EACZC,yBAA0B,EAC1BC,gCAAiC,EACjCC,oCAAqC,EACrCC,+BAAgC,EAChCC,qBAAsB,EACtBC,kBAAmB,EACnBC,qCAAsC,EACtCC,yCAA0C,EAC1CC,iCAAkC,EAClCC,oCAAqC,EACrCC,oCAAqC,EACrCC,qCAAsC,EACtCC,8CAA+C,EAC/CC,oBAAqB,EACrBC,iBAAkB,EAClBC,2BAA4B,EAC5BC,qBAAsB,EAGtBC,kBAAmB,EACnBC,WAAY,EACZC,0BAA2B,EAC3BC,4BAA6B,EAC7BC,kBAAmB,EACnBC,qBAAsB,EACtBC,2BAA4B,EAC5BC,eAAgB,EAChBC,kBAAmB,EACnBC,kBAAmB,EACnBC,wBAAyB,EACzBC,gBAAiB,EACjBC,qBAAsB,EACtBC,8BAA+B,EAC/BC,gCAAiC,EACjCC,0BAA2B,EAG3BC,mBAAoB,EACpBC,mBAAoB,EACpBC,qBAAsB,EACtBC,kBAAmB,EACnBC,aAAc,EACdC,aAAc,EACdC,iBAAkB,EAClBC,sBAAuB,EACvBC,mBAAoB,EACpBC,kBAAmB,EACnBC,qBAAsB,EACtBC,WAAY,EACZC,oBAAqB,EACrBC,kCAAmC,EACnCC,oBAAqB,EACrBC,wBAAyB,EACzBC,mBAAoB,EACpBC,8BAA+B,EAC/BC,aAAc,EACdC,YAAa,EACbC,mBAAoB,EACpBC,cAAe,EACfC,mBAAoB,EACpBC,wBAAyB,EACzBC,mCAAoC,EACpCC,mBAAoB,EACpBC,kBAAmB,EACnBC,2BAA4B,EAC5BC,qCAAsC,GAiDjC,SAASC,EAAsC1G,EAAc2G,GAClE,IAAMC,EAAyB5G,EAAa9H,WAAW2O,eAIvDC,EA5CF,SAA4CH,GAC1C,IAAMI,EAAe,GACfC,EAAenR,IAAAA,KAAO8Q,GACtBM,EAAY,CAAC,EAEbC,EACJrR,IAAAA,QAAUmR,GAAc,SAAAjF,GAAS,OAAIC,EAA4BD,EAAU,IAoB7E,OAlBAlM,IAAAA,KAAOqR,GAAuB,SAACC,EAAYC,GACzC,IAAMC,EAAexR,IAAAA,IAAMsR,GAAY,SAAAjX,GAAK,MAAK,CAC/CA,MAAO4R,EAAsB,iBAAkB5R,GAC/C+W,UAAWnH,EAAKqB,UAAU,wBAAD1M,OAAyBvE,IACnD,IACKoX,EAAY,+CAAA7S,OAAkD2S,GAC9DG,EAAgB1R,IAAAA,OAASA,IAAAA,MAAQwR,EAAc,SAAUxR,IAAAA,MAAQwR,EAAc,cAErFN,EAAa1R,KAAK,CAChBmS,MAAO3R,IAAAA,MAAQwR,EAAc,SAC7BJ,UAAWM,EACXzX,KAAMwX,IAGRL,EAAUK,GAAgBxH,EAAKqB,UAAUmG,GACzCzR,IAAAA,UAAYoR,EAAWM,EACzB,IAEO,CACLR,aAAAA,EACAE,UAAAA,EAEJ,CAcsCQ,CAAmCd,GAA/DI,EAAYD,EAAZC,aAAcE,EAASH,EAATG,UAUtB,OANIL,EAAuBrL,MAAQ1F,IAAAA,QAAU+Q,EAAuBrL,cAC3DqL,EAAuBrL,KAEhC1F,IAAAA,UAAY+Q,EAAwB,CAClCG,aAAAA,EAAcE,UAAAA,EAAWlO,KAAM,WAAY0F,UAAW,CAAC,QAElDmI,CACT,CC5JO,SAASc,EAAmDnX,GAAoB,IAAjByP,EAAYzP,EAAZyP,aAyBpEnK,IAAAA,OAASmK,EAAa9H,WAxBH,CACjByP,WAAY,CACVC,UAAU,EACVnR,YAAY,EACZ3G,KAAM,aACN2Q,iBAAkB,aAClB7I,SAAU,aACVmB,KAAM,SACNwF,SAAU,mCACVhD,KAAM,CACJ,cACA,mBAEFsG,aAAc,CACZ,qDAAsD,cACtD,yDAA0D,mBAE5DrD,WAAY,WACZ7F,MAAO,CACLC,OAAQ,gBAMhB,C,6DCxBIkH,EAAO,KACP+H,EAAqB,KACrBC,EAAe,KACfC,EAAqB,KACrBC,EAAS,KACTC,GAAM,KACNC,GAAQ,KAEL,SAAS9P,GAAWC,GAEvByH,EAOEzH,EAPFyH,KACA+H,EAMExP,EANFwP,mBACAC,EAKEzP,EALFyP,aACAC,EAIE1P,EAJF0P,mBACAC,EAGE3P,EAHF2P,OACAC,GAEE5P,EAFF4P,IACAC,GACE7P,EADF6P,KAEJ,CAUA,SAASC,GAAqBnK,EAAkBoK,GAE9C,MAAM,UAAN3T,OAAiB2T,EAAW,KAAA3T,OADR,MACuBA,OAAGuJ,EAAgB,IAChE,CAEA,SAASqK,GAAiBnY,EAAOoY,EAAUF,EAAaG,EAAYC,GAClE,IAAMC,EAdR,SAAkBvY,EAAOsY,GACvB,IAAME,EAAWC,KAAKC,MAAM1Y,GAC5B,MAAO,CACL2Y,GAAIH,EAASG,GAAKH,EAASG,GAAK3Y,EAChC4Y,MAAON,GAA6BE,EAASI,MAAQJ,EAASI,WAAQtV,EAE1E,CAQgBuV,CAAS7Y,EAAOsY,GAE1BQ,EAAoB,MACP,OAAbV,IACFU,EAAoB,MAGtB,IAAI/S,EAAM,GAAAxB,OANM,OAMO,KAAAA,OAAI6T,EAAQ,KAAA7T,OAAIgU,EAAMI,IAC7C,GAAIJ,EAAMK,MAAO,CAEf7S,GAAM,IAAAxB,OAAQuU,EAAiB,KAAAvU,OADZ,UAC0B,KAAAA,OAAI6T,EAAQ,sBAAA7T,OAAqBgU,EAAMK,MAAK,IAC3F,CAMA,OAJIP,IACFtS,EAASkS,GAAqBlS,EAAQmS,IAGjCnS,CACT,CAEA,SAASgT,GAAuBC,EAAOd,EAAaE,EAAUE,GAC5D,OAAO,SAACW,GACN,IAAIC,EAAM,GACJC,IAA8B,OAAVH,IAAmBV,GAc7C,OAbA3S,IAAAA,KAAOsT,GAAQ,SAACjZ,EAAOoZ,GACjBA,EAAQ,IACVF,GAAG,IAAA3U,OAAQyU,EAAK,MAElBE,GACEf,GAAiBnY,EAAOoY,EAAUF,EAAaiB,EAAiBb,EACpE,IACKa,IACHD,EAAMjB,GAAqBiB,EAAKhB,IAEpB,OAAVc,IACFE,EAAG,IAAA3U,OAAO2U,EAAG,MAERA,CACT,CACF,CAEO,SAASG,GAA4BvJ,GAAkD,IAApCwI,EAAyBlV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC3EkW,EAAmBxJ,EA2BzB,OA1BAwJ,EAAiBtR,WAAWuR,OAAS,CACnC7R,SAAU,SACV9H,KAAM+X,EAAmBjQ,SAAS,WAAY,UAC9CmG,MAAO8J,EAAmBjQ,SAAS,WAAY,UAC/C8R,uBAAwB,CACtBC,YAAa7J,EAAKqB,UAAU,8BAC5ByI,YAAa9J,EAAKqB,UAAU,8BAC5B0I,aAAc/J,EAAKqB,UAAU,gCAE/B1C,UAAW,CAAC,cAAe,cAAe,gBAC1C1F,KAAM,KACN+Q,gBAAiB,CACfC,WAAY,IAAIC,EAAAA,GAAiB,CAC/BlC,aAAAA,EACAC,mBAAAA,EACAC,OAAAA,EACAC,IAAAA,GACAC,MAAAA,GACAM,0BAAAA,IAEFyB,UAAWzB,EAA4B,CACrC0B,aAAcC,UACZ3W,GAENiD,YAAY,GAEP+S,CACT,CAEO,SAASY,GAA4B/R,GAA6C,IAApCmQ,EAAyBlV,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC5E,GAAI+E,EAAS,CACX,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAS1C,OAPAzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9Bb,OAAQ,CACNE,YAAaV,GAAuB,MAAO,MAAO,KAAMT,GACxDoB,YAAaX,GAAuB,KAAM,MAAO,KAAMT,GACvDqB,aAAcZ,GAAuB,MAAO,MAAO,KAAMT,MAGtD6B,CACT,CACA,OAAOhS,CACT,CC1HA,IAAIyH,GAAO,KAYJ,SAASyK,GAAsCvK,GACpD,IAAMwK,EAA0B3U,IAAAA,KAAOmK,EAAa9H,YAAY,SAAAvB,GAAI,MAAkB,sBAAdA,EAAK7G,IAA4B,IAEzG+F,IAAAA,OAAS2U,EAAyB,CAChCd,uBAAwB,CAAEe,GAAI3K,GAAKqB,UAAU,uDAC7C8F,UAAW,CACTyD,KAAM5K,GAAKqB,UAAU,gDACrBwJ,MAAO7K,GAAKqB,UAAU,iDAExB3C,WAAY,UAEhB,CCvBA,IAAIhJ,GAAc,KCAlB,IAAIsK,GAAO,KCAX,IAAMrB,GAAY,CAAC,KAAM,MAAO,KAAM,MAAO,KAAM,OCM5C,IAAMmM,GAAmB,WAe7B,OAAAC,EAAAA,EAAAA,IAdD,SAAAD,EAAYvS,IAASyS,EAAAA,EAAAA,GAAA,KAAAF,GPLhB,SAAoBvS,GACtByH,EAASzH,EAATyH,IACL,COIIiL,CAAyB1S,GACzB2S,GAAiB3S,GACjB4S,EAAc5S,GJRX,SAAoBA,GACtByH,GAASzH,EAATyH,IACL,CIOIoL,CAAyB7S,GHTtB,SAAoBA,GACzB7C,GAAc6C,EAAQtB,aAAauB,IAAI,cACzC,CGQI6S,CAAqB9S,GFVlB,SAAoBA,GACtByH,GAASzH,EAATyH,IACL,CESIsL,CAAoB/S,GAEpBgT,KAAKvL,KAAOzH,EAAQyH,KACpBuL,KAAK7V,YAAc6C,EAAQtB,aAAauB,IAAI,eAC5C+S,KAAKtO,WAAa1E,EAAQ0E,WAC1BsO,KAAKC,aAAejT,EAAQiT,aAC5BD,KAAKE,uBACHF,KAAK7V,aAAe6V,KAAK7V,YAAYgW,sBACzC,GAAC,EAAAjZ,IAAA,qBAAArC,MAED,SAAmBub,GHjBd,IAAyCpT,EGuB5C,OAJA+R,GAA4BqB,EAAcJ,KAAKE,wBHnBHlT,EGoBZoT,EHnBhB5V,IAAAA,OAASL,GAAa,yBAEvB6C,IAEfA,EAAQiS,OAASjS,EAAQiS,QAAU,CAAC,EAEpCzU,IAAAA,UAAYwC,EAAQiS,OAAQ,CAC1B,wBAAyB,CACvBG,GAAI,SAACiB,GAGH,MAAM,yBAANjX,OAFiBiX,EAAM,KAAO,KAEU,KAC1C,MEfD,SAAyCrT,GAC9C,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAG9B,wCAAyCzU,IAAAA,OACvC4I,GACAA,GAAU9O,KAAI,SAAAgc,GAAE,OAAI,SAAAD,GAAG,+CAAAjX,OAA6CkX,EAAE,KAAAlX,OAAU,IAANiX,EAAU,CAAE,MAK5F,CCUIE,CAAgCH,GAEzBA,CACT,GAAC,CAAAlZ,IAAA,gCAAArC,MAED,SAA8B8P,GAG5B,OAFAuJ,GAA4BvJ,EAAcqL,KAAKE,wBAC/CxL,EAAiCC,GAC1BA,CACT,IAAC,CA9B6B,G,2ECNzB,SAAS6L,GAA2B3C,EAAOd,EAAaE,EAAUxY,EAAMiJ,GAC7E,OAAO,SAACoQ,GACN,IACIC,EAAM,GAQV,OANAvT,IAAAA,KAAOsT,GAAQ,SAACjZ,EAAOoZ,GACjBA,EAAQ,IACVF,GAAG,IAAA3U,OAAQyU,EAAK,OAElBE,GAAG,GAAA3U,OAAO3E,EAAI,KAAA2E,OAAI2T,EAAW,KAAA3T,OAPf,MAO0B,KAAAA,OAAI6T,EAAQ,UAAA7T,OAASsE,EAAI,KAAAtE,OAAIvE,EAAK,KAC5E,IACOkZ,CACT,CACF,CCXA,IAAItJ,GAAO,KACP+H,GAAqB,KACrBiE,GAAe,KACfC,GAAY,KACZhV,GAAe,KAyClB,IAEKiV,GAAmB,WAGtB,OAAAnB,EAAAA,EAAAA,IAFD,SAAAmB,KAAclB,EAAAA,EAAAA,GAAA,KAAAkB,GACZX,KAAKY,UA3CT,WACE,IAAIA,EAAYpW,IAAAA,QAAUkW,GAAU7T,WAAWgU,SAAS3Q,KAAM,MAAO,QAC/D/F,EAAcuB,GAAauB,IAAI,eAoCrC,OAlCA2T,EAAUE,QAAQ,OAEb3W,EAAY4W,uDACfH,EAAYpW,IAAAA,QAAUoW,EAAW,sBAG9BzW,EAAYsF,kCACfmR,EAAYpW,IAAAA,QAAUoW,EAAW,QAAS,SAAU,YAAa,WAAY,QAAS,WAAY,YAAa,UAAW,aAAc,UAAW,WAAY,SAAU,cAGtKzW,EAAYuF,kCACfkR,EAAYpW,IAAAA,QAAUoW,EAAW,UAAW,UAAW,UAAW,WAAY,aAAc,cAGzFzW,EAAYwF,kCACfiR,EAAYpW,IAAAA,QAAUoW,EAAW,SAAU,SAAU,YAGlDzW,EAAYyF,uCACfgR,EAAYpW,IAAAA,QAAUoW,EAAW,aAG9BzW,EAAY0F,kCACf+Q,EAAYpW,IAAAA,QAAUoW,EAAW,QAAS,QAAS,OAAQ,aAAc,YAGtEzW,EAAY2F,oCACf8Q,EAAYpW,IAAAA,QAAUoW,EAAW,eAG/BzW,EAAY6W,qCACdJ,EAAY,CAAC,sBAGRpW,IAAAA,IAAMoW,GAAW,SAAAK,GAAQ,MAAK,CAAEzD,GAAIyD,EAAUC,KAAMT,GAAa3K,UAAU,YAAD1M,OAAa6X,IAAa,GAC7G,CAIqBE,EACnB,GAAC,EAAAja,IAAA,MAAArC,MAED,SAAIuc,EAAaC,GACf,IAAKA,EACH,OAAOC,KAAAA,QAAgBtB,KAAKY,WAG9B,IAAMW,EAAwBF,EAAarT,cACrCwT,EACJhX,IAAAA,OACEwV,KAAKY,WACL,SAAAK,GAAQ,OAAmE,IAA/DA,EAASC,KAAKlT,cAAc8D,QAAQyP,EAA4B,IAGhF,OAAOD,KAAAA,QAAgBE,EACzB,GAAC,CAAAta,IAAA,WAAArC,MAED,WACE,OAAOyc,KAAAA,QAAgBtB,KAAKY,UAC9B,IAAC,CAtBsB,GCjDzB,IAAIpE,GAAqB,KACrB/H,GAAO,KACJ,SAAS1H,GAAWC,GAEvBwP,GAEExP,EAFFwP,mBACA/H,GACEzH,EADFyH,IAEJ,CAEO,SAASgN,KACd,OAAO,SAAC3D,GACN,IAAIC,EAAM,GASV,OAPAvT,IAAAA,KAAOsT,GAAQ,SAACjZ,EAAOoZ,GACjBA,EAAQ,IACVF,GAAO,QAETA,GAAG,QAAA3U,OAAYvE,EACjB,IACAkZ,EAAG,iCAAA3U,OAAoC2U,EAAG,IAE5C,CACF,CAEO,IAAM2D,GAA6C,CACxDnV,SAAU,0BACVmB,KAAM,SACNtC,YAAY,EACZ8H,SAAU,kBACVhD,KAAM,CACJ,8BACA,mCACA,8BACA,oCAEFsG,aAAc,CACZ,8BAA+B,QAC/B,mCAAoC,aACpC,8BAA+B,QAC/B,mCAAoC,cAEtCrD,WAAY,WACZC,UAAW,CAAC,aAGP,SAASuO,GAA6ChN,GAC3D,IAAMwJ,EAAmBxJ,EAYzB,OAXAwJ,EAAiBtR,WAAWmG,yBAAuB7M,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9Cub,IAA0C,IAC7Cjd,KAAM+X,GAAmBjQ,SAAS,WAAY,2BAC9CmG,MAAO8J,GAAmBjQ,SAAS,WAAY,2BAC/CqP,UAAW,CACT,8BAA+BY,GAAmBtM,KAAK,kBAAmB,SAC1E,mCAAoCsM,GAAmBtM,KAAK,kBAAmB,cAC/E,8BAA+BsM,GAAmBtM,KAAK,kBAAmB,SAC1E,mCAAoCuE,GAAKqB,UAAU8L,kBAGhDzD,CACT,CAEO,SAAS0D,GAA6C7U,GAC3D,GAAIA,EAAS,CACX,IAAMgS,EAAchS,EAOpB,OALAxC,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9BjM,wBAAyB,CACvB8O,SAAUL,QAGPzC,CACT,CACA,OAAOhS,CACT,CClEO,SAAS+U,GAA8BpN,GAC5C,IAAMqN,EAAiBrN,EAAa9H,WAAWoV,OAC3CC,GAAe,EAYnB,OAVIF,GAAkBxX,IAAAA,QAAUwX,EAAe9R,QAC7C1F,IAAAA,KAAOwX,EAAe9R,MAAM,SAACrL,EAAOoZ,GAC9BpZ,EAAMiN,QAAQ,WAAa,IAC7BoQ,EAAcjE,EAElB,IACIiE,EAAc,GAChBF,EAAe9R,KAAKiS,OAAOD,EAAa,IAGrCF,CACT,CCfO,IAAMI,GAAuB,SAAAC,GASlC,SAAAD,EAAYpV,GAAU,IAADsV,EAKkC,OALlC7C,EAAAA,EAAAA,GAAA,KAAA2C,GH0DhB,SAAoBpV,GAEvByH,GAKEzH,EALFyH,KACA+H,GAIExP,EAJFwP,mBACAiE,GAGEzT,EAHFyT,aACAC,GAEE1T,EAFF0T,UACAhV,GACEsB,EADFtB,YAEJ,CGjEI6W,CAA4BvV,GAC5BwV,GAAkCxV,IAClCsV,GAAAG,EAAAA,GAAAA,GAAA,KAAAL,EAAA,CAAMpV,KACD0V,QAAU1V,EAAQ0V,QACvBJ,EAAKK,mBAAqB3V,EAAQ2V,mBAAmBL,CACvD,CAAC,OAAAM,EAAAA,GAAAA,GAAAR,EAAAC,IAAA7C,EAAAA,EAAAA,GAAA4C,EAAA,EAAAlb,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAV,EAAA,uCAAAU,CAAA,CAAuCnO,IAEtDoO,EAAwB,CAAC,8BAC3B,oBACA,uBACA,qBACA,WACA,oBACA,2CACA,sBACA,qBACA,mBACA,qBACA,6BACA,wBAIF,GAAI/C,KAAK7V,YAAYgF,wCAA0C6Q,KAAK7V,YAAYiF,0CAA2C,CACzH,IAAM4T,EAAMD,EAAsBjR,QAAQ,4CAE1CiR,EAAqB,GAAA3Z,QAAAM,EAAAA,GAAAA,GAAOqZ,EAAsBE,MAAM,EAAGD,IAAI,CAAE,yCAAsCtZ,EAAAA,GAAAA,GAAKqZ,EAAsBE,MAAMD,IAC1I,CAEIhD,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ6a,uBAC3EH,EAAsBZ,OAAOY,EAAsBjR,QAAQ,4CAA8C,EAAG,EAAG,mCAAoC,sCAAuC,sCAAuC,uCAAwC,iDAGvQkO,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ8a,oBAC3EJ,EAAqB,GAAA3Z,QAAAM,EAAAA,GAAAA,GAAOqZ,GAAqB,CAAE,iBAAkB,oBAAqB,6BAA8B,0CAG1HhB,GAA8BpN,GAC9B0G,EAAsCwH,EAAeE,GH0BlD,SAAgDpO,GACrD,IAAMwJ,EAAmBxJ,EAEzBwJ,EAAiBtR,WAAWuW,UAAY,CACtC7W,SAAU,YACV9H,KAAM+X,GAAmBjQ,SAAS,WAAY,aAC9CmG,MAAO8J,GAAmBjQ,SAAS,WAAY,aAC/C8R,uBAAwB,CACtBC,YAAa7J,GAAKqB,UAAU,8BAC5ByI,YAAa9J,GAAKqB,UAAU,8BAC5B0I,aAAc/J,GAAKqB,UAAU,gCAE/B1C,UAAW,CAAC,cAAe,cAAe,gBAC1C1F,KAAM,KACNtC,YAAY,EACZqT,gBAAiB,CACfC,WAAY,IAAIiC,GAChB0C,gBAAiB,CACfC,OAAQ,CAENC,4BAA6B,WAAF,OAAQ9O,GAAKqB,UAAU,oBAAoB,KAMhF,CGlDI0N,CAAuCX,GACvC3D,GAAsC2D,GAInBrY,IAAAA,KAAOqY,EAAchW,YAAY,SAAA4W,GAAI,MAAkB,SAAdA,EAAKhf,IAAe,IAErEiO,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAEVtL,IAAAA,KAAOqY,EAAchW,YAAY,SAAA4W,GAAI,MAAkB,WAAdA,EAAKhf,IAAiB,IAEvEiO,MAAQsN,KAAKvL,KAAKqB,UAAU,mDAIjD,IAAM4N,EAAwBlZ,IAAAA,KAAOqY,EAAchW,YAAY,SAAA4W,GAAI,MAAkB,4BAAdA,EAAKhf,IAAkC,IACxGkf,EAAgBnZ,IAAAA,KAAOqY,EAAchW,YAAY,SAAA4W,GAAI,MAAkB,oBAAdA,EAAKhf,IAA0B,IAgC9F,GA9BIub,KAAK0C,UACPgB,EAAsBhR,MAAQsN,KAAK0C,QAAQ5M,UAAU8L,+BACrD+B,EAAcjR,MAAQsN,KAAK0C,QAAQ5M,UAAU8L,wBAK3C8B,IACE1D,KAAK2C,oBACPe,EAAsBtY,YAAa,EACnCuY,EAAcvY,YAAa,IAE3BsY,EAAsBtY,YAAa,EACnCuY,EAAcvY,YAAa,IAKdZ,IAAAA,KAAOqY,EAAchW,YAAY,SAAA4W,GAAI,MAAkB,OAAdA,EAAKhf,IAAa,IAEnEiO,MAAQsN,KAAKvL,KAAKqB,UAAU,+CAEjCkK,KAAKtO,oBAGAmR,EAAchW,WAAWuW,UAEhCzB,GAA6CkB,IAG3C7C,KAAK7V,YAAY9B,UAAY2X,KAAK7V,YAAY9B,QAAQub,qBAAuB5D,KAAK7V,YAAY9B,QAAQwb,0BAA2B,CACnI,IAAMC,EAAsBjB,EAAchW,WAAWkX,2BAChDD,EAAoBlI,YACvBkI,EAAoBlI,UAAY,CAAC,GAGnCkI,EAAoBlI,UAAU,uCAAyCoE,KAAKvL,KAAKqB,UAAU,qCAEvFkK,KAAK7V,YAAY9B,QAAQub,sBAC3BE,EAAoBlI,UAAU,uCAAyCoE,KAAKvL,KAAKqB,UAAU,8BAE/F,CAwFA,GAtFA+M,EAAchW,WAAWmX,gCAAkC,CACzD5Y,YAAY,EACZsC,KAAM,SACNnB,SAAU,mCAEZsW,EAAchW,WAAWoX,iCAAmC,CAC1D7Y,YAAY,EACZsC,KAAM,SACNiI,QAAS,IACTpJ,SAAU,mCACVkJ,gBAAgB,GAElBoN,EAAchW,WAAWqX,4CAA8C,CACrE9Y,YAAY,EACZsC,KAAM,SACN+H,gBAAgB,EAChBlJ,SAAU,+CAERyT,KAAK7V,YAAY9B,QAAQ8b,yBAC3BtB,EAAchW,WAAWuX,gCAAkC,CACzDhZ,YAAY,EACZsC,KAAM,SACNnB,SAAU,oCAGVyT,KAAK7V,YAAY9B,QAAQgc,gBAC3BxB,EAAchW,WAAWyX,gCAAkC,CACzDlZ,YAAY,EACZsC,KAAM,SACNnB,SAAU,oCAKVyT,KAAK7V,YAAYoa,8BACnB1B,EAAchW,WAAW2X,wBAA0B,CACjDpZ,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACTpJ,SAAU,2BACVkY,UAAU,GAENzE,KAAK7V,YAAYua,+BACrB1E,KAAK7V,YAAYwa,gCACjB9B,EAAchW,WAAW+X,8BAAgC,CACvDxZ,YAAY,EACZsC,KAAM,SACNnB,SAAU,iCACVkY,UAAU,IAGd5B,EAAchW,WAAWgY,sBAAwB,CAC/CzZ,YAAY,EACZsC,KAAM,SACNnB,SAAU,yBACV4G,WAAY,WACZC,UAAW,CAAC,MACZlD,KAAM,CAAC,2BAA4B,4BAA6B,+BAChEsG,aAAc,CACZ,2BAA4B,OAC5B,4BAA6B,QAC7B,8BAA+B,WAEjCiO,UAAU,GAERzE,KAAK7V,YAAYwa,gCACnB9B,EAAchW,WAAWiY,OAAS,CAChC1Z,YAAY,EACZsC,KAAM,SACNnB,SAAU,kCACV4G,WAAY,WACZC,UAAW,CAAC,MACZlD,KAAM,CAAC,+BAAgC,iCACvCsG,aAAc,CACZ,+BAAgC,UAChC,gCAAiC,YAEnCiO,UAAU,KAIXzE,KAAK7V,YAAY4a,kDACblC,EAAchW,WAAWmY,oBAG5BhF,KAAK7V,cAAgB6V,KAAK7V,YAAY9B,UAAY2X,KAAK7V,YAAY9B,QAAQ8a,oBAC5EN,EAAchW,WAAW0J,aAAc,CAC1C,IAAM0O,EAAepC,EAAchW,WAAW0J,aAE9C0O,EAAa/U,KAAO1F,IAAAA,QAAUya,EAAa/U,KAAM,+BACjD+U,EAAazO,aAAehM,IAAAA,KAAOya,EAAazO,aAAc,8BAChE,CAeA,OAbIwJ,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ6c,yBAC3ErC,EAAchW,WAAWsY,eACzB,CACEzS,MAAOsN,KAAKvL,KAAKqB,UAAU,iEAC3BvJ,SAAU,8BACVmB,KAAM,SACNgI,QAAS,EACTtK,YAAY,GAGdyX,EAAchW,WAAWuY,aAAa1S,MAAQsN,KAAKvL,KAAKqB,UAAU,+DAG7D+M,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAgCjB,OA/BA0C,EAAAA,GAAAA,GAAAV,EAAA,4BAAAU,CAAA,CAAyB1C,IHxHtB,SAAgDpT,GACrD,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9BmE,UAAW,CACT9E,YAAakC,GAA2B,MAAO,MAAO,KAAM,YAAa,YACzEjC,YAAaiC,GAA2B,KAAM,MAAO,KAAM,YAAa,YACxEhC,aAAcgC,GAA2B,MAAO,MAAO,KAAM,YAAa,cAIhF,CG8GI6E,CAAuCjF,GACvCyB,GAA6CzB,GAE7C5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/BzD,eAAgB,CACd4D,GAAI,SAACva,GACH,IAAIkZ,EAAG,qBAAA3U,OAAwBvE,GAM/B,MAJc,kCAAVA,IACFkZ,GAAO,gEAGFA,CACT,GAEFuH,aAAc,CACZlG,GAAI,SAACiB,GAGH,MAAM,gBAANjX,OAFiBiX,EAAM,KAAO,KAEC,KACjC,GAEF,yBAA0B,CACxBjB,GAAI,SAACmG,GACH,IAAMC,EAAWhb,IAAAA,IAAM+a,GAAc,SAAA1gB,GAAK,mCAAAuE,OAAiCvE,EAAK,IAAI4gB,KAAK,QAEzF,MAAM,IAANrc,OAAWoc,EAAQ,IACrB,KAGGpF,CACT,IAAC,CAjQiC,CAASb,ICFhCmG,GAAsB,SAAArD,GAAA,SAAAqD,IAAA,OAAAjG,EAAAA,EAAAA,GAAA,KAAAiG,IAAAjD,EAAAA,GAAAA,GAAA,KAAAiD,EAAAzd,UAAA,QAAA2a,EAAAA,GAAAA,GAAA8C,EAAArD,IAAA7C,EAAAA,EAAAA,GAAAkG,EAAA,EAAAxe,IAAA,gCAAArC,MACjC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA4C,EAAA,uCAAA5C,CAAA,CAAuCnO,IAG7BkO,EAAchW,WAAW8Y,aAEjCjT,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAG1B+M,EAAchW,WAAWoV,OAUjC/R,KAAO1F,IAAAA,IARA,CACpB,qBACA,uBACA,2BACA,QACA,SACA,SACA,YACyC,SAAA3F,GAAK,OAAI4R,EAAsB,gBAAiB5R,EAAM,IAGjG,IAAA+gB,EAGI5F,KAAK7V,YAFPqE,EAAkBoX,EAAlBpX,mBACAC,EAA4BmX,EAA5BnX,6BAEIoX,EAAShD,EAAchW,WAAWiZ,QACpCD,IACFA,EAAOza,YAAa,GAElBoD,GAAsBC,KACNoU,EAAchW,WAAWkZ,UACjCrT,MAAQsN,KAAKvL,KAAKqB,UAAU,qCAExC,IAAKtH,EAAoB,CACvB,IAAMwX,EAASnD,EAAchW,WAAWoZ,OACpCD,IACFA,EAAO5a,YAAa,EAExB,CACA,IAAKqD,KAAkCuR,KAAK7V,YAAY9B,UAAW2X,KAAK7V,YAAY9B,QAAQub,qBAAsB,CAChH,IAAMsC,EAASrD,EAAchW,WAAWsZ,OACpCD,IACFA,EAAO9a,YAAa,EAExB,CAEA,GAAI4U,KAAK7V,YAAY9B,UAAY2X,KAAK7V,YAAY9B,QAAQub,qBAAuB5D,KAAK7V,YAAY9B,QAAQwb,0BAA2B,CACnI,IAAMC,EAAsBjB,EAAchW,WAAWkX,2BAChDD,EAAoBlI,YACvBkI,EAAoBlI,UAAY,CAAC,GAGnCkI,EAAoBlI,UAAU,uCAAyCoE,KAAKvL,KAAKqB,UAAU,qCAEvFkK,KAAK7V,YAAY9B,QAAQub,sBAC3BE,EAAoBlI,UAAU,uCAAyCoE,KAAKvL,KAAKqB,UAAU,8BAE/F,CAG4B+M,EAAchW,WAAWqU,KAEjCxO,MAAQsN,KAAKvL,KAAKqB,UAAU,gDAEhD,IAAMsQ,EAA0BvD,EAAchW,WAAWgU,SAEzD,GAAIuF,GAA2BA,EAAwBhb,WAAY,CACjEgb,EAAwBlW,KAAO1F,IAAAA,QAAU4b,EAAwBlW,KAAM,sBACvE,IAAAmW,EAQIrG,KAAK7V,YAPP4W,EAAoDsF,EAApDtF,qDACAtR,EAA+B4W,EAA/B5W,gCACAC,EAA+B2W,EAA/B3W,gCACAE,EAAoCyW,EAApCzW,qCACAD,EAA+B0W,EAA/B1W,gCACAE,EAA+BwW,EAA/BxW,gCACAC,EAAiCuW,EAAjCvW,kCAGGiR,IACHqF,EAAwBlW,KAAO1F,IAAAA,QAAU4b,EAAwBlW,KAAM,sCAGpET,IACH2W,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,uBACA,wBACA,2BACA,0BACA,uBACA,0BACA,2BACA,yBACA,4BACA,yBACA,0BACA,wBACA,2BACA,yBACA,yBACA,yBACA,0BACA,4BACA,6BAICR,IACH0W,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,yBACA,yBACA,yBACA,0BACA,4BACA,6BAICN,IACHwW,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,4BAICP,IACHyW,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,wBACA,wBACA,2BAICL,IACHuW,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,uBACA,uBACA,sBACA,4BACA,2BAICJ,IACHsW,EAAwBlW,KAAO1F,IAAAA,QAC7B4b,EAAwBlW,KACxB,8BAIJkW,EAAwBlW,KAAK4Q,QAAQ,MACrCsF,EAAwBxK,UAAY,CAClC0K,KAAMtG,KAAKvL,KAAKqB,UAAU,oBAE9B,CAiBAiM,GAA8BpN,GAC9B0G,EAAsC1G,EAhBR,CAC5B,8BACA,oBACA,uBACA,qBACA,WACA,iBACA,eACA,oBACA,wBACA,4BACA,gBACA,uBAKFuK,GAAsCvK,GAGtC,IAAM4R,EAAyB1D,EAAchW,WAAW2Z,eAMxD,GAJID,IACFA,EAAuBnb,YAAa,GAGlC4U,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,cAEjD0Y,EAAchW,WAAW0J,aAAarG,KACtC1F,IAAAA,WAAaqY,EAAchW,WAAW0J,aAAarG,KALlB,CAAC,6CAQ3B2S,EAAchW,WAAW4Z,iBACzB5D,EAAchW,WAAW6Z,eACzB7D,EAAchW,WAAWgU,QAClC,CA4CA,GAzCIb,KAAK7V,YAAYoa,8BACnB1B,EAAchW,WAAW8Z,uBAAyB,CAChDvb,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACTpJ,SAAU,0BACVkY,UAAU,GAEZ5B,EAAchW,WAAW+Z,qBAAuB,CAC9Cxb,YAAY,EACZsC,KAAM,SACNnB,SAAU,wBACV4G,WAAY,WACZC,UAAW,CAAC,MACZlD,KAAM,CAAC,2BAA4B,4BAA6B,+BAChEsG,aAAc,CACZ,2BAA4B,OAC5B,4BAA6B,QAC7B,8BAA+B,WAEjCiO,UAAU,GAERzE,KAAK7V,YAAYwa,gCACnB9B,EAAchW,WAAWiY,OAAS,CAChC1Z,YAAY,EACZsC,KAAM,SACNnB,SAAU,iCACV4G,WAAY,WACZC,UAAW,CAAC,MACZlD,KAAM,CAAC,4BAA6B,+BAAgC,iCACpEsG,aAAc,CACZ,4BAA6B,OAC7B,+BAAgC,UAChC,gCAAiC,YAEnCiO,UAAU,KAKXzE,KAAK7V,YAAY0c,8BAEf,CACL,IAAMC,EAAsBjE,EAAchW,WAAWka,YAErDD,EAAoB3T,WAAa,WACjC2T,EAAoB1T,UAAY,CAAC,MACjC0T,EAAoB5W,KAAO1F,IAAAA,QAAUsc,EAAoB5W,KAAM,4BAA6B,8BAC5F4W,EAAoB5W,KAAKlG,KAAK,MAC9B8c,EAAoBlL,UAAY,CAC9B0K,KAAM,IAEV,aAXSzD,EAAchW,WAAWka,YAalC,OAAOlE,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAAe,IAADkC,EAAA,KAwB/B,OAvBAQ,EAAAA,GAAAA,GAAA4C,EAAA,4BAAA5C,CAAA,CAAyB1C,IAEzB5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/B8H,YAAa,CACX3H,GAAI,SAACmG,GACH,IAAIC,EAAWhb,IAAAA,IAAM+a,GAAc,SAAA1gB,GAAK,wBAAAuE,OAAsBvE,EAAK,IAAI4gB,KAAK,QAM5E,OAJInD,EAAKnY,YAAY9B,QAAQ4G,eAAiBsW,EAAayB,SAAS,QAClExB,GAAY,iDAGR,IAANpc,OAAWoc,EAAQ,IACrB,GAEF,wBAAyB,CACvBpG,GAAI,SAACmG,GACH,IAAMC,EAAWhb,IAAAA,IAAM+a,GAAc,SAAA1gB,GAAK,kCAAAuE,OAAgCvE,EAAK,IAAI4gB,KAAK,QAExF,MAAM,IAANrc,OAAWoc,EAAQ,IACrB,KAIGpF,CACT,IAAC,CA7RgC,CAASb,ICPrC,SAAS0H,GAAyCtS,GACvD,IAAMwJ,EAAmBxJ,EAKzB,OAHAwJ,EAAiBtR,WAAWqa,oBAAoB9T,UAC9C,CAAC,WAAY,iBAAkB,aAAc,MAExC+K,CACT,CCLA,SAASgJ,GAAuB5a,EAAU6a,GACxC,OAAO,WAAkB,IACjBC,GADMpf,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACiBuN,QAAQ,KAAM,MAC9C,OAAI4R,EACI,GAANhe,OAAUmD,EAAQ,uBAAAnD,OAAsBie,EAAgB,OAGpD,GAANje,OAAUmD,EAAQ,uBAAAnD,OAAsBie,EAAgB,eAC1D,CACF,CAEO,SAASC,GAA+B3S,GAC7C,IAAMwJ,EAAmBxJ,EAkBzB,OAhBAwJ,EAAiBtR,WAAW0a,UAAY,CACtC9iB,KAAM,YACN8H,SAAU,YACV6G,UAAW,CAAC,WAAY,kBACxB1F,KAAM,SACNtC,YAAY,GAGd+S,EAAiBtR,WAAW2a,gBAAkB,CAC5C/iB,KAAM,kBACN8H,SAAU,kBACV6G,UAAW,CAAC,WAAY,kBACxB1F,KAAM,SACNtC,YAAY,GAGP+S,CACT,CAEO,SAASsJ,GAA8Bza,GAC5C,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAY1C,OAVAzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9BuI,gBAAiB,CACf1F,SAAUqF,GAAuB,mBAAmB,GACpDO,eAAgBP,GAAuB,mBAAmB,IAE5DI,UAAW,CACTzF,SAAUqF,GAAuB,aAAa,GAC9CO,eAAgBP,GAAuB,aAAa,MAGjDnI,CACT,CCjDO,SAAS2I,GAAoChT,GAClD,IAAMwJ,EAAmBxJ,EAKzB,OAHAwJ,EAAiBtR,WAAW+a,eAAexU,UACzC,CAAC,WAAY,iBAAkB,aAAc,MAExC+K,CACT,CCPO,SAAS0J,GAAuC3iB,GAEnD,IADFyP,EAAYzP,EAAZyP,aAAcmT,EAA8B5iB,EAA9B4iB,+BAAgCrT,EAAIvP,EAAJuP,KAGxCsT,EAA2BpT,EAAa9H,WAAWmb,yBACnDC,EAAyBtT,EAAa9H,WAAWqb,uBAEnDH,IACFA,EAAyB3c,WAAa0c,EACtCC,EAAyBrV,MAAQ+B,GAAQA,EAAKqB,UAAU,gDAEtDmS,IACFA,EAAuB7c,WAAa0c,EACpCG,EAAuBvV,MAAQ+B,GAAQA,EAAKqB,UAAU,6CAE1D,CCbA,IAAIrB,GAAO,KAEJ,SAAS1H,GAAWC,GACzByH,GAAOzH,EAAQiT,YACjB,CAEO,SAASkI,GAAqCxT,GAgBnD,OAfAnK,IAAAA,OAASmK,EAAa9H,WAAY,CAChCub,gBAAiB,CACf3jB,KAAM,kBACNmX,UAAW,CACTyD,KAAM5K,GAAKqB,UAAU,0BACrBwJ,MAAO7K,GAAKqB,UAAU,4BAExB3C,WAAY,SACZ/H,YAAY,EACZmB,SAAU,kBACVmB,KAAM,UACNgF,MAAO+B,GAAKqB,UAAU,sBAInBnB,CACT,CCbO,IAAM0T,GAAsB,SAAAhG,GACjC,SAAAgG,EAAYrb,GAAU,IAADsV,EAI0D,OAJ1D7C,EAAAA,EAAAA,GAAA,KAAA4I,GACnB/F,GAAAG,EAAAA,GAAAA,GAAA,KAAA4F,EAAA,CAAMrb,IACNsb,GAA0Btb,GAE1BsV,EAAKwF,+BAAiC9a,EAAQ8a,+BAA+BxF,CAC/E,CAAC,OAAAM,EAAAA,GAAAA,GAAAyF,EAAAhG,IAAA7C,EAAAA,EAAAA,GAAA6I,EAAA,EAAAnhB,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAuF,EAAA,uCAAAvF,CAAA,CAAuCnO,IAE7BkO,EAAchW,WAAW8Y,aACjCjT,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAErB+M,EAAchW,WAAW0b,YACjC7V,MAAQsN,KAAKvL,KAAKqB,UAAU,gDAEhD,IAAMiN,EAAwB,CAAC,2BAC7B,kCACA,2BACA,YACA,aACA,uBACA,uBACA,qBACA,iBACA,oBACA,oBACA,eACA,uBACA,mBACA,oBACA,8BACA,YAGE/C,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQmgB,eAC3EzF,EAAsBZ,OAAOY,EAAsBjR,QAAQ,4BAA8B,EAAG,EAAG,0CAC/FiR,EAAsBZ,OAAOY,EAAsBjR,QAAQ,qBAAuB,EAAG,EAAG,4BAG1FiQ,GAA8BpN,GAE9B0G,EAAsC1G,EAAcoO,GAEpD7D,GAAsCvK,GAEtC2S,GAA+B3S,GAE/BsS,GAAyCtS,GAEzCgT,GAAoChT,GAGpC,IAAM4R,EAAyB1D,EAAchW,WAAW2Z,eAClDiC,EAAwB5F,EAAchW,WAAW6b,cA0BvD,GAxBInC,IACFA,EAAuBnb,YAAa,GAGlCqd,IACFA,EAAsBrd,YAAa,GAGrCyc,GAAwC,CACtClT,aAAckO,EACdiF,+BAAgC9H,KAAK8H,+BACrCrT,KAAMuL,KAAKC,eAGRD,KAAKtO,YACJmR,EAAchW,WAAW8b,kBAC3B9F,EAAchW,WAAW8b,gBAAgBvd,YAAa,GAItD4U,KAAKtO,YACPyW,GAAqCtF,GAGnC7C,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,YAAa8L,yBAF7B,CAAC,oCAAqC,gCAIzE,CAEA,IAAM2S,EAAsB,CAAC,2BACvBC,EAA+B7I,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQygB,4BACxGC,EAA8B/I,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ2gB,mBAO7G,OANKH,GAAiCE,GACpCH,EAAoB5e,KAAK,8BAG3B6Y,EAAchW,WAAWoc,UAAU/Y,KAAO1F,IAAAA,QAAS0e,MAAT1e,IAAC,CAASqY,EAAchW,WAAWoc,UAAU/Y,MAAI9G,OAAKwf,IAEzF/F,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAAuF,EAAA,4BAAAvF,CAAA,CAAyB1C,IACzBqH,GAA8BrH,GAEvBA,CACT,IAAC,CAzGgC,CAASb,ICVxC9K,GAAO,KAIX,SAAS0U,GAAatkB,GACpB,IAAMukB,EAAavkB,EAAMiO,MAAM,KAM/B,MAAO,CACLuW,SANeD,EAAW,GAO1BE,eANqBF,EAAW,GAOhCG,kBANwBH,EAAW,GAOnCI,UANgBJ,EAAW,GAQ/B,C,iBCjBA,SAASK,GAA6B9U,EAAclQ,GAClD,IAAM0Z,EAAmBxJ,EAYzB,OAVAwJ,EAAiBtR,WAAWpI,GAAQ,CAClCA,KAAAA,EAEA8H,SAAU9H,EACV2O,UAAW,CAAC,YACZ1F,KAAM,SAENtC,YAAY,GAGP+S,CACT,CAEA,SAASuL,GAA6B1c,EAAO9H,GAA4C,IAAxC6I,EAAY7I,EAAZ6I,aAAca,EAAU1J,EAAV0J,WAAY+a,EAASzkB,EAATykB,UACnE3K,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAQ1C,OANAzU,IAAAA,UAAYwU,EAAYC,QAAM9V,EAAAA,GAAAA,GAAA,GAC3B4E,EAAe,CACd+T,SAAU,SAAAhE,GAAM,4BAAA1U,OAA0BwF,EAAU,qBAAAxF,OAAoBugB,EAAS,WAAAvgB,OAAU0U,EAAM,SAI9FkB,CACT,CAEO,IAAM4K,GACO,SAACjV,GACjB,OAAO8U,GAA6B9U,EAAc,sBACpD,EAHWiV,GAKO,SAAC5c,GACjB,OAAO0c,GAA6B1c,EAAS,CAC3Ce,aAAc,sBACda,WAAY,SACZ+a,UAAW,oBAEf,EAGWE,GACO,SAAClV,GACjB,OAAO8U,GAA6B9U,EAAc,sBACpD,EAHWkV,GAKO,SAAC7c,GACjB,OAAO0c,GAA6B1c,EAAS,CAC3Ce,aAAc,sBACda,WAAY,SACZ+a,UAAW,oBAEf,ECvCK,IAAMG,GAAiB,SAAAzH,GAC5B,SAAAyH,EAAY9c,GAAU,IAADsV,EAK0D,OAL1D7C,EAAAA,EAAAA,GAAA,KAAAqK,GACnBxH,GAAAG,EAAAA,GAAAA,GAAA,KAAAqH,EAAA,CAAM9c,IFGH,SAAoBA,GACzByH,GAAOzH,EAAQiT,YACjB,CEJI8J,CAAkB/c,GAClBsb,GAA0Btb,GAE1BsV,EAAKwF,+BAAiC9a,EAAQ8a,+BAA+BxF,CAC/E,CAAC,OAAAM,EAAAA,GAAAA,GAAAkH,EAAAzH,IAAA7C,EAAAA,EAAAA,GAAAsK,EAAA,EAAA5iB,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAgH,EAAA,uCAAAhH,CAAA,CAAuCnO,IAE7BkO,EAAchW,WAAW8Y,aACjCjT,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAErB+M,EAAchW,WAAW0b,YACjC7V,MAAQsN,KAAKvL,KAAKqB,UAAU,gDAEhD,IAAMiN,EAAwB,CAAC,2BAC7B,8BACA,uBACA,iBACA,oBACA,WACA,oBACA,uBACA,mBACA,qBACA,eACA,oBACA,wBACA,4BACA,eACA,gCACA,sBACA,aACA,oCACA,uBAGE/C,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQmgB,eAC3EzF,EAAsBZ,OAAOY,EAAsBjR,QAAQ,4BAA8B,EAAG,EAAG,0CAC/FiR,EAAsBZ,OAAOY,EAAsBjR,QAAQ,qBAAuB,EAAG,EAAG,4BCxDvF,SAA2C6C,EAAcF,GAC9D,IAAMuV,EAAqBrV,EAAa9H,WAAWod,WAC7CrO,EAAY,CAAC,EACnBpR,IAAAA,KAAOwf,EAAmB9Z,MAAM,SAAC5E,GAC/BsQ,EAAUtQ,GAAQmJ,EAAKqB,UAAU,qBAAD1M,OAAsB4gB,EAAmBxT,aAAalL,IACxF,IACAd,IAAAA,UAAYwf,EAAoB,CAC9B5e,YAAY,EACZ+H,WAAY,WACZT,MAAO+B,EAAKqB,UAAU,+CACtB8F,UAAAA,GAGJ,CD6CIsO,CAAkCvV,EAAcqL,KAAKvL,MAErDsN,GAA8BpN,GAE9B0G,EAAsC1G,EAAcoO,GAEpDuE,GAA+B3S,GAE/BsS,GAAyCtS,GAEzCgT,GAAoChT,GAEpC,IAAMwV,EAAqB,CAAC,uBACvBnK,KAAK7V,YAAYigB,4BACpBD,EAAmBngB,KAAK,2BAGtBgW,KAAK7V,YAAYkgB,uBAEnBxH,EAAchW,WAAWyd,KAAK9T,aAAa,2BAA6B,aAC9DwJ,KAAK7V,YAAYgE,sBAC3Bgc,EAAmBngB,KAAK,2BAG1B6Y,EAAchW,WAAWyd,KAAKpa,KAC9B1F,IAAAA,WAAaqY,EAAchW,WAAWyd,KAAKpa,KAAMia,GAGjD,IAAM5D,EAAyB1D,EAAchW,WAAW2Z,eAClDiC,EAAwB5F,EAAchW,WAAW6b,cAwBvD,GAtBInC,IACFA,EAAuBnb,YAAa,GAGlCqd,IACFA,EAAsBrd,YAAa,GAGrCyc,GAAwC,CACtClT,aAAckO,EACdiF,+BAAgC9H,KAAK8H,+BACrCrT,KAAMuL,KAAKC,eF7EV,SAA+CtL,GACpDnK,IAAAA,OAASmK,EAAa9H,WAAY,CAChC0d,iBAAkB,CAChB9lB,KAAM,mBACN+lB,SAAU,SAAC3lB,GACT,IAAA4lB,EAIItB,GAAatkB,GAHfwkB,EAAQoB,EAARpB,SACAC,EAAcmB,EAAdnB,eACAE,EAASiB,EAATjB,UAGF,OAAIH,GAA+B,KAAnBC,EACP7U,GAAKqB,UAAU,4DAA6D,CACjF0T,UAAAA,EACAF,eAAgBD,EAAW5U,GAAKqB,UAAU,qBAAuBrB,GAAKqB,UAAUwT,KAG7E7U,GAAKqB,UAAU,qDAAsD,CAC1E0T,UAAAA,GAEJ,EACAnL,uBAAwB,CACtByD,SAAU,KAEZ1W,YAAY,EACZmB,SAAU,mBACVmB,KAAM,SACNgF,MAAO+B,GAAKqB,UAAU,sBAK5B,CEgDI4U,CAAsC7H,GF9CnC,SAAkDlO,GACvDnK,IAAAA,OAASmK,EAAa9H,WAAY,CAChC8d,oBAAqB,CACnBlmB,KAAM,sBACN+lB,SAAU,SAAC3lB,GACT,IAAA+lB,EAIIzB,GAAatkB,GAHfwkB,EAAQuB,EAARvB,SACAC,EAAcsB,EAAdtB,eACAE,EAASoB,EAATpB,UAGF,OAAIH,GAA+B,KAAnBC,EACP7U,GAAKqB,UAAU,+DAAgE,CACpF0T,UAAAA,EACAF,eAAgBD,EAAW5U,GAAKqB,UAAU,qBAAuBrB,GAAKqB,UAAUwT,KAI7E7U,GAAKqB,UAAU,wDAAyD,CAC7E0T,UAAAA,GAEJ,EACAnL,uBAAwB,CACtByD,SAAU,KAEZ1W,YAAY,EACZmB,SAAU,sBACVmB,KAAM,SACNgF,MAAO+B,GAAKqB,UAAU,yBAK5B,CEeI+U,CAAyChI,GAErC7C,KAAK7V,YAAYoE,oBjB/FlB,SAA0CoG,GAC/C,IAAMmW,EAAqBtgB,IAAAA,KAAOmK,EAAa9H,YAAY,SAAAvB,GAAI,MAAkB,cAAdA,EAAK7G,IAAoB,IAE5F+F,IAAAA,OAASsgB,EAAoB,CAC3BzM,uBAAwB,CAAEe,GAAI3K,GAAKqB,UAAU,4CAC7C8F,UAAW,CACTyD,KAAM5K,GAAKqB,UAAU,4BACrBwJ,MAAO7K,GAAKqB,UAAU,4BAExB3C,WAAY,UAEhB,CiBqFM4X,CAAiCpW,KAG7BqL,KAAK7V,cAAgB6V,KAAK7V,YAAY9B,UAAY2X,KAAK7V,YAAY9B,QAAQ8a,oBAAsBN,EAAchW,WAAWyd,KAAM,CACpI,IAAMU,EAASnI,EAAchW,WAAWyd,KAExCU,EAAO9a,KAAO1F,IAAAA,QAAUwgB,EAAO9a,KAAM,yBACrC8a,EAAOxU,aAAehM,IAAAA,KAAOwgB,EAAOxU,aAAc,wBACpD,EEtHG,SAAwCtR,GAAyD,IAAtDyP,EAAYzP,EAAZyP,aAAcF,EAAIvP,EAAJuP,KAAMwW,EAA6B/lB,EAA7B+lB,8BAC9DC,EAAyBvW,EAAa9H,WAAWse,mBAEnDF,GACFC,EAAuB/X,WAAa,SACpC+X,EAAuB9X,UAAY,CAAC,MACpC8X,EAAuBxY,MAAQ+B,GAAQA,EAAKqB,UAAU,yCACtDoV,EAAuBhb,KAAO,CAAC,iCAAkC,+BAAgC,iCAAkC,wDACnIgb,EAAuB1U,aAAe,CACpC,iCAAkC,UAClC,+BAAgC,QAChC,iCAAkC,UAClC,uDAAwD,sDAG1D0U,EAAuB9f,YAAa,CAExC,CFuGIggB,CAAgC,CAC9B3W,KAAMuL,KAAKC,aACXtL,aAAckO,EACdoI,8BAA+BjL,KAAK7V,YAAY8gB,gCAGlD9C,GAAqCtF,GAYrC,OATA9M,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,YAAa8L,yBAF7B,CAAC,uCAKlC2T,GAAmC/G,GAEnCgH,GAAmChH,UAE5BA,EAAchW,WAAWwe,6BACzBxI,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAQjB,OAPA0C,EAAAA,GAAAA,GAAAgH,EAAA,4BAAAhH,CAAA,CAAyB1C,IACzBqH,GAA8BrH,GAE9BwJ,GAAmCxJ,GAEnCyJ,GAAmCzJ,GAE5BA,CACT,IAAC,CAtI2B,CAASb,IGZ1B+L,GAA8B,SAAAjJ,GAAA,SAAAiJ,IAAA,OAAA7L,EAAAA,EAAAA,GAAA,KAAA6L,IAAA7I,EAAAA,GAAAA,GAAA,KAAA6I,EAAArjB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA0I,EAAAjJ,IAAA7C,EAAAA,EAAAA,GAAA8L,EAAA,EAAApkB,IAAA,gCAAArC,MACzC,SAA8B8P,GAC5B,IAAMkO,EAAgBlO,GAEOkO,EAAchW,WAAW8Y,aACjCjT,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAE7C+M,EAAchW,WAAW0b,eACC1F,EAAchW,WAAW0b,YACjC7V,MAAQsN,KAAKvL,KAAKqB,UAAU,iDAelD,GAZqB+M,EAAchW,WAAW0e,KACjC7Y,MAAQsN,KAAKvL,KAAKqB,UAAU,oDAEzC+M,EAAchW,WAAWoc,UAAU/Y,KAAO1F,IAAAA,WACxCqY,EAAchW,WAAWoc,UAAU/Y,KACnC,CACE,wBACA,0BACA,+BAIA8P,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,YAAaoC,SAAU,eAAgB0J,yBAFvD,CAAC,oCAAqC,gCAIzE,CAEA,OAAO4M,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAejB,OAd6B5V,IAAAA,OAASwV,KAAK7V,YAAa,yBAGtDK,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/BuM,qBAAsB,CACpBpM,GAAI,SAACiB,GAGH,MAAM,gBAANjX,OAFiBiX,EAAM,KAAO,KAEC,KACjC,KAKCD,CACT,IAAC,CAlDwC,CAASb,ICGvCkM,GAA+B,SAAApJ,GAAA,SAAAoJ,IAAA,OAAAhM,EAAAA,EAAAA,GAAA,KAAAgM,IAAAhJ,EAAAA,GAAAA,GAAA,KAAAgJ,EAAAxjB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA6I,EAAApJ,IAAA7C,EAAAA,EAAAA,GAAAiM,EAAA,EAAAvkB,IAAA,gCAAArC,MAC1C,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA2I,EAAA,uCAAA3I,CAAA,CAAuCnO,IAG1DkO,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,UAE5DwO,EAAsCwH,EAAe,CAAC,8BACpD,oBACA,uBACA,qBACA,WACA,iBACA,eACA,oBACA,wBACA,4BACA,6BAIF,IAAM0D,EAAyB1D,EAAchW,WAAW2Z,eACpDD,IACFA,EAAuBnb,YAAa,GAGtC,IAAMqd,EAAwB5F,EAAchW,WAAW6b,cAiBvD,GAhBID,IACFA,EAAsBrd,YAAa,GAGjC4U,KAAK7V,YAAYoa,8BACnB1B,EAAchW,WAAW6e,kBAAoB,CAC3CtgB,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACT8O,UAAU,IAMVzE,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,cAEjD0Y,EAAchW,WAAW0J,aAAarG,KACtC1F,IAAAA,WAAaqY,EAAchW,WAAW0J,aAAarG,KALlB,CAAC,2BAA4B,oCAAqC,+BAMrG,CACA,OAAO2S,CACT,IAAC,CApDyC,CAAStD,ICF/CoM,GAAa,CACjB,sBACA,sBACA,wBACA,yBACA,qBACA,8BACA,wBACA,uBACA,4BAGIC,GAAqB,CACzB,sBAAuB,SACvB,uBAAwB,UACxB,2BAA4B,cAC5B,wBAAyB,WACzB,wBAAyB,WACzB,8BAA+B,iBAC/B,qBAAsB,QACtB,sBAAuB,SACvB,yBAA0B,aAGfC,GAAyB,SAAAxJ,GAAA,SAAAwJ,IAAA,OAAApM,EAAAA,EAAAA,GAAA,KAAAoM,IAAApJ,EAAAA,GAAAA,GAAA,KAAAoJ,EAAA5jB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAiJ,EAAAxJ,IAAA7C,EAAAA,EAAAA,GAAAqM,EAAA,EAAA3kB,IAAA,gCAAArC,MACpC,SAA8B8P,GAC5BA,EAAa9H,WAAWoV,OAAO/R,KAAOyb,GACtChX,EAAa9H,WAAWoV,OAAOzL,aAAeoV,GAG9C,IAAMrF,EAAyB5R,EAAa9H,WAAW2Z,eACjDsF,EAA+BnX,EAAa9H,WAAW2e,qBAS7D,OAPIjF,IACFA,EAAuBnb,YAAa,GAElC0gB,IACFA,EAA6B1gB,YAAa,GAGrCuJ,CACT,GAAC,CAAAzN,IAAA,qBAAArC,MAED,SAAmBub,GAqBjB,OApBA5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/BgD,OAAQ,CACN7C,GAAI,SAACva,GACH,IAAIkZ,EAAG,aAAA3U,OAAgBvE,GAYvB,MAVc,yBAAVA,IACFkZ,EAAM,uEAEM,6BAAVlZ,IACFkZ,EAAM,iFAEM,0BAAVlZ,IACFkZ,EAAM,yEAGDA,EAAIvI,QAAQ,eAAgB,wBACrC,KAIG4K,CACT,IAAC,CAzCmC,CAASb,IC3BlCwM,GAAwB,WAKlC,OAAAvM,EAAAA,EAAAA,IAJD,SAAAuM,EAAY/e,IAASyS,EAAAA,EAAAA,GAAA,KAAAsM,GACnB/L,KAAKnD,MAAQ7P,EAAQ6P,MACrBmD,KAAKvL,KAAOzH,EAAQyH,KACpBuL,KAAK7V,YAAc6C,EAAQtB,aAAauB,IAAI,cAC9C,GAAC,EAAA/F,IAAA,gCAAArC,MAED,SAA8B8P,GAAe,IAAD2N,EAAA,KACpC0J,EAAsBrX,EAE5BsX,EAA4CjM,KAAKnD,MAAMiB,OAA/CkN,EAAMiB,EAANjB,OAAQ/F,EAAYgH,EAAZhH,aAAciH,EAASD,EAATC,UAExBC,EAAyB,CAC7B,iCAAkC,WAClC,wCAAyC,kBACzC,iCAAkC,WAClC,gCAAiC,UACjC,sDAAuD,gCACvD,+CAAgD,yBAChD,sCAAuC,iBAGzCH,EAAoBnf,WAAW8b,gBAAkBne,IAAAA,SAAW,CAC1D0F,KAAM1F,IAAAA,KAAO2hB,GACb3V,aAAc2V,EACdvQ,UAAWpR,IAAAA,UAAY2hB,GAAwB,SAAAtnB,GAAK,OAAIyd,EAAK7N,KAAKqB,UAAU,yBAAD1M,OAA0BvE,GAAQ,KAC5GmnB,EAAoBnf,WAAW8b,iBAElC,IAAMyD,EAA0BpM,KAAK7V,cAAiB6V,KAAK7V,YAAY9B,QAAQgkB,2BAAwC,qBAAXrB,GAAmChL,KAAK7V,YAAY9B,QAAQikB,2BAA2C,WAAdJ,GA8JrM,OA7JAF,EAAoBnf,YAAa3C,EAAAA,EAAAA,MAAK8hB,EAAoBnf,WAAY,CACpE,kBACA,mBACA,kBACAuf,EAA0B,kBAAoB,KAIhDJ,EAAoBnf,WAAW0f,gBAAkB/hB,IAAAA,SAAW,CAC1D0F,KAAM,CACJ,+BACA,iCAEFsG,aAAc,CACZ,+BAAgC,SAChC,gCAAiC,YAElCwV,EAAoBnf,WAAW0f,iBAElCP,EAAoBnf,WAAW2f,iBAAmBhiB,IAAAA,SAAW,CAC3D2I,WAAY,WACZD,SAAU,cACVhD,KAAM,CACJ,uCACA,mCAEFsG,aAAc,CACZ,uCAAwC,qBACxC,kCAAmC,kBAEpCwV,EAAoBnf,WAAW2f,kBAEnB,eAAXxB,GACFgB,EAAoBnf,WAAW4f,gBAAkBjiB,IAAAA,SAAW,CAC1D0F,KAAM,CACJ,mDACA,uDACA,sDACA,2CACA,6CACA,gDACA,iDACA,8CACA,2CACA,+CACA,6CACA,+CACA,2CACA,8CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,2CAEFsG,aAAc,CACZ,mDAAoD,wBACpD,uDAAwD,4BACxD,sDAAuD,2BACvD,2CAA4C,gBAC5C,6CAA8C,kBAC9C,gDAAiD,qBACjD,iDAAkD,sBAClD,8CAA+C,mBAC/C,2CAA4C,gBAC5C,6CAA8C,kBAC9C,+CAAgD,oBAChD,+CAAgD,oBAChD,2CAA4C,gBAC5C,8CAA+C,mBAC/C,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,0CAA2C,iBAE5CwV,EAAoBnf,WAAW4f,iBAE9BzM,KAAK7V,aAAe6V,KAAK7V,YAAY9B,QAAQqkB,qBAAwC,aAAjBzH,IACtE+G,EAAoBnf,WAAW4f,gBAAgBvc,KAAKlG,KAAK,4CAA6C,mDACtGgiB,EAAoBnf,WAAW4f,gBAAgBjW,aAAa,6CAA+C,iBAC3GwV,EAAoBnf,WAAW4f,gBAAgBjW,aAAa,mDAAqD,yBAGnHwV,EAAoBnf,WAAW4f,gBADX,sBAAXzB,EACwCxgB,IAAAA,SAAW,CAC1D0F,KAAM,CACJ,uCACA,0CACA,2CACA,6CACA,gDACA,iDACA,8CACA,2CACA,+CACA,6CACA,+CACA,2CACA,8CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,kDACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,0CAA2C,eAC3C,2CAA4C,gBAC5C,6CAA8C,kBAC9C,gDAAiD,qBACjD,iDAAkD,sBAClD,8CAA+C,mBAC/C,2CAA4C,gBAC5C,6CAA8C,kBAC9C,+CAAgD,oBAChD,+CAAgD,oBAChD,2CAA4C,gBAC5C,8CAA+C,mBAC/C,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,kDAAmD,uBACnD,0CAA2C,iBAE5CwV,EAAoBnf,WAAW4f,iBAEejiB,IAAAA,SAAW,CAC1D0F,KAAM,CACJ,uCACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,0CAA2C,iBAE5CwV,EAAoBnf,WAAW4f,iBAG7BT,CACT,GAAC,CAAA9kB,IAAA,qBAAArC,MAED,SAAmBub,GAUjB,OATA5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/B0J,gBAAiB,CACfvJ,GAAI,SAACmG,GAEH,MADc,sBAAAnc,OAAyBmc,EAAa/P,QAAQ,sCAAyC,wHAEvG,KAIG4K,CACT,IAAC,CAxMkC,GCExBuM,GAA8B,SAAAtK,GACzC,SAAAsK,EAAY3f,GAAU,IAADsV,EAIM,OAJN7C,EAAAA,EAAAA,GAAA,KAAAkN,IACnBrK,GAAAG,EAAAA,GAAAA,GAAA,KAAAkK,EAAA,CAAM3f,KACD6P,MAAQ7P,EAAQ6P,MACrByF,EAAKsK,MAAQ5f,EAAQ4f,MACrBtK,EAAK7N,KAAOzH,EAAQyH,KAAK6N,CAC3B,CAAC,OAAAM,EAAAA,GAAAA,GAAA+J,EAAAtK,IAAA7C,EAAAA,EAAAA,GAAAmN,EAAA,EAAAzlB,IAAA,gCAAArC,MACD,SAA8B8P,GAAe,IAADkY,EAAA,KACpChK,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAExBmY,GAAgB9M,KAAKnD,OAASmD,KAAKnD,MAAMiB,QAAW,CAAC,GAArDgP,WACAvW,GAAiByJ,KAAK4M,OAAS,CAAC,GAAhCrW,aAERwW,EAOI/M,KAAK7V,YAAY9B,QANnB2kB,EAA0BD,EAA1BC,2BACAN,EAAmBK,EAAnBL,oBACAO,EAAwBF,EAAxBE,yBACAC,EAA2BH,EAA3BG,4BACAb,EAAyBU,EAAzBV,0BACAC,EAAyBS,EAAzBT,0BAGIH,EAAyB,CAC7B,iCAAkC,WAClC,wCAAyC,kBACzC,iCAAkC,WAClC,gCAAiC,UACjC,sDAAuD,gCACvD,+CAAgD,yBAChD,sCAAuC,iBAGzCtJ,EAAchW,WAAWsgB,qBAAuB3iB,IAAAA,SAAW,CACzD2I,WAAY,WACZjD,KAAM1F,IAAAA,KAAO2hB,GACb3V,aAAc2V,EACdvQ,UAAWpR,IAAAA,UAAY2hB,GAAwB,SAAAtnB,GAAK,OAAIgoB,EAAKpY,KAAKqB,UAAU,yBAAD1M,OAA0BvE,GAAQ,KAC5Gge,EAAchW,WAAWsgB,sBAE5B,IAAMf,EAA0BU,IAAgBT,GAA8C,YAAjB9V,GAAgC+V,GAA8C,aAAjB/V,GA+H1I,OA5HAsM,EAAchW,YAAa3C,EAAAA,EAAAA,MACzB2Y,EAAchW,WACd,CACE,iBACA,YACA,mBACA,kBACA,cACAogB,EAA2B,wBAA0B,GACrD,gBACA,gCACA,2BACA,wBACA,0BACAC,EAA8B,sCAAwC,GACtEA,EAA8B,8CAAgD,GAC9Ed,EAA0B,uBAAyB,KAKvDvJ,EAAchW,WAAW2f,kBAAmBY,EAAAA,EAAAA,UAAS,CACnDja,WAAY,WACZD,SAAU,cACVhD,KAAM,CACJ,uCACA,mCAEFsG,aAAc,CACZ,uCAAwC,qBACxC,kCAAmC,kBAEpCqM,EAAchW,WAAW2f,kBAE5B3J,EAAchW,WAAWwgB,gBAAiBD,EAAAA,EAAAA,UAAS,CACjD1a,MAAOsN,KAAKvL,KAAKqB,UAAU,UAC3B8F,UAAW,CACT0D,MAAOU,KAAKvL,KAAKqB,UAAU,UAC3BuJ,KAAMW,KAAKvL,KAAKqB,UAAU,aAE3B+M,EAAchW,WAAWwgB,gBAE5BxK,EAAchW,WAAW4f,iBAAkBW,EAAAA,EAAAA,UAAUJ,GAA8BN,EAAuB,CACxGxc,KAAM,CACJ,uCACA,0CACA,2CACA,6CACA,gDACA,iDACA,8CACA,2CACA,+CACA,6CACA,+CACA,2CACA,8CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,+CACA,kDACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,0CAA2C,eAC3C,2CAA4C,gBAC5C,6CAA8C,kBAC9C,gDAAiD,qBACjD,iDAAkD,sBAClD,8CAA+C,mBAC/C,2CAA4C,gBAC5C,6CAA8C,kBAC9C,+CAAgD,oBAChD,+CAAgD,oBAChD,2CAA4C,gBAC5C,8CAA+C,mBAC/C,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,+CAAgD,oBAChD,kDAAmD,uBACnD,0CAA2C,iBAE3C,CACFtG,KAAM,CACJ,uCACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,0CAA2C,iBAE5CqM,EAAchW,WAAW4f,iBAExBC,IACF7J,EAAchW,WAAW4f,gBAAgBvc,KAAKlG,KAAK,6CACnD6Y,EAAchW,WAAW4f,gBAAgBjW,aAAa,6CAA+C,kBAGvGqM,EAAchW,WAAWygB,eAAgBF,EAAAA,EAAAA,UAAS,CAChDld,KAAM,CACJ,0CACA,0CACA,0CACA,sCAEFsG,aAAc,CACZ,0CAA2C,YAC3C,0CAA2C,YAC3C,0CAA2C,YAC3C,qCAAsC,SAEvCqM,EAAchW,WAAWygB,eAErBzK,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAUjB,OATA5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/B,wBAAyB,CACvBG,GAAI,SAACmG,GAEH,MADc,4BAAAnc,OAA+Bmc,EAAa/P,QAAQ,sCAAyC,8HAE7G,KAIG4K,CACT,IAAC,CApLwC,CAASb,ICAvCgO,GAAyC,SAAAlL,GAAA,SAAAkL,IAAA,OAAA9N,EAAAA,EAAAA,GAAA,KAAA8N,IAAA9K,EAAAA,GAAAA,GAAA,KAAA8K,EAAAtlB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA2K,EAAAlL,IAAA7C,EAAAA,EAAAA,GAAA+N,EAAA,EAAArmB,IAAA,gCAAArC,MACpD,SAA8B8P,GAC5B,IAAMkO,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAyBhC,OAtBAkO,EAAchW,YAAa3C,EAAAA,EAAAA,MAAK2Y,EAAchW,WAAY,CACxD,YACA,eACA,iCACCmT,KAAK7V,YAAYqjB,oCAAsC,CACxD,2BACA,wBACA,gCACA,0BACA,+BACA,+BACA,wBACA,qCACA,8CACA,oCACE,GAAI,CACN,2BACA,wBACA,gCACA,4BAGK3K,CACT,IAAC,CA5BmD,CAAStD,ICExD,IAAMkO,GAA4B,SAAApL,GACvC,SAAAoL,EAAYzgB,EAAS0gB,GAAmB,IAADpL,EAEI,OAFJ7C,EAAAA,EAAAA,GAAA,KAAAgO,IACrCnL,GAAAG,EAAAA,GAAAA,GAAA,KAAAgL,EAAA,CAAMzgB,KACD0gB,iBAAmBA,EAAiBpL,CAC3C,CAAC,OAAAM,EAAAA,GAAAA,GAAA6K,EAAApL,IAAA7C,EAAAA,EAAAA,GAAAiO,EAAA,EAAAvmB,IAAA,gCAAArC,MAED,SAA8B8P,GAAe,IAADkY,EAAA,KACpChK,GAAaC,EAAAA,GAAAA,GAAA2K,EAAA,uCAAA3K,CAAA,CAAuCnO,IAG1DkO,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,UAE5D,IAAI8gB,EAAa,CAAC,cAAe,gBAAiB,kBAAmB,aAAc,eAAgB,iBAAkB,eAAgB,kBACjI3N,KAAK7V,YAAYmE,uBACnBqf,EAAaA,EAAWvkB,OAAO,CAAC,2BAElCukB,EAAaA,EAAWvkB,OAAO4W,KAAK0N,kBAEpC,IAAM7Y,EAAY,4BAClBgO,EAAchW,WAAarC,IAAAA,KACzBmK,EAAa9H,YACb,SAAAvB,GAAI,OAAId,IAAAA,SAAWmjB,EAAYriB,EAAKiB,WAAasI,EAAUK,KAAK5J,EAAKiB,SAAS,IAGhF,IAAMga,EAAyB1D,EAAchW,WAAW2Z,eACpDD,IACFA,EAAuBnb,YAAa,GAGtC,IAAMqd,EAAwB5F,EAAchW,WAAW6b,cAUvD,GATID,IACFA,EAAsBrd,YAAa,GAGrCyX,EAAchW,WAAarC,IAAAA,UAAYqY,EAAchW,YAAY,SAAAvB,GAAI,OAAAnF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAChEmF,GAAI,IACPoH,MAAOpH,EAAKoH,OAASma,EAAKpY,KAAKqB,UAAU,oCAAD1M,OAAqCoB,IAAAA,OAASc,EAAKgC,MAAO,WAAahC,EAAK8J,oBAAmB,IAGrI4K,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,YAAa8L,yBAF7B,CAAC,gCAIpC,CAEA,OAAO4M,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAKjB,OAJA0C,EAAAA,GAAAA,GAAA2K,EAAA,4BAAA3K,CAAA,CAAyB1C,ICtDtB,SAA4CpT,GACjD,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9B2O,UAAW,CACTC,KAAM,SAAAhpB,GAAK,yBAAAuE,OAAuBvE,EAAK,QAK7C,CD6CIipB,CAAmC1N,GEvDhC,SAAoCpT,GACzC,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9B8O,eAAgB,CACd3O,GAAI,SAACiB,GACH,IAAM2N,EAAO3N,EAAI7K,QAAQ,sBAAuB,IAChD,MAAM,qBAANpM,OAA4B4kB,EAC9B,IAKN,CF2CIC,CAA2B7N,GAEpBA,CACT,IAAC,CAvDsC,CAASb,IGHrC2O,GAA+B,SAAAC,GAC1C,SAAAD,EAAYlhB,GAAS,OAAAyS,EAAAA,EAAAA,GAAA,KAAAyO,IAAAzL,EAAAA,GAAAA,GAAA,KAAAyL,EAAA,CACblhB,EAAS,CAAC,mCAClB,CAAC,OAAA4V,EAAAA,GAAAA,GAAAsL,EAAAC,IAAA3O,EAAAA,EAAAA,GAAA0O,EAAA,EAAAhnB,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAAoL,EAAA,4BAAApL,CAAA,CAAyB1C,IFKtB,SAAkDpT,GACvD,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9B,iCAAkC,CAChCG,GAAI,SAACva,GACH,IAAMmpB,EAAOnpB,EAAM2Q,QAAQ,oCAAqC,YAChE,MAAM,2CAANpM,OAAkD4kB,EACpD,IAKN,CEjBII,CAAyChO,GAElCA,CACT,GAAC,CAAAlZ,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAoL,EAAA,uCAAApL,CAAA,CAAuCnO,IAa1D,OAXIqL,KAAK7V,YAAYoa,8BAClBvE,KAAK7V,YAAYwa,gCAClB9B,EAAchW,WAAW6e,kBAAoB,CAC3CtgB,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACT8O,UAAU,IAIP5B,CACT,IAAC,CA3ByC,CAAS4K,ICAxCY,GAA8B,SAAAF,GACzC,SAAAE,EAAYrhB,GAAS,OAAAyS,EAAAA,EAAAA,GAAA,KAAA4O,IAAA5L,EAAAA,GAAAA,GAAA,KAAA4L,EAAA,CACbrhB,EAAS,CAAC,yCAClB,CAAC,OAAA4V,EAAAA,GAAAA,GAAAyL,EAAAF,IAAA3O,EAAAA,EAAAA,GAAA6O,EAAA,EAAAnnB,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAAuL,EAAA,4BAAAvL,CAAA,CAAyB1C,IHoBtB,SAAwDpT,GAC7D,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAE1CzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9B,uCAAwC,CACtCG,GAAI,SAACva,GACH,IAAMmpB,EAAOnpB,EAAM2Q,QAAQ,0CAA2C,IACtE,MAAM,iDAANpM,OAAwD4kB,EAC1D,IAKN,CGhCIM,CAA+ClO,GAExCA,CACT,GAAC,CAAAlZ,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAuL,EAAA,uCAAAvL,CAAA,CAAuCnO,IAa1D,OAXIqL,KAAK7V,YAAYoa,8BAClBvE,KAAK7V,YAAYwa,gCAClB9B,EAAchW,WAAW6e,kBAAoB,CAC3CtgB,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACT8O,UAAU,IAIP5B,CACT,IAAC,CA3BwC,CAAS4K,ICDvCc,GAAgC,SAAAJ,GAC3C,SAAAI,EAAYvhB,GAAS,OAAAyS,EAAAA,EAAAA,GAAA,KAAA8O,IAAA9L,EAAAA,GAAAA,GAAA,KAAA8L,EAAA,CACbvhB,EAAS,CAAC,8CAClB,CAAC,OAAA4V,EAAAA,GAAAA,GAAA2L,EAAAJ,IAAA3O,EAAAA,EAAAA,GAAA+O,EAAA,EAAArnB,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAyL,EAAA,uCAAAzL,CAAA,CAAuCnO,IAEpD6Z,EAAqB3L,EAAchW,WAAW4hB,uCAgBpD,OAfID,IACFA,EAAmBjiB,SAAW,kBAG5ByT,KAAK7V,YAAYoa,8BAChBvE,KAAK7V,YAAYwa,gCACpB9B,EAAchW,WAAW6e,kBAAoB,CAC3CtgB,YAAY,EACZsC,KAAM,SACNgI,QAAS,EACTC,QAAS,GACT8O,UAAU,IAIP5B,CACT,IAAC,CAzB0C,CAAS4K,ICIzCiB,GAAsC,SAAArM,GAAA,SAAAqM,IAAA,OAAAjP,EAAAA,EAAAA,GAAA,KAAAiP,IAAAjM,EAAAA,GAAAA,GAAA,KAAAiM,EAAAzmB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA8L,EAAArM,IAAA7C,EAAAA,EAAAA,GAAAkP,EAAA,EAAAxnB,IAAA,gCAAArC,MACjD,SAA8B8P,GAAe,IAAD2N,EAAA,KACpCO,GAAaC,EAAAA,GAAAA,GAAA4L,EAAA,uCAAA5L,CAAA,CAAuCnO,IAC1DiR,EAWI5F,KAAK7V,YAVPgE,EAAoByX,EAApBzX,qBACAwgB,EAAiC/I,EAAjC+I,kCACAC,EAAuBhJ,EAAvBgJ,wBACAC,EAA6BjJ,EAA7BiJ,8BACAC,EAAyBlJ,EAAzBkJ,0BACAC,EAAmCnJ,EAAnCmJ,oCACAC,EAA6BpJ,EAA7BoJ,8BACA1gB,EAAoBsX,EAApBtX,qBACAiW,EAA2BqB,EAA3BrB,4BACAI,EAA6BiB,EAA7BjB,8BAEIsK,GAAgBtqB,EAAAA,EAAAA,SAAQ,CAC5B,+BACA,iCACA,iCACA,kCACA,eACA,iBACA,gBACA,kBACA2J,GAAwB,wBACxB,UACA,iBACA,QACA,WAEIuG,EAAY,sBAElBgO,EAAchW,YAAa3C,EAAAA,EAAAA,MACzB2Y,EAAchW,YACd,SAAAvB,GAAI,OAAIwW,EAAAA,EAAAA,UAASmN,EAAe3jB,EAAKiB,WAAasI,EAAUK,KAAK5J,EAAKiB,SAAS,IAGjFsW,EAAchW,YAAaqiB,EAAAA,EAAAA,WAAUrM,EAAchW,YAAY,SAAAvB,GAAI,OAAAnF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9DmF,GAAI,IACPoH,MAAOpH,EAAKoH,OAAS4P,EAAK7N,KAAKqB,UAAU,oCAAD1M,QAAqC1D,EAAAA,EAAAA,QAAO4F,EAAKgC,MAAO,WAAahC,EAAK8J,oBAAmB,IAGvI,IAeM+Z,EAA4BnP,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ8mB,0BACvF9T,EAAsC1G,EAhBR,CAC5B,WACA,kBACA,oBACA,uBACA,iBACA,eACA,wBACA,4BACA,qBACA,oBACA,mCACA,uCAMyBkO,EAAchW,WAAWuiB,4BACjCC,kBAAmB,EAEtC,IAAMC,EAAuBzM,EAAchW,WAAW0iB,8BAmBtD,GAlBID,IAEFA,EAAqBpf,MAAOvL,EAAAA,EAAAA,SAAQ,CAClC,kCACCwJ,GAAwBwgB,IAAsC,6BAC/DC,GAA2B,4BAC3BE,GAA6B,8BAC7BC,GAAuC,wCACvCC,GAAiC,kCACjCH,GAAiC,kCACjCM,GAA6B,mDAKjCtM,EAAchW,WAAW2Z,eAAepb,YAAa,EACrDyX,EAAchW,WAAW6b,cAActd,YAAa,EAEhD4U,KAAKtO,WAAY,CAEnBqE,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,YAAa8L,yBAF7B,CAAC,gCAIpC,CAeA,OAbIsO,IAAgCI,IAClC9B,EAAchW,WAAW2iB,oCAAsC,CAC7DpkB,YAAY,EACZsK,QAAS,EACTC,QAAS,GACTjI,KAAM,SACNjJ,KAAM,qBACN8H,SAAU,uCACVmG,MAAOsN,KAAKvL,KAAKqB,UAAU,uDAC3B2O,UAAU,IAIP5B,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAA4L,EAAA,4BAAA5L,CAAA,CAAyB1C,IACzBqH,GAA8BrH,GAEvBA,CACT,IAAC,CA9GgD,CAASb,ICH/CkQ,GAAsB,SAAApN,GAAA,SAAAoN,IAAA,OAAAhQ,EAAAA,EAAAA,GAAA,KAAAgQ,IAAAhN,EAAAA,GAAAA,GAAA,KAAAgN,EAAAxnB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA6M,EAAApN,IAAA7C,EAAAA,EAAAA,GAAAiQ,EAAA,EAAAvoB,IAAA,gCAAArC,MACjC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA2M,EAAA,uCAAA3M,CAAA,CAAuCnO,IAEpD+a,EAAc7M,EAAchW,WAAW8iB,IAM7C,GAJID,GAAoC,MAArBA,EAAYpiB,QAC7BoiB,EAAYhd,MAAQgd,EAAYpiB,OAG9B0S,KAAK7V,YAAYylB,uBAAwB,CAC3C,IAAMC,EAAgBhN,EAAchW,WAAWijB,MAC3CD,GACFA,EAAczc,UAAUpJ,KAAK,MAG3B6Y,EAAchW,WAAWkjB,2CAC3BlN,EAAchW,WAAWkjB,yCAAyC3kB,YAAa,GAG7EyX,EAAchW,WAAWmjB,kDAE3BnN,EAAchW,WAAWmjB,gDAAgD5kB,YAAa,GAGpFyX,EAAchW,WAAWojB,8CAC3BpN,EAAchW,WAAWojB,4CAA4C7kB,YAAa,GAGhFyX,EAAchW,WAAWqjB,0DAE3BrN,EAAchW,WAAWqjB,wDAAwD9kB,YAAa,GAG5FyX,EAAchW,WAAWsjB,+CAC3BtN,EAAchW,WAAWsjB,6CAA6C/kB,YAAa,GAGjFyX,EAAchW,WAAWujB,mCAC3BvN,EAAchW,WAAWujB,iCAAiChlB,YAAa,EAE3E,CAEA,IAAMilB,EAAoBxN,EAAchW,WAAWyjB,UAC/CD,IACFA,EAAkBld,WAAa,QAC/Bkd,EAAkBjd,UAAY,CAAC,OAGjC,IAAMmd,EAAkB1N,EAAchW,WAAW2jB,QAC7CD,IACFA,EAAgBpd,WAAa,QAC7Bod,EAAgBnd,UAAY,CAAC,OAG/B,IAAMqd,EAA6B5N,EAAchW,WAAW6jB,mBAExDD,IACFA,EAA2Btd,WAAa,QACxCsd,EAA2Brd,UAAY,CAAC,OAM1C,OAFAyP,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WADzB,CAAC,WAAY,SAAU,aAAc,aAGrDgW,CACT,GAAC,CAAA3b,IAAA,oBAAArC,MAED,SAAkBA,GAChB,OAAI8rB,MAAM7pB,QAAQjC,GACTA,EAAM,GAERA,CACT,GAAC,CAAAqC,IAAA,qBAAArC,MAED,SAAmBub,GAAe,IAADkC,EAAA,KA8B/B,OA7BAQ,EAAAA,GAAAA,GAAA2M,EAAA,4BAAA3M,CAAA,CAAyB1C,IAEzB5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/BqR,UAAW,CACTlR,GAAI,SAACva,GACH,IAAM+rB,EAAYtO,EAAKuO,kBAAkBhsB,GAAOiO,MAAM,KAAK,GAG3D,MAFS,iBAAA1J,OAAoBwnB,EAAS,IAGxC,GAEFJ,QAAS,CACPpR,GAAI,SAACva,GACH,IAAMisB,EAAUxO,EAAKuO,kBAAkBhsB,GAAOiO,MAAM,KAAK,GAGzD,MAFS,eAAA1J,OAAkB0nB,EAAO,IAGpC,GAEFJ,mBAAoB,CAClBtR,GAAI,SAACva,GACH,IAAMksB,EAAqBzO,EAAKuO,kBAAkBhsB,GAAOiO,MAAM,KAAK,GAGpE,MAFS,0BAAA1J,OAA6B2nB,EAAkB,IAG1D,KAIG3Q,CACT,IAAC,CA1GgC,CAASb,ICC/ByR,GAAuB,SAAA3O,GAAA,SAAA2O,IAAA,OAAAvR,EAAAA,EAAAA,GAAA,KAAAuR,IAAAvO,EAAAA,GAAAA,GAAA,KAAAuO,EAAA/oB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAoO,EAAA3O,IAAA7C,EAAAA,EAAAA,GAAAwR,EAAA,EAAA9pB,IAAA,gCAAArC,MAClC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAkO,EAAA,uCAAAlO,CAAA,CAAuCnO,IAC1DiR,EAUI5F,KAAK7V,YATPgE,EAAoByX,EAApBzX,qBACA0gB,EAA6BjJ,EAA7BiJ,8BACAD,EAAuBhJ,EAAvBgJ,wBACAqC,EAA0BrL,EAA1BqL,2BACAjC,EAA6BpJ,EAA7BoJ,8BACAkC,EAAoBtL,EAApBsL,qBACAvC,EAAiC/I,EAAjC+I,kCACAI,EAAmCnJ,EAAnCmJ,oCACAoC,EAA4BvL,EAA5BuL,6BAGIhC,EAA4BnP,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ8mB,0BAEnF+B,IACgBrO,EAAchW,WAAWyd,KACjCpa,MAAOvL,EAAAA,EAAAA,SAAQ,CACvB,kCACCwJ,GAAwBwgB,IAAsC,6BAC/DC,GAA2B,4BAC3BG,GAAuC,wCACvCC,GAAiC,kCACjCH,GAAiC,kCACjCM,GAA6B,mDAIjC,IAAMiC,EAAsBvO,EAAchW,WAAWwkB,eA8BrD,OA7BAD,EAAoBje,WAAa,WACjCie,EAAoBlhB,KAAO,CACzB,qCACA,iCACA,oCAEFkhB,EAAoB5a,aAAe,CACjC,qCAAwC,aACxC,iCAAoC,SACpC,mCAAsC,aAGI8a,EAAAA,EAAAA,KAAI,CAC9CnjB,EACA4gB,EACCkC,GAA8BE,YAIxBtO,EAAchW,WAAW0kB,uBAG5BN,GAA8BE,WAC3BtO,EAAchW,WAAW2kB,iBACzB3O,EAAchW,WAAW4kB,oBAG3B5O,EAAchW,WAAWuR,OAEzByE,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAAkO,EAAA,4BAAAlO,CAAA,CAAyB1C,IACzBqH,GAA8BrH,GAEvBA,CACT,IAAC,CApEiC,CAASb,ICAhCmS,GAAwB,SAAArP,GAAA,SAAAqP,IAAA,OAAAjS,EAAAA,EAAAA,GAAA,KAAAiS,IAAAjP,EAAAA,GAAAA,GAAA,KAAAiP,EAAAzpB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA8O,EAAArP,IAAA7C,EAAAA,EAAAA,GAAAkS,EAAA,EAAAxqB,IAAA,gCAAArC,MACnC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA4O,EAAA,uCAAA5O,CAAA,CAAuCnO,IAEtCkO,EAAchW,WAAW8kB,YACjCjf,MAAQsN,KAAKvL,KAAKqB,UAAU,6CAEjB+M,EAAchW,WAAWoV,OAGjC/R,KAAO1F,IAAAA,IADA,CAAC,SAAU,YACU,SAAA3F,GAAK,OAAI4R,EAAsB,oBAAqB5R,EAAM,IAErG,IAAMoqB,EAAgBzkB,IAAAA,QAAU,CAAC,gBAOjC,OALAqY,EAAchW,WAAarC,IAAAA,KACzBqY,EAAchW,YACd,SAAAvB,GAAI,OAAId,IAAAA,SAAWykB,EAAe3jB,EAAKiB,SAAS,IAG3CsW,CACT,IAAC,CApBkC,CAAStD,ICEjCqS,GAAyB,SAAAvP,GAAA,SAAAuP,IAAA,OAAAnS,EAAAA,EAAAA,GAAA,KAAAmS,IAAAnP,EAAAA,GAAAA,GAAA,KAAAmP,EAAA3pB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAgP,EAAAvP,IAAA7C,EAAAA,EAAAA,GAAAoS,EAAA,EAAA1qB,IAAA,gCAAArC,MACpC,SAA8B8P,GAC5B,IAAMkO,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAGhCkO,EAAchW,WAAarC,IAAAA,KAAOmK,EAAa9H,WAAY,CAAC,UAG5DgW,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,CAC1D,2CACA,kDACA,8CACA,0DACA,iDAIF,IAAM0Z,EAAyB1D,EAAchW,WAAW2Z,eAClDiC,EAAwB5F,EAAchW,WAAW6b,cAUvD,GARInC,IACFA,EAAuBnb,YAAa,GAGlCqd,IACFA,EAAsBrd,YAAa,GAGjC4U,KAAKtO,WAAY,CACnBmR,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,CAC1D,yBAGFkJ,EAAiC,CAC/BpB,aAAckO,EAAerZ,YAAawW,KAAK7V,cAIjD,IAAM0nB,EAAiB,CAAC,6BAA8B,+BACtDhP,EAAchW,WAAW0J,aAAarG,KAClC1F,IAAAA,OACAqY,EAAchW,WAAW0J,aAAarG,MACtC,SAAAxC,GAAI,OAAImkB,EAAe/f,QAAQpE,IAAS,CAAC,GAE/C,KAAO,CAEL,IAAMokB,EAAmB,WACzBjP,EAAchW,WAAWklB,qBAAqB7hB,KAC5C1F,IAAAA,IAAMqY,EAAchW,WAAWklB,qBAAqB7hB,MAAM,SAAAuT,GAAI,OAAIA,EAAKjO,QAAQsc,EAAkB,GAAG,IAEtG,IAAMD,EAAiB,CAAC,6BAA8B,+BACtDhP,EAAchW,WAAWklB,qBAAqB7hB,KAC5C1F,IAAAA,OACEqY,EAAchW,WAAWklB,qBAAqB7hB,MAC9C,SAAAxC,GAAI,OAAImkB,EAAe/f,QAAQpE,IAAS,CAAC,IAE7C,IAAMskB,EAAsB,CAAC,EAC7BxnB,IAAAA,KAAOqY,EAAchW,WAAWklB,qBAAqBvb,cAAc,SAAC6J,EAAKnZ,GACvE8qB,EAAoB9qB,EAAIsO,QAAQsc,EAAkB,KAAOzR,CAC3D,IACAwC,EAAchW,WAAWklB,qBAAqBvb,aAAewb,CAC/D,CAEA,GAAIhS,KAAK7V,YAAY8nB,yCAA0C,CAE7DpP,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,sBAG5D,IAAMqlB,EAAsB,0CAC5BrP,EAAchW,WAAWslB,mCAAmCjiB,KAAO1F,IAAAA,QACjEqY,EAAchW,WAAWslB,mCAAmCjiB,KAC5DgiB,GAEFrP,EAAchW,WAAWslB,mCAAmC3b,aAAehM,IAAAA,KACzEqY,EAAchW,WAAWslB,mCAAmC3b,aAC5D0b,GAIFrP,EAAchW,WAAWslB,mCAAmC3b,aAAa,qDACrEwJ,KAAKC,aAAanK,UAAU,yCAChC+M,EAAchW,WAAWslB,mCAAmC3b,aAAa,sDACrEwJ,KAAKC,aAAanK,UAAU,yCAClC,KAAO,CAEL+M,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,sCAG5D,IAAMulB,EAAmB,0BACzBvP,EAAchW,WAAWwlB,mBAAmBniB,KAC1C1F,IAAAA,QAAUqY,EAAchW,WAAWwlB,mBAAmBniB,KAAMkiB,GAC9DvP,EAAchW,WAAWwlB,mBAAmB7b,aAC1ChM,IAAAA,KAAOqY,EAAchW,WAAWwlB,mBAAmB7b,aAAc4b,EACrE,CAEA,IAAMvJ,EAA+B7I,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQygB,4BACxGC,EAA8B/I,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQ2gB,mBAU7G,OATKH,GAAiCE,IAChClG,EAAchW,WAAWslB,qCAC3BtP,EAAchW,WAAWslB,mCAAmCjiB,KAAO1F,IAAAA,QAAUqY,EAAchW,WAAWslB,mCAAmCjiB,KAAM,+CAE7I2S,EAAchW,WAAWoc,YAC3BpG,EAAchW,WAAWoc,UAAU/Y,KAAO1F,IAAAA,QAAUqY,EAAchW,WAAWoc,UAAU/Y,KAAM,gCAI1F2S,CACT,IAAC,CA3GmC,CAAStD,ICJzC+S,GACJ,SAAAC,GAAQ,iFAAAnpB,OAA+EmpB,EAAS,GAAE,OAC9FC,GACJ,SAAAD,GAAQ,iFAAAnpB,OAA+EmpB,EAAS,GAAE,OCG7F,IAAME,GAA2B,SAAApQ,GACtC,SAAAoQ,EAAYzlB,EAAO9H,GAA8C,IAADod,EAAzC2M,EAAa/pB,EAAb+pB,cAAayD,EAAAxtB,EAAEytB,eAAAA,OAAc,IAAAD,GAAQA,EAOzD,OAPyDjT,EAAAA,EAAAA,GAAA,KAAAgT,IAC1DnQ,GAAAG,EAAAA,GAAAA,GAAA,KAAAgQ,EAAA,CAAMzlB,KACDiiB,cAAgBA,EACrB3M,EAAKqQ,eAAiBA,EACtBrQ,EAAK9F,mBAAqBxP,EAAQwP,mBAC9B8F,EAAKnY,YAAYgW,wBACnBR,GAAiB3S,GAClBsV,CACH,CAEA,OAAAM,EAAAA,GAAAA,GAAA6P,EAAApQ,IAAA7C,EAAAA,EAAAA,GAAAiT,EAAA,EAAAvrB,IAAA,+BAAArC,MACA,WACE,MAAO,CAAC,CACV,GAAC,CAAAqC,IAAA,gCAAArC,MAED,WACE,MAAO,CAAC,CACV,GAAC,CAAAqC,IAAA,gCAAArC,MAED,SAA8B8P,GAAe,IAADkY,EAAA,KACpChK,GAAaC,EAAAA,GAAAA,GAAA2P,EAAA,uCAAA3P,CAAA,CAAuCnO,IAEpDE,EAAY,4BAElBgO,EAAchW,WAAarC,IAAAA,KACzBqY,EAAchW,YACd,SAAAvB,GAAI,OAAId,IAAAA,SAAWqiB,EAAKoC,cAAe3jB,EAAKiB,WACzCsgB,EAAK8F,gBAAkB9d,EAAUK,KAAK5J,EAAKiB,SAAU,IAG1DsW,EAAchW,YAAU1G,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnB0c,EAAchW,YACdmT,KAAK4S,iCAGV,IAAMC,GAAmB1sB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEpB,CACD+a,KAAM,CAAExO,MAAOsN,KAAKvL,KAAKqB,UAAU,iDACnCgd,YAAa,CACX3f,WAAY,WAIb6M,KAAK+S,gCAiBV,OAdAlQ,EAAchW,WAAarC,IAAAA,UAAYqY,EAAchW,YAAY,SAACvB,GAGhE,OAFA0nB,OAAOC,OAAO3nB,EAAMunB,EAAoBvnB,EAAK7G,QAE7C0B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKmF,GAAI,IACPoH,MAAOpH,EAAKoH,OAASma,EAAKpY,KAAKqB,UAAU,oCAAD1M,OAAqCoB,IAAAA,OAASc,EAAKgC,MAAO,WAAahC,EAAK8J,oBAExH,IDxDG,SAAqDT,EAAc6H,EAAoBhT,GAC5F,IAAMsS,EAAU,CACd,yBACA,oBACA,kBACA,aACA,uBACA,qBACA,WACA,OACA,UACA,sBACA,2BAAyB1S,QAAAM,EAAAA,GAAAA,GACtBF,EAAYnB,SAAWmB,EAAYnB,QAAQ6qB,iCAAmC,CAC/E,iCACA,mCACA,wCACA,0CACA,uCACA,+CACE,KAGN1oB,IAAAA,OAASmK,EAAa9H,WAAY,CAChCsmB,uBAAwB,CACtB1uB,KAAM,yBACNiO,MAAO8J,EAAmBjQ,SAAS,UAAW,0BAC9CqP,UAAWpR,IAAAA,OAASsR,EAAYtR,IAAAA,IAAMsR,GAAY,SAAAjX,GAAK,OAAI2X,EAAmB3X,MAAM,wBAAyB,SAAUA,EAAM,KAC7HsO,WAAY,SACZC,UAAW,CAAC,WAAY,kBACxBlD,KAAM4L,EACNtF,aAAc,CAAC,EACf9I,KAAM,SACNnB,SAAU,yBACV6I,iBAAkB,yBAClBhK,YAAY,IAKlB,CCkBIgoB,CAA4CvQ,EAAe7C,KAAKxD,mBAAoBwD,KAAK7V,aACrF6V,KAAK7V,aAAe6V,KAAK7V,YAAYgW,wBACvCjC,GAA4B2E,GAAe,GAGtCA,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAQjB,OAPA0C,EAAAA,GAAAA,GAAA2P,EAAA,4BAAA3P,CAAA,CAAyB1C,IDzBtB,WAAoE,IAAfpT,EAAO/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrE+E,EAAQiS,OAASjS,EAAQiS,QAAU,CAAC,EAEpCzU,IAAAA,UAAYwC,EAAQiS,OAAQ,CAC1BkU,uBAAwB,CACtBrR,SAAUwQ,GACV5K,eAAgB8K,KAKtB,CCgBIa,CAA4CjT,GAExCJ,KAAK7V,aAAe6V,KAAK7V,YAAYgW,wBACvCpB,GAA4BqB,GAAc,GAErCA,CACT,IAAC,CA1EqC,CAASb,ICJpC+T,GAA0B,SAAAC,GACrC,SAAAD,EAAYtmB,IAASyS,EAAAA,EAAAA,GAAA,KAAA6T,GACnB,IAAMrE,EAAgBzkB,IAAAA,QAAU,CAC9B,OACA,WACA,cACA,QACA,qBACA,qBACA,qDACA,8DACA,wDACA,sDACA,4DACA,4BAGyC,OAA3CgY,GAAkCxV,IAASyV,EAAAA,GAAAA,GAAA,KAAA6Q,EAAA,CACrCtmB,EAAS,CAAEiiB,cAAAA,EAAe0D,gBAAgB,IAClD,CAAC,OAAA/P,EAAAA,GAAAA,GAAA0Q,EAAAC,IAAA/T,EAAAA,EAAAA,GAAA8T,EAAA,EAAApsB,IAAA,+BAAArC,MAED,WACE,MAAO,CAEL2uB,kDAAmD,CAAEpoB,YAAY,GAEjEqoB,oDAAqD,CAAEroB,YAAY,GAEvE,GAAC,CAAAlE,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAwQ,EAAA,uCAAAxQ,CAAA,CAAuCnO,IAO1D,OANAgN,GAA6CkB,GAC7CA,EAAchW,WAAarC,IAAAA,KACzBqY,EAAchW,WACd,mCACA,uCAEKgW,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAGjB,OAFA0C,EAAAA,GAAAA,GAAAwQ,EAAA,4BAAAxQ,CAAA,CAAyB1C,IACzByB,GAA6CzB,GACtCA,CACT,IAAC,CA7CoC,CAASqS,ICAnCiB,GAA+B,SAAAH,GAC1C,SAAAG,EAAY1mB,IAASyS,EAAAA,EAAAA,GAAA,KAAAiU,GACnB,IAAMzE,EAAgBzkB,IAAAA,QAAU,CAC9B,OACA,WACA,cACA,QACA,qBACA,uBAGyC,OAA3CgY,GAAkCxV,IAASyV,EAAAA,GAAAA,GAAA,KAAAiR,EAAA,CACrC1mB,EAAS,CAAEiiB,cAAAA,EAAe0D,gBAAgB,IAClD,CAAC,OAAA/P,EAAAA,GAAAA,GAAA8Q,EAAAH,IAAA/T,EAAAA,EAAAA,GAAAkU,EAAA,EAAAxsB,IAAA,+BAAArC,MAED,WACE,MAAO,CACL8uB,6BAA8B,CAAEvoB,YAAY,GAC5CigB,6BAA8B,CAAEjgB,YAAY,GAC5CwoB,oCAAqC,CAAExoB,YAAY,GACnDyoB,4CAA6C,CAAEzoB,YAAY,GAC3D0oB,oCAAqC,CAAE1oB,YAAY,GACnD2oB,6CAA8C,CAAE3oB,YAAY,GAC5D4oB,2CAA4C,CAAE5oB,YAAY,GAC1D6oB,4CAA6C,CAAE7oB,YAAY,GAC3D8oB,mDAAoD,CAAE9oB,YAAY,GAClE+oB,iDAAkD,CAAE/oB,YAAY,GAChEgpB,oCAAqC,CAAEhpB,YAAY,GACnDipB,mDAAoD,CAAEjpB,YAAY,GAClEkpB,oDAAqD,CAAElpB,YAAY,GACnEmpB,4CAA6C,CAAEnpB,YAAY,GAC3DopB,2CAA4C,CAAEppB,YAAY,GAC1DqpB,yCAA0C,CAAErpB,YAAY,GACxDspB,mDAAoD,CAAEtpB,YAAY,GAClEupB,iDAAkD,CAAEvpB,YAAY,GAChEwpB,iCAAkC,CAAExpB,YAAY,GAChD2kB,yCAA0C,CAAE3kB,YAAY,GACxD4kB,gDAAiD,CAAE5kB,YAAY,GAC/D6kB,4CAA6C,CAAE7kB,YAAY,GAC3D8kB,wDAAyD,CAAE9kB,YAAY,GACvE+kB,6CAA8C,CAAE/kB,YAAY,GAC5DypB,mCAAoC,CAAEzpB,YAAY,GAClD0pB,oCAAqC,CAAE1pB,YAAY,GACnD2pB,yDAA0D,CAAE3pB,YAAY,GACxE4pB,gDAAiD,CAAE5pB,YAAY,GAC/D6pB,mCAAoC,CAAE7pB,YAAY,GAClD8pB,4CAA6C,CAAE9pB,YAAY,GAE/D,GAAC,CAAAlE,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA4Q,EAAA,uCAAA5Q,CAAA,CAAuCnO,IAE1D,OADAgN,GAA6CkB,GACtCA,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAGjB,OAFA0C,EAAAA,GAAAA,GAAA4Q,EAAA,4BAAA5Q,CAAA,CAAyB1C,IACzByB,GAA6CzB,GACtCA,CACT,IAAC,CA5DyC,CAASqS,ICDxC0C,GAAyB,SAAA5B,GACpC,SAAA4B,EAAYnoB,GAAU,IAADsV,GAAA7C,EAAAA,EAAAA,GAAA,KAAA0V,GACnB,IAAMlG,EAAgBzkB,IAAAA,QAAU,CAC9B,OACA,WACA,cACA,QACA,qBACA,qBACA,UACA,wBACA,oBACA,4BACA,sBAGMnC,GADRia,GAAAG,EAAAA,GAAAA,GAAA,KAAA0S,EAAA,CAAMnoB,EAAS,CAAEiiB,cAAAA,MACQ9kB,YAAjB9B,QACF+sB,IAAgB/sB,GAAUA,EAAQgtB,kBACL,OAAnC/S,EAAKgT,cAAgBF,EAAc9S,CACrC,CAAC,OAAAM,EAAAA,GAAAA,GAAAuS,EAAA5B,IAAA/T,EAAAA,EAAAA,GAAA2V,EAAA,EAAAjuB,IAAA,gCAAArC,MAED,WACE,IAAM0wB,EAAuB,CAAC,EAY9B,OAVIvV,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQmtB,oBAC3ED,EAAqBpQ,eAAiB,CACpCzS,MAAOsN,KAAKC,aAAanK,UAAU,qCACnCvJ,SAAU,wBACVmB,KAAM,SACNgI,QAAS,EACTtK,YAAY,IAITmqB,CACT,GAAC,CAAAruB,IAAA,+BAAArC,MAED,WAAgC,IAADgoB,EAAA,KAOvB4I,EAAsBzV,KAAKsV,cAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/F,MAAO,CACLI,sBAAuB,CAGrBhoB,KAAM,SAKN0F,UAAW,CAAC,MACZiL,uBAAwB,CACtBsX,GAAI3V,KAAKC,aAAanK,UAAU,wBAGpC8f,0BAA2B,CACzBljB,MAAOsN,KAAKC,aAAanK,UAAU,wCACnC5F,KAAMulB,EACNviB,SAAU,4BACVsD,aAAc,CAAC,EACfoF,UAAWpR,IAAAA,OAASirB,EAAqBjrB,IAAAA,IAAMirB,GAAqB,SAAA5wB,GAAK,OAAIgoB,EAAKpY,KAAKqB,UAAU,6BAAD1M,OAA8BvE,GAAQ,KAEtI6I,KAAM,SACN0F,UAAW,CAAC,MACZD,WAAY,WACZ/H,YAAY,GAEdyqB,kBAAmB,CACjBnjB,MAAOsN,KAAKC,aAAanK,UAAU,iCAGzC,GAAC,CAAA5O,IAAA,qBAAArC,MAED,SAAmBub,GAyBjB,OAxBA0C,EAAAA,GAAAA,GAAAqS,EAAA,4BAAArS,CAAA,CAAyB1C,IAEzB5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/ByW,sBAAuB,CACrBtW,GAAI,SAACva,GACH,IAAMixB,EAAWjxB,EAAMiO,MAAM,KAAK,GAElC,MADS,4BAAA1J,OAA+B0sB,EAE1C,GAEFF,0BAA2B,CACzBxW,GAAI,SAACva,GACH,IAAIkZ,EAAG,gCAAA3U,OAAmCvE,GAO1C,OANc,IAAVA,IACFkZ,GAAO,sCAEK,IAAVlZ,IACFkZ,GAAO,sCAEFA,CACT,KAIGqC,CACT,IAAC,CAxGmC,CAASqS,ICAlCsD,GAA4B,SAAAxC,GACvC,SAAAwC,EAAY/oB,IAASyS,EAAAA,EAAAA,GAAA,KAAAsW,GACnB,IAAM9G,EAAgBzkB,IAAAA,QAAU,CAC9B,OACA,4BACA,sCACC,OAAAiY,EAAAA,GAAAA,GAAA,KAAAsT,EAAA,CAEG/oB,EAAS,CAAEiiB,cAAAA,IACnB,CAAC,OAAArM,EAAAA,GAAAA,GAAAmT,EAAAxC,IAAA/T,EAAAA,EAAAA,GAAAuW,EAAA,EAAA7uB,IAAA,+BAAArC,MAED,WACE,MAAO,CACLmxB,iCAAkC,CAChC7iB,WAAY,gBACZC,UAAW,CAAC,OAGlB,IAAC,CAlBsC,CAASqf,ICArCwD,GAAkB,SAAA5T,GAAA,SAAA4T,IAAA,OAAAxW,EAAAA,EAAAA,GAAA,KAAAwW,IAAAxT,EAAAA,GAAAA,GAAA,KAAAwT,EAAAhuB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAqT,EAAA5T,IAAA7C,EAAAA,EAAAA,GAAAyW,EAAA,EAAA/uB,IAAA,gCAAArC,MAC7B,SAA8B8P,GAC5B,IAAAiR,EAGI5F,KAAK7V,YAFP8mB,EAA0BrL,EAA1BqL,2BACAE,EAA4BvL,EAA5BuL,6BAEI+E,EAAoBjF,GAA8BE,EAClDtO,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAOhC,OALKuhB,WACIrT,EAAchW,WAAW2kB,iBACzB3O,EAAchW,WAAW4kB,aAG3B5O,CACT,IAAC,CAf4B,CAAStD,ICA3B4W,GAA0B,SAAA9T,GAAA,SAAA8T,IAAA,OAAA1W,EAAAA,EAAAA,GAAA,KAAA0W,IAAA1T,EAAAA,GAAAA,GAAA,KAAA0T,EAAAluB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAuT,EAAA9T,IAAA7C,EAAAA,EAAAA,GAAA2W,EAAA,EAAAjvB,IAAA,gCAAArC,MACrC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAqT,EAAA,uCAAArT,CAAA,CAAuCnO,IAgC1D,OA9BAkO,EAAchW,WAAa,CACzBoV,OAAQ,CACN7W,YAAY,EACZsH,MAAO,SACPhF,KAAM,SACNnB,SAAU,SACV6I,iBAAkB,SAClBqP,UAAU,EACV9O,QAAS,EACTa,aAAc,CACZ,EAAG,UACH,EAAG,WACH,EAAG,WACH,EAAG,UACH,EAAG,aAELtG,KAAM,CACJ,EACA,EACA,EACA,EACA,GAEFkD,UAAW,CACT,MAEFD,WAAY,UAIT0P,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAcjB,OAbA0C,EAAAA,GAAAA,GAAAqT,EAAA,4BAAArT,CAAA,CAAyB1C,IAEzB5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/BgD,OAAQ,CACN7C,GAAI,SAACva,GACH,IAAMuxB,EAASvxB,EAAMiO,MAAM,KAAM,GAGjC,MAFS,cAAA1J,OAAiBgtB,EAAM,IAGlC,KAIGhW,CACT,IAAC,CApDoC,CAASb,ICCnC8W,GAAmB,SAAAhU,GAC9B,SAAAgU,EAAYrpB,GAAU,IAADsV,EAEmB,OAFnB7C,EAAAA,EAAAA,GAAA,KAAA4W,IACnB/T,GAAAG,EAAAA,GAAAA,GAAA,KAAA4T,EAAA,CAAMrpB,KACDspB,UAAYtpB,EAAQiT,aAAaqC,CACxC,CAAC,OAAAM,EAAAA,GAAAA,GAAAyT,EAAAhU,IAAA7C,EAAAA,EAAAA,GAAA6W,EAAA,EAAAnvB,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAAuT,EAAA,uCAAAvT,CAAA,CAAuCnO,IAC1DiR,EAGI5F,KAAK7V,YAFPR,EAA8Bic,EAA9Bjc,+BAA8BojB,EAAAnH,EAC9Bvd,QAAAA,OAAO,IAAA0kB,EAAG,CAAC,EAACA,EAGQzkB,EAElBD,EAFFE,mBACkBC,EAChBH,EADFI,iBAEIqB,EAAwBxB,GAA+BE,EAoD7D,OAlDAqa,EAAchW,WAAW0pB,qBAAuB,CAC9CnrB,YAAY,EACZ3G,KAAM,uBACN0O,WAAY,gBACZzF,KAAM,UACNnB,SAAU,wBAGR5C,IACEG,EACF+Y,EAAchW,WAAW2pB,6BAA+B,CACtDprB,YAAY,EACZ3G,KAAM,+BACNiJ,KAAM,SACNnB,SAAU,sDACVkY,UAAU,EACVnX,MAAO,CACLmpB,mBAAoB,CAClBC,mBAAoB,SACpBC,mBAAoB,4BAK1B9T,EAAchW,WAAWhF,uBAAyB,CAChDuD,YAAY,EACZ3G,KAAM,yBACNiJ,KAAM,SACNnB,SAAU,gDACVkY,UAAU,EACVnX,MAAO,CACLmpB,mBAAoB,CAClBC,mBAAoB,SACpBC,mBAAoB,0CAOvB9T,EAAchW,WAAWuR,OAE5B4B,KAAKsW,YACPM,EAAAA,EAAAA,QAAO/T,EAAchW,WAAWoV,OAAQ,CACtCrG,UAAW,CACT,0BAA2BoE,KAAKsW,UAAUxgB,UAAU,0BAKnD+M,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,GAIjB,OAHA0C,EAAAA,GAAAA,GAAAuT,EAAA,4BAAAvT,CAAA,CAAyB1C,IACzBqH,GAA8BrH,GAEvBA,CACT,IAAC,CA5E6B,CAASb,ICEnCsX,GAAuB,WAU1B,OAAArX,EAAAA,EAAAA,IATD,SAAAqX,EAAYpiB,IAAMgL,EAAAA,EAAAA,GAAA,KAAAoX,GAChB7W,KAAK8W,eAAgB,EACrB9W,KAAK+W,cAAgB,CAAC,CACpBvZ,GAAI,UACJ0D,KAAMzM,EAAKqB,UAAU8L,WACpB,CACDpE,GAAI,WACJ0D,KAAMzM,EAAKqB,UAAU8L,aAEzB,GAAC,EAAA1a,IAAA,MAAArC,MAED,SAAIuc,EAAaC,GACf,IAAKA,EACH,OAAOC,KAAAA,QAAgBtB,KAAK+W,eAG9B,IAAMxV,EAAwBF,EAAarT,cACrCgpB,EACJxsB,IAAAA,OACEwV,KAAK+W,eACL,SAAArpB,GAAI,OAA+D,IAA3DA,EAAKwT,KAAKlT,cAAc8D,QAAQyP,EAA4B,IAGxE,OAAOD,KAAAA,QAAgB0V,EACzB,GAAC,CAAA9vB,IAAA,WAAArC,MAED,WACE,OAAOyc,KAAAA,QAAgBtB,KAAK+W,cAC9B,IAAC,CA7B0B,GAgCvBE,GAAqB,WAaxB,OAAAzX,EAAAA,EAAAA,IAZD,SAAAyX,EAAYxiB,IAAMgL,EAAAA,EAAAA,GAAA,KAAAwX,GAChBjX,KAAK8W,eAAgB,EACrB9W,KAAKkX,YAAc,CAAC,CAClB1Z,GAAI,cACJ0D,KAAMzM,EAAKqB,UAAU8L,gBACpB,CACDpE,GAAI,UACJ0D,KAAMzM,EAAKqB,UAAU8L,YACpB,CACDpE,GAAI,YACJ0D,KAAMzM,EAAKqB,UAAU8L,cAEzB,GAAC,EAAA1a,IAAA,MAAArC,MAED,SAAIuc,EAAaC,GACf,IAAKA,EACH,OAAOC,KAAAA,QAAgBtB,KAAKkX,aAG9B,IAAM3V,EAAwBF,EAAarT,cACrCgpB,EACJxsB,IAAAA,OACEwV,KAAKkX,aACL,SAAAxpB,GAAI,OAA+D,IAA3DA,EAAKwT,KAAKlT,cAAc8D,QAAQyP,EAA4B,IAGxE,OAAOD,KAAAA,QAAgB0V,EACzB,GAAC,CAAA9vB,IAAA,WAAArC,MAED,WACE,OAAOyc,KAAAA,QAAgBtB,KAAKkX,YAC9B,IAAC,CAhCwB,GAmCdC,GAAoC,SAAA9U,GAAA,SAAA8U,IAAA,OAAA1X,EAAAA,EAAAA,GAAA,KAAA0X,IAAA1U,EAAAA,GAAAA,GAAA,KAAA0U,EAAAlvB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAuU,EAAA9U,IAAA7C,EAAAA,EAAAA,GAAA2X,EAAA,EAAAjwB,IAAA,qBAAArC,MAC/C,SAAmBmI,GACjB,IAAMgS,EAAchS,GAAW,CAAEiS,OAAQ,CAAC,GAc1C,OAZAzU,IAAAA,UAAYwU,EAAYC,OAAQ,CAC9BmY,mBAAoB,CAClB9Y,YAAakC,GAA2B,MAAO,MAAO,KAAM,qBAAsB,gBAClFjC,YAAaiC,GAA2B,KAAM,MAAO,KAAM,qBAAsB,gBACjFhC,aAAcgC,GAA2B,MAAO,MAAO,KAAM,qBAAsB,iBAErF6W,iBAAkB,CAChB/Y,YAAakC,GAA2B,MAAO,MAAO,KAAM,mBAAoB,cAChFjC,YAAaiC,GAA2B,KAAM,MAAO,KAAM,mBAAoB,cAC/EhC,aAAcgC,GAA2B,MAAO,MAAO,KAAM,mBAAoB,iBAG9ExB,CACT,GAAC,CAAA9X,IAAA,gCAAArC,MAED,SAA8B8P,GAAe,IAAD2N,EAAA,KACpCnE,GAAmBpX,EAAAA,EAAAA,WAAU4N,GAC7B0J,EAAyB,CAC7BC,YAAa0B,KAAKC,aAAanK,UAAU8L,gBACzCrD,YAAayB,KAAKC,aAAanK,UAAU8L,gBACzCpD,aAAcwB,KAAKC,aAAanK,UAAU8L,kBAEtCxO,EAAY,CAAC,cAAe,cAAe,gBAsCjD,OApCA+K,EAAiBtR,WAAWuqB,mBAAqB,CAC/C7qB,SAAU,qBACV9H,KAAMub,KAAKC,aAAanK,UAAU8L,iBAClClP,MAAOsN,KAAKC,aAAanK,UAAU8L,iBACnCvD,uBAAAA,EACAjL,UAAAA,EACA1F,KAAM,KACNtC,YAAY,EACZqT,gBAAiB,CACfC,WAAY,IAAImY,GAAwB7W,KAAKC,cAC7CoD,gBAAiB,CACfC,OAAQ,CACNC,4BAA6B,WAAF,OAAQjB,EAAKrC,aAAanK,UAAU8L,gBAAsB,MAM7FzD,EAAiBtR,WAAWwqB,iBAAmB,CAC7C9qB,SAAU,mBACV9H,KAAMub,KAAKC,aAAanK,UAAU8L,eAClClP,MAAOsN,KAAKC,aAAanK,UAAU8L,eACnCvD,uBAAAA,EACAjL,UAAAA,EACA1F,KAAM,KACNtC,YAAY,EACZqT,gBAAiB,CACfC,WAAY,IAAIuY,GAAsBjX,KAAKC,cAC3CoD,gBAAiB,CACfC,OAAQ,CACNC,4BAA6B,WAAF,OAAQjB,EAAKrC,aAAanK,UAAU8L,cAAoB,MAMpFzD,CACT,IAAC,CAjE8C,CAASoB,IA2E7C+X,GAA4B,SAAAC,GAAA,SAAAD,IAAA,OAAA7X,EAAAA,EAAAA,GAAA,KAAA6X,IAAA7U,EAAAA,GAAAA,GAAA,KAAA6U,EAAArvB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA0U,EAAAC,IAAA/X,EAAAA,EAAAA,GAAA8X,EAAA,EAAApwB,IAAA,gCAAArC,MACvC,SAA8B8P,GAC5B,IAAMwJ,GAAgB2E,EAAAA,GAAAA,GAAAwU,EAAA,uCAAAxU,CAAA,CAAuCnO,IAS7D,OAPIwJ,EAAiBtR,WAAW2qB,uBAC9BrZ,EAAiBtR,WAAW2qB,sBAAoBrxB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC3CgY,EAAiBtR,WAAW2qB,sBAAoB,IACnDpsB,YAAY,KAIT+S,CACT,IAAC,CAZsC,CAASgZ,IC9IrCM,GAA2B,SAAApV,GACtC,SAAAoV,EAAYzqB,GAAU,IAADsV,EAEwC,OAFxC7C,EAAAA,EAAAA,GAAA,KAAAgY,IACnBnV,GAAAG,EAAAA,GAAAA,GAAA,KAAAgV,EAAA,CAAMzqB,KACD7C,YAAc6C,EAAQtB,aAAauB,IAAI,eAAeqV,CAC7D,CAAC,OAAAM,EAAAA,GAAAA,GAAA6U,EAAApV,IAAA7C,EAAAA,EAAAA,GAAAiY,EAAA,EAAAvwB,IAAA,gCAAArC,MAED,SAA8B8P,GAC5B,IAAMkO,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAChCiR,EAKI5F,KAAK7V,YAJPP,EAAsCgc,EAAtChc,uCACAD,EAA8Bic,EAA9Bjc,+BACA+tB,EAAqC9R,EAArC8R,sCAAqC3K,EAAAnH,EACrCvd,QAAAA,OAAO,IAAA0kB,EAAG,CAAC,EAACA,EAGQzkB,EAElBD,EAFFE,mBACkBC,EAChBH,EADFI,iBAEIqB,EAAwBxB,GAA+BE,EAGvDmvB,EAAe,CACnB,OACA,0BACA,2BACA,gCACA,wBACA,oCACA,+BACA7tB,EAAwB,sCAAwC,gCAChEA,EAAwB,yCAA2C,oCAqBrE,OAlBIH,GACFguB,EAAa3tB,KAAKF,EAAwB,iDAAmD,4CAG3FF,IACF+tB,EAAa3tB,KAAK,mDAClB2tB,EAAa3tB,KAAKF,EAAwB,qDAAuD,+CACjG6tB,EAAa3tB,KAAK,2DAClB2tB,EAAa3tB,KAAKF,EAAwB,sDAAwD,iDAGhG4tB,IACFC,EAAa3tB,KAAK,uCAClB2tB,EAAa3tB,KAAK,gDAGpB6Y,EAAchW,YAAa3C,EAAAA,EAAAA,MAAK2Y,EAAchW,WAAY8qB,GAEnD9U,CACT,IAAC,CApDqC,CAAStD,ICFpCqY,GAAmC,SAAAvV,GAC9C,SAAAuV,EAAY5qB,GAAU,IAADsV,EAEwC,OAFxC7C,EAAAA,EAAAA,GAAA,KAAAmY,IACnBtV,GAAAG,EAAAA,GAAAA,GAAA,KAAAmV,EAAA,CAAM5qB,KACD7C,YAAc6C,EAAQtB,aAAauB,IAAI,eAAeqV,CAC7D,CAGA,OAAAM,EAAAA,GAAAA,GAAAgV,EAAAvV,IAAA7C,EAAAA,EAAAA,GAAAoY,EAAA,EAAA1wB,IAAA,gCAAArC,MACA,SAA8B8P,GAC5B,IAAMkO,GAAgB9b,EAAAA,EAAAA,WAAU4N,GAChCiR,EAKI5F,KAAK7V,YAJPP,EAAsCgc,EAAtChc,uCACAD,EAA8Bic,EAA9Bjc,+BACA+tB,EAAqC9R,EAArC8R,sCAAqC3K,EAAAnH,EACrCvd,QAAAA,OAAO,IAAA0kB,EAAG,CAAC,EAACA,EAGQzkB,EAElBD,EAFFE,mBACkBC,EAChBH,EADFI,iBAEIqB,EAAwBxB,GAA+BE,EAEvDmvB,EAAe,CACnB,OACA,2BACA,gCACA,wBACA,+BACA,0BACA,oCACA7tB,EAAwB,sCAAwC,gCAChEA,EAAwB,0CAA4C,oCAuBtE,OApBIH,GACFguB,EAAa3tB,KAAKF,EAAwB,iDAAmD,4CAG3FF,IACF+tB,EAAa3tB,KAAK,mDAClB2tB,EAAa3tB,KAAKF,EAAwB,qDAAuD,+CACjG6tB,EAAa3tB,KAAK,2DAClB2tB,EAAa3tB,KAAKF,EAAwB,sDAAwD,iDAGpG6tB,EAAa3tB,KAAKF,EAAwB,yCAA2C,oCAEjF4tB,IACFC,EAAa3tB,KAAK,uCAClB2tB,EAAa3tB,KAAK,gDAGpB6Y,EAAchW,YAAa3C,EAAAA,EAAAA,MAAK2Y,EAAchW,WAAY8qB,GAEnD9U,CACT,IAAC,CAvD6C,CAAStD,ICD5CsY,GAAuC,SAAAxV,GAAA,SAAAwV,IAAA,OAAApY,EAAAA,EAAAA,GAAA,KAAAoY,IAAApV,EAAAA,GAAAA,GAAA,KAAAoV,EAAA5vB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAiV,EAAAxV,IAAA7C,EAAAA,EAAAA,GAAAqY,EAAA,EAAA3wB,IAAA,gCAAArC,MAClD,SAA8B8P,GAE5B,IAAMmjB,EAAqBnjB,EAAa9H,WAAWkrB,WAC7CC,EAAiCrjB,EAAa9H,WAAWorB,uBAU/D,OARIH,IACFA,EAAmB1sB,YAAa,GAG9B4sB,IACFA,EAA+B5sB,YAAa,GAGvCuJ,CACT,IAAC,CAfiD,CAAS4K,ICAhD2Y,GAA+C,SAAA7V,GAAA,SAAA6V,IAAA,OAAAzY,EAAAA,EAAAA,GAAA,KAAAyY,IAAAzV,EAAAA,GAAAA,GAAA,KAAAyV,EAAAjwB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAsV,EAAA7V,IAAA7C,EAAAA,EAAAA,GAAA0Y,EAAA,EAAAhxB,IAAA,gCAAArC,MAC1D,SAA8B8P,GAE5B,IAAMwjB,EAA2BxjB,EAAa9H,WAAWurB,iBACnDC,EAAwB1jB,EAAa9H,WAAWyrB,cAChDN,EAAiCrjB,EAAa9H,WAAWorB,uBACzDM,EAAmC5jB,EAAa9H,WAAW2rB,yBAkBjE,OAhBIL,IACFA,EAAyB/sB,YAAa,GAGpCitB,IACFA,EAAsBjtB,YAAa,GAGjC4sB,IACFA,EAA+B5sB,YAAa,GAG1CmtB,IACFA,EAAiCntB,YAAa,GAGzCuJ,CACT,IAAC,CAzByD,CAAS4K,ICG/DkZ,GAAwB,CAC5B,0BAA2B,wDAC3B,0BAA2B,oDAC3B,2BAA4B,uDAGjBC,GAAkC,SAAArW,GAAA,SAAAqW,IAAA,OAAAjZ,EAAAA,EAAAA,GAAA,KAAAiZ,IAAAjW,EAAAA,GAAAA,GAAA,KAAAiW,EAAAzwB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA8V,EAAArW,IAAA7C,EAAAA,EAAAA,GAAAkZ,EAAA,EAAAxxB,IAAA,gCAAArC,MAC7C,SAA8B8P,GAAe,IAAD2N,EAAA,KACpCO,GAAaC,EAAAA,GAAAA,GAAA4V,EAAA,uCAAA5V,CAAA,CAAuCnO,IAC1DnK,IAAAA,IAAMqY,EAAchW,YAAY,SAAC4W,GACW,IAAtCA,EAAKlX,SAASuF,QAAQ,cACxB2R,EAAKlX,SAAQ,cAAAnD,OAAiBqa,EAAKlX,UAEvC,IAEA,IAAAosB,EAEI9V,EAAchW,WADhB2Q,EAAEmb,EAAFnb,GAAIob,EAASD,EAATC,UAAWC,EAAUF,EAAVE,WAAYC,EAAcH,EAAdG,eAAgB7W,EAAM0W,EAAN1W,OAAQf,EAAIyX,EAAJzX,KAErD,GAAI1D,EACF,OAAQqF,EAAcpe,MACpB,IAAK,QACH+Y,EAAG9K,MAAQsN,KAAKC,aAAanK,UAAU,4CACvC,MAEF,IAAK,aACH0H,EAAG9K,MAAQsN,KAAKC,aAAanK,UAAU,kDACvC,MAEF,IAAK,aACH0H,EAAG9K,MAAQsN,KAAKC,aAAanK,UAAU,iDAKzC8iB,IACFA,EAAUlmB,MAAQsN,KAAKC,aAAanK,UAAU,wCAE5C+iB,IACFA,EAAWnmB,MAAQsN,KAAKC,aAAanK,UAAU,8CAC/C+iB,EAAW1lB,WAAa,WACxB0lB,EAAWjd,UAAYpR,IAAAA,UACrBiuB,IACA,SAAAM,GAAS,OAAIzW,EAAKrC,aAAanK,UAAUijB,EAAU,KAGnDD,IACFA,EAAepmB,MAAQsN,KAAKC,aAAanK,UAAU,8DAEjDmM,IACFA,EAAO9O,WAAa,WACpB8O,EAAOvP,MAAQsN,KAAKC,aAAanK,UAAU,qDAC3CmM,EAAOrG,UAAYpR,IAAAA,UAAYyX,EAAOzL,cAAc,SAAAuiB,GAAS,OAAIzW,EAAKrC,aAAanK,UAAU,yCAAD1M,OAA0C2vB,GAAY,KAEhJ7X,IACFA,EAAKxO,MAAQsN,KAAKC,aAAanK,UAAU,oDAG3C,IAAMmZ,EAAgBzkB,IAAAA,QAAU,CAAC,mBAAoB,WAGrD,GAA2B,sBAAvBqY,EAAcpe,KAA8B,CAC9C,IAAAu0B,EAEInW,EAAchW,WADhBosB,EAAMD,EAANC,OAAQC,EAAWF,EAAXE,YAAaC,EAAGH,EAAHG,IAAKC,EAAKJ,EAALI,MAAOC,EAAUL,EAAVK,WAAYC,EAAeN,EAAfM,gBAE/CL,EAAOvmB,MAAQsN,KAAKC,aAAanK,UAAU,0CAC3CojB,EAAYxmB,MAAQsN,KAAKC,aAAanK,UAAU,8CAChDqjB,EAAIzmB,MAAQsN,KAAKC,aAAanK,UAAU,uCACxCsjB,EAAM1mB,MAAQsN,KAAKC,aAAanK,UAAU,yCAC1CujB,EAAW3mB,MAAQsN,KAAKC,aAAanK,UAAU,8CAC/CwjB,EAAgB5mB,MAAQsN,KAAKC,aAAanK,UAAU,mDAEpDmZ,EAAcjlB,KAAK,aACrB,CAUA,MAR2B,eAAvB6Y,EAAcpe,MAChBwqB,EAAcjlB,KAAK,UAGrB6Y,EAAchW,WAAarC,IAAAA,KACzBqY,EAAchW,WACdoiB,GAEKpM,CACT,GAAC,CAAA3b,IAAA,qBAAArC,MAED,SAAmBub,IACjB0C,EAAAA,GAAAA,GAAA4V,EAAA,4BAAA5V,CAAA,CAAyB1C,IACzB,IAAQmZ,EAAanZ,EAAbmZ,SAeR,OAdA/uB,IAAAA,IAAM+uB,GAAU,SAAC10B,EAAOqC,GACuB,IAAzCrC,EAAMiN,QAAQ,yBAChBynB,EAASryB,GAAOrC,EAAM2Q,QAAQ,sBAAuB,YAEzD,IACAiS,GAA8BrH,GAC9B5V,IAAAA,UAAY4V,EAAanB,OAAQ,CAC/B4Z,WAAY,CACVzZ,GAAI,SAACmG,GAEH,MADc,iBAAAnc,OAAoBmc,EAAa/P,QAAQ,kBAAmB,IAE5E,KAGG4K,CACT,IAAC,CAjG4C,CAASb,ICV3Cia,GAAmC,WAG7C,OAAAha,EAAAA,EAAAA,IAFD,SAAAga,EAAYxsB,IAASyS,EAAAA,EAAAA,GAAA,KAAA+Z,GACnB5Z,EAAc5S,EAChB,GAAC,EAAA9F,IAAA,qBAAArC,MAED,SAAmBub,GACjB,OAAOA,CACT,GAAC,CAAAlZ,IAAA,gCAAArC,MAED,SAA8B8P,GAE5B,OADAD,EAAiCC,GAC1BA,CACT,IAAC,CAZ6C,GCEnC8kB,GAAyB,SAAApX,GAAA,SAAAoX,IAAA,OAAAha,EAAAA,EAAAA,GAAA,KAAAga,IAAAhX,EAAAA,GAAAA,GAAA,KAAAgX,EAAAxxB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA6W,EAAApX,IAAA7C,EAAAA,EAAAA,GAAAia,EAAA,EAAAvyB,IAAA,gCAAArC,MACpC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA2W,EAAA,uCAAA3W,CAAA,CAAuCnO,IAE1DkO,EAAchW,YAAa3C,EAAAA,EAAAA,MAAK2Y,EAAchW,WAAY,CACxD,OACA,iBACA,SACA,gCACA,2BACA,wBACA,sCACA,0BACA,+BACA,8CACA,sCACCmT,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQqxB,kBAAoB,CAC9F,+BACA,gCACE,IAEmB7W,EAAchW,WAAWoV,OAEjC/R,MAAO5L,EAAAA,EAAAA,KADA,CAAC,SAAU,SAAU,YACF,SAAAO,GAAK,OAAI4R,EAAsB,mBAAoB5R,EAAM,IAElG,IAAMke,EAAwB,CAC5B,WACA,oBACA,uBACA,qBACA,uBACA,oBACA,qBACA,gCACA,kCACA,8BACA,2BACA,oBACA,uBACA,oBAUF,OAPI/C,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQmgB,eAC3EzF,EAAsBZ,OAAOY,EAAsBjR,QAAQ,4BAA8B,EAAG,EAAG,0CAC/FiR,EAAsBZ,OAAOY,EAAsBjR,QAAQ,qBAAuB,EAAG,EAAG,4BAG1FuJ,EAAsCwH,EAAeE,GAE9CF,CACT,IAAC,CAlDmC,CAAStD,ICDlCoa,GAA4B,SAAAtX,GAAA,SAAAsX,IAAA,OAAAla,EAAAA,EAAAA,GAAA,KAAAka,IAAAlX,EAAAA,GAAAA,GAAA,KAAAkX,EAAA1xB,UAAA,QAAA2a,EAAAA,GAAAA,GAAA+W,EAAAtX,IAAA7C,EAAAA,EAAAA,GAAAma,EAAA,EAAAzyB,IAAA,gCAAArC,MACvC,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA6W,EAAA,uCAAA7W,CAAA,CAAuCnO,IAiE1D,OA/DAkO,EAAchW,WAAW8b,gBAAkBne,IAAAA,SAAW,CACpD0F,KAAM,CACJ,iCACA,wCACA,iCACA,iCAEFsG,aAAc,CACZ,iCAAkC,WAClC,wCAAyC,kBACzC,iCAAkC,WAClC,gCAAiC,YAElCqM,EAAchW,WAAW8b,iBAE5B9F,EAAchW,WAAW4f,gBAAkBjiB,IAAAA,SAAW,CACpD0F,KAAM,CACJ,uCACA,2CACA,0CACA,2CACA,8CACA,+CACA,6CACA,+CACA,iDACA,2CACA,6CACA,gDACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,2CAA4C,gBAC5C,0CAA2C,eAC3C,2CAA4C,gBAC5C,8CAA+C,mBAC/C,6CAA8C,kBAC9C,+CAAgD,oBAChD,+CAAgD,oBAChD,iDAAkD,sBAClD,2CAA4C,gBAC5C,6CAA8C,kBAC9C,gDAAiD,qBACjD,0CAA2C,iBAE5CqM,EAAchW,WAAW4f,iBAE5B5J,EAAchW,WAAW2f,iBAAmBhiB,IAAAA,SAAW,CACrD2I,WAAY,WACZD,SAAU,cACVhD,KAAM,CACJ,uCACA,mCAEFsG,aAAc,CACZ,uCAAwC,qBACxC,kCAAmC,kBAEpCqM,EAAchW,WAAW2f,kBAE5B3J,EAAchW,WAAarC,IAAAA,KAAOqY,EAAchW,WAAY,YAAa,kBAAmB,kBAAmB,gCAAiC,8CAA+C,sCAAuC,UAAW,oBAE1OgW,CACT,IAAC,CApEsC,CAAStD,ICArCqa,GAAkC,SAAAvX,GAAA,SAAAuX,IAAA,OAAAna,EAAAA,EAAAA,GAAA,KAAAma,IAAAnX,EAAAA,GAAAA,GAAA,KAAAmX,EAAA3xB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAgX,EAAAvX,IAAA7C,EAAAA,EAAAA,GAAAoa,EAAA,EAAA1yB,IAAA,gCAAArC,MAC7C,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA8W,EAAA,uCAAA9W,CAAA,CAAuCnO,IA2E1D,OAzEAkO,EAAchW,WAAW8b,gBAAkBne,IAAAA,SAAW,CACpD0F,KAAM,CACJ,iCACA,wCACA,iCACA,iCAEFsG,aAAc,CACZ,iCAAkC,WAClC,wCAAyC,kBACzC,iCAAkC,WAClC,gCAAiC,YAElCqM,EAAchW,WAAW8b,iBAE5B9F,EAAchW,WAAW4f,gBAAkBjiB,IAAAA,SAAW,CACpD0F,KAAM,CACJ,uCACA,2CACA,0CACA,2CACA,8CACA,+CACA,6CACA,+CACA,iDACA,2CACA,6CACA,gDACA,2CAEFsG,aAAc,CACZ,uCAAwC,YACxC,2CAA4C,gBAC5C,0CAA2C,eAC3C,2CAA4C,gBAC5C,8CAA+C,mBAC/C,6CAA8C,kBAC9C,+CAAgD,oBAChD,+CAAgD,oBAChD,iDAAkD,sBAClD,2CAA4C,gBAC5C,6CAA8C,kBAC9C,gDAAiD,qBACjD,0CAA2C,iBAE5CqM,EAAchW,WAAW4f,iBAE5B5J,EAAchW,WAAW2f,iBAAmBhiB,IAAAA,SAAW,CACrD2I,WAAY,WACZD,SAAU,cACVhD,KAAM,CACJ,uCACA,mCAEFsG,aAAc,CACZ,uCAAwC,qBACxC,kCAAmC,kBAEpCqM,EAAchW,WAAW2f,kBAE5B3J,EAAchW,WAAarC,IAAAA,KACzBqY,EAAchW,WACd,YACA,kBACA,kBACA,gCACA,8CACA,sCACA,UACA,oBAGKgW,CACT,IAAC,CA9E4C,CAAStD,ICC3Csa,GAA+B,SAAAxX,GAAA,SAAAwX,IAAA,OAAApa,EAAAA,EAAAA,GAAA,KAAAoa,IAAApX,EAAAA,GAAAA,GAAA,KAAAoX,EAAA5xB,UAAA,QAAA2a,EAAAA,GAAAA,GAAAiX,EAAAxX,IAAA7C,EAAAA,EAAAA,GAAAqa,EAAA,EAAA3yB,IAAA,gCAAArC,MAC1C,SAA8B8P,GAC5B,IAAMkO,GAAaC,EAAAA,GAAAA,GAAA+W,EAAA,uCAAA/W,CAAA,CAAuCnO,IAC1DkO,EAAchW,YAAa3C,EAAAA,EAAAA,MAAK2Y,EAAchW,WAAY,CACxD,OACA,iBACA,SACA,gCACA,2BACA,wBACA,sCACA,0BACA,+BACA,8CACA,qCACA,8BACA,kCACA,8BACA,0CACA,oCACA,6CACA,uCACA,4CACA,oCACA,gDACA,yCACCmT,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQqxB,kBAAoB,CAC9F,+BACA,gCACE,IAEmB7W,EAAchW,WAAWoV,OAEjC/R,MAAO5L,EAAAA,EAAAA,KADA,CAAC,SAAU,SAAU,YACF,SAAAO,GAAK,OAAI4R,EAAsB,mBAAoB5R,EAAM,IAElG,IAAMke,EAAwB,CAC5B,WACA,oBACA,uBACA,qBACA,uBACA,oBACA,qBACA,gCACA,kCACA,8BACA,2BACA,oBACA,uBACA,oBAUF,OAPI/C,KAAK7V,aAAe6V,KAAK7V,YAAY9B,SAAW2X,KAAK7V,YAAY9B,QAAQmgB,eAC3EzF,EAAsBZ,OAAOY,EAAsBjR,QAAQ,4BAA8B,EAAG,EAAG,0CAC/FiR,EAAsBZ,OAAOY,EAAsBjR,QAAQ,qBAAuB,EAAG,EAAG,4BAG1FuJ,EAAsCwH,EAAeE,GAE9CF,CACT,IAAC,CA5DyC,CAAStD,I,0BC6C/Cua,GAAkC,CACtCC,yBAA0B1R,GAC1B2R,yBAA0BtU,GAC1BuU,oBAAqBnQ,GACrBoQ,YAAa7R,GACb8R,YAAazU,GACb0U,OAAQtQ,GACRuQ,eAAgBnM,GAChBoM,cAAe/L,GACfgM,sBAAuB9M,GACvB+M,YAAanM,GACboM,4BAA6BnP,GAC7BoP,2BAA4BpP,GAC5BqP,gBAAiB9O,GACjB+O,cAAe7O,GACf8O,iBAAkBlO,GAClBmO,oBAAqBvN,GACrBwN,wBAAyBrM,GACzBsM,aAAchK,GACdiK,YAAaxL,GACbyL,YAAaxJ,GACbyJ,eAAgBvJ,GAChB3oB,gBAAiBqqB,GACjB8H,qBAAsB1H,GACtB2H,eAAgBlG,GAChBmG,WAAYvF,GACZwF,YAAatF,GACbuF,gBAAiBrF,GACjBsF,oBAAqBpF,GACrBqF,wBAAyBjE,GACzBkE,qBAAsB/D,GACtBgE,qBAAsB/D,GACtBgE,8BAA+B3D,GAC/B4D,2CAA4CpD,GAC5CqD,sCAAuCrD,GACvCsD,mCAAoCtD,GACpCuD,2CAA4CvD,GAC5CwD,qCAAsCxD,GACtCyD,6CAA8CzD,GAC9C0D,4CAA6C1D,GAC7C2D,yCAA0C3D,GAC1C4D,wCAAyC5D,GACzC6D,2CAA4C7D,GAC5C8D,sCAAuC9D,GACvC+D,oCAAqC/D,GACrCgE,oCAAqChE,GACrCiE,0BAA2BxF,GAC3ByF,kBAAmBtF,GACnBuF,eAAgBpD,GAChBqD,qBAAsBjD,GACtBkD,cAAepD,GACfqD,oBAAqBpD,IAqBvB,SAASqD,GAA6BC,EAAYC,EAAmB5zB,GACnE,IAAM6zB,EAAyB,IAAIC,GAAAA,uBAAuB,CACxDF,kBAAAA,IAGF,MAAO,CACLlwB,IAAK,WACH,IAAMqwB,EAAmBF,EAAuBG,WAAWL,GAE3D,IAAK1yB,IAAAA,QAAU8yB,GACb,OAAOhc,KAAAA,QAAgB,MAGzB,IAAMkc,EAAU,GAwChB,OAtCAhzB,IAAAA,KAAO0yB,GAAY,SAACO,EAAWC,GACxBJ,EAAiBI,IAAOJ,EAAiBI,GAAG9yB,OAAO/F,MAAM84B,QAI1C,gCAAhBp0B,GAAiDk0B,IAAcG,GAAAA,oBAAoBlV,gBAOnE,gBAAhBnf,GAAiCk0B,IAAcG,GAAAA,oBAAoBlV,cACrE8U,EAAQxzB,KAAK,CACXY,OAAQ,CACN1D,IAAK02B,GAAAA,oBAAoBlV,cACzB7jB,MAAO,CACL84B,MAAO,CACL1b,OAAQqb,EAAiBI,GAAG9yB,OAAO/F,MAAM84B,MAAMjV,mBAK7B,oBAAhBnf,GAAsCk0B,IAAcG,GAAAA,oBAAoBpX,eAClFgX,EAAQxzB,KAAK,CACXY,OAAQ,CACN1D,IAAK02B,GAAAA,oBAAoBpX,eACzB3hB,MAAO,CACL84B,MAAO,CACL1b,OAAQqb,EAAiBI,GAAG9yB,OAAO/F,MAAM84B,MAAMnX,oBAMvDgX,EAAQxzB,KAAKszB,EAAiBI,KAElC,IACOpc,KAAAA,QAvEb,SAAsBkc,GACpB,OAAIA,EAAQt1B,OAAS,EACZ,CACL0C,OAAQ,CACN1D,IAAKs2B,EAAQ,GAAG5yB,OAAO1D,IACvBrC,MAAO,CACL84B,MAAO,CACLE,KAAMrzB,IAAAA,IAAMgzB,GAAS,SAAAM,GAAS,OAAIA,EAAUlzB,OAAO/F,MAAM84B,KAAK,QAK1C,IAAnBH,EAAQt1B,OACVs1B,EAAQ,GAEV,IACT,CAuD6BO,CAAaP,GACtC,EAEJ,CAEO,SAASQ,GAAqB94B,GAqCjC,IApCFqE,EAAWrE,EAAXqE,YACA00B,EAAe/4B,EAAf+4B,gBACAC,EAASh5B,EAATg5B,UACAC,EAAMj5B,EAANi5B,OACAC,EAAQl5B,EAARk5B,SAAQC,EAAAn5B,EACRo5B,wBAAAA,OAAuB,IAAAD,GAAQA,EAAAE,EAAAr5B,EAC/Bs5B,uBAAAA,OAAsB,IAAAD,GAAQA,EAAAE,EAAAv5B,EAC9B0M,6BAAAA,OAA4B,IAAA6sB,GAAOA,EAAAC,EAAAx5B,EACnCy5B,6BAAAA,OAA4B,IAAAD,GAAOA,EAAAE,EAAA15B,EACnC25B,2BAAAA,OAA0B,IAAAD,GAAOA,EAAAE,EAAA55B,EACjC4iB,+BAAAA,OAA8B,IAAAgX,GAAQA,EACtCrqB,EAAIvP,EAAJuP,KACAE,EAAYzP,EAAZyP,aACAoqB,EAAkB75B,EAAlB65B,mBAAkBC,EAAA95B,EAClByM,kBAAAA,OAAiB,IAAAqtB,EAAG,KAAIA,EACxBC,EAAY/5B,EAAZ+5B,aACAC,EAAsBh6B,EAAtBg6B,uBACAxzB,EAAYxG,EAAZwG,aACAyzB,EAAgBj6B,EAAhBi6B,iBACA3iB,EAAkBtX,EAAlBsX,mBACAC,EAAYvX,EAAZuX,aACAC,EAAkBxX,EAAlBwX,mBACAC,EAAMzX,EAANyX,OAAMyiB,EAAAl6B,EACNm6B,eAAAA,OAAc,IAAAD,GAAOA,EAAAE,EAAAp6B,EACrBq6B,YAAAA,OAAW,IAAAD,GAAOA,EAClBnC,EAAiBj4B,EAAjBi4B,kBACA3xB,EAAsBtG,EAAtBsG,uBAAsBg0B,EAAAt6B,EACtBu6B,MAAAA,OAAK,IAAAD,EAAG,CACNE,YAAY,EACZzgB,OAAQ,CAAC,GACVugB,EACD5iB,EAAG1X,EAAH0X,IACAgQ,EAAK1nB,EAAL0nB,MACA+S,EAAuBz6B,EAAvBy6B,wBACAC,EAA0B16B,EAA1B06B,2BACA/iB,EAAK3X,EAAL2X,MAEMgjB,EAAsB,CAC1Bn0B,aAAAA,EACA8Q,mBAAAA,EACA/H,KAAM0qB,EACN1iB,aAAAA,EACAC,mBAAAA,EACAC,OAAAA,EACAjL,YAAY,EACZuO,aAAcxL,EACdqT,+BAAAA,EACAqV,kBAAAA,EACA3xB,uBAAAA,EACAjC,YAAAA,EACAqT,IAAAA,EACAgQ,MAAAA,EACA/P,MAAAA,GAGEmP,EAAsB,KAErB+S,EAoBH/S,EAAsB+S,GAnBtB/S,EAAsBrX,EAElB4qB,IACFO,EAA6BD,GAC7B7T,EAAsBva,EAAmCkD,GAA8B,EAAMhD,EAAmBC,IAG9GpH,IAAAA,QAAUm1B,KAA6Bn1B,IAAAA,QAAUm1B,IjE+DhDvvB,EiE9DoC4b,EAAqB2T,GjE8DW,GiE3DrEn1B,IAAAA,QAAUo1B,KAAgCp1B,IAAAA,QAAUo1B,IjEmRrD,SAAiDt1B,EAAQs1B,GACvDxvB,EAA2C9F,EAAQs1B,GAA4B,EACxF,CiEpRMG,CAAwC/T,EAAqB4T,GAG3DL,GACF7uB,EAAwCsb,IAM5C,IAEIgU,EACAC,EAFEC,EAAU,GAIhB,GAAI5B,EAAyB,CAC3B,IAAM6B,GAAuB,GACzBtB,GACFsB,GAAqBn2B,KAAK4zB,GAAAA,oBAAoBrnB,cAG5CooB,GAAgD,kBAAhBp1B,GAClC42B,GAAqBn2B,KAAK4zB,GAAAA,oBAAoBpX,gBAEhDwZ,EAA0B/C,GACxBkD,GACAhD,EACA5zB,EAEJ,CAEIi1B,IACFyB,EAAqBhD,GACnB,CAACW,GAAAA,oBAAoBlV,eACrByU,EACA5zB,IAKJ,IAAI62B,GAAa,CACff,eAAAA,EACA1qB,aAAcqX,EACdqU,WAAY,IAAIC,GAAAA,WAAW,CAAE7rB,KAAAA,IAC7BA,KAAAA,EAGAgrB,MAAAA,EACAc,oBAtC0B,GAuC1BC,eAAgB,IAAIC,GAAAA,qBAAqB,CACvCpB,eAAAA,EACAJ,aAAAA,EACAC,uBAAAA,EACA31B,YAAAA,EACAg3B,oBA5CwB,GA6CxBpD,kBAAAA,IAEF5zB,YAAAA,EACAqT,IAAAA,EACAC,MAAAA,GAGEyhB,GAA2BE,EAC7B4B,GAAa51B,IAAAA,OAAS41B,GAAY,CAChCM,sBAAuB,CAACV,EAAyBC,KAE1C3B,IACT8B,GAAa51B,IAAAA,OAAS41B,GAAY,CAChCM,sBAAuB,CAACV,GACxBW,eAAgB,sBAIpB,IAAIC,GAAsB3C,EA0C1B,OAzCKzzB,IAAAA,WAAayzB,IAAoBnE,GAAgCvwB,KACpEq3B,GAAsB,IAAI9G,GAAgCvwB,GAAas2B,IAGrEe,IAAuBp2B,IAAAA,WAAao2B,GAAoBC,iCAC1DT,GAAa51B,IAAAA,OAAS41B,GAAY,CAChCnC,gBACE2C,GAAoBC,8BAA8BC,KAAKF,OAIzDA,IAAuBp2B,IAAAA,WAAao2B,GAAoBG,sBAC1DX,GAAa51B,IAAAA,OAAS41B,GAAY,CAChCY,sBAAuBJ,GAAoBG,mBAAmBD,KAAKF,OAInE1C,IACFkC,GAAa51B,IAAAA,OAAS41B,GAAY,CAChClC,UAAAA,IAEFgC,EAAQl2B,KAAK,cAGXm0B,IACFiC,GAAa51B,IAAAA,OAAS41B,GAAY,CAChCjC,OAAQ3zB,IAAAA,OAAS,CACfy2B,mBAAoB,WAAF,OAAQC,OAAOC,KAAOD,OAAOC,IAAIvU,SAAWsU,OAAOC,IAAIvU,MAAM3f,IAAI,cAAcm0B,QAAQ,GACxGjD,KAEL+B,EAAQl2B,KAAK,WAGXo0B,IACFgC,GAAa51B,IAAAA,OAAS41B,GAAY,CAChChC,SAAAA,IAEF8B,EAAQl2B,KAAK,aAGfo2B,GAAa51B,IAAAA,OAAS41B,GAAY,CAAEF,QAAAA,GAEtC,C,+PC9WamB,EAA+B,+CAC/BC,EAAgC,sBAChCC,EAAyC,8BAEzCC,EAAiB,CAC5BC,OAAQ,UACRC,SAAU,YAGCC,GAAyBx4B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnCq4B,EAAeC,OAAS,GACxBD,EAAeE,SAAW,GAGhBE,GAA0Bz4B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACpCq4B,EAAeC,OAAS,kBACxBD,EAAeE,SAAW,0BAGhBG,GAA8B14B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxCq4B,EAAeC,OAASH,GACxBE,EAAeE,SAAWH,G,iCCdtB,SAASO,EAA8BC,GAC5C,IAAMC,EAAcD,EAAmBE,sBAAsBZ,GAE7D,OAAO72B,IAAAA,OAASw3B,EAAa,OAAQ,CAAC,EACxC,CAEO,SAASE,EAA+BH,EAAoBI,GACjE,IAAMC,GAAOC,EAAAA,EAAAA,OACX,CAAC,EACDP,EAA8BC,GAC9BI,GAGFJ,EAAmBO,eAAe,CAChCphB,KAAMmgB,EACNe,KAAAA,GAEJ,C,yNCvBaG,EAGJ,CACL,CACE/kB,GAAI,QACJ0D,KAAM,aACNshB,aAAc,GACdC,gBAAgB,EAChBC,MAAO,CACLllB,GAAI,UAAW0D,KAAM,SAAUyhB,OAAQ,aAAc/2B,QAAS,OAGlE,CACE4R,GAAI,QACJ0D,KAAM,eACNshB,aAAc,GACdC,gBAAgB,EAChBC,MAAO,CACLllB,GAAI,UAAW0D,KAAM,SAAUyhB,OAAQ,aAAc/2B,QAAS,OAGlE,CACE4R,GAAI,UACJ0D,KAAM,kBACNshB,aAAc,GACdC,gBAAgB,EAChBC,MAAO,CACLllB,GAAI,UAAW0D,KAAM,SAAUyhB,OAAQ,aAAc/2B,QAAS,Q,6FCpBhEg3B,EAAQ,SAAAC,GAAA,SAAAD,IAAA,OAAAnjB,EAAAA,EAAAA,GAAA,KAAAmjB,IAAAngB,EAAAA,EAAAA,GAAA,KAAAmgB,EAAA36B,UAAA,QAAA2a,EAAAA,EAAAA,GAAAggB,EAAAC,IAAArjB,EAAAA,EAAAA,GAAAojB,EAAA,EAAA17B,IAAA,qBAAArC,MACZ,WACMmb,KAAK8iB,MAAMC,aACZ/iB,KAAK8iB,MAAMC,WAAWC,QAEvBhjB,KAAK8iB,MAAMC,WAAWE,MAE1B,GAAC,CAAA/7B,IAAA,SAAArC,MAED,WACE,IAAQq+B,EAAYljB,KAAK8iB,MAAjBI,QAER,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAc,CAAAC,UACbF,EAAAA,EAAAA,KAACG,EAAAA,mBAAkB,CACjBC,UAAWvjB,KAAK8iB,MAAMS,UACtBC,MAAOxjB,KAAK8iB,MAAMW,UAClBC,mBAAoBC,IAAWT,EAAQU,kBAAmB,kBAC1DC,kBAAmB7jB,KAAK8iB,MAAMe,kBAAkBX,GAChDY,gBAAiB,EACjBC,SAAU,WAAO,KAIzB,IAAC,CAxBW,CAASX,EAAAA,eAyCvBR,EAASoB,aAAe,CACtBjB,WAAY,KACZQ,UAAW,IAGb,OAAeU,EAAAA,EAAAA,mBAAkBrB,GCrDA,SAAH19B,EAAAC,GAAAD,EAAMg/B,SAAN,IAAmBC,EAAAh/B,EAAMi/B,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA,OAAAh+B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GCAhC,SAACk+B,EAAQn/B,GAAA,IAAAo/B,EAAAp/B,EAAIk/B,QAAAA,OAAO,IAAAE,EAAG,CAAC,EAACA,EAAA,MAAQ,CAClEC,aAAc,CACZC,OAAQ,GACRC,WAAY,WACZC,WAAY,SACZC,WAAY,SACZC,QAAS,OACTC,cAAe,MACfC,YAAa,GACbC,aAAc,GACdC,OAAQ,EACRC,eAAgB,OAChBC,MAAO,UACPC,gBAAiB,UACjBC,WAAY,SACZC,UAAW,OACXC,aAAc,QAEd,MAAO,CACLJ,MAAOd,EAAQmB,OAEjB,WAAWC,EAAAA,EAAAA,GAA4BpB,EAAQqB,kBAC/C,WAAY,CACV,UAAW,CACT,UAAW,CACTT,OAAQ,KAId,mBAAoB,CAClBE,MAAOd,EAAQmB,QAGnBG,eAAgB,CACdP,gBAAiB,qBACjB,UAAW,CACTA,gBAAiBf,EAAQuB,aACzBjB,WAAY,QAEd,UAAW,CACTS,gBAAiBf,EAAQuB,aACzBjB,WAAY,SAGhBkB,iBAAkB,CAChBd,YAAa,GACbJ,WAAY,OACZS,gBAAiB,qBACjBU,WAAW,aAADz8B,OAAeg7B,EAAQ0B,cACjCC,UAAW,WAEbC,eAAgB,CACdC,MAAO,OACPC,UAAW,GAEbC,cAAe,CACbC,WAAY,EACZF,UAAW,EACXG,aAAc,EACdC,YAAa,EACb9B,OAAQ,GACR+B,SAAU,GACVrB,MAAOd,EAAQmB,OAEjBiB,cAAe,CACb5B,QAAS,eACTqB,MAAO,QACPQ,SAAU,SACVP,UAAW,EACXG,aAAc,EACdK,aAAc,WACdC,KAAM,UACNC,WAAY,SACZL,SAAU,GACVrB,MAAO,SAET2B,kBAAmB,CACjBN,SAAU,GACVO,OAAQ,iBACRC,IAAK,kBAEPC,yBAA0B,CACxBZ,WAAY,IAEf,CDnFIa,CAAoB,EAAc,CAAE7C,QAAAA,KAAU,IAEjDR,kBAAmB,CACjBsD,SAAU,WACVC,UAAW,OACXC,UAAW,SACX5C,OAAQ,iCACRU,MAAO,UACPC,gBAAiB,OACjBwB,KAAM,UACNU,UAAW,sBACX,4BAA6B,CAC3BF,UAAW,oBACX,UAAW,CACTA,UAAW,sBAEb,kDAAmD,CACjDV,SAAU,oBACV,sBAAuB,CACrBa,WAAY,sBAKpBC,oBAAqB,CACnBtB,MAAO,GACPzB,OAAQ,GACR4B,WAAY,GACZF,UAAW,EACXG,aAAc,GACdC,YAAa,IAEfkB,eAAgB,CACdtC,MAAOd,EAAQmB,QAChB,I,wBEjCUkC,EAA2B,SAAHviC,GAE9B,IADLg+B,EAAOh+B,EAAPg+B,QAASwE,EAAIxiC,EAAJwiC,KAAMC,EAAYziC,EAAZyiC,aAETC,EAA0B,CAAC1E,EAAQsD,eAEzC,OACErD,EAAAA,EAAAA,KAAA,QACE0E,UAAWlE,IAAWiE,GACtBE,IAAKH,EAAatE,SAEjBqE,EAAKxmB,MAGZ,ECRA,SAAS6mB,EAAYlrB,EAAOqmB,EAASwE,EAAMC,GAyBzC,IAAMK,EAxBN,WACE,IAAA9iC,EAA6C2X,GAAS,CAAC,EAA/CorB,EAAQ/iC,EAAR+iC,SAAUC,EAAShjC,EAATgjC,UAAWC,EAAWjjC,EAAXijC,YACvBC,EAAS,IAAIC,EAAAA,WAAWJ,EAAU,KAAM,KAAMC,EAAWC,GAE/D,OADAC,EAAOE,OAAO,CAAEC,MAAOb,EAAKlqB,KACrByqB,GAAYA,EAASO,SAAQ,GAAAp/B,OAAM6+B,EAASO,SAAQ,KAAAp/B,OAAIg/B,EAAOK,aAAgB,IACxF,CAmBgBC,CAAiBT,UAC3BU,GATFxF,EAAAA,EAAAA,KAACsE,EAAwB,CACvBvE,QAASA,EACTwE,KAAMA,EACNC,aAAcA,IAQpB,OAAOK,GACF7E,EAAAA,EAAAA,KAAA,KAAG0E,UAAW3E,EAAQ8C,eAAgB4C,KAAMZ,EAASa,QApB1D,SAAiBC,GACXA,GAAKA,EAAEC,gBACTD,EAAEC,gBAEN,EAgB4EjB,IAAKH,EAAatE,SAAEsF,IAC5FA,CACN,CDTAlB,EAAyBzD,aAAe,CACtC2D,aAAc,MCUhB,IAAMqB,EAA6B,SAAH7jC,GAEzB,IADL+9B,EAAO/9B,EAAP+9B,QAASwE,EAAIviC,EAAJuiC,KAAMC,EAAYxiC,EAAZwiC,aAAc9qB,EAAK1X,EAAL0X,MAEvBosB,EAAc,EAACC,EAAAA,EAAAA,IAAkBxB,EAAMxE,GAAU,sBAAuB,iBAExEiG,EAAyBxF,IAAW,CACxCT,EAAQiD,cACRjD,EAAQqE,sBAEJ6B,EAAsBlG,EAAQmG,iBAE9BC,EAA4C,eAAxB5B,EAAKrW,gBAA2D,aAAxBqW,EAAKrW,gBAAmCqW,EAAK6B,WAA6B,GAAf,aAQ7H,OACEpG,EAAAA,EAAAA,KAAA,QAAAE,UACEmG,EAAAA,EAAAA,MAACC,EAAAA,OAAM,CACLZ,QAAS,WATbhsB,EAAMyrB,OAAO,CACXC,MAAOb,EAAKlqB,KAEdX,EAAM6sB,MAM4B,EAC9BC,SAAS,UACT9B,UAAWlE,IAAWsF,GAEtB12B,GAAE,MAAAnJ,OAAQs+B,EAAKlqB,IACf9K,MAAOg1B,EAAKxmB,KAAKmiB,SAAA,CAEhB0E,EAAYlrB,EAAOqmB,EAASwE,EAAMC,IACnCxE,EAAAA,EAAAA,KAAA,OAAK0E,UAAWsB,EAAuB9F,UACrCF,EAAAA,EAAAA,KAACyG,EAAAA,UAAS,CACR/B,UAAWuB,EACXS,MAAOP,EACPQ,UAAU,cATTpC,EAAKlqB,KAelB,EAyBAwrB,EAA2BhF,aAAe,CACxC2D,aAAc,MAGhB,OAAeoC,EAAAA,EAAAA,YAAUC,EAAAA,EAAAA,kBAAiBhB,ICzGpCiB,EAAiB,SAAH/kC,GAEb,IADLg+B,EAAOh+B,EAAPg+B,QAASwE,EAAIxiC,EAAJwiC,KAET,GAAIA,EAAKwC,kBAAmB,CAC1B,GAAIxC,EAAKyC,cACP,OACEhH,EAAAA,EAAAA,KAAA,OAAK0E,UAAWlE,IAAW,CAACT,EAAQqB,aACpCrB,EAAQkH,2BAA2B/G,UAEjCF,EAAAA,EAAAA,KAACkH,EAAAA,uBAAsB,CAACjtB,MAAOsqB,EAAKxmB,SAK1C,IAAMopB,EAA4C3G,IAAW,CAC3D,iCACAT,EAAQsD,cACRtD,EAAQ8D,2BAGV,OACE7D,EAAAA,EAAAA,KAAA,OAAK0E,UAAW3E,EAAQqB,aAAalB,UACnCF,EAAAA,EAAAA,KAAA,QAAM0E,UAAWyC,EAA0CjH,SACxDqE,EAAKxmB,QAId,CAEA,OACEiiB,EAAAA,EAAAA,KAAC6F,EAA0B,CACzB9F,QAASA,EACTwE,KAAMA,GAGZ,EAyBO,SAAS6C,EAA4BrH,GAC1C,OAAO,SAAAwE,GAAI,OACTvE,EAAAA,EAAAA,KAAC8G,EAAc,CACb/G,QAASA,EACTwE,KAAMA,GACN,CAEN,CC/DmE,IAE7D8C,EAAuB,SAAAC,GAC3B,SAAAD,EAAY1H,GAAQ,IAADxgB,EAKf,OALe7C,EAAAA,EAAAA,GAAA,KAAA+qB,IACjBloB,GAAAG,EAAAA,EAAAA,GAAA,KAAA+nB,EAAA,CAAM1H,KACDlW,MAAQ,CACX8d,KAAM,GACNC,QAAS7H,EAAM6H,SACfroB,CACJ,CAAC,OAAAM,EAAAA,EAAAA,GAAA4nB,EAAAC,IAAAjrB,EAAAA,EAAAA,GAAAgrB,EAAA,EAAAtjC,IAAA,oBAAArC,MAED,WAAqB,IAADgoB,EAAA,KAClB+d,EAA+B5qB,KAAK8iB,MAAMjmB,MAAMiB,OAAxC+sB,EAAGD,EAAHC,IAAUC,EAAQF,EAAbG,IACLC,EAAmBhrB,KAAK8iB,MAAMmI,cAA9BD,gBCpBW,SAACD,EAAKF,GAC3B,OAAIE,GAAOF,EACFK,EAAAA,YACJC,UAAUC,SAASL,GACnBM,SAASD,SAASP,GAClBS,KACAr+B,IAAI,CACH85B,IAAK,IACLwE,OAAQ,CAAC,KAAM,OAAQ,iBAAkB,gBACxCC,YAAYC,MAAK,SAACC,GACnB,OAAIA,GAAeA,EAAY7mC,OACzB6mC,EAAY7mC,MAAMqD,OAAS,EACtBwjC,EAAY7mC,MAKhB,EACT,IACOkmC,EACFG,EAAAA,YACJC,UAAUC,SAASL,GACnBO,KACAr+B,IAAI,CACH85B,IAAK,IACLwE,OAAQ,CAAC,KAAM,OAAQ,iBAAkB,gBACxCC,YAAYC,MAAK,SAACC,GACnB,OAAIA,GAAeA,EAAY7mC,OACzB6mC,EAAY7mC,MAAMqD,OAAS,EACtBwjC,EAAY7mC,MAKhB,EACT,IAEG,IAAIyc,SAAQ,SAACqqB,GAClBA,EAAQpJ,EACV,GACF,EDjBIqJ,CAFYf,EAAMG,EAAea,qBAAuBf,EAE3CD,GAAKY,MAAK,SAACK,GACtB,IAAMC,EAAWD,EAASlhC,QAAO,SAAAohC,GAAG,MAA2B,aAAvBA,EAAI3a,iBAAkC2a,EAAIzC,UAAU,IAAE0C,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEhrB,KAAKkrB,cAAcD,EAAEjrB,KAAK,IACnImrB,EAAaP,EAASlhC,QAAO,SAAAohC,GAAG,MAA2B,eAAvBA,EAAI3a,iBAAoC2a,EAAIzC,UAAU,IAAE0C,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEhrB,KAAKkrB,cAAcD,EAAEjrB,KAAK,IACvIorB,EAASR,EAASlhC,QAAO,SAAAohC,GAAG,MAA2B,WAAvBA,EAAI3a,gBAA+B2a,EAAIzC,UAAU,IAAE0C,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEhrB,KAAKkrB,cAAcD,EAAEjrB,KAAK,IAC9H8qB,EAAMD,EAAS3iC,OAAOijC,GAAYjjC,OAAOkjC,GAC/Czf,EAAK0f,SAAS,CAAE7B,KAAMsB,GACxB,GACF,GAAC,CAAA9kC,IAAA,oBAAArC,MAED,WAAqB,IAAD2nC,EAAA,KASlB,MAAO,CACLC,cARAzsB,KAAK4M,MAAM8d,KAAKpmC,KAAI,SAAA0nC,GAAG,OAAA7lC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClB6lC,GAAG,IACNU,YAAY,EACZC,WAAYH,EAAK1J,MAAMjmB,MAAMiB,OAAOyqB,QAAUyD,EAAIxuB,GAClDovB,aAAc,WAAF,OAAQJ,EAAKD,SAAS,CAAC,EAAE,OAM3C,GAAC,CAAArlC,IAAA,SAAArC,MAED,WAAU,IAADgoC,EAAA,KAELJ,EACEzsB,KAAK8sB,oBADPL,cAcF,OACEjD,EAAAA,EAAAA,MAAA,OAAKuD,MAAO,CAAE9G,MAAO,QAAS+G,YAAa,qBAAsB3J,SAAA,EAC/DF,EAAAA,EAAAA,KAACsG,EAAAA,OAAM,CACLZ,QAAS,YAdG,WAChBgE,EAAK/J,MAAMjmB,MAAMowB,OAAO,SACxBJ,EAAK/J,MAAMjmB,MAAM6sB,OAEjB,IAAMwD,EAAa,IAAI7E,EAAAA,WAAWwE,EAAK/J,MAAMjmB,MAAMswB,QAAQlF,SAAU4E,EAAK/J,MAAMjmB,MAAMswB,SACtFN,EAAK/J,MAAMjmB,MAAMswB,QAAQnjC,KAAK,CAC5Bw+B,UAAU4E,EAAAA,EAAAA,kBAAiBP,EAAKjgB,MAAM+d,QAAS,WAC/C0C,OAAQH,EAAWzE,aAEvB,CAKuB6E,EAAa,EAC9BP,MAAO,CACL9G,MAAO,IACPZ,UAAW,OACXF,gBAAiB,OACjBoI,UAAW,EACX1H,WAAY,EACZ2H,aAAc,EACdR,YAAa,oBACbtI,WAAY,SACZ+I,QAAS,QACTpK,SACFrjB,KAAK8iB,MAAMruB,KAAKqB,UAAU8L,eAE5BuhB,EAAAA,EAAAA,KAAA,MAAI4J,MAAO,CACT7G,UAAW,EACXG,aAAc,EACdlB,gBAAiB,UACjBD,MAAO,UACPV,OAAQ,UAGVrB,EAAAA,EAAAA,KAACP,EAAQ,CACPW,UAAWvjB,KAAK8iB,MAAMruB,KAAKqB,UAAU8L,qBACrC6hB,UAAWgJ,EACX5I,kBAAmB0G,EACnBxH,WAAY/iB,KAAK8iB,MAAMC,eAI/B,IAAC,CAtF0B,CAASK,EAAAA,WA4GtCoH,EAAwBxG,aAAe,CACrCiH,cAAe,CAAC,GAGX,IAAMyC,GAAkBC,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,mBAAiB7D,EAAAA,EAAAA,WAAUS,I,qPEtH/DqD,EAA2B,SAAAC,GACtC,SAAAD,EAAY7gC,GAAU,IAADsV,EAeD,OAfC7C,EAAAA,EAAAA,GAAA,KAAAouB,IACnBvrB,GAAAG,EAAAA,EAAAA,GAAA,KAAAorB,EAAA,CAAM7gC,KACD81B,MAAQt4B,IAAAA,SAAW,CACtBujC,OAAQ,SAACz7B,GACH9H,IAAAA,OAASwC,EAAS,QAAS,CAAC,GAAG+gC,QACjC/gC,EAAQ81B,MAAMiL,OAAOz7B,GAEvBgQ,EAAK2qB,QACP,EACAe,SAAU,WACJxjC,IAAAA,OAASwC,EAAS,QAAS,CAAC,GAAGghC,UACjChhC,EAAQ81B,MAAMkL,WAEhB1rB,EAAK2qB,QACP,GACCjgC,EAAQ81B,OAAOxgB,CACpB,CAAC,OAAAM,EAAAA,EAAAA,GAAAirB,EAAAC,IAAAtuB,EAAAA,EAAAA,GAAAquB,EAAA,EAAA3mC,IAAA,SAAArC,MAED,WASE,OARAopC,SAASC,KAAKC,YAAYnuB,KAAKouB,IAC/BC,EAAAA,OACEjL,EAAAA,cACEkL,EAAAA,EACAtuB,KAAK8iB,OAEP9iB,KAAKouB,IAEApuB,IACT,GAAC,CAAA9Y,IAAA,SAAArC,MAED,WAEE,OADAwpC,EAAAA,uBAAgCruB,KAAKouB,KACrCtrB,EAAAA,EAAAA,GAAA+qB,EAAA,gBAAA/qB,CAAA,GACF,IAAC,CAlCqC,CAASyrB,IAAAA,K,kGCS3CC,EAAkB,IAdb,WAGR,OAAAhvB,EAAAA,EAAAA,IAFD,SAAAivB,KAAchvB,EAAAA,EAAAA,GAAA,KAAAgvB,GACZzuB,KAAK0uB,MAAQ,CAAC,CAChB,GAAC,EAAAxnC,IAAA,MAAArC,MAED,SAAIqC,EAAKwX,GACPsB,KAAK0uB,MAAMxnC,GAAOwX,CACpB,GAAC,CAAAxX,IAAA,MAAArC,MAED,SAAIqC,GACF,OAAO8Y,KAAK0uB,MAAMxnC,EACpB,IAAC,CAXQ,G,mvBCIEynC,EAAY,SAAA9L,GACvB,SAAA8L,EAAY7L,GAAQ,IAADxgB,EAIhB,OAJgB7C,EAAAA,EAAAA,GAAA,KAAAkvB,IACjBrsB,GAAAG,EAAAA,EAAAA,GAAA,KAAAksB,EAAA,CAAM7L,KAMR8L,MAAQ,WACFtsB,EAAKwgB,MAAM+L,MACbvsB,EAAKwgB,MAAM+L,KAAKC,IAAI,4BAEtBxsB,EAAKwgB,MAAM8L,OACb,EAVM9L,EAAM+L,MACR/L,EAAM+L,KAAKE,GAAG,2BAA4BzsB,EAAKssB,OAChDtsB,CACH,CAAC,OAAAM,EAAAA,EAAAA,GAAA+rB,EAAA9L,IAAArjB,EAAAA,EAAAA,GAAAmvB,EAAA,EAAAznC,IAAA,SAAArC,MASD,WACE,IAAQkL,EAAWiQ,KAAK8iB,MAAhB/yB,OAGFi/B,EAFYj/B,EAAOk/B,wBAAjBC,MACgB,IACoBhO,OAAOiO,WAAa,OAAS,QACnEC,EAAgBnB,UAAYA,SAASmB,cAE3C,OACEjM,EAAAA,EAAAA,KAAA,OAAKkM,aAAcrvB,KAAK4uB,MAAMvL,UAC5BF,EAAAA,EAAAA,KAACmM,EAAAA,SAAOnpC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACFqE,IAAAA,KAAOwV,KAAK8iB,MAAO,UAAW,WAAS,IAC3CkM,UAAWA,EACXO,QAASvvB,KAAK4uB,MACdY,MAAI,EACJC,UAAWzvB,KAAK8iB,MAAM2M,UACtBC,aAAa,EACbC,iBAAkBP,IAAkBr/B,EACpC6/B,sBAAoB,MAI5B,IAAC,CApCsB,CAASxM,EAAAA,eAoElCuL,EAAa3K,aAAe,CAC1B6K,KAAM,M,+HC1EKgB,EAAS,CACpBC,GAAI,KACJC,QAAS,UACTC,eAAgB,iBAChBC,UAAW,YACXC,WAAY,aACZC,MAAO,SAGIC,EAAe,CAC1B,EAAG,gBACH,EAAG,kBACH,GAAI,mBACJ,GAAI,iCACJ,IAAK,8BACL,IAAK,wBACL,IAAK,8BACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,iBACL,IAAK,gBACL,IAAK,SACL,IAAK,sBACL,IAAK,oBACL,IAAK,eACL,IAAK,eACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,8BACL,IAAK,mBACL,IAAK,oBACL,IAAK,mBACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,6BACL,IAAK,4BACL,IAAK,gBACL,IAAK,mBACL,IAAK,qBACL,IAAK,uBACL,IAAK,uBACL,IAAK,2CACL,IAAK,QAGMC,EAAiB,CAC5BC,cAAe,kDACfC,gBAAiB,+EACjBC,iBAAkB,kDAClBC,+BAAgC,kDAChCC,4BAA6B,kDAC7BC,sBAAuB,2EACvBC,4BAA6B,kDAC7BC,eAAgB,kDAChBC,eAAgB,kDAChBC,cAAe,0FACfC,OAAQ,mEACRC,oBAAqB,mEACrBC,kBAAmB,kDACnBC,aAAc,mEACdC,aAAc,0FACdC,SAAU,kDACVC,cAAe,qFACfC,cAAe,+EACfC,4BAA6B,mEAC7BC,iBAAkB,qFAClBC,kBAAmB,mEACnBC,iBAAkB,0FAClBC,eAAgB,kDAChBC,2BAA4B,oGAC5BC,0BAA2B,sEAC3BC,cAAe,kDACfC,iBAAkB,kDAClBC,mBAAoB,yEACpBC,qBAAsB,kDACtBC,qBAAsB,kDACtBC,yCAA0C,kDAC1CC,KAAM,2DAGKC,EAAc,CACzBvmC,GAAI,4BACJE,QAAS,iCACTsmC,WAAY,oCACZC,UAAW,mCACXC,MAAO,gCAEIC,EAAoB,CAC/B3mC,GAAI,mCACJE,QAAS,wCACTsmC,WAAY,2CACZC,UAAW,0CACXC,MAAO,uCAGIE,EAAY,CACvB,aACA,sBACA,qBC5FF,SAASC,EAAY1tC,GAAY,IAATuP,EAAIvP,EAAJuP,KACtB,MAAO,CACLo+B,aAAc,SAACC,GAEb,OADaA,GAAYA,EAASC,OAAO,EAAG,IAAIv9B,QAAQ,KAAM,KAIvDf,EAAKu+B,WAAW,IAAIC,KAAKH,GAAW,CAAEI,SAAU,OAF9Cz+B,EAAKqB,UAAU,OAG1B,EAEJ,CAmCO,SAASq9B,EAAgC1vB,GAC9C,OAAOA,EAAK5X,UAC2B,2BAAlC4X,EAAK5X,SAASunC,iBACiB,aAA/B3vB,EAAK5X,SAAS0K,cAC+B,cAA7CkN,EAAK5X,SAASkY,4BACdvZ,IAAAA,QAAUiZ,EAAK4vB,SACQ,IAAvB5vB,EAAK4vB,OAAOnrC,QACZsC,IAAAA,IAAMiZ,EAAK4vB,QAAQ,SAAAC,GAAK,OAAIA,EAAMb,OAAoC,mBAA3Ba,EAAMb,MAAMn2B,YAA0D,WAAvBg3B,EAAMb,MAAMxwB,MAAmB,GAChI,CAEO,SAASsxB,EAAqCC,GACnD,OAAIA,GAAuBA,EAAoBtrC,OAAS,EAC/CsC,IAAAA,MAAQgpC,GAAqBlvC,KAAI,SAAAmvC,GAAkB,OAAIA,EAAmBC,UAAU,IACxFC,UACAC,SACAtvC,KAAI,SAAAiO,GAAE,OAAI69B,EAAa79B,EAAG,IAC1B3H,OAAOipC,SACPD,SACAtvC,KAAI,SAAA2X,GAAY,OAAKo0B,EAAep0B,IACnC,CAAExX,KAAMwX,EAAc63B,KAAMzD,EAAep0B,GAAe,IAC3DpX,QACA+F,OAAOipC,SAEL,EACT,CAEO,SAASE,EAAoB5uC,GAsBhC,IAAD6uC,EAAA7uC,EArBD8uC,sBAAAA,OAAqB,IAAAD,EAAG,GAAEA,EAAAE,EAAA/uC,EAC1BgvC,YAAAA,OAAW,IAAAD,EAAG,GAAEA,EAChBE,EAAMjvC,EAANivC,OACAC,EAAKlvC,EAALkvC,MACA5/B,EAAItP,EAAJsP,KAAI6/B,EAAAnvC,EACJovC,kBAAAA,OAAiB,IAAAD,EAAG,kBAAM,CAAK,EAAAA,EAAAE,EAAArvC,EAC/BsvC,uCAAAA,OAAsC,IAAAD,GAAQA,EAAAE,EAAAvvC,EAC9CwvC,4BAAAA,OAA2B,IAAAD,GAAQA,EACnCE,EAAqCzvC,EAArCyvC,sCACAC,EAA8B1vC,EAA9B0vC,+BACAC,EAAiB3vC,EAAjB2vC,kBACAC,EAAa5vC,EAAb4vC,cAAaC,EAAA7vC,EACb8vC,kBAAAA,OAAiB,IAAAD,EAAG,sBAAqBA,EAAAE,EAAA/vC,EACzCsqC,UAAAA,OAAS,IAAAyF,EAAG,gCAA+BA,EAAAC,EAAAhwC,EAC3CiwC,YAAAA,OAAW,IAAAD,EAAG,WAAQ,EAACA,EACvBtG,EAAI1pC,EAAJ0pC,KACAwG,EAAMlwC,EAANkwC,OACAC,EAAenwC,EAAfmwC,gBACAC,EAAgCpwC,EAAhCowC,iCAAgCC,EAAArwC,EAChCswC,iBAAAA,OAAgB,IAAAD,GAAQA,EAAAE,EAAAvwC,EACxBwwC,2BAAAA,OAA0B,IAAAD,GAAQA,EAEE,IAAhCE,IAAEX,GAAmB/sC,QACvB0tC,IAAE3H,SAASC,MAAM5F,OAAOuN,IAAS,CAAC,IAGpC,IAAMC,EAAO,0BAAA1sC,OAA6BoB,IAAAA,YACpCurC,EAAkBvrC,IAAAA,SAAW,GAADpB,OAAI4sC,EAAAA,SAASC,cAAa,MAGtDC,GAAa3C,EAAqCa,EAASA,EAAO+B,yBAAsBhuC,GAExFiuC,GAAgB5rC,IAAAA,WAAaypC,EAAuBtB,GAEpD0D,GAAoBC,KAAKC,IAAIH,GAAcluC,OAAQ,GAErDsuC,GAAW,GAETC,GAAa,CAAC,EAWpB,GAVInB,IACFmB,GAAWC,cACTpB,EAAgBqB,8BAA8BC,SAASC,oBAAoBD,SAC7EH,GAAWK,cACTxB,EAAgBqB,8BAA8BC,SAASG,oBAAoBH,SAC7EH,GAAWO,kCACT1B,EAAgB2B,gBAAgBL,SAASM,0BAA0BN,UAInEvC,EAAM8C,qBAAsB,CAC9B,IAAQ37B,GAAmB44B,EAAnB54B,eACRg7B,GAASxsC,KAAKotC,IAA6B,CACzCC,eAAgB77B,GAChB/G,KAAAA,IAEJ,MAAO,GAAIghC,GAAoBE,GAA8BO,GAAWhuC,OAAS,IAAMsC,IAAAA,SAAWypC,EAAuB,aAAezpC,IAAAA,SAAWypC,EAAuB,aAExKuC,GAAW,CAACc,IAA0B,CACpCpB,WAAAA,GACAzhC,KAAAA,UAEG,GAAI4hC,GAAoB,EAAG,CAChC,GAAI1B,EAA6B,CAC/B,IAAM4C,GAAkB/sC,IAAAA,OAAS6qC,EAAOpoC,IAAI,kBAAmB,oBAAsB,GAIrFupC,GAASxsC,KAAK4qC,MAGgB,IAA3B2C,GAAgBrvC,QAAgBsC,IAAAA,SANf,CAClB,YAKyD4pC,EAAO54B,iBACpC,IAA3B+7B,GAAgBrvC,SAEjBkuC,GAAcoB,OAElB,CAEAhtC,IAAAA,IAAM4rC,IAAe,SAACiB,EAAgBp5B,GACpC,GAAIm2B,GAAUA,EAAOqD,cAAgBrD,EAAOsD,qBAC1ClB,GAASxsC,KAAK2tC,KAAkBxxC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC7BiuC,GAAM,IACTiD,eAAAA,EACA5iC,KAAAA,EACAsgC,cAAAA,EACA6C,aAAchF,EAAa,CAAEn+B,KAAAA,KACzB,CAAEojC,WAAY1D,EAAYkD,YAE3B,GAAI9C,EAAkB8C,GAC3Bb,GAASxsC,KAAK8qC,EAAkBuC,EAAgBp5B,QAC3C,CACL,IAAI65B,EAAwBT,EAK5BS,EA3JD,SACLA,EACAjD,EACAT,GAEA,IAAI1uC,EAASoyC,EAcb,MAV+B,yCAA1BA,GACyB,6CAA1BA,GAC0B,uBAA1BA,KAC2B,mBAAxB1D,EAAO79B,cACPs+B,GAA6D,qBAA3BT,EAAOhB,iBAEX,eAA1B0E,GAAkE,mBAAxB1D,EAAO79B,eAC1D7Q,EAAM,GAAA0D,OAAM0uC,EAAqB,cAFjCpyC,EAAM,GAAA0D,OAAM0uC,EAAqB,YAK5BpyC,CACT,CAuIgCqyC,CACtBD,EACAjD,EACAT,GAIF0D,EA5ID,SAAiCA,GACtC,IAAIpyC,EAASoyC,EAOb,MAJ8B,oCAA1BA,IACFpyC,EAAM,GAAA0D,OAAM0uC,EAAqB,eAG5BpyC,CACT,CAmIgCsyC,CAAwBF,GAEhDtB,GAASxsC,KAAKiuC,KAAc9xC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAC3BkxC,eAAgBS,EAChBI,SAAS,GAAD9uC,OAAK0sC,EAAO,KAAA1sC,OAAI6U,IACpB,CAAE45B,WAAY1D,EAAYkD,KAAmB,CAAF,GAC/C5iC,KAAAA,KAEJ,CACF,GACF,MAAWggC,EACT+B,GAASxsC,KAAK8qC,KAEd0B,GAASxsC,KAAKmuC,IAAsB,CAAE1jC,KAAAA,KAYxC,SAAS2jC,GAAsCf,GAC7C,IAAIgB,EAAM,CAAC,EACX,GAAyC,OAArC9C,EAA2C,CAC7C,IAAM+C,EAAOlE,EAASA,EAAO52B,QAAKrV,EAC5BowC,EAAYnE,GAAUA,EAAOtoC,QAAUsoC,EAAOtoC,QAAQ0R,QAAKrV,EAEjEkwC,EAAM,CACJG,WAFiBpE,GAAUA,EAAOvoC,SAAWuoC,EAAOvoC,SAAS2R,QAAKrV,EAGlEswC,UAAWF,EACXG,KAAMJ,EACNK,mBAAoBtB,EAExB,MAAO,GAAyC,YAArC9B,EAAgD,CACzD,IAAMgD,EAAYnE,EAASA,EAAO52B,QAAKrV,EAEvCkwC,EAAM,CACJG,WAFiBpE,GAAUA,EAAOvoC,SAAWuoC,EAAOvoC,SAAS2R,QAAKrV,EAGlEswC,UAAWF,EACXI,mBAAoBtB,EAExB,MAAO,GAAyC,aAArC9B,EAAiD,CAE1D8C,EAAM,CAAEG,WADWpE,EAASA,EAAO52B,QAAKrV,EACRwwC,mBAAoBtB,EACtD,CAEA,OAAOgB,CACT,CAaA,SAASO,KACH1X,OAAO2X,cAET3X,OAAO2X,aAAaC,iBAAiB/C,GAEnCU,GAAWO,mCACbP,GAAWO,kCAAkC+B,YAAY,UAE7D,CAYA,SAASC,GAAYC,EAAOC,EAAMC,GAChC,IAAMC,EAhCR,SAAwBH,EAAOC,EAAMC,GACnC,IAAMC,EAAc,IAAIC,EAAAA,SAASC,aAAa,CAC5CL,MAAAA,EACAxkC,KAAAA,EACA8kC,4BAA4B,IAC3BC,SAASN,GAGZ,OAFAC,EAAU3J,OAEH4J,CACT,CAuBsBK,CAAeR,EAAOC,EAAMC,GAEhDC,EAAYM,KAAK,YAAY,WAC3B,IAAMC,GAA0BxW,EAAAA,EAAAA,KAACyW,EAAAA,wBAAuB,CAACC,SAAUT,IAC7DU,EAAe7L,SAAS8L,cAAc9E,GAExC6E,IACFzL,EAAAA,QACElL,EAAAA,EAAAA,KAACwL,EAAY,CACXqL,QAASL,EACT5pC,OAAQskC,EAAMtkC,OACd6+B,MAAO,WACLP,EAAAA,uBAAgCyL,GAtBtC5Y,OAAO2X,cAET3X,OAAO2X,aAAaoB,YAAYlE,GAE9BU,GAAWO,mCACbP,GAAWO,kCAAkCkD,WAAW,aAmBlD,EACArL,KAAMA,EACNY,UAAWA,IAEbqK,EACAlB,IAEFxD,EAAYgE,EAAa/E,GAE7B,IACA+E,EAAYM,KAAK,kBAAkB,SAACS,GAClCtL,EAAKuL,QAAQ,4BACbpB,GAAYC,EAAOkB,EAAShB,EAC9B,IAEAC,EAAYiB,IAAIC,IAAI,kBAAkB,SAACxR,EAAGyR,GACxC,IAAMC,GAAQ9wC,EAAAA,EAAAA,GAAOuvC,GACrBuB,EAASpB,EAAYqB,YAAc,GAAKF,EACxCvB,GAAYwB,EAAUpB,EAAYqB,YAAatB,EACjD,IAIAC,EAAYiB,IAAItL,GAAG,QAAS,KAAK,SAAC2L,GAChC,GAAIjE,GAAWC,cAAe,CAC5B,IAAMW,EAAiBzB,IAAE8E,EAAY3qC,QAAQ4qC,SAASxY,KAAK,mBAC3D,GAAIkV,EAAgB,CAClB,IAAMgB,EAAMD,GAAsCf,GAClDZ,GAAWC,cAAckE,MAAMt9B,KAAKmrB,UAAU4P,GAChD,CACF,CACF,IAKA,IAAMwC,EAAgB5B,EAAMC,EAAO,GAEnC,GAAIzC,GAAWK,cAAe,CAC5B,IAAMO,EAAiB7sC,IAAAA,KACrB,CAAC,qBAAsB,gBAAiB,qBAAsB,8CAC9D,SAAA4rB,GAAM,OAAIykB,EAAc7zB,SAASoP,EAAO,IAE1C,GAAIihB,EAAgB,CAClB,IAAMgB,EAAMD,GAAsCf,GAClDZ,GAAWK,cAAc8D,MAAMt9B,KAAKmrB,UAAU4P,GAChD,CACF,CAEA,OAAOe,CACT,CAEA,OAtII3D,GAAoBE,GAA8BO,GAAWhuC,OAAS,IAAMsC,IAAAA,SAAWypC,EAAuB,cAAgBzpC,IAAAA,SAAWypC,EAAuB,aAClKuC,GAASxsC,KAAKstC,IAA0B,CACtCpB,WAAAA,GACAzhC,KAAAA,KAmIG,IAAI6M,IAAJ,EAAY,SAACqqB,GAClBrqB,IAAAA,IAAYk1B,IAAU/K,MAAK,SAACwN,GAC1B,IACMG,EAAcJ,GAAYC,EAAO,EADrBrD,IAAEX,IAGpBtJ,EAAQyN,EACV,GACF,GACF,CCtVO,IAAM0B,EAA0B,WAcrC,OAAAt7B,EAAAA,EAAAA,IARA,SAAAs7B,EAAA51C,GAGI,IAFF61C,EAAI71C,EAAJ61C,KACAtmC,EAAIvP,EAAJuP,MAAIgL,EAAAA,EAAAA,GAAA,KAAAq7B,GAEJ96B,KAAK+6B,KAAOA,EACZ/6B,KAAKvL,KAAOA,CACd,GAEA,EAAAvN,IAAA,uBAAArC,MAOA,SAAqBwvC,GAGnB,OAFcr0B,KAAKg7B,oBAAoB3G,EAGzC,GAEA,CAAAntC,IAAA,sBAAArC,MAOA,SAAoBwvC,GAClB,IAAMntC,EAAM8Y,KAAK+6B,KAAKE,SAASC,aAAa7G,EAAMtkC,QAElD,OAAOiQ,KAAK+6B,KAAKE,SAASE,YAAYj0C,EACxC,GAEA,CAAAA,IAAA,qBAAArC,MAWA,SAAkBM,GAmBd,IAlBFkvC,EAAKlvC,EAALkvC,MACAE,EAAiBpvC,EAAjBovC,kBACAO,EAAiB3vC,EAAjB2vC,kBACAX,EAAWhvC,EAAXgvC,YACAc,EAAiB9vC,EAAjB8vC,kBACAR,EAAsCtvC,EAAtCsvC,uCACAE,EAA2BxvC,EAA3BwvC,4BACAyG,EAA4Bj2C,EAA5Bi2C,6BACAvG,EAA8B1vC,EAA9B0vC,+BACAE,EAAa5vC,EAAb4vC,cACAH,EAAqCzvC,EAArCyvC,sCACAnF,EAAStqC,EAATsqC,UACAZ,EAAI1pC,EAAJ0pC,KACAuG,EAAWjwC,EAAXiwC,YACAC,EAAMlwC,EAANkwC,OACAC,EAAenwC,EAAfmwC,gBACAC,EAAgCpwC,EAAhCowC,iCACAI,EAA0BxwC,EAA1BwwC,2BAEMvB,EAASp0B,KAAKq7B,qBAAqBhH,GAEzC,OAAe,OAAXD,GAAoBK,GAIpB2G,GAAgChH,EAAOqD,cAAgBrD,EAAOsD,uBAChEtD,EAAOkH,uBAAyB,CAC9B,qBACA,8BACA,oBACA,4CAGE9wC,IAAAA,SAAW,CAAC,WAAY,YAAa,SAAU4pC,EAAOsD,qBAAqBz1B,QAE7EmyB,EAAOmH,sBAAwB,CAAC,kBACtB/wC,IAAAA,SAAW4pC,EAAOkH,uBAAwBlH,EAAO54B,kBAE3D44B,EAAOmH,sBAAwB/wC,IAAAA,MAAQ4pC,EAAOmH,sBAAuB,CAAC,qBAKnExH,EAAqB,CAC1BM,MAAAA,EACAD,OAAAA,EACAU,kBAAAA,EACAP,kBAAAA,EACAN,sBAAuBG,GAAUA,EAAOmH,sBACxCpH,YAAAA,EACA1/B,KAAMuL,KAAKvL,KACXmgC,sCAAAA,EACAD,4BAAAA,EACAF,uCAAAA,EACAI,+BAAAA,EACAI,kBAAAA,EACAF,cAAAA,EACAtF,UAAAA,EACAZ,KAAAA,EACAuG,YAAAA,EACAC,OAAAA,EACAC,gBAAAA,EACAC,iCAAAA,EACAE,iBAAkBz1B,KAAK+6B,KAAK1F,QAAoC,mBAA1Br1B,KAAK+6B,KAAK1F,OAAO5wC,KACvDkxC,2BAAAA,KA1COr0B,IAAAA,SAAgB,EA4C3B,IAAC,CAtHoC,GCP1Bk6B,EACT,CACEC,KAAM,EACNxvC,QAAS,EACTyvC,cAAe,EACfC,cAAe,EACfC,cAAe,EACfC,mBAAoB,IACpBC,QAAS,IACTC,cAAe,KACfC,WAAY,KACZC,eAAgB,KAChBC,WAAY,KACZC,WAAY,MACZC,aAAc,MACdC,YAAa,MACbC,QAAS,OACTC,MAAO,OACPC,MAAO,QACPC,MAAO,QACPC,OAAQ,QACRC,MAAO,QACPC,YAAa,SACbnK,MAAO,SACP1mC,GAAI,SACJ8wC,MAAO,UACPC,UAAW,UACXC,YAAa,UACbC,OAAQ,YAGP,SAASC,EAAiB/3C,GAA4B,IAAzB+iC,EAAQ/iC,EAAR+iC,SAAUiV,EAAUh4C,EAAVg4C,WACtCC,EAAY,GAiHlB,OAhHKlV,EAAWuT,EAAmBM,WAAaN,EAAmBM,SACjEqB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,sBAGjCmyB,EAAWuT,EAAmBK,sBAC7BL,EAAmBK,oBACvBsB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,0BAGjCmyB,EAAWuT,EAAmBO,iBAAmBP,EAAmBO,eACvEoB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,qBAGjCmyB,EAAWuT,EAAmBQ,cAAgBR,EAAmBQ,YACpEmB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,yBAGjCmyB,EAAWuT,EAAmBS,kBAAoBT,EAAmBS,gBACxEkB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,wBAGjCmyB,EAAWuT,EAAmBY,gBAAkBZ,EAAmBY,cACtEe,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,2BAGjCmyB,EAAWuT,EAAmBa,eAAiBb,EAAmBa,aACrEc,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,0BAGjCmyB,EAAWuT,EAAmBvvC,WAAauvC,EAAmBvvC,SACjEkxC,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,sBAGjCmyB,EAAWuT,EAAmBE,iBAAmBF,EAAmBE,eACvEyB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,qBAGjCmyB,EAAWuT,EAAmBG,iBAAmBH,EAAmBG,eACvEwB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,qBAGjCmyB,EAAWuT,EAAmBI,iBAAmBJ,EAAmBI,eACvEuB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,qBAGjCmyB,EAAWuT,EAAmBU,cAAgBV,EAAmBU,YACpEiB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,yBAGjCmyB,EAAWuT,EAAmBW,cAAgBX,EAAmBW,YACpEgB,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,yBAGjCmyB,EAAWuT,EAAmBmB,SAAWnB,EAAmBmB,OAC/DQ,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBc,WAAad,EAAmBc,SACjEa,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,sBAGjCmyB,EAAWuT,EAAmBiB,SAAWjB,EAAmBiB,OAC/DU,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBe,SAAWf,EAAmBe,OAC/DY,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBgB,SAAWhB,EAAmBgB,OAC/DW,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBkB,UAAYlB,EAAmBkB,QAChES,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,qBAGjCmyB,EAAWuT,EAAmB/I,SAAW+I,EAAmB/I,OAC/D0K,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBzvC,MAAQyvC,EAAmBzvC,IAC5DoxC,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,iBAGjCmyB,EAAWuT,EAAmBqB,SAAWrB,EAAmBqB,OAC/DM,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAGjCmyB,EAAWuT,EAAmBsB,aAAetB,EAAmBsB,WACnEK,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,wBAGjCmyB,EAAWuT,EAAmBoB,eAAiBpB,EAAmBoB,aACrEO,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,wBAGjCmyB,EAAWuT,EAAmBuB,eAAiBvB,EAAmBuB,aACrEI,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,0BAGjCmyB,EAAWuT,EAAmBwB,UAAYxB,EAAmBwB,QAChEG,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,oBAMlCmyB,GAAYA,EAAWqO,KAAK8G,IAAI,EAAG,KAAOnV,GAAYqO,KAAK8G,IAAI,EAAG,KACpED,EAAUnzC,KAAKkzC,EAAWpnC,UAAU,0BAG/BqnC,EAAU13B,KAAK,KACxB,C,gDC1IA,SAAS43B,EAAuB5oC,EAAM2/B,EAAQkJ,EAAcC,EAAyBC,GACnF,IAAMC,EAAahpC,EAAKqB,UAAU,8BAC/BN,QAAQ,MAAOf,EAAKqB,UAAUw8B,EAAY8B,KACvCsJ,EAA2BjpC,EAAKqB,UAAU,4CAC7CN,QAAQ,MAAOf,EAAKqB,UAAU48B,EAAkB0B,KAC7CuJ,EAA4BlpC,EAAKqB,UAAU,6CAC9CN,QAAQ,MAAOf,EAAKqB,UAAU48B,EAAkB0B,KAC7CwJ,EAAsBnpC,EAAKqB,UAAU,uCAAuCN,QAAQ,MAAOf,EAAKqB,UAAU48B,EAAkB0B,KAC5HyJ,EAAgCppC,EAAKqB,UAAU,qBAAqBN,QAAQ,MAAOioC,GACrFK,EAAoB,wEAAA10C,OAA2Ek0C,EAAe,GAAK,WAAU,MAAAl0C,OAAKy0C,EAA6B,QAC7JE,EAAsCtpC,EAAKqB,UAAU,qBAAqBN,QAAQ,MAAO4+B,IAAWvE,EAAOK,WAAayN,EAA4BD,GACtJM,EAAkCR,EAAkB,KAAI,qFAAAp0C,OAAwF20C,EAAmC,QACjLE,EAAWxpC,EAAKqB,UAAU,+BAA+BN,QAAQ,MAAO+nC,EAA0B9oC,EAAKqB,UAAU,uBAAyBrB,EAAKqB,UAAUw8B,EAAY8B,KAS3K,OARIA,IAAWvE,EAAOI,YACpB6N,EAAoB,oFAAA10C,OAAuFk0C,EAAe,GAAK,WAAU,MAAAl0C,OAAKm0C,EAA0B9oC,EAAKqB,UAAU,qBAAqBN,QAAQ,MAAOf,EAAKqB,UAAU,wBAA0B+nC,EAA6B,QACjSG,EAAkC,MAEhC5J,IAAWvE,EAAOM,QACpB2N,EAAoB,wEAAA10C,OAA2Ek0C,EAAe,GAAK,WAAU,MAAAl0C,OAAKqL,EAAKqB,UAAU,qBAAqBN,QAAQ,MAAOgoC,EAAkBI,EAAsBF,GAAyB,QACtPM,EAAkC,MAE7B,CACLF,qBAAAA,EACAE,gCAAAA,EACAC,SAAAA,EAEJ,CAEA,SAASC,EAAiCzpC,GAExC,MAAO,CACL0pC,mBAFsB,sFAAA/0C,OAAyFqL,EAAKqB,UAAU,mBAAkB,QAGhJsoC,kBAAmB3pC,EAAKqB,UAAU,0BAEtC,CAEO,SAASuoC,GAAqBn5C,GAiBjC,IAhBFo5C,EAAOp5C,EAAPo5C,QACAC,EAAOr5C,EAAPq5C,QACA9pC,EAAIvP,EAAJuP,KACA+pC,EAAYt5C,EAAZs5C,aACAtB,EAAUh4C,EAAVg4C,WACA9I,EAAMlvC,EAANkvC,OACAiD,EAAcnyC,EAAdmyC,eACAoH,EAAEv5C,EAAFu5C,GACAC,EAAOx5C,EAAPw5C,QACApB,EAAYp4C,EAAZo4C,aACA9zC,EAAWtE,EAAXsE,YACAm1C,EAA+Bz5C,EAA/By5C,gCACAC,EAAW15C,EAAX05C,YACApB,EAAet4C,EAAfs4C,gBACAqB,EAAY35C,EAAZ25C,aACAhiC,EAAK3X,EAAL2X,MAEMiiC,EAAiB,GACjBC,EAAYlP,EAAOC,KAAOsE,IAAU4K,EAAAA,EAAAA,IACxCx0C,IAAAA,MAAQi0C,GAAI/4C,OAAO,YAAYA,OAAO,mBAAmBb,QACzD2F,IAAAA,MAAQi0C,GAAI/4C,OAAO,YAAYA,OAAO,oBAAoBb,SAEpD0zC,GAAe17B,GAASA,EAAMiB,QAAW,CAAC,GAA1Cy6B,UACF0G,EAAsBz1C,GAAeA,EAAYnB,QAAQ62C,iCAAmCrP,EAAOM,QAAUiE,GAAUmE,EACvH4G,EAAetP,EAAOC,KAAOsE,IAAUgL,EAAAA,EAAAA,IAAmB50C,IAAAA,MAAQi0C,GAAI/4C,OAAO,YAAYA,OAAO,gBAAgBb,SAChHw6C,EAAqBxP,EAAOK,aAAekE,GAAU5qC,GAAeA,EAAYnB,SAAWmB,EAAYnB,QAAQi3C,iBAC/GC,EAA4B1P,EAAOI,YAAcmE,GAAU5qC,GAAeA,EAAYnB,SAAWmB,EAAYnB,QAAQm3C,wBACrHC,GAA8BV,IAAcI,GAAiB30C,IAAAA,SAAW,CAACqlC,EAAOC,GAAID,EAAOE,SAAUqE,IAAYiL,GAAsBE,GAA6BN,EACpKS,EAAuBl2C,GAAeA,EAAYnB,SAAWmB,EAAYnB,QAAQs3C,qBAEnFf,GAAeA,EAAYgB,QAC7BhB,EAAYgB,OAAO,qBAADx2C,OAAsBgrC,EAAM,OAAAhrC,OAAMq1C,EAAKA,EAAGjhC,GAAKkhC,GAAWA,EAAQlhC,GAAE,OAAApU,OAAMiuC,EAAc,OAAAjuC,OAAMkU,KAAKmrB,UAAU6V,KAGjI9zC,IAAAA,KAAO8zC,GAAS,SAACuB,EAAQniB,GACvB,IAAMoiB,EAAaD,EAAOE,WACtBC,GAAY,EAMhB,GAJKtiB,IAAM4gB,EAAQp2C,OAAS,GAAOo2C,EAAQ5gB,EAAI,GAAGqiB,aAAeD,IAC/DE,GAAY,GAGVA,EAAW,CACb,IAEIC,EAFEC,GAAYC,EAAAA,EAAAA,IAAyBN,EAAOE,WAAYxB,EAAS,KAAM/0C,GACzE2zC,EAAY,GAGViD,EAA8C,kBAArBP,EAAOQ,SAAyBR,EAAOQ,SAAWpD,EAAkB,CACjGhV,SAAU4X,EAAOQ,SACjB5rC,KAAAA,EACAyoC,WAAAA,IAGEkD,IAAmBvB,IACrB1B,EAAY1oC,EAAKqB,UAAU,sCAAsCN,QAAQ,MAAO4qC,IAWlF,IAAIE,EAAmB,KAErBA,EADuB,KATzBL,EACEz1C,IAAAA,MAAQq1C,EAAOU,qBACZC,MAAM,sBACN7M,UACA8M,OACAn8C,KAAI,SAAAo8C,GAAO,OAAKtM,IAAWvE,EAAOI,UAAYyQ,EAAUlC,EAAa1oC,UAAU,oBAAD1M,OAAqBs3C,GAAU,IAC7G77C,SAGSqD,OACOuM,EAAKqB,UAAU,yCAAyCN,QAAQ,MAAOyqC,EAAU,IAEjFP,EAAuBjrC,EAAKqB,UAAU,6CAA8C,CACrG6qC,OAAQV,EAAU/3C,OAClB8jC,IAAK,6DACL4U,OAAQ,SAERnsC,EAAKqB,UAAU,qCAAqCN,QAAQ,MAAOyqC,EAAU/3C,QAGjF42C,EAAe90C,KAAK,CAClBk2C,UAAAA,EACA/C,UAAAA,EACAmD,iBAAAA,EACAL,UAAAA,EACAY,cAAelC,EAAkClqC,EAAKqB,UAAU,4BAAD1M,OAA6By2C,EAAOiB,eAAiB,YAAe,GACnIC,cAAepC,EAAkClqC,EAAKqB,UAAU,4BAAD1M,OAA6By2C,EAAOmB,eAAiB,YAAe,IAEvI,CACF,IAEA,IAAMzD,EAA6C,2BAAnBlG,GAAkE,kCAAnBA,GAAyE,yCAAnBA,GAAgF,gDAAnBA,EAC5L4J,EAAmC,sBAAnB5J,GAA6D,aAAnBA,GAAoD,4BAAnBA,GAAgDkG,EAC7I7qC,EAAQ+B,EAAKqB,UAAU,yBAC3B,OAAQuhC,GAEN,IAAK,iBACL,IAAK,yBACL,IAAK,0BACH3kC,EAAQ+B,EAAKqB,UAAU,gDACvB,MACF,IAAK,gCACL,IAAK,yCACHpD,EAAQ+B,EAAKqB,UAAU,+DACvB,MACF,IAAK,kBACL,IAAK,2BACHpD,EAAQ+B,EAAKqB,UAAU,gCACvB,MACF,IAAK,yBACHpD,EAAQ+B,EAAKqB,UAAU,uCACvB,MACF,IAAK,gCACHpD,EAAQ+B,EAAKqB,UAAU,8CACvB,MACF,IAAK,uCACHpD,EAAQ+B,EAAKqB,UAAU,6DACvB,MACF,IAAK,8CACHpD,EAAQ+B,EAAKqB,UAAU,oEAM3B,OAAOorC,IAAkB,CACvBxuC,MAAAA,EACA4rC,QAASQ,EACTrqC,KAAAA,EACAyoC,WAAAA,EACAuC,yBAAAA,EACA0B,OAAQ1B,EACJpC,EAAuB5oC,EAAM2/B,EAAQkJ,EAAcC,EAAyBC,GAC5EU,EAAiCzpC,GACrCwsC,cAAAA,EACAtC,gCAAAA,EACAyC,oBAAqBjC,EACrBO,qBAAAA,EACA2B,iBAAkB3B,EAAuBjrC,EAAKqB,UAAU,0BAA4B,IAExF,CAEO,SAASwrC,GAA4BrN,GAE1C,OAAOzpC,IAAAA,SADiB,CAAC,oBAAqB,2BAA4B,0BAA2B,0CAClEypC,EACrC,CC1LO,SAASsN,GAAyBC,EAAW5C,EAAa6C,GAC/DD,EAAUh7C,KAAK,wBAAwBuoC,GAAG,SAAS,SAACjG,GAClD,IAAM4Y,EAAU9L,IAAE9M,EAAE/4B,QACd4xC,EAAUD,EAAQE,SAAS,QAAUF,EAAQ/G,SAAW+G,EAAQG,aAAa,MAAMlH,SACnFmH,EAAQH,EAAQn7C,KAAK,SACvBs7C,EAAMF,SAAS,sBACjBE,EAAMC,YAAY,sBAAsBC,SAAS,oBAEjDF,EAAMC,YAAY,oBAAoBC,SAAS,sBAEhCL,EAAQn7C,KAAK,iBACrBy7C,SAELrD,GAAeA,EAAYhE,OAC7BgE,EAAYhE,MAAM,0BAADxxC,OAA2Bq4C,GAAcA,EAAWrN,OAAM,MAAAhrC,OAAKq4C,GAAcA,EAAWlvC,KAI3GivC,EAAUpH,QAAQ,iBAAkBoH,EAAUh7C,KAAK,wBAAwB,GAAG07C,UAChF,GACF,C,2JCnBMC,EAAyB,CAAC,EASnBC,EAAkB,SAAAC,GAAA,SAAAD,IAAA,OAAA3iC,EAAAA,EAAAA,GAAA,KAAA2iC,IAAA3/B,EAAAA,EAAAA,GAAA,KAAA2/B,EAAAn6C,UAAA,QAAA2a,EAAAA,EAAAA,GAAAw/B,EAAAC,IAAA7iC,EAAAA,EAAAA,GAAA4iC,EAAA,OAAAl7C,IAAA,MAAArC,MAQ7B,SAAWqC,GACT,OAAOi7C,EAAuBj7C,EAChC,GAEA,CAAAA,IAAA,MAAArC,MASA,SAAWqC,EAAKrC,GACV2F,IAAAA,SAAWtD,KACbi7C,EAAuBj7C,GAAOrC,EAElC,GAEA,CAAAqC,IAAA,SAAArC,MAMA,WACE,OAAO2F,IAAAA,MAAQ23C,EACjB,IAAC,CAnC4B,C,MAAS5T,GAAAA,M,0MCNxC,SAAS+T,EAAiB5jC,EAAY6jC,GACpC,IAAMC,EAAUh4C,IAAAA,MAAQkU,EAAW+jC,iBAAiBF,IACjDj+C,KAAI,SAAAY,GAAA,IAAAC,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAAgB,MAAM,CAAjBC,EAAA,GAAWA,EAAA,GAEP,EAAI,MAAQ,OACzB,IACAN,QAEH,OAAO2F,IAAAA,QAAUg4C,GAAW,KAAOA,CACrC,CAcO,IAAME,EAAqB,SAAAC,GAChC,SAAAD,EAAYE,GAAyB,IAADtgC,EAAdtV,EAAO/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAKL,OALMwX,EAAAA,EAAAA,GAAA,KAAAijC,IAChCpgC,GAAAG,EAAAA,EAAAA,GAAA,KAAAigC,EAAA,CAAME,EAAU51C,KACX61C,UAAY,KACjBvgC,EAAKwgC,gBAAkB,KACvBxgC,EAAKygC,gBAAkB,KACvBzgC,EAAK0gC,cAAgB,KAAK1gC,CAC5B,CAAC,OAAAM,EAAAA,EAAAA,GAAA8/B,EAAAC,IAAAnjC,EAAAA,EAAAA,GAAAkjC,EAAA,EAAAx7C,IAAA,QAAArC,MACD,SAAMujC,GAAS,IAADvb,EAAA,KACN7f,EAAUxC,IAAAA,SAAW,CAAC,EAAG49B,EAAOp7B,QAASgT,KAAKijC,UAIpD,OAHIjjC,KAAK8iC,iBACP9iC,KAAK8iC,kBAEA9iC,KAAKkjC,UACTC,QA1BP,SAAyBzkC,EAAY0pB,GACnC,OAAO59B,IAAAA,MAAQ49B,GACZgb,KAAK,OAAQ,OAAQ,SAAU,WAC/BxsB,OAAOpsB,IAAAA,KAAO,CACb64C,OAAQjb,EAAOkb,KACfC,MAAOnb,EAAOob,KACdC,MAAOrb,EAAOx9B,OACd43C,QAASF,EAAiB5jC,EAAY0pB,EAAOsb,UAC5C7P,UACFhvC,OACL,CAgBe8+C,CAAgB3jC,KAAMxV,IAAAA,KAAO49B,EAAQ,YAAap7B,GAC1Dy+B,MAAK,SAACtJ,GACL,GAAI33B,IAAAA,QAAU23B,GAAO,CACnB,IACEtV,EAAK+2B,gBAAgBtmC,KAAKC,MAAM4kB,EAAK0hB,IA3CnB,+BA4Cdh3B,EAAKk2B,iBACPl2B,EAAKk2B,gBAAgBl2B,EAAKg2B,UAE9B,CAAE,MAAO/Z,GACHjc,EAAKm2B,eACPn2B,EAAKm2B,cAAcla,EAEvB,CACA,MAAQ,CACN3sB,MAAOgmB,EAAKlf,QACZ6gC,WAAY3hB,EAAK2hB,YAAc,EAEnC,CACA,MAAM3hB,CACR,GACJ,GAAC,CAAAj7B,IAAA,kBAAArC,MACD,SAAgBg+C,GACd7iC,KAAK6iC,UAAYA,CACnB,GAAC,CAAA37C,IAAA,eAAArC,MACD,SAAak+C,EAAiBC,GAC5BhjC,KAAK+iC,gBAAkBA,EACvB/iC,KAAKgjC,cAAgBA,EACjBhjC,KAAK+iC,iBAAmB/iC,KAAK6iC,WAC/B7iC,KAAK+iC,gBAAgB/iC,KAAK6iC,UAE9B,GAAC,CAAA37C,IAAA,YAAArC,MACD,SAAUi+C,GACR9iC,KAAK8iC,gBAAkBA,CACzB,IAAC,CA/C+B,CAASiB,EAAAA,WAAeC,QCvBpDC,EAAuB,SAACC,EAAIC,GAAK,OAAKA,CAAK,EAC1C,SAASC,EAAQC,EAAkBC,EAAkB/6C,GAE2C,IAKjGmV,EAPmE6lC,EAAMt8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAChFu8C,kBAAmBh6C,IAAAA,MAClBi6C,EAAiBx8C,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEu8C,EAAwBz8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAU08C,EAAgB18C,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEy8C,EAA0B38C,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAClG,GAA8B,WAA1Bk8C,EAAiB32C,KACnB,MAAM,IAAIm3C,MAAM,oCAKhBnmC,EADEgmC,EACW,IAAIhC,EAAsB2B,EAAiBjQ,OAAQiQ,EAAiBr3C,SAEpE,IAAI+2C,EAAAA,WAAeC,OAAOK,EAAiBjQ,OAAQiQ,EAAiBr3C,SAE/E23C,IACFjmC,EAAaimC,GAGf,IAAMG,EAAgBpmC,EAAWif,MAE7BonB,EAAY,EA8FhB,OAvFArmC,EAAWif,MAAQ,eACjBqnB,EAAW/8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACqBg9C,GADpBh9C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GACkB,CAAC,GAAjCi9C,eAAAA,OAAc,IAAAD,EAAGz6C,IAAAA,SAAUy6C,EAC7BE,EAAYl9C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGuC,IAAAA,KACf46C,EAASn9C,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAA,OACNm8C,EAAiBe,WAAW5Z,MAAK,SAACrD,GAErC,GADAmc,EAAOC,kBAAkB,4BAADp7C,OAA6B27C,GAAa,CAAEx5C,YAAahC,IAC7E67C,EAAW,CAMb,IAEwBE,GAApBld,EAAOp7B,SAAW,CAAC,GADrBu4C,aAAcC,OAA4B,IAAAF,EAAGrB,EAAmBqB,EAIhCG,GAA9BpB,EAAiBr3C,SAAW,CAAC,GAD/Bu4C,aAAcG,OAA4B,IAAAD,EAAGxB,EAAmBwB,EAElErd,EAAOp7B,QAAUxC,IAAAA,OAAS,CAAC,EAAG49B,EAAOp7B,QAAS,CAC5Cu4C,aAAc,SAACI,EAAWxB,GACxBzlC,EAAWknC,QAAUzB,EACrBzlC,EAAWmnC,WAAar7C,IAAAA,SAAW,MAAXA,CAAkB25C,GAC1C,IAAM2B,EAAaJ,EACjBC,EACAH,EAA6BG,EAAWxB,IAE1C,GAAIS,EAA4B,CAC9B,GAAIlmC,EAAW1R,SAAW0R,EAAW1R,QAAQu4C,aAC3C,OAAO7mC,EAAW1R,QAAQu4C,aAAaI,EAAWxB,GAEpDS,EAA2BT,EAC7B,CAEA,OAAO2B,CACT,GAEJ,CAEA,IAAMC,EAAc3d,EAGd4d,EAAcx7C,IAAAA,MAAQw6C,GACzBt/C,OAAO,WACPA,OAAO,iBACPA,OAAO,UACPb,QAEGohD,EAAcz7C,IAAAA,MAAQu7C,GACzBrgD,OAAO,WACPA,OAAO,iBACPA,OAAO,UACPb,QAEGqhD,EAAiB17C,IAAAA,SAAWw7C,GAC5BG,EAAiB37C,IAAAA,SAAWy7C,GAE9BC,UAEKlB,EAAYh4C,QAAQo5C,cAAc97C,OAGvC67C,UACKJ,EAAY/4C,QAAQo5C,cAAc97C,OAG3Cy7C,EAAY/4C,SAAUq1B,EAAAA,EAAAA,OAAM,CAAC,EAAG2iB,EAAYh4C,QAAS+4C,EAAY/4C,UAE7Dk5C,GAAkBC,KACpBJ,EAAY/4C,QAAQo5C,cAAc97C,OAAS27C,GAAeD,IAzEpDvB,GAAqBM,EAAY,IA8EvCgB,EAAYM,gBAAe,eAAAj9C,OAAkB27C,EAAS,kBAGxD,IAAMr/C,EAASo/C,EAAcwB,KAAK5nC,EAAYwmC,EAAea,EAAaf,IAK1E,OAJAG,IAEAJ,GAAa,EAENr/C,CACT,GAAG,EAEHgZ,EAAW6nC,aAAejC,EAEnB5lC,CACT,C,uHCvHMulC,EAAsB,SAACj3C,EAASm1B,GAAI,OAAKA,CAAK,EAOvCqkB,EAAiB,kBAAAhnC,EAAAA,EAAAA,IAAA,SAAAgnC,KAAA/mC,EAAAA,EAAAA,GAAA,KAAA+mC,EAAA,UAAAt/C,IAAA,OAAArC,MAC5B,SAAYw/C,GACV,IAAMoC,EAAS,CACbC,kBAAkB,GAEdC,EAAuBtC,EAAiBr3C,QAAQu4C,cAAgBtB,EAWtE,OATAI,EAAiBr3C,QAAQu4C,aAAe,SAACv4C,GAAwB,IAAfm1B,EAAIl6B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAOxD,OANAuC,IAAAA,UAAYi8C,GAAQ,SAACpmC,EAAKnZ,GACxBu/C,EAAOv/C,IAAO,CAChB,IACIsD,IAAAA,IAAM23B,EAAKskB,QAAQ,SAAAG,GAAG,MAAiB,0BAAbA,EAAIC,IAAgC,MAChEJ,EAAOC,kBAAmB,GAErBC,EAAqB35C,EAASm1B,EACvC,EACOskB,CACT,IAAC,CAjB2B,E,0JCJjBK,EAAuBt8C,IAAAA,OAFc,CAAC,kBAE8B,SAACu8C,EAAMx9C,GAAW,OAAKiB,IAAAA,OAASu8C,GAAI59C,EAAAA,EAAAA,GAAA,GAAKI,EAAW,oBAAAH,OAAuBG,IAAgB,GAAE,CAAC,GAElKy9C,EAAgCF,ECPhCG,EAAyB,CACpCC,cAAe,CACbC,YAAa,SAAAC,GAAY,MAAK,CAAC,CAC7Bx0C,eAAgB,eAChBy0C,iBAAkB,WAClBC,OAAQ,CAACF,IACT,G,8ICUN,IAAMG,EAAoB,WAGnB,SAASC,EAAgBC,EAAMC,EAAUC,EAAa1c,GAC3D,IAAIx9B,EAAS85C,EAQb,OALE95C,EADEi6C,EACOzc,EAAc2c,YAAYC,sBAAsBC,kBAAoBP,EAEpEI,EAAYE,sBAAsBC,kBAAoBP,EAG1DQ,IAAAA,SAAeN,EAAMh6C,EAC9B,CAKO,SAASu6C,EAAgBP,GAC9B,OAAOM,IAAAA,SAAeN,EAAMF,EAC9B,CAEO,SAASU,EAAsBC,GAMpC,MALc,CACZC,UAAWH,EAAgBE,EAAUE,OACrCC,QAASL,EAAgBE,EAAUI,KAIvC,CAGO,SAASC,EAAkCC,GAChD,OAAKA,EArCA,SAAmBA,EAAY/6C,GACpC,OAAOs6C,IAAAA,UAAgBS,EAAY/6C,EACrC,CAwCeg7C,CADgBD,EAAWE,UAAU,EAAGF,EAAW12C,QAAQ,MAC3B,cAJpC,IAMX,CAOO,SAAS62C,EAAsCzjD,GAQlD,IAPF0jD,EAAmB1jD,EAAnB0jD,oBACAC,EAAiB3jD,EAAjB2jD,kBACAC,EAAmB5jD,EAAnB4jD,oBACAC,EAAiB7jD,EAAjB6jD,kBACArB,EAAQxiD,EAARwiD,SAAQsB,EAAA9jD,EACRyiD,YAAAA,OAAW,IAAAqB,EAAG,CAAC,EAACA,EAAAC,EAAA/jD,EAChB+lC,cAAAA,OAAa,IAAAge,EAAG,CAAC,EAACA,EAIZC,EAAqBX,EAAkCO,GACvDK,EAAmBZ,EAAkCQ,GAKrDK,EADoBD,GAAoBP,GAAuBC,GAErEK,GAAsBL,GACtBD,GAAuBO,EAQnBE,EAA0BT,GAMzBQ,IAV+CD,GACpDP,GAAuBC,GACvBK,GAAsBL,IASjBK,EAAqBN,IACxBS,EAA0BH,GAG5B,IAAII,EAAwBT,EAY5B,OARIO,GAAuBP,EAAoBM,IAC7CG,EAAwBH,GAOnB,CACLf,MAJYZ,EAAgB6B,EAAyB3B,EAAUC,EAAa1c,GAK5Eqd,IAJUd,EAAgB8B,EAAuB5B,EAAUC,EAAa1c,GAM5E,C,6LClHase,EAAS,SAAAC,GAAA,SAAAD,IAAA,OAAA9pC,EAAAA,EAAAA,GAAA,KAAA8pC,IAAA9mC,EAAAA,EAAAA,GAAA,KAAA8mC,EAAAthD,UAAA,QAAA2a,EAAAA,EAAAA,GAAA2mC,EAAAC,IAAAhqC,EAAAA,EAAAA,GAAA+pC,EAAA,EAAAriD,IAAA,aAAArC,MACpB,SAAUK,GAIN,IAHFuP,EAAIvP,EAAJuP,KACAg1C,EAAcvkD,EAAdukD,eACAC,EAAoBxkD,EAApBwkD,qBAEA1pC,KAAKvL,KAAOA,EACZuL,KAAKypC,eAAiBA,EACtBzpC,KAAK0pC,qBAAuBA,EAC5B1pC,KAAKusB,SAAS,CACZod,aAAc,mBAElB,GAAC,CAAAziD,IAAA,WAAA+F,IAED,WACE,OAAO4oC,GACT,GAAC,CAAA3uC,IAAA,SAAA+F,IAED,WAAc,IAADqV,EAAA,KACX,MAAO,CACL,mCAAoC,SAACwmB,GACnCxmB,EAAKiqB,SAAS,CACZod,aAAc7gB,EAAE/4B,OAAOwC,IAE3B,EAEJ,IAAC,CA1BmB,CAASq3C,EAAAA,mB,qBCAlBC,EAAO,SAAAL,GAAA,SAAAK,IAAA,OAAApqC,EAAAA,EAAAA,GAAA,KAAAoqC,IAAApnC,EAAAA,EAAAA,GAAA,KAAAonC,EAAA5hD,UAAA,QAAA2a,EAAAA,EAAAA,GAAAinC,EAAAL,IAAAhqC,EAAAA,EAAAA,GAAAqqC,EAAA,EAAA3iD,IAAA,aAAArC,MAClB,SAAUK,GAGN,IAFFuP,EAAIvP,EAAJuP,KACAg1C,EAAcvkD,EAAdukD,eAEAzpC,KAAKvL,KAAOA,EACZuL,KAAKypC,eAAiBA,CACxB,GAAC,CAAAviD,IAAA,WAAA+F,IAED,WACE,OAAO4oC,GACT,IAAC,CAXiB,CAAS+T,EAAAA,mB,gFCY7Brb,IAAAA,EAAaqH,IAEb,IAAMkU,EAAU,CACdC,mCAAoCnoC,yBACpCooC,yCAA0CpoC,+BAC1CqoC,gDAAiDroC,0DACjDsoC,2BAA4BtoC,0EAC5BuoC,OAAQvoC,SACRwoC,KAAMxoC,OACNyoC,2BAA4BzoC,oDAC5B0oC,gCAAiC1oC,sBACjC2oC,kCAAmC3oC,8BACnC4oC,kCAAmC5oC,uDACnC6oC,4CAA6C7oC,4KAC7C8oC,sCAAuC9oC,iBACvC+oC,8CAA+C/oC,2GAC/CgpC,wCAAyChpC,yBACzCipC,kBAAmBjpC,sBAGRkpC,EAAiB,SAAAtB,GAAA,SAAAsB,IAAA,IAAAxoC,GAAA7C,EAAAA,EAAAA,GAAA,KAAAqrC,GAAA,QAAAC,EAAA9iD,UAAAC,OAAA8iD,EAAA,IAAAr6B,MAAAo6B,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAAhjD,UAAAgjD,GAwD3B,OAxD2B3oC,GAAAG,EAAAA,EAAAA,GAAA,KAAAqoC,EAAA,GAAA1hD,OAAA4hD,KAsB5BE,iBAAmB,SAAC90B,GAClB,IAAM+0B,EAAc3gD,IAAAA,SAAW,CAC7ByX,OAAQmU,GACP5rB,IAAAA,KAAO8X,EAAK8oC,iBAAkB,CAAC,iBAAkB,uBAAwB,iBAAkB,YAAa,UAAW,sBAAuB,oBAEvIC,EAAa/oC,EAAKgpC,eAAeC,MAAMJ,GACvCK,EAAW,CACfC,KAAM,WAAF,OAAQnpC,EAAKopC,uBAAuBt1B,EAAO,EAC/Cu1B,MAAO,SAAA7f,GAAQ,OAAIxpB,EAAKspC,kBAAkB9f,EAAS,GAGrDxpB,EAAKupC,aAAeR,EAAWS,UAAUN,EAC3C,EAAClpC,EAGDopC,uBAAyB,SAACt1B,GACxB9T,EAAKiqB,SAAS,CAAEnW,OAAAA,IACD,UAAXA,IAEF9T,EAAKzF,MAAMkvC,IAAI,CACbhhB,IAAKzoB,EAAKzF,MAAMiB,OAAOitB,IACvBF,IAAKvoB,EAAKzF,MAAMiB,OAAO+sB,IACvBmhB,IAAK1pC,EAAKzF,MAAMiB,OAAOkuC,MAEzB1pC,EAAKzF,MAAM6sB,KAAK,gCAElBpnB,EAAKupC,aAAaI,aACpB,EAAC3pC,EAEDspC,kBAAoB,SAAC9f,GACnB,IAAMogB,EAAc,IAAIC,EAAAA,EAAY,CAAE13C,KAAM6N,EAAK7N,OAC3C23C,EAAY7hD,EAAAA,IAAUuhC,EAAU,kBACtCxpB,EAAKupC,aAAaI,cAClBC,EAAYG,UAAU/pC,EAAK7N,KAAKqB,UAAU,oBAAD1M,OAAqBgjD,KAAgB9pC,EAAK7N,KAAKqB,UAAU,8BACpG,EAACwM,CAAA,QAAAM,EAAAA,EAAAA,GAAAkoC,EAAAtB,IAAAhqC,EAAAA,EAAAA,GAAAsrC,EAAA,EAAA5jD,IAAA,aAAArC,MAvDD,SAAUK,GAKN,IAJFkmD,EAAgBlmD,EAAhBkmD,iBACAE,EAAcpmD,EAAdomD,eACA72C,EAAIvP,EAAJuP,KACAoI,EAAK3X,EAAL2X,MAEAmD,KAAKvL,MAAO63C,EAAAA,EAAAA,IAAgB73C,EAAM,CAACq1C,IAEnC9pC,KAAKvL,KAAK83C,UAAW,EACrBvsC,KAAKorC,iBAAmBA,EACxBprC,KAAKsrC,eAAiBA,EACtBtrC,KAAKusB,SAAS,CACZnW,OAAQg1B,EAAiBnpC,SAE3BjC,KAAKnD,MAAQA,CACf,GAAC,CAAA3V,IAAA,WAAA+F,IAED,WACE,OAAO4oC,GACT,GAAC,CAAA3uC,IAAA,kBAAArC,MAsCD,WAAmB,IAADgoB,EAAA,KACVusB,EAAc,IAAImQ,EAAU,CAChC90C,KAAMuL,KAAKvL,KACXg1C,eAAgBzpC,KAAKorC,iBAAiBoB,eACtC9C,qBAAsB1pC,KAAKorC,iBAAiBqB,mBAG9CzsC,KAAK0sC,QAAS,IAAIC,EAAAA,QACfC,WAAWxT,GACX7M,SAAS,CACR75B,MAAOsN,KAAKvL,KAAKqB,UAAU,sCAC3B+2C,QAAS,CAAC,CACRC,KAAM9sC,KAAKvL,KAAKqB,UAAU,QAC1BrR,KAAM,UACNsoD,MAAO,eACN,CACDD,KAAM9sC,KAAKvL,KAAKqB,UAAU,UAC1BrR,KAAM,aAIZub,KAAK0sC,OAAO3d,GAAG,iBAAiB,SAACtqC,GAC/B,GAAa,YAATA,EAAoB,CACtB,IAAM2xB,EAAS5rB,IAAAA,OAAS,CACtB,kBAAmB,WACnB,iBAAkB,aACjB4uC,EAAY4T,WAAWrD,cAE1B98B,EAAKq+B,iBAAiB90B,EACxB,CAEAvJ,EAAKogC,cACP,IAEAjtC,KAAK0sC,OAAOrS,IAAI6S,SAASjf,SAASC,MAClCluB,KAAK0sC,OAAOld,OACZxvB,KAAK0sC,OAAO9W,EAAE,UAAUoM,SAAS,kCACnC,GAAC,CAAA96C,IAAA,gBAAArC,MAED,WAAiB,IAAD2nC,EAAA,KACR4M,EAAc,IAAIyQ,EAAQ,CAC9Bp1C,KAAMuL,KAAKvL,KACXg1C,eAAgBzpC,KAAKorC,iBAAiBoB,iBAGxCxsC,KAAK0sC,QAAS,IAAIC,EAAAA,QACfC,WAAWxT,GACX7M,SAAS,CACR75B,MAAOsN,KAAKvL,KAAKqB,UAAU,8BAC3B+2C,QAAS,CAAC,CACRC,KAAM9sC,KAAKvL,KAAKqB,UAAU,mCAC1BrR,KAAM,UACNsoD,MAAO,eACN,CACDD,KAAM9sC,KAAKvL,KAAKqB,UAAU,UAC1BrR,KAAM,aAIZub,KAAK0sC,OAAO3d,GAAG,iBAAiB,SAACtqC,GAClB,YAATA,GACF+nC,EAAK0e,iBAAiB,SAGxB1e,EAAKygB,cACP,IAEAjtC,KAAK0sC,OAAOrS,IAAI6S,SAASjf,SAASC,MAClCluB,KAAK0sC,OAAOld,OACZxvB,KAAK0sC,OAAO9W,EAAE,UAAUoM,SAAS,gCACnC,GAAC,CAAA96C,IAAA,SAAA+F,IAED,WAAc,IAAD4/B,EAAA,KACX,MAAO,CACL,0BAA2B,WAAF,OAAQA,EAAKsgB,iBAAiB,EACvD,wBAAyB,WAAF,OAAQtgB,EAAKugB,eAAe,EAEvD,GAAC,CAAAlmD,IAAA,eAAArC,MAED,WACMmb,KAAK0sC,SACP1sC,KAAK0sC,OAAOzf,SACZjtB,KAAK0sC,OAAS,KAElB,GAAC,CAAAxlD,IAAA,SAAArC,MAED,WACEmb,KAAKitC,gBACLnqC,EAAAA,EAAAA,GAAAgoC,EAAA,gBAAAhoC,CAAA,GACF,IAAC,CAnJ2B,CAAS8mC,EAAAA,mB,gDC9B1B95B,EAAK,SAAA+S,GAAA,SAAA/S,IAAA,OAAArQ,EAAAA,EAAAA,GAAA,KAAAqQ,IAAArN,EAAAA,EAAAA,GAAA,KAAAqN,EAAA7nB,UAAA,QAAA2a,EAAAA,EAAAA,GAAAkN,EAAA+S,IAAArjB,EAAAA,EAAAA,GAAAsQ,EAAA,EAAA5oB,IAAA,SAAArC,MAChB,WACE,IAAAwoD,EAOIrtC,KAAK8iB,MANPruB,EAAI44C,EAAJ54C,KASF64C,EAAuB3E,EAAuC,CAC5DC,oBATmByE,EAAnBzE,oBAUAC,kBATiBwE,EAAjBxE,kBAUAC,oBATmBuE,EAAnBvE,oBAUAC,kBATiBsE,EAAjBtE,kBAUArB,UANe,EAOfzc,cAVaoiB,EAAbpiB,gBAIMmd,EAAKkF,EAALlF,MAAOE,EAAGgF,EAAHhF,IASf,OACE9e,EAAAA,EAAAA,MAAA,OAAAnG,SAAA,CACG5uB,EAAKqB,UAAU,mDAAoD,CAAEsyC,MAAAA,EAAOE,IAAAA,KAC7EnlB,EAAAA,EAAAA,KAACoqB,EAAAA,UAAS,CACRC,MAAM,8CACN,aAAY/4C,EAAKqB,UAAU8L,+DAInC,IAAC,CA9Be,CAASwhB,EAAAA,eAiC3BtT,EAAMkU,aAAe,CACnB8kB,oBAAqB,KACrBC,kBAAmB,MCrCd,ICDHt0C,EDCSg5C,EAAQ,SAAA5qB,GAAA,SAAA4qB,IAAA,OAAAhuC,EAAAA,EAAAA,GAAA,KAAAguC,IAAAhrC,EAAAA,EAAAA,GAAA,KAAAgrC,EAAAxlD,UAAA,QAAA2a,EAAAA,EAAAA,GAAA6qC,EAAA5qB,IAAArjB,EAAAA,EAAAA,GAAAiuC,EAAA,EAAAvmD,IAAA,SAAArC,MACnB,WACE,IAAQw+B,EAAarjB,KAAK8iB,MAAlBO,SAER,OACEF,EAAAA,EAAAA,KAAA,OAAK0E,UAAU,YAAWxE,SACtBA,GAGR,IAAC,CATkB,CAASD,EAAAA,eEAjBsqB,EAAW,SAAA7qB,GAAA,SAAA6qB,IAAA,OAAAjuC,EAAAA,EAAAA,GAAA,KAAAiuC,IAAAjrC,EAAAA,EAAAA,GAAA,KAAAirC,EAAAzlD,UAAA,QAAA2a,EAAAA,EAAAA,GAAA8qC,EAAA7qB,IAAArjB,EAAAA,EAAAA,GAAAkuC,EAAA,EAAAxmD,IAAA,SAAArC,MACtB,WACE,IAAQw+B,EAAarjB,KAAK8iB,MAAlBO,SAER,OACEF,EAAAA,EAAAA,KAAA,OAAK4J,MAAO,CAAExG,SAAU,QAASlD,SAC7BA,GAGR,IAAC,CATqB,CAASD,EAAAA,eCApBuqB,EAAc,SAAA9qB,GAAA,SAAA8qB,IAAA,OAAAluC,EAAAA,EAAAA,GAAA,KAAAkuC,IAAAlrC,EAAAA,EAAAA,GAAA,KAAAkrC,EAAA1lD,UAAA,QAAA2a,EAAAA,EAAAA,GAAA+qC,EAAA9qB,IAAArjB,EAAAA,EAAAA,GAAAmuC,EAAA,EAAAzmD,IAAA,SAAArC,MACzB,WACE,IAAQw+B,EAAarjB,KAAK8iB,MAAlBO,SAER,OACEF,EAAAA,EAAAA,KAAA,OAAK0E,UAAU,YAAYkF,MAAO,CAAExG,SAAU,OAAQ5B,WAAY,QAAStB,SACvEA,GAGR,IAAC,CATwB,CAASD,EAAAA,eCAvBwqB,EAAY,SAAA/qB,GAAA,SAAA+qB,IAAA,OAAAnuC,EAAAA,EAAAA,GAAA,KAAAmuC,IAAAnrC,EAAAA,EAAAA,GAAA,KAAAmrC,EAAA3lD,UAAA,QAAA2a,EAAAA,EAAAA,GAAAgrC,EAAA/qB,IAAArjB,EAAAA,EAAAA,GAAAouC,EAAA,EAAA1mD,IAAA,SAAArC,MACvB,WACE,IAAQw+B,EAAarjB,KAAK8iB,MAAlBO,SAER,OACEF,EAAAA,EAAAA,KAAA,OAAK4J,MAAO,CAAExG,SAAU,OAAQ5B,WAAY,QAAStB,SACjDA,GAGR,IAAC,CATsB,CAASD,EAAAA,eCIrByqB,EAAe,SAAAhrB,GAAA,SAAAgrB,IAAA,OAAApuC,EAAAA,EAAAA,GAAA,KAAAouC,IAAAprC,EAAAA,EAAAA,GAAA,KAAAorC,EAAA5lD,UAAA,QAAA2a,EAAAA,EAAAA,GAAAirC,EAAAhrB,IAAArjB,EAAAA,EAAAA,GAAAquC,EAAA,EAAA3mD,IAAA,SAAArC,MAC1B,WACE,IAAAwoD,EAAyCrtC,KAAK8iB,MAAtCruB,EAAI44C,EAAJ54C,KAAMq5C,EAAgBT,EAAhBS,iBAAkB3rB,EAAIkrB,EAAJlrB,KAEhC,OACEgB,EAAAA,EAAAA,KAAA,SAAO4J,MAAO,CACZnI,QAAS,eACTmpB,eAAgB,WAChBC,cAAe,YACf9nB,WAAY,GACZ+nB,cAAe,UACf5qB,UAEAmG,EAAAA,EAAAA,MAAA,SAAAnG,SAAA,EACEmG,EAAAA,EAAAA,MAAA,MAAIuD,MAAO,CAAEvI,OAAQ,QAASnB,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAACuqB,EAAW,CAAArqB,SACT5uB,EAAKqB,UAAU,sCAItB0zB,EAAAA,EAAAA,MAAA,MAAIuD,MAAO,CAAEvI,OAAQ,QAASnB,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAACsqB,EAAQ,CAAApqB,SACN5uB,EAAKqB,UAAU,wCAGpBqtB,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAACwqB,EAAc,CAAAtqB,SAAA,GAAAj6B,OACT+4B,EAAK+rB,qBAAmB9kD,OAAG0kD,EAAiB/Y,uBAItDvL,EAAAA,EAAAA,MAAA,MAAIuD,MAAO,CAAEvI,OAAQ,QAASnB,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAACsqB,EAAQ,CAAApqB,SACN5uB,EAAKqB,UAAU,sCAGpBqtB,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAACyqB,EAAY,CAAAvqB,SAAA,GAAAj6B,OACN,IAAM+4B,EAAK+rB,qBAAmB9kD,OAAI0kD,EAAiB/Y,0BAOtE,IAAC,CAjDyB,CAAS3R,EAAAA,eCHxB+qB,EAAY,SAAAtrB,GAAA,SAAAsrB,IAAA,OAAA1uC,EAAAA,EAAAA,GAAA,KAAA0uC,IAAA1rC,EAAAA,EAAAA,GAAA,KAAA0rC,EAAAlmD,UAAA,QAAA2a,EAAAA,EAAAA,GAAAurC,EAAAtrB,IAAArjB,EAAAA,EAAAA,GAAA2uC,EAAA,EAAAjnD,IAAA,SAAArC,MACvB,WACE,IAAAwoD,EAMIrtC,KAAK8iB,MALP7kB,EAAKovC,EAALpvC,MACAxJ,EAAI44C,EAAJ54C,KACA25C,EAAQf,EAARe,SACAC,EAAMhB,EAANgB,OACAC,EAAMjB,EAANiB,OAGF,OACEnrB,EAAAA,EAAAA,KAAA,MAAI0E,UAAU,aAAYxE,UACxBF,EAAAA,EAAAA,KAAA,OACE0E,UAAU,qCACV,aAAY5pB,EACZ8uB,MAAO,CACL7F,SAAU,YACV7D,UAEFmG,EAAAA,EAAAA,MAAA,OACE3B,UAAU,uBACVkF,MAAO,CACLnG,WAAY,UACZvD,SAAA,EAEFF,EAAAA,EAAAA,KAAA,UACE0E,UAAU,kBACVkF,MAAO,CACL/H,OAAQ,EACRupB,SAAU,OACVC,QAAS,WAEX,cAAY,WAAUnrB,UAEtBmG,EAAAA,EAAAA,MAACkkB,EAAW,CAAArqB,SAAA,CACR5uB,EAAKqB,UAAU,cAAD1M,OAAeglD,IAC7B,KACFjrB,EAAAA,EAAAA,KAAA,QAAM0E,UAAU,gBAGpB1E,EAAAA,EAAAA,KAAA,MAAI0E,UAAU,oCAAmCxE,SAC7CgrB,EAAO/pD,KAAI,SAAAmqD,GAAM,OACjBtrB,EAAAA,EAAAA,KAAA,MACE0F,QAAS,WAAF,OAAQylB,EAAOG,EAAO,EAC7BC,KAAK,eAAcrrB,UAGnBF,EAAAA,EAAAA,KAAA,KAAAE,SAAK5uB,EAAKqB,UAAU,cAAD1M,OAAeqlD,OAF7BA,EAGF,YAOnB,IAAC,CAvDsB,CAASrrB,EAAAA,e,YLIlC,SAASurB,EAAU9pD,GACjB,OAAO2F,IAAAA,YAAc3F,IAAU2F,IAAAA,OAAS3F,IAAU2F,IAAAA,MAAQ3F,EAC5D,CAEA,IAAM+pD,GAAe,CACnBC,sBAAuB,EACvBC,sBAAuB,GAGnBC,GAAa,CACjBC,QAAO,SAACnqD,GACN,OAAI8pD,EAAU9pD,GACL,KAEF4P,EAAKw6C,kBAAgB9oD,EAAAA,EAAAA,GAAC,CAAC,EACzByoD,IADEn6C,CAEJ5P,EACL,EACAqqD,gBAAe,SAACrqD,GACd,OAAI8pD,EAAU9pD,GACL,KAEF4P,EAAKw6C,kBAAgB9oD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACzByoD,IAAY,IACfO,SAAU,WAFL16C,CAGJ5P,EACL,EACAuqD,QAAO,SAACvqD,GACN,OAAI8pD,EAAU9pD,GACL,MAEF4P,EAAK46C,kBAAgBlpD,EAAAA,EAAAA,GAAC,CAAC,EACzByoD,IADEn6C,CAEJ5P,EACL,EACAyqD,gBAAe,SAACzqD,GACd,OAAI8pD,EAAU9pD,GACL,MAEF4P,EAAK46C,kBAAgBlpD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACzByoD,IAAY,IACfO,SAAU,WAFL16C,CAGJ5P,EACL,GAII0qD,GACK,UADLA,GAEK,UAGLC,GAAa,CACjBr2B,IAAKo2B,GACLhoD,eAAgBgoD,GAChB7nD,kBAAmB6nD,IAGfE,IAAQtmD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACXomD,GAAe,CACdG,YAAaX,GAAWK,QACxBO,mBAAoBZ,GAAWO,gBAC/BM,qBAAsBb,GAAWO,kBAElCC,GAAe,CACdG,YAAaX,GAAWC,QACxBW,mBAAoBZ,GAAWG,gBAC/BU,qBAAsBb,GAAWO,kBAI9B,SAASO,GAAaprD,GAI3B,OAFWgrD,GADED,GAAW/qD,IAAS8qD,GAInC,CM7EA,IAAMO,GAAW,CACfC,MAAO,UACPC,IAAK,UACLC,KAAM,OACNC,MAAO,QAyBF,SAASC,GAAcC,EAAe37C,GAC3C,OAAsB,IAAlB27C,GAEAjtB,EAAAA,EAAAA,KAACktB,EAAAA,eAAc,CACbjW,QAAS,CAAC,QAAS,SACnBpL,UAAU,SACVshB,SACEntB,EAAAA,EAAAA,KAACotB,EAAAA,QAAO,CACNh+C,GAAG,kCAAiC8wB,SAEnC5uB,EAAKqB,UAAU,+CAEnButB,UAEDF,EAAAA,EAAAA,KAAA,QAAAE,SAAM,QAKL,IACT,CAEO,IAAMmtB,GAAgB,SAAA3tB,GAAA,SAAA2tB,IAAA,OAAA/wC,EAAAA,EAAAA,GAAA,KAAA+wC,IAAA/tC,EAAAA,EAAAA,GAAA,KAAA+tC,EAAAvoD,UAAA,QAAA2a,EAAAA,EAAAA,GAAA4tC,EAAA3tB,IAAArjB,EAAAA,EAAAA,GAAAgxC,EAAA,EAAAtpD,IAAA,SAAArC,MAC3B,WACE,IAAAwoD,EAIIrtC,KAAK8iB,MAHPr+B,EAAI4oD,EAAJ5oD,KACAI,EAAKwoD,EAALxoD,MACA4P,EAAI44C,EAAJ54C,KAEFvP,EAKKL,GAAS,CAAC,EAJb4rD,EAAyBvrD,EAAzBurD,0BACAC,EAAmBxrD,EAAnBwrD,oBACAC,EAAazrD,EAAbyrD,cACAC,EAAa1rD,EAAb0rD,cAEFC,EAIIhB,GAAaprD,GAHfirD,EAAWmB,EAAXnB,YACAC,EAAkBkB,EAAlBlB,mBACAC,EAAoBiB,EAApBjB,qBAEI1qB,EA9DH,SAAkBzgC,EAAMI,GAC7B,IAAIqgC,EAEJ,GAAIrgC,EACF,GAAIA,EAAM+rD,cAAe,CACvB,IAAIE,EAAajsD,EAAM4rD,2BAA6B5rD,EAAM6rD,oBAEtDlmD,IAAAA,SAAW,CAAC,MAAO,cAAe/F,KACpCqsD,GAAcA,GAGhB5rB,EAAQ4rB,EAAa,QAAU,KACjC,MACE5rB,EAAQ,YAGVA,EAAQ,QAGV,OAAO4qB,GAAS5qB,EAClB,CA0CkB6rB,CAAStsD,EAAMI,GAE7B,OACE2kC,EAAAA,EAAAA,MAAA,MAAI3B,UAAU,aAAakF,MAAO,CAAE7H,MAAAA,EAAOqpB,SAAU,QAASlrB,SAAA,EAC5DF,EAAAA,EAAAA,KAAA,OAAAE,UACEF,EAAAA,EAAAA,KAACwqB,EAAc,CAAAtqB,SACZqsB,EAAYe,QAGjBjnB,EAAAA,EAAAA,MAAA,OACEuD,MAAO,CACLxG,SAAU,OACVL,UAAW,OACX7C,SAAA,CAEDusB,EAAqBe,EAAgB,KACrC,KACAhB,EAAmBc,EAA4BC,GAC/C,IACAP,GAAcS,EAAen8C,QAItC,IAAC,CAzC0B,CAAS2uB,EAAAA,eAyDtCotB,GAAiBxsB,aAAe,CAC9Bn/B,MAAO,MC9GF,IAAMmsD,GAAc,SAAAnuB,GAAA,SAAAmuB,IAAA,OAAAvxC,EAAAA,EAAAA,GAAA,KAAAuxC,IAAAvuC,EAAAA,EAAAA,GAAA,KAAAuuC,EAAA/oD,UAAA,QAAA2a,EAAAA,EAAAA,GAAAouC,EAAAnuB,IAAArjB,EAAAA,EAAAA,GAAAwxC,EAAA,EAAA9pD,IAAA,SAAArC,MACzB,WACE,IAAAwoD,EAAwBrtC,KAAK8iB,MAArBr+B,EAAI4oD,EAAJ5oD,KAENisD,GAFiBrD,EAALxoD,OAGA,CAAC,GADb6rD,oBAGAhB,EACEG,GAAaprD,GADfirD,YAGF,OACEvsB,EAAAA,EAAAA,KAAA,MACE0E,UAAU,aACVkF,MAAO,CACLpI,WAAY,QACZtB,UAEFF,EAAAA,EAAAA,KAACyqB,EAAY,CAAAvqB,SACVqsB,EAAYgB,MAIrB,IAAC,CAtBwB,CAASttB,EAAAA,eCGpC,SAAS6tB,GAAsBnuB,GAC7B,IAAQouB,EAAWpuB,EAAXouB,OACFC,EAAc3mD,IAAAA,WAAaA,IAAAA,KAAO0mD,GAAS,CAAC,sBAAuB,oBAAqB,gBAG9F,MAAO,CAAEC,YAAAA,EAAaC,MAFR5mD,IAAAA,MAAQ2mD,GAEOD,OAAAA,EAC/B,CD0BAF,GAAehtB,aAAe,CAC5Bn/B,MAAO,MCzBF,IAAMwsD,GAAe,SAAA5mB,GAC1B,SAAA4mB,EAAYvuB,GAAQ,IAADxgB,EAEyB,OAFzB7C,EAAAA,EAAAA,GAAA,KAAA4xC,IACjB/uC,GAAAG,EAAAA,EAAAA,GAAA,KAAA4uC,EAAA,CAAMvuB,KACDlW,MAAQqkC,GAAsBnuB,GAAOxgB,CAC5C,CAAC,OAAAM,EAAAA,EAAAA,GAAAyuC,EAAA5mB,IAAAjrB,EAAAA,EAAAA,GAAA6xC,EAAA,EAAAnqD,IAAA,eAAArC,MASD,SAAa4pD,EAAQxwC,GACnB,IAAMmzC,EAAQ5mD,IAAAA,MAAQwV,KAAK4M,MAAMwkC,OAEjCA,EAAMnzC,GAASwwC,EAEfzuC,KAAKusB,SAAS,CAAE6kB,MAAAA,GAClB,GAAC,CAAAlqD,IAAA,SAAArC,MAED,WAAU,IAADgoB,EAAA,KACPwgC,EAAyBrtC,KAAK8iB,MAAtBruB,EAAI44C,EAAJ54C,KAAMy8C,EAAM7D,EAAN6D,OACdI,EAA+BtxC,KAAK4M,MAA5BukC,EAAWG,EAAXH,YAAaC,EAAKE,EAALF,MAEfG,EAAiB/mD,IAAAA,MAAQ4mD,EAAO,GAEtC,OACEjuB,EAAAA,EAAAA,KAAA,SACE4J,MAAO,CACLnI,QAAS,eACTmpB,eAAgB,WAChBC,cAAe,YACf9nB,WAAY,GACZI,YAAa,EACb2nB,cAAe,UACf5qB,UAEFmG,EAAAA,EAAAA,MAAA,SAAAnG,SAAA,EACEF,EAAAA,EAAAA,KAAA,MAAAE,SACGkuB,EAAejtD,KAAI,SAACmqD,EAAQxwC,GAAK,OAChCklB,EAAAA,EAAAA,KAACgrB,EAAY,CAEXlwC,MAAOA,EACPxJ,KAAMA,EACN25C,SAAUK,EACVJ,OAAQ7jD,IAAAA,WAAa2mD,EAAa,CAAC1C,IACnCH,OAAQ,SAAAkD,GAAY,OAAI3kC,EAAK4kC,aAAaD,EAAcvzC,EAAM,GAAC,MAAA7U,OALpD6U,GAMX,OAGNklB,EAAAA,EAAAA,KAAA,MAAAE,SACGkuB,EAAejtD,KAAI,SAACmqD,EAAQxwC,GAAK,OAChCklB,EAAAA,EAAAA,KAACqtB,GAAgB,CAAqB/rD,KAAMgqD,EAAQ5pD,MAAOqsD,EAAOzC,GAASh6C,KAAMA,GAAK,MAAArL,OAAzD6U,GAA4D,OAG7FklB,EAAAA,EAAAA,KAAA,MAAAE,SACGkuB,EAAejtD,KAAI,SAACmqD,EAAQxwC,GAAK,OAChCklB,EAAAA,EAAAA,KAAC6tB,GAAc,CAAqBvsD,KAAMgqD,EAAQ5pD,MAAOqsD,EAAOzC,GAASh6C,KAAMA,GAAK,MAAArL,OAAzD6U,GAA4D,UAMnG,IAAC,EAAA/W,IAAA,2BAAArC,MA1DD,SAAgC6sD,EAAWC,GACzC,OAAID,EAAUR,SAAWS,EAAUT,OAC1BD,GAAsBS,GAExB,IACT,IAAC,CAXyB,CAAStuB,EAAAA,WCf9B,SAASwuB,KACd,OACEzuB,EAAAA,EAAAA,KAAA,OAAK4J,MAAO,CACV9G,MAAO,MACPzB,OAAQ,QACRW,gBAAiB,UACjBP,QAAS,eACTqpB,cAAe,WAIrB,C,iBCVa4D,GAA0B,SAAH3sD,GAAA,IAAAo/B,EAAAp/B,EAAMk/B,QAAAA,OAAO,IAAAE,EAAG,CAAC,EAACA,EAAAp/B,EAAE4sD,eAAoC,MAAQ,CAClG,qBAAsB,CACpBC,OAAO,GAAD3oD,OAAK4oD,GAAAA,UAAUC,sBAAsBC,cAAa,eACxD/sB,gBAAiB,sBAEnB,yBAA0B,CACxB,uBAAwB,CACtBmC,WAAY,eAEd,qCAAsC,CACpC,UAAW,CACTmG,QAAQ,aAADrkC,OAAeg7B,EAAQ+tB,qBAC9BC,UAAU,mBAADhpD,OAAqBg7B,EAAQqB,kBACtC4sB,cAAe,EACfrtB,OAAO,aAAD57B,OAAeg7B,EAAQmB,SAGjC,+BAAgC,CAC9B+sB,KAAM,iBACNrsB,MAAO,gBAGX,mEAAoE,CAClE,wBAAyB,CACvBiB,SAAU,YAEZ,qBAAsB,CACpBb,aAAc,GACd,gBAAiB,CACfA,aAAc,MAIrB,ECpBKyjB,GAAU,CACdyI,wCAAyC3wC,mIACzC4wC,0CAA2C5wC,yGAC3C6wC,2BAA4B7wC,QAC5B8wC,gCAAiC9wC,aACjC+wC,8BAA+B/wC,oBAC/BgxC,iDAAkDhxC,qDAClDixC,uBAAwBjxC,QACxBkxC,kBAAmBlxC,SACnBmxC,eAAgBnxC,MAChBoxC,iBAAkBpxC,QAClBqxC,sBAAuBrxC,WACvBsxC,2BAA4BtxC,WAC5BuxC,uBAAwBvxC,mBACxBwxC,eAAgBxxC,MAChByxC,0BAA2BzxC,kBAC3B0xC,2BAA4B1xC,UAC5B2xC,eAAgB3xC,qBAChB4xC,0BAA2B5xC,YAC3B6xC,4BAA6B7xC,gBAC7B8xC,6BAA8B9xC,iBAC9B+xC,8BAA+B/xC,oBAC/BgyC,4BAA6BhyC,+BAC7BiyC,sBAAuBjyC,kBACvBkyC,oBAAqBlyC,WACrBmyC,iBAAkBnyC,QAClBoyC,kBAAmBpyC,SACnBqyC,qBAAsBryC,aACtBsyC,mBAAoBtyC,WACpBuyC,mBAAoBvyC,UACpBwyC,6BAA8BxyC,iBAC9ByyC,qCAAsCzyC,sBACtC,0DAA2DA,2DA8B7D,IAOM0yC,GAAmB,SAAAzxB,GACvB,SAAAyxB,EAAYxxB,GAAQ,IAADxgB,EXlFUiyC,GWkFV90C,EAAAA,EAAAA,GAAA,KAAA60C,IACjBhyC,GAAAG,EAAAA,EAAAA,GAAA,KAAA6xC,EAAA,CAAMxxB,KAEDruB,MAAO63C,EAAAA,EAAAA,IAAgBhqC,EAAKwgB,MAAMruB,KAAM,CAACq1C,KXrFnByK,EWuFZ,CAAE9/C,KAAM6N,EAAK7N,MXtF3BA,EAAS8/C,EAAT9/C,KWuFD6N,EAAKkyC,2BAzCT,SAAuChrD,GACrC,IAAQ0B,EAA0C1B,EAA1C0B,sCAER,OAAOvG,EAAAA,EAAAA,SAAQ,CACb,sBACA,oBACA,cACA,SACA,MACA,QACA,aAEAuG,GAAyC,oBACzCA,GAAyC,4BACzC,cACA,MACA,iBACA,kBACA,MACA,iBACA,mBACA,oBACA,qBACA,oBAEJ,CAgBsCupD,CAA8BnyC,EAAKwgB,MAAMt5B,aAE3E,IAAMkrD,EAAsBpyC,EAAKwgB,MAAM6xB,eAAjCD,kBA+BH,OA7BCA,EACFA,GAAoBxqD,EAAAA,EAAAA,MAAKwqD,EAAmBpyC,EAAKkyC,6BAGjDlyC,EAAKkyC,4BAA6BI,EAAAA,EAAAA,QAAOtyC,EAAKkyC,4BAA4B,SAAA/F,GAAM,MAAe,wBAAXA,GAA+C,sBAAXA,CAA8B,IAEtJiG,GAAoBG,EAAAA,EAAAA,QAClBvyC,EAAKkyC,4BACL,SAACzN,EAAMx6C,GAAQ,OAAApG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACV4gD,GAAI,IAAA59C,EAAAA,EAAAA,GAAA,GACNoD,EAAW,MAAI,GAElB,CACEuoD,oBAAqBxyC,EAAKwgB,MAAMiyB,WAAWC,eAC3CC,kBAAmB3yC,EAAKwgB,MAAMiyB,WAAWG,gBAK/C5yC,EAAK6f,MAAIh8B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACJmc,EAAKwgB,MAAM6xB,gBAAc,IAC5BD,kBAAAA,IAGFpyC,EAAK6yC,kBAAoB,IAAIrK,EAAkB,CAC7CM,iBAAkB9oC,EAAK6f,KACvB1tB,KAAM6N,EAAKwgB,MAAMruB,KACjBoI,MAAOyF,EAAKwgB,MAAMjmB,MAClByuC,eAAgBhpC,EAAKwgB,MAAMwoB,iBAC1BhpC,CACL,CAAC,OAAAM,EAAAA,EAAAA,GAAA0xC,EAAAzxB,IAAArjB,EAAAA,EAAAA,GAAA80C,EAAA,EAAAptD,IAAA,SAAArC,MAED,WACE,IAAMqsD,EAAS3mD,EAAAA,IAAUyV,KAAKmiB,KAAM,oBAAqB,CAAC,GAGpDizB,EADuBp1C,KAAK8iB,MAAMt5B,YAAY6rD,oCAElDr1C,KAAKmiB,MAAQniB,KAAKmiB,KAAKmzB,gBjBdtB,SAAyCnN,EAAWoN,GACzD,GAAIpN,GAAgC,gBAAnBoN,EAAkC,CACjD,IAAMC,EAAe,IAAIviB,KAEzB,OADAuiB,EAAaC,SAASD,EAAaE,WAAa,GACzCvN,GAAaqN,CACtB,CAEA,OAAO,CACT,CiBOMG,CACE31C,KAAK8iB,MAAMiyB,WAAW3M,MACtBpoC,KAAKmiB,KAAKmzB,gBAGd,OACEt1C,KAAKmiB,OACHqH,EAAAA,EAAAA,MAAA,OACE3B,UAAU,wBACVkF,MAAO,CACLnI,QAAS,OACTC,cAAe,SACf4B,SAAU,OACVmvB,SAAU,IACVxvB,WAAY,GACZE,YAAa,GACbnB,gBAAiB,QACjB9B,SAAA,EAEFmG,EAAAA,EAAAA,MAAA,OACEuD,MAAO,CACLnI,QAAS,eACTqB,MAAO,IACPuoB,QAAS,GACTqH,cAAe,EACfC,WAAY,IACZzyB,SAAA,EAEFF,EAAAA,EAAAA,KAAA,OACE4J,MAAO,CACLgpB,MAAO,QACP1yB,UAEFF,EAAAA,EAAAA,KAACrT,EAAK,CACJrb,KAAMuL,KAAKvL,KACXm0C,oBAAqB5oC,KAAK8iB,MAAMiyB,WAAW3M,MAC3CS,kBAAmB7oC,KAAK8iB,MAAMiyB,WAAWzM,IACzCQ,oBAAqB9oC,KAAKmiB,KAAK1b,UAC/BsiC,kBAAmB/oC,KAAKmiB,KAAKzb,QAC7BukB,cAAejrB,KAAK8iB,MAAMmI,mBAG9B9H,EAAAA,EAAAA,KAAA,OACE4J,MAAO,CACLgpB,MAAO,QACPzvB,YAAa,KACbjD,UAEFF,EAAAA,EAAAA,KAACyW,EAAAA,wBAAuB,CAACC,SAAU75B,KAAKm1C,0BAG5C3rB,EAAAA,EAAAA,MAAA,OAAKuD,MAAO,CACVnG,WAAY,SACZ5B,OAAQ,iBACRa,WAAY,OACZmH,YAAa,OACbuhB,SAAU,IACVrnB,SAAU,YACV7D,SAAA,EAEAF,EAAAA,EAAAA,KAAC0qB,EAAe,CACdp5C,KAAMuL,KAAKvL,KACXq5C,iBAAkB9tC,KAAK8iB,MAAMmI,cAAc6iB,iBAC3C3rB,KAAMniB,KAAKmiB,QAEbgB,EAAAA,EAAAA,KAACyuB,GAAM,KACPzuB,EAAAA,EAAAA,KAACkuB,GAAe,CAAC58C,KAAMuL,KAAKvL,KAAMy8C,OAAQA,IACzCkE,IACCjyB,EAAAA,EAAAA,KAAA,OACE4J,MAAO,CACL7G,WAAY,EACZpB,YAAa,OACbyB,SAAU,OACVrB,MAAO,WACP7B,SAEDrjB,KAAKvL,KAAKqB,UAAU,kDAOnC,IAAC,CApIsB,CAASstB,EAAAA,eAkKrB4yB,IAAuB/xB,EAAAA,EAAAA,mBAAkBqwB,IAzKzB,SAAC9pD,EAACtF,GAAA,IAAAo/B,EAAAp/B,EAAIk/B,QAAAA,OAAO,IAAAE,EAAG,CAAC,EAACA,EAAA,OAAO1N,EAAAA,EAAAA,QAAO,CAC3D,UAAW5D,OAAOC,OAChB,CAAC,EACD4+B,GAAwB,CAAEztB,QAAAA,MAE3B,IC9EUtU,GAAK,SAAA+S,GAAA,SAAA/S,IAAA,OAAArQ,EAAAA,EAAAA,GAAA,KAAAqQ,IAAArN,EAAAA,EAAAA,GAAA,KAAAqN,EAAA7nB,UAAA,QAAA2a,EAAAA,EAAAA,GAAAkN,EAAA+S,IAAArjB,EAAAA,EAAAA,GAAAsQ,EAAA,EAAA5oB,IAAA,SAAArC,MAChB,WACE,IAAAwoD,EAOIrtC,KAAK8iB,MANPruB,EAAI44C,EAAJ54C,KASF64C,EAAuB3E,EAAuC,CAC5DC,oBATmByE,EAAnBzE,oBAUAC,kBATiBwE,EAAjBxE,kBAUAC,oBATmBuE,EAAnBvE,oBAUAC,kBATiBsE,EAAjBtE,kBAUArB,UANe,EAOfC,YAVW0F,EAAX1F,cAIMS,EAAKkF,EAALlF,MAAOE,EAAGgF,EAAHhF,IASf,OACE9e,EAAAA,EAAAA,MAAA,OACEuD,MAAO,CACLyhB,QAAS,OACTqH,cAAe,GACfxyB,SAAA,CAED5uB,EAAKqB,UAAU,mDAAoD,CAAEsyC,MAAAA,EAAOE,IAAAA,KAC7EnlB,EAAAA,EAAAA,KAACoqB,EAAAA,UAAS,CAACC,MAAM,kDAGvB,IAAC,CAhCe,CAASpqB,EAAAA,eAmC3BtT,GAAMkU,aAAe,CACnB8kB,oBAAqB,KACrBC,kBAAmB,MCnCW3lB,EAAAA,cCEhC,SAAS6tB,GAAsBnuB,GAC7B,IAAQouB,EAAWpuB,EAAXouB,OACFC,EAAc3mD,IAAAA,WAAaA,IAAAA,KAAO0mD,GAAS,CAAC,sBAAuB,oBAAqB,gBAG9F,MAAO,CAAEC,YAAAA,EAAaC,MAFR5mD,IAAAA,MAAQ2mD,GAEOD,OAAAA,EAC/B,CAEqC9tB,EAAAA,S,yBCjBrC,IAAI6yB,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAA4kB,OAAxkB,SAAUI,GAAQF,EAAWA,EAAW,iCAAqDL,EAAIQ,KAAK,QAASR,EAAI/yB,QAAQ,CAAC,CAAC,oBAAqC,aAAhBszB,EAAM/4C,MAAuB,kBAAoB,wBAAyB,EAAC,KAAQ,GAAO,GAAS,oFAAuHw4C,EAAIS,OAAO,OAASL,EAAaG,EAAMt1C,MAAQ,GAAKm1C,GAAe,eAA8C,EAAE/P,KAAKtmC,KAAK,UAAWu2C,EAAgBA,EAAgBC,MAAqB,qBAARA,MAAoBA,WAAMruD,GAAoBmuD,CAAS,C,yBCFzsB,IAAIL,EAAM,EAAQ,QA0BlBC,EAAOC,QAxBP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAuB8Y,OAvB1Y,SAAU3hD,EAAMyhC,GAAaogB,EAAWA,EAAW,mFAA6G,OAASD,EAAa5hD,EAAKqB,UAAU,2CAA6C,GAAKugD,GAA/MC,6CAAqTL,EAAIQ,KAAK,QAASR,EAAIlpB,MAAM,sBAAwBmJ,EAAWhuC,OAAS,EAAI,sBAAwB,MAAM,GAAM,GAAS,IAEtkB,WACC,IAAIyuD,EAAQzgB,EACZ,GAAI,iBAAmBygB,EAAMzuD,OACzB,IAAK,IAAI0uD,EAAa,EAAGC,EAAMF,EAAMzuD,OAAQ0uD,EAAaC,EAAKD,IAAc,CAC3E,IAAI1W,EAAYyW,EAAMC,GAC1BnyD,EAAOgQ,EAAKqB,UAAU,gBAAkBoqC,EAAUz7C,MAClDq5C,EAAuBoC,EAAUpM,KAAO,YAAYoM,EAAUpM,mEAAmErvC,QAAa,gEAAgEA,QAClN6xD,EAAWA,uEAAyGL,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,qCAAqC,GAAM,GAAMmgD,EAAIQ,KAAK,aAAchiD,EAAKqB,UAAU,qCAAqC,GAAM,GAA5QwgD,gIAAgc,OAASD,EAAavY,GAAwB,GAAKuY,GAAc,eACtgB,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI3W,EAAYyW,EAAMC,GACxBnyD,EAAOgQ,EAAKqB,UAAU,gBAAkBoqC,EAAUz7C,MAClDq5C,EAAuBoC,EAAUpM,KAAO,YAAYoM,EAAUpM,mEAAmErvC,QAAa,gEAAgEA,QAClN6xD,EAAWA,uEAAyGL,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,qCAAqC,GAAM,GAAMmgD,EAAIQ,KAAK,aAAchiD,EAAKqB,UAAU,qCAAqC,GAAM,GAA5QwgD,gIAAgc,OAASD,EAAavY,GAAwB,GAAKuY,GAAc,eACxgB,CACF,CACD,EAAE/P,KAAKtmC,MAERs2C,EAAWA,EAAW,qEAA8G,OAASD,EAAa5hD,EAAKqB,UAAU,wDAA0D,GAAKugD,GAAc,eAA8C,EAAE/P,KAAKtmC,KAAK,SAAUu2C,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,EAAU,eAAgBouD,EAAgBA,EAAgBrgB,WAA+B,qBAAbA,WAAyBA,gBAAW/tC,GAAoBmuD,CAAS,C,yBCzB3gB,IAAIL,EAAM,EAAQ,QA+GlBC,EAAOC,QA7GP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EA4G8wC,OA5G1wC,SAAU/U,EAAkBF,EAAQ1sC,EAAMirC,EAAsB0B,EAAqBzC,EAAiCsC,EAAe3C,EAASmB,EAA0B/sC,GAAQ4jD,EAAWA,EAAW,qEAAyG,OAASD,EAAa3jD,GAAS,GAAK2jD,GAAc,2CAEjd,WACC,IAAIM,EAAQrY,EACZ,GAAI,iBAAmBqY,EAAMzuD,OACzB,IAAK,IAAI0uD,EAAa,EAAGC,EAAMF,EAAMzuD,OAAQ0uD,EAAaC,EAAKD,IAAc,CAC3E,IAAIE,EAAkBH,EAAMC,GACpCN,GAAsB,iCAOtBA,GALAA,GADI,EACkB,+CAGA,6CAEA,4BAA0C,OAASD,EAAaS,EAAgB5W,WAAa,GAAKmW,GAAc,UAClI,IACJC,EAAWA,EAAW,kEAA6FL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,wBAA0B,GAAKugD,GAAe,uCAAqEJ,EAAIS,OAAO,OAASL,EAAaS,EAAgBjW,eAAiB,GAAKwV,GAAe,wCAAsEJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,wBAA0B,GAAKugD,GAAe,uCAAqEJ,EAAIS,OAAO,OAASL,EAAaS,EAAgB/V,eAAiB,GAAKsV,GAAe,iBAE3qBC,GAAsB,aAClBQ,EAAgB3Z,YACpBmZ,EAAWA,EAAW,cAAoC,OAASD,EAAaS,EAAgB3Z,WAAa,GAAKkZ,GAAc,gBAE1HjV,IACNkV,EAAWA,EAAW,cAAoC,OAASD,EAAaS,EAAgBxW,kBAAoB,GAAK+V,GAAc,UAClI3W,GAAwBoX,EAAgB7W,WAAa6W,EAAgB7W,UAAU/3C,OAAS,IAC7FouD,EAAWA,yFAAsHL,EAAIQ,KAAK,aAAcpV,GAAkB,GAAM,GAAS,qCAExL,WACC,IAAIsV,EAAQG,EAAgB7W,UAC5B,GAAI,iBAAmB0W,EAAMzuD,OACzB,IAAK,IAAI6uD,EAAa,EAAGF,EAAMF,EAAMzuD,OAAQ6uD,EAAaF,EAAKE,IAAc,CAC3E,IAAIrW,EAAUiW,EAAMI,GAC5BT,EAAWA,EAAW,SAAqB,OAASD,EAAa3V,GAAW,GAAK2V,GAAc,QACzF,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACInW,EAAUiW,EAAMI,GAC1BT,EAAWA,EAAW,SAAqB,OAASD,EAAa3V,GAAW,GAAK2V,GAAc,QAC3F,CACF,CACD,EAAE/P,KAAKtmC,MAERs2C,GAAsB,UAEtBA,GAAsB,SAEtBA,GAAsB,OAChB,KACG,CACDO,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACIC,EAAkBH,EAAMC,GAClCN,GAAsB,iCAOtBA,GALAA,GADI,EACkB,+CAGA,6CAEA,4BAA0C,OAASD,EAAaS,EAAgB5W,WAAa,GAAKmW,GAAc,UAClI,IACJC,EAAWA,EAAW,kEAA6FL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,wBAA0B,GAAKugD,GAAe,uCAAqEJ,EAAIS,OAAO,OAASL,EAAaS,EAAgBjW,eAAiB,GAAKwV,GAAe,wCAAsEJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,wBAA0B,GAAKugD,GAAe,uCAAqEJ,EAAIS,OAAO,OAASL,EAAaS,EAAgB/V,eAAiB,GAAKsV,GAAe,iBAE3qBC,GAAsB,aAClBQ,EAAgB3Z,YACpBmZ,EAAWA,EAAW,cAAoC,OAASD,EAAaS,EAAgB3Z,WAAa,GAAKkZ,GAAc,gBAE1HjV,IACNkV,EAAWA,EAAW,cAAoC,OAASD,EAAaS,EAAgBxW,kBAAoB,GAAK+V,GAAc,UAClI3W,GAAwBoX,EAAgB7W,WAAa6W,EAAgB7W,UAAU/3C,OAAS,IAC7FouD,EAAWA,yFAAsHL,EAAIQ,KAAK,aAAcpV,GAAkB,GAAM,GAAS,qCAExL,WACC,IAAIsV,EAAQG,EAAgB7W,UAC5B,GAAI,iBAAmB0W,EAAMzuD,OACzB,IAAK,IAAI8uD,EAAa,EAAGH,EAAMF,EAAMzuD,OAAQ8uD,EAAaH,EAAKG,IAAc,CAC3E,IAAItW,EAAUiW,EAAMK,GAC5BV,EAAWA,EAAW,SAAqB,OAASD,EAAa3V,GAAW,GAAK2V,GAAc,QACzF,KACG,CACDQ,EAAM,EACV,IAAK,IAAIG,KAAcL,EAAO,CAC5BE,IACInW,EAAUiW,EAAMK,GAC1BV,EAAWA,EAAW,SAAqB,OAASD,EAAa3V,GAAW,GAAK2V,GAAc,QAC3F,CACF,CACD,EAAE/P,KAAKtmC,MAERs2C,GAAsB,UAEtBA,GAAsB,SAEtBA,GAAsB,OAClB,CACF,CACD,EAAEhQ,KAAKtmC,MAERs2C,GAAsB,6BAEtBA,EADI,EACOA,EAAW,UAAsB,OAASD,EAAalV,EAAOrD,sBAAwB,GAAKuY,GAAc,iBAA4C,OAASA,EAAa,OAAS,GAAKA,GAAc,iBAA4C,OAASA,EAAalV,EAAOnD,iCAAmC,GAAKqY,GAAc,iBAA4C,OAASA,EAAalV,EAAOnD,gCAAkC,MAAQ,IAAM,GAAKqY,GAAc,gFAAkHJ,EAAIS,OAAO,OAASL,EAAalV,EAAOlD,UAAY,GAAKoY,GAAe,OAG5oBC,EAAW,UAAsB,OAASD,EAAalV,EAAOhD,oBAAsB,GAAKkY,GAAc,iBAA4C,OAASA,EAAa,KAAO,GAAKA,GAAc,iBAA4C,OAASA,EAAalV,EAAO/C,mBAAqB,GAAKiY,GAAc,UAE/TC,GAAsB,oBAAkE,EAAEhQ,KAAKtmC,KAAK,qBAAsBu2C,EAAgBA,EAAgBlV,iBAA2C,qBAAnBA,iBAA+BA,sBAAiBl5C,EAAU,WAAYouD,EAAgBA,EAAgBpV,OAAuB,qBAATA,OAAqBA,YAAOh5C,EAAU,SAAUouD,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,EAAU,yBAA0BouD,EAAgBA,EAAgB7W,qBAAmD,qBAAvBA,qBAAmCA,0BAAqBv3C,EAAU,wBAAyBouD,EAAgBA,EAAgBnV,oBAAiD,qBAAtBA,oBAAkCA,yBAAoBj5C,EAAU,oCAAqCouD,EAAgBA,EAAgB5X,gCAAyE,qBAAlCA,gCAA8CA,qCAAgCx2C,EAAU,kBAAmBouD,EAAgBA,EAAgBtV,cAAqC,qBAAhBA,cAA4BA,mBAAc94C,EAAU,YAAaouD,EAAgBA,EAAgBjY,QAAyB,qBAAVA,QAAsBA,aAAQn2C,EAAU,6BAA8BouD,EAAgBA,EAAgB9W,yBAA2D,qBAA3BA,yBAAuCA,8BAAyBt3C,EAAU,UAAWouD,EAAgBA,EAAgB7jD,MAAqB,qBAARA,MAAoBA,WAAMvK,GAAoBmuD,CAAS,C,yBC9G34C,IAAIL,EAAM,EAAQ,QAiBlBC,EAAOC,QAfP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAIW,EAAa,CAAC,EAAmBV,EAAmBH,GAAU,CAAC,EAcuxB,OAdnxB,SAAU1e,EAAsBG,EAAYR,EAAgBO,EAAcnjC,EAAMsgC,EAAeuG,GAAyB2b,EAA2B,eAAIZ,EAAa,WACxQr2C,MAAQA,KAAKk3C,MAAsBl3C,MAAQA,KAAKm3C,WAC7Db,EAAWA,EAAW,SAAgCL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,0BAA4B4hC,EAAqBz1B,SAAW,GAAKo0C,GAAe,sBAAqFJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,wCAA0C,GAAKugD,GAAe,OAAyBJ,EAAIS,OAAO,OAASL,EAAa,KAAO,GAAKA,GAAgBJ,EAAIS,OAAO,OAASL,EAAaze,EAAa/E,aAAa6E,EAAqBjxB,YAAc,GAAK4vC,GAAe,iBAAuDJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,sCAAwC,GAAKugD,GAAe,OAAyBJ,EAAIS,OAAO,OAASL,EAAa,KAAO,GAAKA,GAAgBJ,EAAIS,OAAO,OAASL,EAAaze,EAAa/E,aAAa6E,EAAqBhxB,UAAY,GAAK2vC,GAAe,qBAA0EJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,oCAAsC,GAAKugD,GAAe,OAAyBJ,EAAIS,OAAO,OAASL,EAAa,KAAO,GAAKA,GAAgBJ,EAAIS,OAAO,OAASL,EAAa3e,EAAqBwW,qBAAuB,GAAKmI,GAAgBJ,EAAIS,OAAO,OAASL,EAAathB,GAAiB,GAAKshB,GAAe,QAC51C,EACwB,mBAAnBhf,EACL4f,EAA2B,iBAGtB3b,EAAuBxpC,QAAQulC,IAAmB,GACvDif,EAAWA,EAAW,MAAmBL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,6BAA+BuhC,IAAmB,GAAKgf,GAAe,WAC/JY,EAA2B,kBAG3BX,GAAuB,OAASD,EAAa5hD,EAAKqB,UAAU,6BAA+BuhC,IAAmB5iC,EAAKqB,UAAU,0BAA0BuhC,IAAkB,CAACQ,WAAYA,KAAgB,GAAKwe,CAC1M,EAAE/P,KAAKtmC,KAAK,yBAA0Bu2C,EAAgBA,EAAgB7e,qBAAmD,qBAAvBA,qBAAmCA,0BAAqBvvC,EAAU,eAAgBouD,EAAgBA,EAAgB1e,WAA+B,qBAAbA,WAAyBA,gBAAW1vC,EAAU,mBAAoBouD,EAAgBA,EAAgBlf,eAAuC,qBAAjBA,eAA6BA,oBAAelvC,EAAU,iBAAkBouD,EAAgBA,EAAgB3e,aAAmC,qBAAfA,aAA2BA,kBAAazvC,EAAU,SAAUouD,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,EAAU,kBAAmBouD,EAAgBA,EAAgBxhB,cAAqC,qBAAhBA,cAA4BA,mBAAc5sC,EAAU,2BAA4BouD,EAAgBA,EAAgBjb,uBAAuD,qBAAzBA,uBAAqCA,4BAAuBnzC,GAAoBmuD,CAAS,C,yBChBp5B,IAAIL,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAmU,OAA/T,SAAU3hD,GAAO6hD,EAAWA,EAAW,wCAAuDL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,2BAA6B,GAAKugD,GAAe,SAAyB,EAAE/P,KAAKtmC,KAAK,SAAUu2C,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,GAAoBmuD,CAAS,C,wBCFhc,IAAIL,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAyyB,OAAryB,SAAU/e,EAAgB5iC,GAAO6hD,EAAWA,EAAW,kDAAiEL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,yCAA2C,GAAKugD,GAAe,mDAAiFJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,uCAAuCuhC,IAAiB5iC,EAAKqB,UAAU,uCAAuCrB,EAAKqB,UAAU,wBAA0BuhC,IAAmB,GAAKgf,GAAe,QAAwB,EAAE/P,KAAKtmC,KAAK,mBAAoBu2C,EAAgBA,EAAgBlf,eAAuC,qBAAjBA,eAA6BA,oBAAelvC,EAAU,SAAUouD,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,GAAoBmuD,CAAS,C,wBCFt6B,IAAIL,EAAM,EAAQ,QAUlBC,EAAOC,QARP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAO+b,OAP3b,SAAUve,EAAYR,EAAgB5iC,EAAMyjC,GAAWoe,EAAWA,6BAAmDL,EAAIQ,KAAK,KAAMve,GAAU,GAAM,GAAS,gCAE9Qoe,EADuB,KAAnBjf,EACOif,EAAW,sCAAoD,OAASD,EAAa5hD,EAAKqB,UAAU,2BAA6B,GAAKugD,GAAc,SAGpJC,sCAA4DL,EAAIQ,KAAK,uBAAwBpf,GAAgB,GAAM,GAAS,KAAY,OAASgf,EAAa5hD,EAAKqB,UAAU,0BAA0BuhC,IAAkB,CAACQ,WAAYA,KAAgB,GAAKwe,GAAc,SAEpRC,GAAsB,0BAAuF,EAAEhQ,KAAKtmC,KAAK,eAAgBu2C,EAAgBA,EAAgB1e,WAA+B,qBAAbA,WAAyBA,gBAAW1vC,EAAU,mBAAoBouD,EAAgBA,EAAgBlf,eAAuC,qBAAjBA,eAA6BA,oBAAelvC,EAAU,SAAUouD,EAAgBA,EAAgB9hD,KAAmB,qBAAPA,KAAmBA,UAAKtM,EAAU,aAAcouD,EAAgBA,EAAgBre,SAA2B,qBAAXA,SAAuBA,cAAS/vC,GAAoBmuD,CAAS,C,wBCTljB,EAAQ,QAGlBJ,EAAOC,QADP,SAAkBC,GAAS,IAAIE,EAAW,GAAwH,OAAxFA,GAAsB,qCAAkF,C,yBCFlL,IAAIL,EAAM,EAAQ,QAIlBC,EAAOC,QAFP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAC+rF,OAD3rF,SAAUI,EAAO3nB,GAAO,IAAIp6B,EAAOo6B,EAAKp6B,KACzJ6hD,EAAWA,gKAA8NL,EAAIQ,KAAK,UAAmC,oBAAvBD,EAAM7M,cAAqC,GAAM,GAAS,6FAA8IsM,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,2CAA6C,KAAO,GAAKugD,GAAe,MAAmBJ,EAAIS,OAAO,OAASL,EAAaxnB,EAAK6a,sBAAwB,GAAK2M,GAAe,kGAA0KJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,iDAAiDhD,MAAM,YAAY,IAAM,GAAKujD,GAAe,MAAmBJ,EAAIS,OAAO,OAASL,EAAaxnB,EAAK4a,gBAAkB,GAAK4M,GAAe,OAAyBJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,iDAAiDhD,MAAM,YAAY,IAAM,GAAKujD,GAArsCC,4IAAs7CL,EAAIQ,KAAK,UAAmC,mBAAvBD,EAAM7M,cAAoC,GAAM,GAAS,iFAAkIsM,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,0CAA4C,GAAKugD,GAAe,+FAAuJ,OAASA,EAAa5hD,EAAKqB,UAAU,+CAA+ChD,MAAM,YAAY,IAAM,GAAKujD,GAAc,MAAmBJ,EAAIS,OAAO,OAASL,EAAaxnB,EAAK6a,sBAAwB,GAAK2M,GAAe,QAAyB,OAASA,EAAa5hD,EAAKqB,UAAU,+CAA+ChD,MAAM,YAAY,IAAM,GAAKujD,GAAc,MAAmBJ,EAAIS,OAAO,OAASL,EAAaxnB,EAAK6a,sBAAwB,GAAK2M,GAAe,QAAyB,OAASA,EAAa5hD,EAAKqB,UAAU,+CAA+ChD,MAAM,YAAY,IAAM,GAAKujD,GAAc,2BAAwF,EAAE/P,KAAKtmC,KAAK,UAAWu2C,EAAgBA,EAAgBC,MAAqB,qBAARA,MAAoBA,WAAMruD,EAAU,SAAUouD,EAAgBA,EAAgB1nB,KAAmB,qBAAPA,KAAmBA,UAAK1mC,GAAoBmuD,CAAS,C,yBCH5zF,IAAIL,EAAM,EAAQ,QAIlBC,EAAOC,QAFP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EACg0B,OAD5zB,SAAUvnB,GAAO,IAAIp6B,EAAOo6B,EAAKp6B,KAClJ6hD,EAAWA,EAAW,+GAAwJL,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,qCAAqChD,MAAM,YAAY,IAAM,GAAKujD,GAAe,MAAmBJ,EAAIS,OAAO,OAASL,EAAaxnB,EAAK4a,gBAAkB,GAAK4M,GAAe,OAAyBJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,qCAAqChD,MAAM,YAAY,IAAM,GAAKujD,GAAe,uDAAgHJ,EAAIS,OAAO,OAASL,EAAa5hD,EAAKqB,UAAU,sCAAwC,GAAKugD,GAAe,oBAAkE,EAAE/P,KAAKtmC,KAAK,SAAUu2C,EAAgBA,EAAgB1nB,KAAmB,qBAAPA,KAAmBA,UAAK1mC,GAAoBmuD,CAAS,C,yBCH77B,IAAIL,EAAM,EAAQ,QAQlBC,EAAOC,QANP,SAAkBC,GAAS,IAAIE,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAK0nB,OALtnB,SAAUI,EAAO3nB,GAAO,IAAIp6B,EAAOo6B,EAAKp6B,KACrJ2iD,EAA8B,aAAjBZ,EAAMpgC,QAA0C,mBAAjBogC,EAAMpgC,OAClDihC,EAA8B,cAAjBb,EAAMpgC,QAA2C,aAAjBogC,EAAMpgC,QAA0C,kBAAjBogC,EAAMpgC,OAClFkhC,EAA+B,eAAjBd,EAAMpgC,QAA4C,cAAjBogC,EAAMpgC,QAA2C,mBAAjBogC,EAAMpgC,OACrFmhC,EAA2B,UAAjBf,EAAMpgC,OACpBkgC,EAAWA,kEAA6FL,EAAIQ,KAAK,WAAaW,GAAcC,GAAcC,GAAc,GAAM,GAAMrB,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,uCAAuC,GAAM,GAAvPwgD,0FAAmXL,EAAIQ,KAAK,WAAaW,GAAcC,GAAcC,GAAeC,GAAU,GAAM,GAAMtB,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,sBAAsB,GAAM,GAAS,GAAS,EAAEwwC,KAAKtmC,KAAK,UAAWu2C,EAAgBA,EAAgBC,MAAqB,qBAARA,MAAoBA,WAAMruD,EAAU,SAAUouD,EAAgBA,EAAgB1nB,KAAmB,qBAAPA,KAAmBA,UAAK1mC,GAAoBmuD,CAAS,C,yBCPvvB,IAAIL,EAAM,EAAQ,QAQlBC,EAAOC,QANP,SAAkBC,GAAS,IAAIE,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAK6lB,OALzlB,SAAUI,EAAO3nB,GAAO,IAAIp6B,EAAOo6B,EAAKp6B,KACrJ2iD,EAA8B,aAAjBZ,EAAMpgC,QAA0C,mBAAjBogC,EAAMpgC,OAClDihC,EAA8B,cAAjBb,EAAMpgC,QAA2C,aAAjBogC,EAAMpgC,QAA0C,kBAAjBogC,EAAMpgC,OAClFkhC,EAA+B,eAAjBd,EAAMpgC,QAA4C,cAAjBogC,EAAMpgC,QAA2C,mBAAjBogC,EAAMpgC,OACrFmhC,EAA2B,UAAjBf,EAAMpgC,OACpBkgC,EAAWA,kEAA6FL,EAAIQ,KAAK,WAAaW,GAAcC,GAAcC,GAAc,GAAM,GAAMrB,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,uCAAuC,GAAM,GAAvPwgD,+DAAsVL,EAAIQ,KAAK,WAAaW,GAAcC,GAAcC,GAAeC,GAAU,GAAM,GAAMtB,EAAIQ,KAAK,QAAShiD,EAAKqB,UAAU,sBAAsB,GAAM,GAAS,GAAS,EAAEwwC,KAAKtmC,KAAK,UAAWu2C,EAAgBA,EAAgBC,MAAqB,qBAARA,MAAoBA,WAAMruD,EAAU,SAAUouD,EAAgBA,EAAgB1nB,KAAmB,qBAAPA,KAAmBA,UAAK1mC,GAAoBmuD,CAAS,C","sources":["../../../node_modules/@bingads-webui-campaign/column-conversions/src/column-conversion.js","../../../node_modules/@bingads-webui-campaign/column-conversions/src/partial-conversions.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-entity-schema-for-sov.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-entity-schema-for-custom-column.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-entity-schema-for-removed-performance-metrics.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-entity-schema-for-audiencesov.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-entity-schema-for-pilot-features.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-pop-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-campaign-type-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-delivery-status-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-ad-extension-association-source-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-label-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-auction-insight-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-experiment-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-adsbybing-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-mutiplied-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/base-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-odata-options-for-array-type.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-campaign-languages-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-available-insight-type-ids-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-status-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/campaign-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/adgroup-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-tracking-template-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-final-url-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-final-url-suffix-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-editorial-rejection-reason-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-is-appeal-pending-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/keyword-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-asset-id-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-asset-library-asset-id-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/ad-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-ad-strength-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-ad-resource-status-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/negative-keyword-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/adgroupcriterion-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/experiment-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/asset-link-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/asset-with-bi-data-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/responsive-search-ad-instance-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/base-criterion-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-criterion-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-level-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/daytime-criterion-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/device-criterion-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/location-criterion-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/audiencecriterionwithbi-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/product-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/audience-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/gmbimport-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/search-term-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/util/update-account-inactive-reason-property-for-filter.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/base-accounts-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/performance-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/smart-performance-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/management-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/account-import-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/tag-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/linked-store-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/goal-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/seasonality-adjustment-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/shared-budget-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/shared-budget-campaign-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/site-exclusion-list-account-level-lists-grid-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/site-exclusion-list-customer-level-associations-grid-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/hotel-center-overview-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/portfolio-bid-strategy-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/asset-group-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/pmax-asset-link-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/unified-asset-link-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/schema-processors/app-ads-asset-group-schema-processor.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/filter-config.js","../../../node_modules/@bingads-webui-campaign/competition-auction-insight-preferences/src/consts.js","../../../node_modules/@bingads-webui-campaign/competition-auction-insight-preferences/src/preference.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/mock-data.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/page-menu.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/styles/page-menu-styles.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/styles/uet-tag-item-styles.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/text-span-with-forwarded-ref.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/uet-tags-tree-node-with-tooltip.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/uet-tags-tree-node.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/uet-tags-page-menu.js","../../../node_modules/@bingads-webui-campaign/conversion-tracking-page-menu/src/pages/uet-tags-repository.js","../../../node_modules/@bingads-webui-campaign/custom-column-backbone-wrapper/src/view.js","../../../node_modules/@bingads-webui-campaign/data-source-store/src/index.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/popup-callout.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/constants.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/show-rejection-reasons.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/factory.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/location-Enum-To-String-Mapping.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/show-editorial-reasons.js","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/register-event.js","../../../node_modules/@bingads-webui-campaign/dependency-resolver/src/dependency-resolver.js","../../../node_modules/@bingads-webui-campaign/dqb-grid-datasource-connector/src/grid-chart-datasource.js","../../../node_modules/@bingads-webui-campaign/dqb-grid-datasource-connector/src/index.js","../../../node_modules/@bingads-webui-campaign/dqb-grid-datasource-error-handler/src/index.js","../../../node_modules/@bingads-webui-campaign/entity-name-filter-metadata/src/filter-type.js","../../../node_modules/@bingads-webui-campaign/entity-name-filter-metadata/src/filter-alias.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/shared/utils.js","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/apply.js","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/end.js","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/view-vnext.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/title-vnext.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/label-row.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/shared/format.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/label-column.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/span-experiment.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/span-original.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/table-fixed-vnext.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/metric-picker.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/metric-experiment.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/metric-original.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/table-scrollable-vnext.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/stroke.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/shared/experiment-actions-styles.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/index-vnext.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/title.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/table-fixed.js","../../../node_modules/@bingads-webui-campaign/experiment-score-card/src/views/table-scrollable.js","../../../node_modules/@bingads-webui-campaign/common-grid-config/src/filter/shared/label-name-template.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/editorial-category-template.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/editorial-reason.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/experiment-info.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/no-reason-found-template.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/reason-disabled-template.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/reason-template.pug","../../../node_modules/@bingads-webui-campaign/delivery-status-popup-factory/src/rejection/template.pug","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/apply.pug","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/end.pug","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/template-vnext.pug","../../../node_modules/@bingads-webui-campaign/experiment-actions/src/template.pug"],"sourcesContent":["import { chain, each, map, result, isObject, isString, isArray, isEmpty } from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst buildColumnConversionsMap = columnConversionsMetadata =>\r\n chain(columnConversionsMetadata)\r\n .pairs()\r\n .map(([targetColumnName, { sourceColumnName }]) =>\r\n (sourceColumnName ? [sourceColumnName, targetColumnName] : null))\r\n .compact()\r\n .object()\r\n .value();\r\n\r\nexport const getColumnConversions = columnConfigs =>\r\n chain(columnConfigs)\r\n .map(({ name: targetColumnName, columnConversion }) =>\r\n (columnConversion ? [targetColumnName, columnConversion] : null))\r\n .compact()\r\n .object()\r\n .value();\r\n\r\nexport const buildColumnConversions = (columnConversionsMetadata) => {\r\n const conversionsMap = buildColumnConversionsMap(columnConversionsMetadata);\r\n return {\r\n applyColumnConversions: columnNames =>\r\n map(columnNames, columnName => result(conversionsMap, columnName, columnName)),\r\n };\r\n};\r\n\r\nexport const buildSortingConversions = columnConversionsMetadata => ({\r\n applySortingInfoConversion: ({\r\n sortableHeader: savedSortableHeader,\r\n orderbyInfo: savedOrderbyInfo,\r\n }) => {\r\n const res = {\r\n ...savedSortableHeader ? { sortableHeader: savedSortableHeader } : {},\r\n ...savedOrderbyInfo ? { orderbyInfo: savedOrderbyInfo } : {},\r\n };\r\n\r\n if (isObject(savedSortableHeader) &&\r\n isString(savedSortableHeader.name) &&\r\n !isEmpty(savedSortableHeader.name)) {\r\n const sortableConversionInfo = chain(columnConversionsMetadata)\r\n .pairs()\r\n .find(([, columnConversion]) =>\r\n columnConversion.sourceColumnName === savedSortableHeader.name &&\r\n columnConversion.targetSortableProperty)\r\n .value();\r\n if (sortableConversionInfo) {\r\n const [targetColumnName, { targetSortableProperty, sourceSortableProperty }]\r\n = sortableConversionInfo;\r\n\r\n res.sortableHeader = {\r\n ...savedSortableHeader,\r\n name: targetColumnName,\r\n };\r\n\r\n if (savedOrderbyInfo && isArray(savedOrderbyInfo)) {\r\n const orderbyInfo = cloneDeep(savedOrderbyInfo);\r\n\r\n each(orderbyInfo, (orderByItem) => {\r\n if (orderByItem.key === sourceSortableProperty) {\r\n // eslint-disable-next-line no-param-reassign\r\n orderByItem.key = targetSortableProperty;\r\n }\r\n });\r\n res.orderbyInfo = orderbyInfo;\r\n }\r\n }\r\n }\r\n\r\n return res;\r\n },\r\n});\r\n\r\nexport const buildColumnAndSortingConversions = columnConversionsMetadata => ({\r\n ...buildColumnConversions(columnConversionsMetadata),\r\n ...buildSortingConversions(columnConversionsMetadata),\r\n});\r\n","import { isArray, map, pick, result } from 'underscore';\r\n\r\nexport const partialConversionPairs = {\r\n // Old Property : New Property\r\n Conversions: 'ConversionsCredit',\r\n CPA: 'PartialConversionCPA',\r\n ConversionRate: 'PartialConversionRate',\r\n AllConversionCPA: 'AllPartialConversionCPA',\r\n AllConversions: 'AllConversionsCredit',\r\n AllConversionRate: 'AllPartialConversionRate',\r\n ViewThroughConversionsCPA: 'ViewThroughPartialConversionsCPA',\r\n ViewThroughConversionsRate: 'ViewThroughPartialConversionsRate',\r\n ViewThroughConversions: 'ViewThroughConversionsCredit',\r\n RepeatRate: 'PartialConversionRepeatRate',\r\n};\r\n\r\n// This function is only used to replace the name above\r\n// Please do not use this function for anything else\r\n// And do not extend this function\r\nexport function applyPartialConversionColumnName(permission = {}, names) {\r\n const {\r\n dynamic = {},\r\n } = permission;\r\n\r\n const {\r\n // This function is only used for Partial Conversions and Column Conversion\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n\r\n const usePartialConversions =\r\n IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n if (usePartialConversions) {\r\n if (isArray(names)) {\r\n return map(names, name =>\r\n result(partialConversionPairs, name, name));\r\n }\r\n return result(partialConversionPairs, names, names);\r\n }\r\n return names;\r\n}\r\n\r\nconst ColumnConversionEnabledFeatures = {\r\n summary_tab_campaign: true,\r\n summary_tab_keyword: true,\r\n summary_tab_ad_group: true,\r\n summary_tab_ad: true,\r\n AdExtensionsGrid: true,\r\n DimensionsGrid: true,\r\n PerformanceGrid: true,\r\n};\r\n\r\nconst perfMetricColumnConvertionDef = (sourceColumnName, targetColumnName) => ({\r\n sourceColumnName,\r\n sourceSortableProperty: `PerformanceMetrics/${sourceColumnName}`,\r\n targetSortableProperty: `PerformanceMetrics/${targetColumnName}`,\r\n});\r\nconst perfMetricColumnConvertion = (sourceColumnName, targetColumnName) => ({\r\n [targetColumnName]: perfMetricColumnConvertionDef(sourceColumnName, targetColumnName),\r\n});\r\n\r\nfunction generateColumnConversionMetadataForColumns(columnNames) {\r\n return pick({\r\n ...perfMetricColumnConvertion('CPA', 'PartialConversionCPA'),\r\n ...perfMetricColumnConvertion('PartialConversionCPA', 'CPA'),\r\n ...perfMetricColumnConvertion('Conversions', 'ConversionsCredit'),\r\n ...perfMetricColumnConvertion('ConversionsCredit', 'Conversions'),\r\n ...perfMetricColumnConvertion('ConversionRate', 'PartialConversionRate'),\r\n ...perfMetricColumnConvertion('PartialConversionRate', 'ConversionRate'),\r\n ...perfMetricColumnConvertion('AllConversionCPA', 'AllPartialConversionCPA'),\r\n ...perfMetricColumnConvertion('AllPartialConversionCPA', 'AllConversionCPA'),\r\n ...perfMetricColumnConvertion('AllConversions', 'AllConversionsCredit'),\r\n ...perfMetricColumnConvertion('AllConversionsCredit', 'AllConversions'),\r\n ...perfMetricColumnConvertion('AllConversionRate', 'AllPartialConversionRate'),\r\n ...perfMetricColumnConvertion('AllPartialConversionRate', 'AllConversionRate'),\r\n ...perfMetricColumnConvertion('ViewThroughConversions', 'ViewThroughConversionsCredit'),\r\n ...perfMetricColumnConvertion('ViewThroughConversionsCredit', 'ViewThroughConversions'),\r\n ...perfMetricColumnConvertion('ViewThroughConversionsCPA', 'ViewThroughPartialConversionsCPA'),\r\n ...perfMetricColumnConvertion('ViewThroughPartialConversionsCPA', 'ViewThroughConversionsCPA'),\r\n ...perfMetricColumnConvertion('ViewThroughConversionsRate', 'ViewThroughPartialConversionsRate'),\r\n ...perfMetricColumnConvertion('ViewThroughPartialConversionsRate', 'ViewThroughConversionsRate'),\r\n }, columnNames);\r\n}\r\nfunction generateConversionColumns(permissions, featureName) {\r\n const {\r\n IsViewThroughConversionEnabled,\r\n IsViewThroughConversionsRevenueEnabled,\r\n dynamic = {},\r\n } = permissions;\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n } = dynamic;\r\n\r\n const usePartialConversions = IsPartialConversionsEnabled\r\n && ColumnConversionEnabledFeatures[featureName];\r\n\r\n const rawConversionColumns = [\r\n ...usePartialConversions ? [\r\n 'PartialConversionCPA',\r\n 'ConversionsCredit',\r\n 'PartialConversionRate',\r\n ] : [\r\n 'CPA',\r\n 'Conversions',\r\n 'ConversionRate',\r\n ],\r\n 'AdvertiserReportedRevenue',\r\n 'RevenueOnAdSpend',\r\n\r\n ...usePartialConversions ? [\r\n 'AllPartialConversionCPA',\r\n 'AllConversionsCredit',\r\n 'AllPartialConversionRate',\r\n ] : [\r\n 'AllConversionCPA',\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n ],\r\n\r\n 'AllConversionAdvertiserReportedRevenue',\r\n 'AllConversionRevenueOnAdSpend',\r\n ];\r\n\r\n if (IsViewThroughConversionEnabled && usePartialConversions) {\r\n rawConversionColumns.push('ViewThroughConversionsCredit');\r\n } else if (IsViewThroughConversionEnabled && !usePartialConversions) {\r\n rawConversionColumns.push('ViewThroughConversions');\r\n }\r\n\r\n if (IsViewThroughConversionsRevenueEnabled && usePartialConversions) {\r\n rawConversionColumns.push('ViewThroughConversionsRevenue');\r\n rawConversionColumns.push('ViewThroughPartialConversionsCPA');\r\n rawConversionColumns.push('ViewThroughConversionsReturnOnAdSpend');\r\n rawConversionColumns.push('ViewThroughPartialConversionsRate');\r\n } else if (IsViewThroughConversionsRevenueEnabled && !usePartialConversions) {\r\n rawConversionColumns.push('ViewThroughConversionsRevenue');\r\n rawConversionColumns.push('ViewThroughConversionsCPA');\r\n rawConversionColumns.push('ViewThroughConversionsReturnOnAdSpend');\r\n rawConversionColumns.push('ViewThroughConversionsRate');\r\n }\r\n\r\n return rawConversionColumns;\r\n}\r\n\r\nexport function getColumnsConversionMap(featureName, permissions) {\r\n const biColumnNames = [\r\n ...generateConversionColumns(permissions, featureName),\r\n ];\r\n const columnConversionMetadata = {\r\n ...generateColumnConversionMetadataForColumns(biColumnNames),\r\n };\r\n\r\n return columnConversionMetadata;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\nlet Permissions;\r\n\r\nexport function initialize({\r\n globalConfig,\r\n}) {\r\n Permissions = globalConfig.get('Permissions');\r\n}\r\n\r\nexport function updateEntitySchemaForSOV(originalSchema, copy = true) {\r\n function isFilterable(schemaName, propName) {\r\n let schemaNameWhiteList = [\r\n 'Account',\r\n 'Campaign',\r\n 'AdGroup',\r\n 'Keyword',\r\n 'Time',\r\n // Comment out PortfolioBidStrategy until backend ready.\r\n // 'PortfolioBidStrategy',\r\n 'Budget',\r\n ];\r\n const propNameBlackList = _.compact([\r\n 'AuctionLostToLandingPercent',\r\n 'AuctionLostToAdQualityPercent',\r\n 'AuctionLostToBidPercent',\r\n schemaName === 'DimensionShopping' && 'TopImpressionRate',\r\n schemaName === 'ProductGroup' && 'TopImpressionRate',\r\n ]);\r\n\r\n if (Permissions.IsAvgPositionDeprecationPhase1Enabled\r\n && _.contains([\r\n 'TopImpressionRatePercent',\r\n 'TopImpressionRate',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRate',\r\n ], propName)) {\r\n schemaNameWhiteList = schemaNameWhiteList.concat([\r\n 'Ad', 'SearchTerm', 'DsaSearchTerm',\r\n 'DsaTarget', 'BiddableAdGroupCriterion',\r\n 'BiddableCampaignCriterion', 'ProductGroup',\r\n 'DimensionLanding', 'DimensionSearchTerm', 'DimensionPublisher',\r\n 'Time', 'DimensionGeographic', 'DimensionLocation',\r\n 'DimensionShopping', 'AudienceCriterionWithBI',\r\n ]);\r\n }\r\n\r\n return _.contains(schemaNameWhiteList, schemaName) && !_.contains(propNameBlackList, propName);\r\n }\r\n\r\n const schema = (copy ? putil.cloneDeep : _.identity)(originalSchema);\r\n const performanceMetrics = putil.get(schema, 'properties.PerformanceMetrics');\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n\r\n if (performanceMetricsProperties) {\r\n const propsToAdd = _.chain(performanceMetricsProperties)\r\n .pairs()\r\n .filter(([propName, prop]) =>\r\n prop.sovcolumn && isFilterable(schema.name, propName))\r\n .map(_.first)\r\n .value();\r\n\r\n if (_.isArray(performanceMetrics.filterable)) {\r\n performanceMetrics.filterable = _.chain(performanceMetrics.filterable)\r\n .union(propsToAdd)\r\n .value();\r\n } else {\r\n _.each(performanceMetricsProperties, (prop, propName) => {\r\n if (_.contains(propsToAdd, propName)) {\r\n // eslint-disable-next-line no-param-reassign\r\n prop.filterable = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { getCustomColumnPreferenceName } from '@bingads-webui-universal/custom-column-utils';\r\nimport { CustomColumnServiceWrapper } from '@bingads-webui/custom-column-service-wrapper';\r\nimport { isValidForFeature } from '@bingads-webui/custom-columns-shared-config';\r\n\r\nlet Permissions;\r\nlet FeatureName;\r\nlet customColumnPreference;\r\n\r\nexport function initialize({\r\n globalConfig,\r\n featureName = '',\r\n customColumnPreference: customColumnPref,\r\n}) {\r\n Permissions = globalConfig.get('Permissions');\r\n FeatureName = featureName;\r\n customColumnPreference = customColumnPref;\r\n}\r\n\r\nconst pilotFlagMapping = {\r\n Account: 'IsCustomColumnsInAccountsSummarySupported',\r\n Campaign: 'IsCustomColumnsInCampaignsSupported',\r\n AdGroup: 'IsCustomColumnsInAdGroupsSupported',\r\n Ad: 'IsCustomColumnsInAdsSupported',\r\n AdExtensionAssociation: 'IsCustomColumnsInAdExtensionsSupported',\r\n Keyword: 'IsCustomColumnsInKeywordsSupported',\r\n SearchTerm: 'IsCustomColumnsInSearchTermsSupported',\r\n};\r\n\r\nconst summaryTabMapping = {\r\n Account: 'PerformanceGrid',\r\n Campaign: 'summary_tab_campaign',\r\n AdGroup: 'summary_tab_ad_group',\r\n Ad: 'summary_tab_ad',\r\n Keyword: 'summary_tab_keyword',\r\n SearchTerm: 'summary_tab_search_term',\r\n};\r\n\r\nconst excludedFeatures = [\r\n 'PerformanceTargetOverviewGrid', // Performance target page in new UI uses Campaign as the schema name\r\n];\r\n\r\nexport function updateEntitySchemaForCustomColumn(originalSchema, copy = true, filterExpressions = null) { // eslint-disable-line max-len\r\n const schema = (copy ? putil.cloneDeep : _.identity)(originalSchema);\r\n const schemaName = schema.name;\r\n const performanceMetrics = putil.get(schema, 'properties.PerformanceMetrics');\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n\r\n if (customColumnPreference &&\r\n performanceMetricsProperties &&\r\n Permissions[pilotFlagMapping[schemaName]] &&\r\n Permissions.IsCustomColumnFilterSupported && excludedFeatures.indexOf(FeatureName) < 0) {\r\n const summaryTab = schemaName !== 'AdExtensionAssociation' ? summaryTabMapping[schemaName] : FeatureName;\r\n const customColumnService = new CustomColumnServiceWrapper({\r\n name: getCustomColumnPreferenceName(summaryTab),\r\n CustomColumns: customColumnPreference.getCustomColumnPreferenceStore(summaryTab),\r\n });\r\n const customColumnData = customColumnService.getAll();\r\n\r\n if (customColumnData) {\r\n _.each(customColumnData, (customColumn) => {\r\n const key = `CustomColumn${customColumn.id}`;\r\n\r\n performanceMetricsProperties[key] = {\r\n isInvalidProperty: !isValidForFeature({\r\n schemaName,\r\n expression: customColumn.expression,\r\n permissions: Permissions,\r\n }),\r\n title: customColumn.name,\r\n id: customColumn.id,\r\n customColumn: true,\r\n format: customColumn.format,\r\n name: 'Double',\r\n type: 'number',\r\n filterable: true,\r\n nullable: true,\r\n };\r\n\r\n if (_.isArray(performanceMetrics.filterable) &&\r\n !_.contains(performanceMetrics.filterable, key)) {\r\n performanceMetrics.filterable.push(key);\r\n }\r\n });\r\n }\r\n\r\n if (filterExpressions) {\r\n _.each(filterExpressions, (filterExpression) => {\r\n const key = filterExpression.SelectedColumn;\r\n if (key.startsWith('CustomColumn') && key in performanceMetricsProperties === false) {\r\n performanceMetricsProperties[key] = {\r\n isDeletedProperty: true,\r\n id: key.split('CustomColumn')[1],\r\n customColumn: true,\r\n format: undefined,\r\n name: 'Double',\r\n type: 'number',\r\n filterable: true,\r\n nullable: true,\r\n };\r\n\r\n if (_.isArray(performanceMetrics.filterable)) {\r\n performanceMetrics.filterable.push(key);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\nlet Permissions;\r\nlet propsToDelete;\r\n\r\nexport function initialize({\r\n globalConfig,\r\n}) {\r\n Permissions = globalConfig.get('Permissions');\r\n\r\n propsToDelete = _.compact([\r\n putil.get(Permissions, 'IsAvgPositionDeprecationPhase2Enabled') ?\r\n {\r\n key: 'AveragePosition',\r\n value: {\r\n alias: { legacy: 'AveragePosition' },\r\n isDeletedProperty: true,\r\n format: undefined,\r\n name: 'Double',\r\n type: 'number',\r\n filterable: true,\r\n nullable: true,\r\n },\r\n } : null,\r\n ]);\r\n}\r\n\r\nexport function updateEntitySchemaForRemovedPerformanceMetrics(\r\n originalSchema,\r\n copy = true,\r\n expression = null\r\n) {\r\n const schema = (copy ? putil.cloneDeep : _.identity)(originalSchema);\r\n const performanceMetrics = putil.get(schema, 'properties.PerformanceMetrics') || putil.get(schema, 'properties.Metrics') || putil.get(schema, 'properties');\r\n\r\n if (performanceMetrics) {\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n\r\n if (performanceMetricsProperties) {\r\n _.each(propsToDelete, (property) => {\r\n if (expression) {\r\n if (_.isArray(performanceMetrics.filterable)) {\r\n performanceMetrics.filterable.push(property.key);\r\n }\r\n performanceMetricsProperties[property.key] = property.value;\r\n } else {\r\n delete performanceMetricsProperties[property.key];\r\n }\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\nlet Permissions;\r\n\r\nexport function initialize({\r\n globalConfig,\r\n}) {\r\n Permissions = globalConfig.get('Permissions');\r\n}\r\n\r\n\r\nexport function enableForAudienceSOVFeatures(schema) {\r\n const schemaName = schema.name;\r\n const schemaNameWhiteList = ['Account', 'Campaign', 'AdGroup'];\r\n let propNameBlackList = [\r\n 'AudienceAuctionWonPercent',\r\n 'AudienceTopISLostToBudgetPercent',\r\n 'AudienceTopISLostToRankPercent',\r\n 'RelativeCTR',\r\n ];\r\n\r\n if (Permissions.IsAudienceSOVEnabled && _.contains(schemaNameWhiteList, schemaName)) {\r\n if (schemaName === 'Account') {\r\n propNameBlackList = [\r\n 'RelativeCTR',\r\n ];\r\n } else {\r\n propNameBlackList = [];\r\n }\r\n }\r\n\r\n const performanceMetrics = putil.get(schema, 'properties.PerformanceMetrics');\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n const audienceSOVMetrics = [\r\n 'AudienceAuctionWonPercent',\r\n 'AudienceTopISLostToBudgetPercent',\r\n 'AudienceTopISLostToRankPercent',\r\n 'RelativeCTR',\r\n ];\r\n\r\n if (performanceMetricsProperties) {\r\n // eslint-disable-next-line arrow-body-style\r\n const columnsToAdd = _.filter(audienceSOVMetrics, (audienceSOVMetric) => {\r\n return putil.get(performanceMetricsProperties, audienceSOVMetric) &&\r\n _.contains(schemaNameWhiteList, schemaName) &&\r\n !_.contains(propNameBlackList, audienceSOVMetric);\r\n });\r\n\r\n if (_.isArray(performanceMetrics.filterable)) {\r\n performanceMetrics.filterable = _.chain(performanceMetrics.filterable)\r\n .union(columnsToAdd)\r\n .value();\r\n } else {\r\n _.each(audienceSOVMetrics, (audienceSOVMetric) => {\r\n if (_.contains(columnsToAdd, audienceSOVMetric)) {\r\n // eslint-disable-next-line no-param-reassign\r\n schema.properties.PerformanceMetrics.schema.properties[audienceSOVMetric].filterable =\r\n true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n","import _, { each } from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { partialConversionPairs } from '@bingads-webui-campaign/column-conversions';\r\nimport { initialize as initializeSOV, updateEntitySchemaForSOV } from './update-entity-schema-for-sov';\r\nimport { initialize as initializeCustomColumn, updateEntitySchemaForCustomColumn } from './update-entity-schema-for-custom-column';\r\nimport { initialize as initializeAveragePosition, updateEntitySchemaForRemovedPerformanceMetrics } from './update-entity-schema-for-removed-performance-metrics';\r\nimport { initialize as initializeAudienceSOV, enableForAudienceSOVFeatures } from './update-entity-schema-for-audiencesov';\r\n\r\nexport {\r\n updateEntitySchemaForSOV,\r\n updateEntitySchemaForCustomColumn,\r\n updateEntitySchemaForRemovedPerformanceMetrics,\r\n enableForAudienceSOVFeatures,\r\n};\r\n\r\nlet globalConfig;\r\nlet Permissions = null;\r\n\r\nexport function initialize(options) {\r\n ({ globalConfig } = options);\r\n Permissions = globalConfig.get('Permissions');\r\n initializeSOV(options);\r\n initializeCustomColumn(options);\r\n initializeAveragePosition(options);\r\n initializeAudienceSOV(options);\r\n}\r\n\r\n// get whether feature is enabled by property name\r\nfunction getFeaturePermissionByPropertyName(propertyName) {\r\n switch (propertyName.toLowerCase()) {\r\n case 'campaigntype':\r\n return !Permissions.IsEnhancedShoppingCampaignAllowed &&\r\n !Permissions.IsDynamicSearchAdsV1Enabled &&\r\n !Permissions.IsAIMCampaignEnabled;\r\n\r\n case 'language':\r\n return Permissions.IsCampaignMultipleLanguageEnabled;\r\n\r\n case 'associationscount':\r\n case 'trackingstatus':\r\n return Permissions.IsAudienceGridNewColumnsSupported;\r\n\r\n case 'isexperiment':\r\n return Permissions.IsExperimentsEnabled;\r\n\r\n case 'adsbybing':\r\n return Permissions.IsAdsByBingEnabled;\r\n\r\n case 'allconv':\r\n return true; // [hagu1]todo: skip this method for 'allconv'\r\n\r\n case 'viewthrough':\r\n return Permissions.IsViewThroughConversionEnabled;\r\n\r\n case 'viewthroughrevenue':\r\n return Permissions.IsViewThroughConversionsRevenueEnabled;\r\n\r\n case 'avgpositiondeprecationphase1':\r\n return Permissions.IsAvgPositionDeprecationPhase1Enabled;\r\n\r\n case 'cpmbid':\r\n return Permissions.IsManualCpmEnabled;\r\n\r\n case 'cpvbid':\r\n return Permissions.IsVideoAdsForCampaignEnabled;\r\n\r\n case 'videoads':\r\n return Permissions.IsVideoAdsPerfMetricsEnabled;\r\n\r\n case 'appcampaign':\r\n return _.result(Permissions.dynamic, 'AppCampaignNewCampaignGridColumns');\r\n\r\n // Add BidStrategyName filter to campaign grid\r\n case 'bidstrategyname':\r\n return _.result(Permissions.dynamic, 'PortfolioBidStrategy');\r\n\r\n case 'cpsreporting':\r\n return _.result(Permissions.dynamic, 'CPSReporting');\r\n\r\n case 'installcolumns':\r\n return _.result(Permissions.dynamic, 'InstallPerformanceColumns');\r\n\r\n case 'campaignmigrationstatus':\r\n return true; // GA\r\n\r\n case 'conversionvaluerule':\r\n return _.result(Permissions.dynamic, 'ConvValueRules');\r\n\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nfunction removeEnumValuesFromProperty(schema, propertyName, removeEnumArray) {\r\n const schemaCopy = schema;\r\n if (!_.isEmpty(schema.properties[propertyName])) {\r\n schemaCopy.properties[propertyName].enum =\r\n _.difference(schema.properties[propertyName].enum, removeEnumArray);\r\n }\r\n\r\n return schemaCopy;\r\n}\r\n\r\nfunction updateEnumValueSets(schema) {\r\n const entityName = schema.name.toLowerCase();\r\n\r\n // Listing here all the enum valus to remove in different pilots (or always remove)\r\n const disabledTargets = [\r\n {\r\n disabled: !Permissions.IsDynamicSearchAdsV1Enabled && (entityName === 'ad'),\r\n property: 'Type',\r\n enumValueSets: ['DynamicSearch'], // this will not used in any where in filter options\r\n },\r\n {\r\n disabled: entityName === 'campaign',\r\n property: 'CampaignType',\r\n enumValueSets: ['DynamicSearchAds'], // DynamicSearchAds campaign type is deprecated, will not used in any where in filter options\r\n },\r\n {\r\n // Bug 1692445: BetaProd: [Campaigns] Some check box conditions\r\n // are not shown for filter of Campaign status/Campaign type/Bid strategy type on prod.\r\n // This should be controlled by pilot\r\n disabled: !Permissions.IsSmartCampaignPhase2Enabled,\r\n property: 'CampaignType',\r\n enumValueSets: ['Smart'],\r\n },\r\n {\r\n disabled: !(Permissions.dynamic && Permissions.dynamic.HotelCampaign),\r\n property: 'CampaignType',\r\n enumValueSets: ['Hotel'],\r\n },\r\n {\r\n disabled: !(Permissions.dynamic && Permissions.dynamic.PerformanceMaxCampaigns),\r\n property: 'CampaignType',\r\n enumValueSets: ['PerformanceMax'],\r\n },\r\n {\r\n disabled: entityName === 'campaign',\r\n property: 'Status',\r\n enumValueSets: ['InProgress'], // remove this when there are localized strings for this enum value\r\n },\r\n {\r\n disabled: true,\r\n property: 'Delivery',\r\n enumValueSets: ['CampaignInProgress'],\r\n },\r\n {\r\n disabled: true,\r\n property: 'DeliveryStatus',\r\n enumValueSets: ['CampaignInProgress'],\r\n },\r\n {\r\n disabled: true,\r\n property: 'Type',\r\n enumValueSets: ['HotelBookingGoal'],\r\n },\r\n {\r\n disabled: true,\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['ManualCpi'],\r\n },\r\n {\r\n disabled: true,\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['InheritFromParent', 'MaxRoas', 'TargetCostPerSale'],\r\n },\r\n {\r\n disabled: !(Permissions.IsCampaignTargetROASBidStrategyEnabled ||\r\n Permissions.IsNewCampaignTargetROASBidStrategyEnabled),\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['TargetRoas'],\r\n },\r\n {\r\n disabled: !Permissions.IsMaximizeConversionValueEnabled && !Permissions.IsSmartShoppingCampaignEnabled, // eslint-disable-line\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['MaxConversionValue'],\r\n },\r\n {\r\n disabled: !Permissions.IsTargetImpressionShareEnabled,\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['TargetImpressionShare'],\r\n },\r\n {\r\n disabled: !Permissions.IsCostPerSaleEnabled,\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['CostPerSale'],\r\n },\r\n {\r\n disabled: !(Permissions.dynamic && Permissions.dynamic.HotelCampaign),\r\n property: 'DisplayBiddingStrategyType',\r\n enumValueSets: ['PercentCpc', 'Commission'],\r\n },\r\n {\r\n disabled: !Permissions.IsAIMCampaignEnabled && (entityName === 'campaign'),\r\n property: 'CampaignType',\r\n enumValueSets: ['Audience'], // remove audience campaign from other entity\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase1Enabled,\r\n property: 'Language',\r\n enumValueSets: ['Greek', 'Polish', 'Bulgarian', 'Croatian', 'Czech', 'Estonian', 'Hungarian', 'Latvian', 'Lithuanian', 'Maltese', 'Romanian', 'Slovak', 'Slovenian'],\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase2Enabled,\r\n property: 'Language',\r\n enumValueSets: ['Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic'],\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase6Enabled,\r\n property: 'Language',\r\n enumValueSets: ['Hebrew', 'Arabic', 'Russian'],\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase2JapanEnabled,\r\n property: 'Language',\r\n enumValueSets: ['Japanese'],\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase9Enabled,\r\n property: 'Language',\r\n enumValueSets: ['Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog'],\r\n },\r\n {\r\n disabled: !Permissions.IsAdsGlobalizationPhase9VIEnabled,\r\n property: 'Language',\r\n enumValueSets: ['Vietnamese'],\r\n },\r\n ];\r\n\r\n _.chain(disabledTargets)\r\n .filter({ disabled: true })\r\n .each((target) => {\r\n removeEnumValuesFromProperty(schema, target.property, target.enumValueSets);\r\n });\r\n}\r\n\r\n\r\nexport function enableForExperimentFeature(schema, scopeable) {\r\n const isInPilot = Permissions.IsExperimentsEnabled;\r\n const isAccountScope = !globalConfig.get('CurrentCampaign');\r\n const campaignProperty = schema.properties.Campaign;\r\n const isExperimentProperty = putil.get(campaignProperty, 'schema.properties.IsExperiment');\r\n\r\n if (isInPilot && (!scopeable || isAccountScope) && campaignProperty && isExperimentProperty) {\r\n if (campaignProperty.filterable) {\r\n campaignProperty.filterable = _.union(campaignProperty.filterable, ['IsExperiment']);\r\n }\r\n isExperimentProperty.filterable = true;\r\n }\r\n}\r\n\r\nfunction updateFilterableForExtraPerformanceMetrics(schema, metricNameArray, isEnabling) {\r\n const schemaCopy = schema;\r\n const performanceMetrics = putil.get(schemaCopy, 'properties.PerformanceMetrics');\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n if (performanceMetricsProperties) {\r\n if (_.isArray(performanceMetrics.filterable)) {\r\n performanceMetrics.filterable = isEnabling ?\r\n _.union(performanceMetrics.filterable, metricNameArray) :\r\n _.difference(performanceMetrics.filterable, metricNameArray);\r\n }\r\n _.each(performanceMetricsProperties, (prop, propName) => {\r\n if (_.contains(metricNameArray, propName)) {\r\n // eslint-disable-next-line no-param-reassign\r\n prop.filterable = isEnabling;\r\n }\r\n });\r\n }\r\n return schemaCopy;\r\n}\r\n\r\n// Add BidStrategyName filter to ad group grid and keyword grid\r\nfunction enableForPortfolioBidStrategyFeature(schema) {\r\n const isInPilot = _.result(Permissions.dynamic, 'PortfolioBidStrategy');\r\n const isAllowedEntity = _.contains(['AdGroup', 'Keyword'], schema.name);\r\n const campaignProperty = schema.properties.Campaign;\r\n const bidStrategyNameProperty = putil.get(campaignProperty, 'schema.properties.BidStrategyName');\r\n\r\n if (isInPilot && isAllowedEntity && campaignProperty && bidStrategyNameProperty) {\r\n if (campaignProperty.filterable) {\r\n campaignProperty.filterable = _.union(campaignProperty.filterable, ['BidStrategyName']);\r\n }\r\n bidStrategyNameProperty.filterable = true;\r\n }\r\n}\r\n\r\n\r\n// This is used in automated rule page. Add filter for \"Insights\".\r\n// Enum values should be different from those in performance/campaigns grid\r\nfunction enableAndUpdateFilterForAvailableInsightTypeIds(schema) {\r\n const isAllowedEntity = _.contains(['Campaign'], schema.name);\r\n const schemaCopy = schema;\r\n\r\n if (isAllowedEntity && schemaCopy.properties.AvailableInsightTypeIds) {\r\n schemaCopy.properties.AvailableInsightTypeIds = {\r\n $ref: 'Enum/FluctuationType',\r\n property: 'AvailableInsightTypeIds',\r\n type: 'string',\r\n filterable: true,\r\n enumType: 'FluctuationType',\r\n enum: ['Click', 'Impression', 'Spend'],\r\n chooseType: 'checkbox',\r\n operators: ['contains'],\r\n };\r\n }\r\n}\r\n\r\nexport function enableFilterForExtraPerformanceMetrics(schema, metricNameArray) {\r\n return updateFilterableForExtraPerformanceMetrics(schema, metricNameArray, true);\r\n}\r\n\r\nfunction enableFilterForPilotedPerformanceMetrics(schema, pilotName, metricNameArray) {\r\n const isInPilot = getFeaturePermissionByPropertyName(pilotName);\r\n return updateFilterableForExtraPerformanceMetrics(schema, metricNameArray, isInPilot);\r\n}\r\n\r\n\r\nfunction enableForViewThroughConversionsFeature(schema) {\r\n enableFilterForPilotedPerformanceMetrics(schema, 'viewthrough', ['ViewThroughConversions']);\r\n enableFilterForPilotedPerformanceMetrics(schema, 'viewthroughrevenue', [\r\n 'ViewThroughConversionsRevenue',\r\n 'ViewThroughConversionsCPA',\r\n 'ViewThroughConversionsReturnOnAdSpend',\r\n 'ViewThroughConversionsRate',\r\n ]);\r\n return schema;\r\n}\r\n\r\nfunction enableForConversionValueRuleFeature(schema) {\r\n enableFilterForPilotedPerformanceMetrics(\r\n schema, 'conversionvaluerule',\r\n ['AdvertiserReportedRevenueAdjustment', 'AllConversionAdvertiserReportedRevenueAdjustment', 'ViewThroughConversionsRevenueAdjustment']\r\n );\r\n return schema;\r\n}\r\n\r\nfunction updateEntitySchemaForMainGoalSelectionFeature(schema) {\r\n enableFilterForPilotedPerformanceMetrics(schema, 'allconv', [\r\n 'AllConversionCPA',\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n 'AllConversionAdvertiserReportedRevenue',\r\n 'AllConversionRevenueOnAdSpend']);\r\n return schema;\r\n}\r\n\r\nfunction updateEntitySchemaForVideoAdsFeature(schema) {\r\n const pilotGridNameArray = ['Account', 'Campaign', 'AdGroup', 'Ad'];\r\n let pilotProperty = '';\r\n if (_.contains(pilotGridNameArray, schema.name)) { pilotProperty = 'videoads'; }\r\n\r\n enableFilterForPilotedPerformanceMetrics(schema, pilotProperty, [\r\n 'VideoViews',\r\n 'ViewThroughRate',\r\n 'AverageCPV',\r\n 'TotalWatchTimeInMS',\r\n 'AverageWatchTimePerImpression',\r\n 'AverageWatchTimePerVideoView',\r\n 'VideoViewsAt25Percent',\r\n 'VideoViewsAt50Percent',\r\n 'VideoViewsAt75Percent',\r\n 'CompletedVideoViews',\r\n 'VideoCompletionRate',\r\n ]);\r\n return schema;\r\n}\r\n\r\nfunction updateEntitySchemaForAppCampaign(schema) {\r\n const pilotGridNameArray = ['Campaign'];\r\n let pilotProperty = '';\r\n if (_.contains(pilotGridNameArray, schema.name)) { pilotProperty = 'appcampaign'; }\r\n\r\n enableFilterForPilotedPerformanceMetrics(schema, pilotProperty, [\r\n 'Downloads',\r\n 'FirstLaunches',\r\n 'Purchases',\r\n 'Subscriptions',\r\n 'PostClickDownloadRate',\r\n 'CostPerDownload',\r\n 'PostClickFirstLaunchRate',\r\n 'CostPerFirstLaunch',\r\n 'PostInstallPurchaseRate',\r\n 'CostPerPurchase',\r\n 'PostInstallSubscriptionRate',\r\n 'CostPerSubscription',\r\n ]);\r\n return schema;\r\n}\r\n\r\nfunction updateEntitySchemaForCPS(schema) {\r\n const pilotGridNameArray = ['Account', 'Campaign', 'AdGroup', 'ProductGroup'];\r\n let pilotProperty = '';\r\n if (_.contains(pilotGridNameArray, schema.name)) { pilotProperty = 'cpsreporting'; }\r\n\r\n enableFilterForPilotedPerformanceMetrics(schema, pilotProperty, [\r\n 'AverageCPS',\r\n 'SalesCount',\r\n ]);\r\n return schema;\r\n}\r\n\r\nfunction updateEntitySchemaForInstallColumns(schema) {\r\n const pilotGridNameArray = ['Account', 'Campaign', 'AdGroup', 'ProductGroup'];\r\n let pilotProperty = '';\r\n if (_.contains(pilotGridNameArray, schema.name)) { pilotProperty = 'installcolumns'; }\r\n enableFilterForPilotedPerformanceMetrics(schema, pilotProperty, [\r\n 'Installs',\r\n 'CostPerInstall',\r\n 'RevenuePerInstall',\r\n ]);\r\n return schema;\r\n}\r\n\r\nexport function enableForAvgPositionDeprecationPhase1Feature(schema) {\r\n enableFilterForPilotedPerformanceMetrics(schema, 'AvgPositionDeprecationPhase1', [\r\n 'AbsoluteTopImpressionRate',\r\n 'TopImpressionRate',\r\n ]);\r\n return schema;\r\n}\r\n\r\nfunction enableFilterForPilotProperties(schema, propertyNameArray) {\r\n const schemaCopy = schema;\r\n _.each(propertyNameArray, (propertyName) => {\r\n if (getFeaturePermissionByPropertyName(propertyName)\r\n && !_.isEmpty(schemaCopy.properties[propertyName])) {\r\n schemaCopy.properties[propertyName].filterable = true;\r\n }\r\n });\r\n\r\n return schema;\r\n}\r\n\r\n\r\nconst PARTIAL_CONVERSIONS_ENABLED_ENTITIES = [\r\n 'Campaign',\r\n 'AdGroup',\r\n 'Ad',\r\n 'Keyword',\r\n 'SearchTerm',\r\n 'CampaignCriterionGridData',\r\n 'FeedItem',\r\n 'DsaTarget',\r\n 'DsaSearchTerm',\r\n 'AdExtensionAssociation',\r\n 'PortfolioBidStrategy',\r\n 'BiddableCampaignCriterion',\r\n 'BiddableAdGroupCriterion',\r\n // Dimension Report\r\n 'DimensionLanding',\r\n 'DimensionAgeGender',\r\n 'DimensionSearchTerm',\r\n 'DimensionPublisher',\r\n 'DimensionCallForwarding',\r\n 'Time',\r\n 'KeywordLabelReport',\r\n 'AdLabelReport',\r\n 'AdGroupLabelReport',\r\n 'CampaignLabelReport',\r\n 'DimensionGeographic',\r\n 'DimensionLocation',\r\n 'DimensionShopping',\r\n // Audience Association Page\r\n 'AudienceCriterionWithBI',\r\n 'ProductOffer',\r\n // Conversion Goal Page\r\n 'Goal',\r\n // Shared Budget Page\r\n 'Budget',\r\n 'Account',\r\n 'ProductGroup',\r\n 'AssetWithBIData',\r\n];\r\n\r\nfunction updatePerformanceMetricsForPartialConversions(\r\n schema,\r\n useNewParameters\r\n) {\r\n const schemaCopy = schema;\r\n const performanceMetrics = putil.get(schemaCopy, 'properties.PerformanceMetrics');\r\n const performanceMetricsProperties = putil.get(performanceMetrics, 'schema.properties');\r\n if (performanceMetricsProperties) {\r\n const filterableArray = performanceMetrics.filterable;\r\n const hasFilterableArray = _.isArray(filterableArray);\r\n each(partialConversionPairs, (value, key) => {\r\n const propertyNameToDisable = useNewParameters ? key : value;\r\n const propertyNameToEnable = useNewParameters ? value : key;\r\n const propertyToDisable = performanceMetricsProperties[propertyNameToDisable];\r\n const propertyToEnable = performanceMetricsProperties[propertyNameToEnable];\r\n\r\n const isDisablePropFilterable = _.contains(filterableArray, propertyNameToDisable)\r\n || (propertyToDisable && propertyToDisable.filterable);\r\n const isEnablePropFilterable = _.contains(filterableArray, propertyNameToEnable)\r\n || (propertyToEnable && propertyToEnable.filterable);\r\n\r\n if (isDisablePropFilterable || isEnablePropFilterable) {\r\n if (hasFilterableArray) {\r\n performanceMetrics.filterable = _.chain(performanceMetrics.filterable)\r\n .difference([propertyNameToDisable])\r\n .union([propertyNameToEnable])\r\n .value();\r\n }\r\n if (propertyToDisable) {\r\n propertyToDisable.filterable = false;\r\n }\r\n if (propertyToEnable) {\r\n propertyToEnable.filterable = true;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n// This function is a safe guard for grids in case\r\n// both old and new property were both enable by accident\r\nexport function updateEntitySchemaForPartialConversions(schema) {\r\n const isPartialConversionsEnbled = _.result(Permissions.dynamic, 'PartialConversions');\r\n const isColumnConversionEnabled = _.result(Permissions.dynamic, 'ColumnConversion');\r\n const enabledEntity = _.contains(PARTIAL_CONVERSIONS_ENABLED_ENTITIES, schema.name);\r\n const useNewParameters = isColumnConversionEnabled && enabledEntity && isPartialConversionsEnbled;\r\n\r\n updatePerformanceMetricsForPartialConversions(schema, useNewParameters);\r\n return schema;\r\n}\r\n\r\nexport function disableFilterForExtraPerformanceMetrics(schema, disabledPerformanceColumns) {\r\n return updateFilterableForExtraPerformanceMetrics(schema, disabledPerformanceColumns, false);\r\n}\r\n\r\nexport function updateEntitySchemaForPilotFeatures(originalSchema, isForVNext, filterExpressions = null, enableAvgPositionDeprecation) { // eslint-disable-line max-len\r\n const schema = putil.cloneDeep(originalSchema);\r\n\r\n // first enable properties (filter type) for features in pilot\r\n updateEntitySchemaForSOV(schema, false);\r\n if (isForVNext) {\r\n updateEntitySchemaForCustomColumn(schema, false, filterExpressions);\r\n enableAndUpdateFilterForAvailableInsightTypeIds(schema);\r\n }\r\n enableForAudienceSOVFeatures(schema);\r\n if (enableAvgPositionDeprecation) {\r\n updateEntitySchemaForRemovedPerformanceMetrics(schema, false, filterExpressions);\r\n }\r\n enableForExperimentFeature(schema);\r\n enableForPortfolioBidStrategyFeature(schema);\r\n enableForViewThroughConversionsFeature(schema);\r\n enableForConversionValueRuleFeature(schema);\r\n updateEntitySchemaForMainGoalSelectionFeature(schema);\r\n updateEntitySchemaForVideoAdsFeature(schema);\r\n updateEntitySchemaForAppCampaign(schema);\r\n updateEntitySchemaForCPS(schema);\r\n updateEntitySchemaForInstallColumns(schema);\r\n enableFilterForPilotProperties(schema, ['CampaignType', 'Language', 'AssociationsCount', 'TrackingStatus', 'IsExperiment', 'AdsByBing', 'CpmBid', 'CpvBid', 'BidStrategyName', 'CampaignMigrationStatus']);\r\n\r\n // enable enum values (filter value set) for features in pilot\r\n updateEnumValueSets(schema);\r\n\r\n return schema;\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\nexport function initialize(options) {\r\n ({\r\n i18n,\r\n } = options);\r\n}\r\n\r\n\r\nexport function appendPopProperties(entitySchema) {\r\n const popPrefix = 'PoP';\r\n const biPattern = /^(Phone)?PerformanceMetrics\\//;\r\n const biReplacePattern = /PerformanceMetrics\\//;\r\n const biChange = 'PerformanceMetricsChange/';\r\n const biChangePercent = 'PerformanceMetricsChangePercentage/';\r\n\r\n const biTitlePrefix = 'ColumnName_';\r\n const biTitleComparePostfix = '_Compare';\r\n const biTitleChangePostfix = '_Change';\r\n const biTitleChangePercentPostfix = '_Change_Percentage';\r\n const customColumnStr = 'CustomColumn';\r\n\r\n _.each(entitySchema.properties, (propObj) => {\r\n const { properties } = entitySchema;\r\n if (biPattern.test(propObj.property)) {\r\n const isCustomColumn = propObj.customColumn ||\r\n (propObj.originalProperty && propObj.originalProperty.indexOf(customColumnStr) === 0);\r\n const propName = isCustomColumn ? customColumnStr : propObj.property.split('/')[1];\r\n const propKey = isCustomColumn ? propObj.originalProperty : propObj.name;\r\n properties[`${popPrefix}${propKey}`] = _.defaults({\r\n name: `${popPrefix}${propObj.name}`,\r\n property: `${popPrefix}${propObj.property}`,\r\n title: biTitlePrefix + propName + biTitleComparePostfix,\r\n unlocalized: true,\r\n alias: null,\r\n originalProperty: `${popPrefix}${propObj.originalProperty}`,\r\n originalTitle: propObj.title,\r\n }, propObj);\r\n properties[`${popPrefix}${propKey}Change`] = _.defaults({\r\n name: `${popPrefix}${propObj.name}Change`,\r\n property: `${popPrefix}${propObj.property.replace(biReplacePattern, biChange)}`,\r\n title: biTitlePrefix + propName + biTitleChangePostfix,\r\n unlocalized: true,\r\n alias: null,\r\n originalProperty: `${popPrefix}${propObj.originalProperty}Change`,\r\n originalTitle: propObj.title,\r\n }, propObj);\r\n properties[`${popPrefix}${propKey}ChangePercent`] = _.defaults({\r\n name: `${popPrefix}${propObj.name}ChangePercent`,\r\n property: `${popPrefix}${propObj.property.replace(biReplacePattern, biChangePercent)}`,\r\n originalProperty: `${popPrefix}${propObj.originalProperty}ChangePercent`,\r\n title: biTitlePrefix + propName + biTitleChangePercentPostfix,\r\n type: 'number',\r\n isPercentValue: true,\r\n minimum: -9007199254740991, // Number.MIN_SAFE_INTEGER\r\n maximum: 9007199254740991, // Number.MAX_SAFE_INTEGER\r\n unlocalized: true,\r\n alias: null,\r\n originalTitle: propObj.title,\r\n }, propObj);\r\n }\r\n });\r\n}\r\n\r\nexport function appendPeriodOverPeriodProperties(entitySchema) {\r\n appendPopProperties(entitySchema);\r\n\r\n _.each(entitySchema.properties, (prop) => {\r\n const propCopy = prop;\r\n if (propCopy.unlocalized) {\r\n propCopy.title = propCopy.customColumn || (propCopy.originalProperty && propCopy.originalProperty.indexOf('CustomColumn') >= 0) ?\r\n i18n.getString(prop.title).replace('{0}', prop.originalTitle) :\r\n i18n.getString(prop.title);\r\n delete propCopy.unlocalized;\r\n delete propCopy.originalTitle;\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\n/**\r\n * Update schema to add CampaignType property that is used in waterfall filter for new UI\r\n *\r\n * @param {Object} entitySchema - the option to update the filter\r\n * @param {string} property - optional param to set field name of campaignType property\r\n * @param {array} campaignTypeNotSupported - specific unsupported campaign types in each filter.\r\n * @returns {void}\r\n*/\r\nexport function addCampaignTypePropertyForFilter({\r\n entitySchema, property = 'Campaign/CampaignType', permissions, campaignTypeNotSupported,\r\n}) {\r\n const isHotelCampaignEnabled = _.chain(permissions).result('dynamic').result('HotelCampaign').value();\r\n const isPerformanceMaxEnabled = _.chain(permissions).result('dynamic').result('PerformanceMaxCampaigns').value();\r\n const isLinkedInCampaignEnabled = _.chain(permissions).result('dynamic').result('LinkedInCampaigns').value();\r\n const IsRenameHotelToLodgingEnabled = _.chain(permissions).result('dynamic').result('IsRenameHotelToLodgingEnabled').value();\r\n const toExtended = {\r\n CampaignType: {\r\n filterable: true,\r\n name: 'CampaignType',\r\n originalProperty: 'CampaignType',\r\n property,\r\n type: 'string',\r\n enumType: 'CampaignType',\r\n enum: _.difference(_.compact([\r\n \"Enum.CampaignType'Default'\",\r\n \"Enum.CampaignType'Shopping'\",\r\n \"Enum.CampaignType'Audience'\",\r\n \"Enum.CampaignType'Smart'\",\r\n isHotelCampaignEnabled && \"Enum.CampaignType'Hotel'\",\r\n isPerformanceMaxEnabled && \"Enum.CampaignType'PerformanceMax'\",\r\n isLinkedInCampaignEnabled && \"Enum.CampaignType'LinkedIn'\",\r\n ]), campaignTypeNotSupported),\r\n enumValueMap: _.omit({\r\n \"Enum.CampaignType'Default'\": 'Default',\r\n \"Enum.CampaignType'Shopping'\": 'Shopping',\r\n \"Enum.CampaignType'Audience'\": 'Audience',\r\n \"Enum.CampaignType'Smart'\": 'Smart',\r\n ...isHotelCampaignEnabled ? { \"Enum.CampaignType'Hotel'\": IsRenameHotelToLodgingEnabled ? 'Lodging' : 'Hotel' } : {},\r\n ...isPerformanceMaxEnabled ? { \"Enum.CampaignType'PerformanceMax'\": 'PerformanceMax' } : {},\r\n ...isLinkedInCampaignEnabled ? { \"Enum.CampaignType'LinkedIn'\": 'LinkedIn' } : {},\r\n }, campaignTypeNotSupported),\r\n chooseType: 'checkbox',\r\n alias: {\r\n legacy: 'CampaignCampaignType',\r\n },\r\n },\r\n };\r\n _.extend(entitySchema.properties, toExtended);\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\n\r\nexport function initialize(options) {\r\n ({ i18n } = options);\r\n}\r\n\r\nexport function mapEnumValueForFilter(enumType, enumValue) {\r\n return `Enum.${enumType}'${enumValue}'`;\r\n}\r\n// this map convers all mapping for exsing delivery status enums\r\n// for each entity (adgroup/campaign/keyword/ad/else), it may only have several enum values\r\nconst DeliveryStatusToCategoryMap = {\r\n // Eligible\r\n Eligible: 0,\r\n New: 0,\r\n AdGroupAudienceAssociationPaused: 0,\r\n AdGroupAudienceAssociationExcluded: 0,\r\n AdGroupCriterionPaused: 0,\r\n AdGroupCriterionExcluded: 0,\r\n DSAAutoTargetProcessing: 0,\r\n\r\n // Eligible - Limited\r\n EditorialApprovedLimited: 1,\r\n EditorialApprovedLimitedAppealRejected: 1,\r\n LowSupply: 1,\r\n LowQuality: 1,\r\n NegativeKeywordConflicts: 1,\r\n PartialNegativeKeywordConflicts: 1,\r\n DSAAutoTargetNegativeTargetConflict: 1,\r\n DSAAutoTargetBelowFirstPageBid: 1,\r\n BidBelowFirstPageBid: 1,\r\n BudgetSuggestions: 1,\r\n AutoBiddingLimitedByNotEnoughRevenue: 1,\r\n AutoBiddingLimitedByNotEnoughConversions: 1,\r\n AutoBiddingLimitedInventoryLimit: 1,\r\n AutoBiddingLimitedMaxCPCRestriction: 1,\r\n AutoBiddingLimitedBudgetRestriction: 1,\r\n AutoBiddingLimitedUnAttainableTarget: 1,\r\n AutoBiddingPortfolioBidStrategyTrainingStatus: 1,\r\n AutoBiddingLearning: 1,\r\n CampaignInReview: 1,\r\n CPSInsufficientConversions: 1,\r\n CPSAttributionBroken: 1,\r\n\r\n // Critical issues\r\n CreditCardExpired: 2,\r\n IOExceeded: 2,\r\n PaymentInformationMissing: 2,\r\n InvalidFinancialStatusOther: 2,\r\n CampaignSuspended: 2,\r\n CampaignBudgetPaused: 2,\r\n DomainLanguageNotSupported: 2,\r\n AdGroupExpired: 2,\r\n AssetGroupExpired: 2,\r\n EditorialRejected: 2,\r\n EditorialAppealRejected: 2,\r\n CampaignDeleted: 2,\r\n StoreIdNotAssociated: 2,\r\n ShoppingCampaignStoreNotFound: 2,\r\n ShoppingCampaignNoOffersPresent: 2,\r\n AdGroupTargetingTooNarrow: 2,\r\n\r\n // Not Eligible\r\n CampaignInProgress: 3,\r\n CampaignUserPaused: 3,\r\n AssetGroupUserPaused: 3,\r\n AdGroupUserPaused: 3,\r\n AdGroupDraft: 3,\r\n AdUserPaused: 3,\r\n EditorialPending: 3,\r\n AdGroupPrivacyPending: 3,\r\n AssociationDeleted: 3,\r\n KeywordUserPaused: 3,\r\n EditorialUnderAppeal: 3,\r\n UrlInvalid: 3,\r\n ApplicationNotFound: 3,\r\n ApplicationDestinationUrlMismatch: 3,\r\n PendingMetadataSync: 3,\r\n ProductTargetUserPaused: 3,\r\n AdExtensionDeleted: 3,\r\n AdExtensionAssociationDeleted: 3,\r\n AdNotPresent: 3,\r\n AdNotActive: 3,\r\n NoEligibleAdGroups: 3,\r\n NoEligibleAds: 3,\r\n NoEligibleKeywords: 3,\r\n DSAAutoTargetUserPaused: 3,\r\n DSAAutoTargetNoMatchingLandingPage: 3,\r\n CPSNonRetailDomain: 3,\r\n AudienceTooNarrow: 3,\r\n LinkedInAccountServingHold: 3,\r\n LinkedInCompanyPagePaidMediaRequired: 3,\r\n};\r\n\r\n/**\r\n * Map delivery status input enum set to related category for the filter values to render\r\n *\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {Object} the configs(groupedItems, localized) needed by component/filter\r\n * to render in category type for delivery status.\r\n*/\r\nfunction getDeliveryStatusCategoryForFilter(enumSet) {\r\n const groupedItems = [];\r\n const enumSetToUse = _.uniq(enumSet);\r\n const localized = {};\r\n\r\n const categoryEnumValuesMap =\r\n _.groupBy(enumSetToUse, enumValue => DeliveryStatusToCategoryMap[enumValue]);\r\n\r\n _.each(categoryEnumValuesMap, (enumValues, category) => {\r\n const mappedValues = _.map(enumValues, value => ({\r\n value: mapEnumValueForFilter('DeliveryStatus', value),\r\n localized: i18n.getString(`Label_DeliveryStatus_${value}`),\r\n }));\r\n const categoryName = `FilterLocalization_DeliveryStatusCategories_${category}`;\r\n const itemLocalized = _.object(_.pluck(mappedValues, 'value'), _.pluck(mappedValues, 'localized'));\r\n\r\n groupedItems.push({\r\n items: _.pluck(mappedValues, 'value'),\r\n localized: itemLocalized,\r\n name: categoryName,\r\n });\r\n\r\n localized[categoryName] = i18n.getString(categoryName);\r\n _.extendOwn(localized, itemLocalized);\r\n });\r\n\r\n return {\r\n groupedItems,\r\n localized,\r\n };\r\n}\r\n\r\n/**\r\n * Update delivery status setting for render it in category type in filter\r\n *\r\n * @param {Object} entitySchema - the option to update for filter\r\n * @param {Array} enumSet - the enums that are valid for specific entity (like campaign)\r\n * @returns {void}\r\n*/\r\nexport function updateDeliveryStatusPropertyForFilter(entitySchema, enumSet) {\r\n const deliveryStatusProperty = entitySchema.properties.DeliveryStatus;\r\n\r\n // get configs needed for category type filter for delivery status\r\n // , using the allowed values for adgroup\r\n const { groupedItems, localized } = getDeliveryStatusCategoryForFilter(enumSet);\r\n\r\n // Delete enum properties to make delivery status not enum type anymore\r\n // (enum has more priority in component/filter than category)\r\n if (deliveryStatusProperty.enum && _.isArray(deliveryStatusProperty.enum)) {\r\n delete deliveryStatusProperty.enum;\r\n }\r\n _.extendOwn(deliveryStatusProperty, {\r\n groupedItems, localized, type: 'category', operators: ['in'],\r\n });\r\n return deliveryStatusProperty;\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nexport function updateAdExtensionAssociationSourcePropertyForFilter({ entitySchema }) {\r\n const toExtended = {\r\n SourceType: {\r\n sortable: true,\r\n filterable: true,\r\n name: 'SourceType',\r\n originalProperty: 'SourceType',\r\n property: 'SourceType',\r\n type: 'string',\r\n enumType: 'AdExtensionAssociationSourceType',\r\n enum: [\r\n 'UserCreated',\r\n 'SystemGenerated',\r\n ],\r\n enumValueMap: {\r\n \"Enum.AdExtensionAssociationSourceType'UserCreated'\": 'UserCreated',\r\n \"Enum.AdExtensionAssociationSourceType'SystemGenerated'\": 'SystemGenerated',\r\n },\r\n chooseType: 'checkbox',\r\n alias: {\r\n legacy: 'SourceType',\r\n },\r\n },\r\n };\r\n\r\n _.extend(entitySchema.properties, toExtended);\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { LabelsDataSource } from '@bingads-webui-campaign/labels';\r\nimport labelNameTemplate from '../shared/label-name-template.pug';\r\n\r\nlet i18n = null;\r\nlet schemaI18nCampaign = null;\r\nlet cacheService = null;\r\nlet dataContextManager = null;\r\nlet jsdata = null;\r\nlet edm = null;\r\nlet scope = null;\r\n\r\nexport function initialize(options) {\r\n ({\r\n i18n,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n edm,\r\n scope,\r\n } = options);\r\n}\r\n\r\nfunction getLabel(value, customerLevelLabelEnabled) {\r\n const newValue = JSON.parse(value);\r\n return {\r\n Id: newValue.Id ? newValue.Id : value,\r\n Scope: customerLevelLabelEnabled && newValue.Scope ? newValue.Scope : undefined,\r\n };\r\n}\r\n\r\nfunction wrapFilterExpression(filterExpression, secondLogic) {\r\n const fieldPrefix = 'd:';\r\n return `Labels/${secondLogic}(${fieldPrefix}${filterExpression})`;\r\n}\r\n\r\nfunction buildLabelFilter(value, operator, secondLogic, wrapFilter, customerLevelLabelEnabled) {\r\n const label = getLabel(value, customerLevelLabelEnabled);\r\n const fieldId = 'd/Id';\r\n let secondaryOperator = 'and';\r\n if (operator === 'ne') {\r\n secondaryOperator = 'or';\r\n }\r\n\r\n let filter = `${fieldId} ${operator} ${label.Id}`;\r\n if (label.Scope) {\r\n const fieldScope = 'd/Scope';\r\n filter += ` ${secondaryOperator} ${fieldScope} ${operator} Enum.EntityScope'${label.Scope}'`;\r\n }\r\n\r\n if (wrapFilter) {\r\n filter = wrapFilterExpression(filter, secondLogic);\r\n }\r\n\r\n return filter;\r\n}\r\n\r\nfunction lambdaConvertForLabels(logic, secondLogic, operator, customerLevelLabelEnabled) {\r\n return (values) => {\r\n let url = '';\r\n const wrapInnerFilter = !(logic === 'or' && !customerLevelLabelEnabled);\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n url += ` ${logic} `;\r\n }\r\n url +=\r\n buildLabelFilter(value, operator, secondLogic, wrapInnerFilter, customerLevelLabelEnabled);\r\n });\r\n if (!wrapInnerFilter) {\r\n url = wrapFilterExpression(url, secondLogic);\r\n }\r\n if (logic === 'or') {\r\n url = `(${url})`;\r\n }\r\n return url;\r\n };\r\n}\r\n\r\nexport function updateEntitySchemaForLabels(entitySchema, customerLevelLabelEnabled = false) {\r\n const entitySchemaCopy = entitySchema;\r\n entitySchemaCopy.properties.Labels = {\r\n property: 'Labels',\r\n name: schemaI18nCampaign.property('Campaign', 'Labels'),\r\n title: schemaI18nCampaign.property('Campaign', 'Labels'),\r\n operatorDisplayNameMap: {\r\n containsall: i18n.getString('FilterOperator_ContainsAll'),\r\n containsany: i18n.getString('FilterOperator_ContainsAny'),\r\n containsnone: i18n.getString('FilterOperator_ContainsNone'),\r\n },\r\n operators: ['containsall', 'containsany', 'containsnone'],\r\n type: 'id',\r\n addtionalParams: {\r\n dataSource: new LabelsDataSource({\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n edm,\r\n scope,\r\n customerLevelLabelEnabled,\r\n }),\r\n templates: customerLevelLabelEnabled ? {\r\n nameTemplate: labelNameTemplate,\r\n } : undefined,\r\n },\r\n filterable: true,\r\n };\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForLabels(options, customerLevelLabelEnabled = false) {\r\n if (options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n Labels: {\r\n containsall: lambdaConvertForLabels('and', 'any', 'eq', customerLevelLabelEnabled),\r\n containsany: lambdaConvertForLabels('or', 'any', 'eq', customerLevelLabelEnabled),\r\n containsnone: lambdaConvertForLabels('and', 'all', 'ne', customerLevelLabelEnabled),\r\n },\r\n });\r\n return optionsCopy;\r\n }\r\n return options;\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\n\r\nexport function initialize(options) {\r\n ({ i18n } = options);\r\n}\r\n\r\n/**\r\n * Update delivery status setting for render it in category type in filter\r\n *\r\n * @param {Object} entitySchema - the option to update for filter\r\n * @returns {void}\r\n*/\r\nexport function updateAuctionInsightPropertyForFilter(entitySchema) {\r\n const hasAuctionInsightOption = _.find(entitySchema.properties, prop => prop.name === 'HasAuctionInsight');\r\n\r\n _.extend(hasAuctionInsightOption, {\r\n operatorDisplayNameMap: { eq: i18n.getString('FilterLocalization_FilterOperator_MatchesAny_Equal') },\r\n localized: {\r\n true: i18n.getString('FilterLocalization_BooleanFilter_Available_1'),\r\n false: i18n.getString('FilterLocalization_BooleanFilter_Available_0'),\r\n },\r\n chooseType: 'select',\r\n });\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nlet Permissions = null;\r\n\r\nexport function initialize(options) {\r\n Permissions = options.globalConfig.get('Permissions');\r\n}\r\n\r\nexport function updateOdataOptionsForExperiment(options) {\r\n const isInPilot = _.result(Permissions, 'IsExperimentsEnabled');\r\n\r\n if (isInPilot && options) {\r\n // eslint-disable-next-line no-param-reassign\r\n options.custom = options.custom || {};\r\n\r\n _.extendOwn(options.custom, {\r\n 'Campaign/IsExperiment': {\r\n eq: (val) => {\r\n const operator = val ? 'gt' : 'le';\r\n\r\n return `Campaign/ExperimentId ${operator} 0`;\r\n },\r\n },\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\n\r\nexport function initialize(options) {\r\n ({ i18n } = options);\r\n}\r\n\r\n/**\r\n * Update ads by bing to show the expected predicate and choices in the filter\r\n *\r\n * @param {Object} entitySchema - the option to update the filter\r\n * @returns {void}\r\n*/\r\nexport function updateAdsByBingPropertyForFilter(entitySchema) {\r\n const hasAdsByBingOption = _.find(entitySchema.properties, prop => prop.name === 'AdsByBing');\r\n\r\n _.extend(hasAdsByBingOption, {\r\n operatorDisplayNameMap: { eq: i18n.getString('FilterLocalization_FilterOperator_Equal') },\r\n localized: {\r\n true: i18n.getString('Filter_BooleanFilter_Yes'),\r\n false: i18n.getString('Filter_BooleanFilter_No'),\r\n },\r\n chooseType: 'select',\r\n });\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nconst operators = ['eq', 'neq', 'gt', 'gte', 'lt', 'lte'];\r\n\r\n// For those columns which UI use its mutiplied value as display value,\r\n// we need to restore the value for MT to filter.\r\nexport function updateOdataOptionsForMultiplied(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n // Value stored as millisecond in MT but displayed as second in UI.\r\n // We need to mutiply it by 1000 to make sure MT gets the correct value.\r\n 'PerformanceMetrics/TotalWatchTimeInMS': _.object(\r\n operators,\r\n operators.map(op => val => `PerformanceMetrics/TotalWatchTimeInMS ${op} ${val * 1000}`)\r\n ),\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n","import { updateEntitySchemaForLabels, updateOdataOptionsForLabels, initialize as initializeLabels } from '../util/update-label-property-for-filter';\r\nimport { initialize as initializeDeliveryStatus } from '../util/update-delivery-status-property-for-filter';\r\nimport { initialize as initializePop, appendPeriodOverPeriodProperties } from '../util/update-pop-property-for-filter';\r\nimport { initialize as initializeAuctionInsight } from '../util/update-auction-insight-property-for-filter';\r\nimport { initialize as initializeExperiment, updateOdataOptionsForExperiment } from '../util/update-experiment-property-for-filter';\r\nimport { initialize as initializeAdsByBing } from '../util/update-adsbybing-property-for-filter';\r\nimport { updateOdataOptionsForMultiplied } from '../util/update-mutiplied-property-for-filter';\r\n\r\nexport class BaseSchemaProcessor {\r\n constructor(options) {\r\n initializeDeliveryStatus(options);\r\n initializeLabels(options);\r\n initializePop(options);\r\n initializeAuctionInsight(options);\r\n initializeExperiment(options);\r\n initializeAdsByBing(options);\r\n\r\n this.i18n = options.i18n;\r\n this.Permissions = options.globalConfig.get('Permissions');\r\n this.isForVNext = options.isForVNext;\r\n this.passedInI18n = options.passedInI18n;\r\n this.isAccountLabelsEnabled =\r\n this.Permissions && this.Permissions.IsAccountLabelsEnabled;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n // For labels, as it is lambda expression, it need specific mapping from value to odata url\r\n updateOdataOptionsForLabels(odataOptions, this.isAccountLabelsEnabled);\r\n updateOdataOptionsForExperiment(odataOptions);\r\n updateOdataOptionsForMultiplied(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n updateEntitySchemaForLabels(entitySchema, this.isAccountLabelsEnabled);\r\n appendPeriodOverPeriodProperties(entitySchema);\r\n return entitySchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function lambdaConvertForArrayTypes(logic, secondLogic, operator, name, type) {\r\n return (values) => {\r\n const fieldId = 'd:d';\r\n let url = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n url += ` ${logic} `;\r\n }\r\n url += `${name}/${secondLogic}(${fieldId} ${operator} Enum.${type}'${value}')`;\r\n });\r\n return url;\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { lambdaConvertForArrayTypes } from './update-odata-options-for-array-type';\r\n\r\nlet i18n = null;\r\nlet schemaI18nCampaign = null;\r\nlet languageI18n = null;\r\nlet s$AdGroup = null;\r\nlet globalConfig = null;\r\n\r\nfunction getLanguagesItems() {\r\n let languages = _.without(s$AdGroup.properties.Language.enum, 'All', 'None');\r\n const Permissions = globalConfig.get('Permissions');\r\n\r\n languages.unshift('All'); // Make all language into header of array\r\n\r\n if (!Permissions.IsSimplifiedChineseLanguageEnabledInMultipleLanguage) {\r\n languages = _.without(languages, 'SimplifiedChinese');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase1Enabled) {\r\n languages = _.without(languages, 'Greek', 'Polish', 'Bulgarian', 'Croatian', 'Czech', 'Estonian', 'Hungarian', 'Latvian', 'Lithuanian', 'Maltese', 'Romanian', 'Slovak', 'Slovenian');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase2Enabled) {\r\n languages = _.without(languages, 'Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase6Enabled) {\r\n languages = _.without(languages, 'Hebrew', 'Arabic', 'Russian');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase2JapanEnabled) {\r\n languages = _.without(languages, 'Japanese');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase9Enabled) {\r\n languages = _.without(languages, 'Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog');\r\n }\r\n\r\n if (!Permissions.IsAdsGlobalizationPhase9VIEnabled) {\r\n languages = _.without(languages, 'Vietnamese');\r\n }\r\n\r\n if (Permissions.IsDomesticSimplifiedChineseEnabled) {\r\n languages = ['SimplifiedChinese'];\r\n }\r\n\r\n return _.map(languages, language => ({ Id: language, Name: languageI18n.getString(`Language_${language}`) }));\r\n}\r\n\r\nclass LanaguageDataSource {\r\n constructor() {\r\n this.languages = getLanguagesItems();\r\n }\r\n\r\n get(_viewFilter, searchFilter) {\r\n if (!searchFilter) {\r\n return Promise.resolve(this.languages);\r\n }\r\n\r\n const searchFilterLowerCase = searchFilter.toLowerCase();\r\n const languagesToReturn =\r\n _.select(\r\n this.languages,\r\n language => language.Name.toLowerCase().indexOf(searchFilterLowerCase) === 0\r\n );\r\n\r\n return Promise.resolve(languagesToReturn);\r\n }\r\n\r\n getByIds() {\r\n return Promise.resolve(this.languages);\r\n }\r\n}\r\n\r\nexport function initialize(options) {\r\n ({\r\n i18n,\r\n schemaI18nCampaign,\r\n languageI18n,\r\n s$AdGroup,\r\n globalConfig,\r\n } = options);\r\n}\r\n\r\nexport function updateEntitySchemaForCampaignLanguages(entitySchema) {\r\n const entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.Languages = {\r\n property: 'Languages',\r\n name: schemaI18nCampaign.property('Campaign', 'Languages'),\r\n title: schemaI18nCampaign.property('Campaign', 'Languages'),\r\n operatorDisplayNameMap: {\r\n containsall: i18n.getString('FilterOperator_ContainsAll'),\r\n containsany: i18n.getString('FilterOperator_ContainsAny'),\r\n containsnone: i18n.getString('FilterOperator_ContainsNone'),\r\n },\r\n operators: ['containsall', 'containsany', 'containsnone'],\r\n type: 'id',\r\n filterable: true,\r\n addtionalParams: {\r\n dataSource: new LanaguageDataSource(),\r\n selectorOptions: {\r\n keyMap: {\r\n // eslint-disable-next-line camelcase\r\n Selector_Filter_Placeholder: () => i18n.getString('LanguageLabelText'),\r\n },\r\n },\r\n },\r\n };\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForCampaignLanguages(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n Languages: {\r\n containsall: lambdaConvertForArrayTypes('and', 'any', 'eq', 'Languages', 'Language'),\r\n containsany: lambdaConvertForArrayTypes('or', 'any', 'eq', 'Languages', 'Language'),\r\n containsnone: lambdaConvertForArrayTypes('and', 'all', 'ne', 'Languages', 'Language'),\r\n },\r\n });\r\n return optionsCopy;\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet schemaI18nCampaign = null;\r\nlet i18n = null;\r\nexport function initialize(options) {\r\n ({\r\n schemaI18nCampaign,\r\n i18n,\r\n } = options);\r\n}\r\n\r\nexport function lambdaConvertForAvailableInsightTypeIds() {\r\n return (values) => {\r\n let url = '';\r\n\r\n _.each(values, (value, index) => {\r\n if (index > 0) {\r\n url += ' or ';\r\n }\r\n url += `d eq ${value}`;\r\n });\r\n url = `AvailableInsightTypeIds/any(d:${url})`;\r\n return url;\r\n };\r\n}\r\n\r\nexport const baseEntitySchemaForAvailableInsightTypeIds = {\r\n property: 'AvailableInsightTypeIds',\r\n type: 'string',\r\n filterable: true,\r\n enumType: 'FluctuationType',\r\n enum: [\r\n \"Enum.FluctuationType'Click'\",\r\n \"Enum.FluctuationType'Impression'\",\r\n \"Enum.FluctuationType'Spend'\",\r\n \"Enum.FluctuationType'Conversion'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.FluctuationType'Click'\": 'Click',\r\n \"Enum.FluctuationType'Impression'\": 'Impression',\r\n \"Enum.FluctuationType'Spend'\": 'Spend',\r\n \"Enum.FluctuationType'Conversion'\": 'Conversion',\r\n },\r\n chooseType: 'checkbox',\r\n operators: ['contains'],\r\n};\r\n\r\nexport function updateEntitySchemaForAvailableInsightTypeIds(entitySchema) {\r\n const entitySchemaCopy = entitySchema;\r\n entitySchemaCopy.properties.AvailableInsightTypeIds = {\r\n ...baseEntitySchemaForAvailableInsightTypeIds,\r\n name: schemaI18nCampaign.property('Campaign', 'AvailableInsightTypeIds'),\r\n title: schemaI18nCampaign.property('Campaign', 'AvailableInsightTypeIds'),\r\n localized: {\r\n \"Enum.FluctuationType'Click'\": schemaI18nCampaign.enum('FluctuationType', 'Click'),\r\n \"Enum.FluctuationType'Impression'\": schemaI18nCampaign.enum('FluctuationType', 'Impression'),\r\n \"Enum.FluctuationType'Spend'\": schemaI18nCampaign.enum('FluctuationType', 'Spend'),\r\n \"Enum.FluctuationType'Conversion'\": i18n.getString(_TL_('Conversions')),\r\n },\r\n };\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForAvailableInsightTypeIds(options) {\r\n if (options) {\r\n const optionsCopy = options;\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n AvailableInsightTypeIds: {\r\n contains: lambdaConvertForAvailableInsightTypeIds(),\r\n },\r\n });\r\n return optionsCopy;\r\n }\r\n return options;\r\n}\r\n","import _ from 'underscore';\r\n\r\n\r\n/**\r\n * Update status property for filter\r\n *\r\n * @param {Object} entitySchema - the option to update for filter\r\n * @returns {void}\r\n*/\r\nexport function updateStatusPropertyForFilter(entitySchema) {\r\n const statusProperty = entitySchema.properties.Status;\r\n let deleteIndex = -1;\r\n\r\n if (statusProperty && _.isArray(statusProperty.enum)) {\r\n _.each(statusProperty.enum, (value, index) => {\r\n if (value.indexOf('Delete') > -1) {\r\n deleteIndex = index;\r\n }\r\n });\r\n if (deleteIndex > 0) {\r\n statusProperty.enum.splice(deleteIndex, 1);\r\n }\r\n }\r\n return statusProperty;\r\n}\r\n\r\n","import _ from 'underscore';\r\n\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\nimport { updateAuctionInsightPropertyForFilter } from '../util/update-auction-insight-property-for-filter';\r\nimport { initialize as initializeCampaignLanguages, updateEntitySchemaForCampaignLanguages, updateOdataOptionsForCampaignLanguages } from '../util/update-campaign-languages-property-for-filter';\r\nimport { initialize as initializeAvailableInsightTypeIds, updateEntitySchemaForAvailableInsightTypeIds, updateOdataOptionsForAvailableInsightTypeIds } from '../util/update-available-insight-type-ids-property-for-filter';\r\nimport { updateStatusPropertyForFilter } from '../util/update-status-property-for-filter';\r\n\r\nexport class CampaignSchemaProcessor extends BaseSchemaProcessor {\r\n /**\r\n * @param {Object} options - The options object that is used to configure schema processor\r\n * @param {Object} options.i18n - Legacy global i18n\r\n * @param {Object} options.schemaI18nCampaign - Campaign schema i18n\r\n * @param {Object} options.languageI18n - Multi language selector i18n\r\n * @param {Object} options.s$AdGroup - Adgroup schema\r\n * @param {Object} options.globalConfig - Global app config\r\n */\r\n constructor(options) {\r\n initializeCampaignLanguages(options);\r\n initializeAvailableInsightTypeIds(options);\r\n super(options);\r\n this.newI18n = options.newI18n;\r\n this.isFromCampaignGrid = options.isFromCampaignGrid;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n let deliveryStatusEnumSet = ['InvalidFinancialStatusOther',\r\n 'CampaignSuspended',\r\n 'CampaignBudgetPaused',\r\n 'CampaignUserPaused',\r\n 'Eligible',\r\n 'BudgetSuggestions',\r\n 'AutoBiddingLimitedByNotEnoughConversions',\r\n 'AutoBiddingLearning',\r\n 'NoEligibleAdGroups',\r\n 'CampaignInReview',\r\n 'CPSNonRetailDomain',\r\n 'CPSInsufficientConversions',\r\n 'CPSAttributionBroken',\r\n ];\r\n\r\n // should remove old pilot after new pilot enabled\r\n if (this.Permissions.IsCampaignTargetROASBidStrategyEnabled || this.Permissions.IsNewCampaignTargetROASBidStrategyEnabled) { // eslint-disable-line\r\n const idx = deliveryStatusEnumSet.indexOf('AutoBiddingLimitedByNotEnoughConversions');\r\n\r\n deliveryStatusEnumSet = [...deliveryStatusEnumSet.slice(0, idx), 'AutoBiddingLimitedByNotEnoughRevenue', ...deliveryStatusEnumSet.slice(idx)];\r\n }\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.AutoBiddingStrategies) {\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('AutoBiddingLimitedByNotEnoughConversions') + 1, 0, 'AutoBiddingLimitedInventoryLimit', 'AutoBiddingLimitedMaxCPCRestriction', 'AutoBiddingLimitedBudgetRestriction', 'AutoBiddingLimitedUnAttainableTarget', 'AutoBiddingPortfolioBidStrategyTrainingStatus');\r\n }\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.LinkedInCampaigns) {\r\n deliveryStatusEnumSet = [...deliveryStatusEnumSet, 'AdGroupExpired', 'AudienceTooNarrow', 'LinkedInAccountServingHold', 'LinkedInCompanyPagePaidMediaRequired'];\r\n }\r\n\r\n updateStatusPropertyForFilter(entitySchema);\r\n updateDeliveryStatusPropertyForFilter(updatedSchema, deliveryStatusEnumSet);\r\n\r\n updateEntitySchemaForCampaignLanguages(updatedSchema);\r\n updateAuctionInsightPropertyForFilter(updatedSchema);\r\n\r\n // update campaign title to 'campaign name', status title to 'Campaign Status'\r\n // for campaign grid filter\r\n const nameOption = _.find(updatedSchema.properties, item => item.name === 'Name');\r\n\r\n nameOption.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignName');\r\n\r\n const campaignStatusOption = _.find(updatedSchema.properties, item => item.name === 'Status');\r\n\r\n campaignStatusOption.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignStatus');\r\n\r\n // update title for seasonality adjustment id.\r\n // Spatial case, localize as \"Seasonality adjustment name\"\r\n const SeasonalityAdjustment = _.find(updatedSchema.properties, item => item.name === 'SeasonalityAdjustmentId');\r\n const DataExclusion = _.find(updatedSchema.properties, item => item.name === 'DataExclusionId');\r\n\r\n if (this.newI18n) {\r\n SeasonalityAdjustment.title = this.newI18n.getString(_TL_('Seasonality adjustment name'));\r\n DataExclusion.title = this.newI18n.getString(_TL_('Data exclusion name'));\r\n }\r\n\r\n // if there is SeasonalityAdjustment, there must be DataExclusion\r\n /* istanbul ignore next */\r\n if (SeasonalityAdjustment) {\r\n if (this.isFromCampaignGrid) {\r\n SeasonalityAdjustment.filterable = true;\r\n DataExclusion.filterable = true;\r\n } else {\r\n SeasonalityAdjustment.filterable = false;\r\n DataExclusion.filterable = false;\r\n }\r\n }\r\n\r\n // update title for campaign id\r\n const idOption = _.find(updatedSchema.properties, item => item.name === 'Id');\r\n\r\n idOption.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignId');\r\n\r\n if (this.isForVNext) {\r\n // These properties are not supported by google.\r\n // For first iteration, we will drop their support.\r\n delete updatedSchema.properties.Languages;\r\n\r\n updateEntitySchemaForAvailableInsightTypeIds(updatedSchema);\r\n }\r\n\r\n if (this.Permissions.dynamic && (this.Permissions.dynamic.XandrVideoCampaigns || this.Permissions.dynamic.XandrDisplayAdsCampaigns)) {\r\n const biddingStrategyType = updatedSchema.properties.DisplayBiddingStrategyType;\r\n if (!biddingStrategyType.localized) {\r\n biddingStrategyType.localized = {};\r\n }\r\n\r\n biddingStrategyType.localized[\"Enum.BiddingStrategyType'ManualCpm'\"] = this.i18n.getString('BidStrategy_ManualCpm_ViewableCpm');\r\n\r\n if (this.Permissions.dynamic.XandrVideoCampaigns) {\r\n biddingStrategyType.localized[\"Enum.BiddingStrategyType'ManualCpv'\"] = this.i18n.getString('BidStrategy_ManualCpv_Cpcv');\r\n }\r\n }\r\n\r\n updatedSchema.properties.DisplayBiddingStrategyTargetCpa = {\r\n filterable: true,\r\n type: 'number',\r\n property: 'DisplayBiddingStrategyTargetCpa',\r\n };\r\n updatedSchema.properties.DisplayBiddingStrategyTargetRoas = {\r\n filterable: true,\r\n type: 'number',\r\n maximum: 10000000,\r\n property: 'DisplayBiddingStrategyTargetRoas',\r\n isPercentValue: true,\r\n };\r\n updatedSchema.properties.DisplayBiddingStrategyTargetImpressionShare = {\r\n filterable: true,\r\n type: 'number',\r\n isPercentValue: true,\r\n property: 'DisplayBiddingStrategyTargetImpressionShare',\r\n };\r\n if (this.Permissions.dynamic.AppAdsCampaignPhaseOne) {\r\n updatedSchema.properties.DisplayBiddingStrategyManualCpi = {\r\n filterable: true,\r\n type: 'number',\r\n property: 'DisplayBiddingStrategyManualCpi',\r\n };\r\n }\r\n if (this.Permissions.dynamic.UnifiedAppAds) {\r\n updatedSchema.properties.DisplayBiddingStrategyManualCpc = {\r\n filterable: true,\r\n type: 'number',\r\n property: 'DisplayBiddingStrategyManualCpc',\r\n };\r\n }\r\n\r\n // automated rule will not work if wrap below in if (isVNext)\r\n if (this.Permissions.IsPersonalizedOffersEnabled) {\r\n updatedSchema.properties.CampaignCashbackPercent = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n property: 'CampaignCashback/Percent',\r\n required: true,\r\n };\r\n if (!(this.Permissions.IsPersonalizedOffersV2Enabled ||\r\n this.Permissions.IsPersonalizedOffersV3Enabled)) {\r\n updatedSchema.properties.CampaignCashbackMonthlyBudget = {\r\n filterable: true,\r\n type: 'number',\r\n property: 'CampaignCashback/MonthlyBudget',\r\n required: true,\r\n };\r\n }\r\n updatedSchema.properties.CampaignCashbackScope = {\r\n filterable: true,\r\n type: 'string',\r\n property: 'CampaignCashback/Scope',\r\n chooseType: 'checkbox',\r\n operators: ['eq'],\r\n enum: [\"Enum.CashbackScope'None'\", \"Enum.CashbackScope'Store'\", \"Enum.CashbackScope'Product'\"],\r\n enumValueMap: {\r\n \"Enum.CashbackScope'None'\": 'None',\r\n \"Enum.CashbackScope'Store'\": 'Store',\r\n \"Enum.CashbackScope'Product'\": 'Product',\r\n },\r\n required: true,\r\n };\r\n if (this.Permissions.IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.Coupon = {\r\n filterable: true,\r\n type: 'string',\r\n property: 'CampaignCashback/CouponsEnabled',\r\n chooseType: 'checkbox',\r\n operators: ['in'],\r\n enum: [\"Enum.CouponsEnabled'Enabled'\", \"Enum.CouponsEnabled'Disabled'\"],\r\n enumValueMap: {\r\n \"Enum.CouponsEnabled'Enabled'\": 'Enabled',\r\n \"Enum.CouponsEnabled'Disabled'\": 'Disabled',\r\n },\r\n required: true,\r\n };\r\n }\r\n }\r\n if (!this.Permissions.IsOptimizationScoreInCampaignsGridEnabled) {\r\n delete updatedSchema.properties.OptimizationScore;\r\n }\r\n\r\n if ((!this.Permissions || !this.Permissions.dynamic || !this.Permissions.dynamic.LinkedInCampaigns)\r\n && updatedSchema.properties.CampaignType) {\r\n const campaignType = updatedSchema.properties.CampaignType;\r\n\r\n campaignType.enum = _.without(campaignType.enum, \"Enum.CampaignType'LinkedIn'\");\r\n campaignType.enumValueMap = _.omit(campaignType.enumValueMap, \"Enum.CampaignType'LinkedIn'\");\r\n }\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.CampaignLifetimeBudget) {\r\n updatedSchema.properties.LifetimeBudget =\r\n {\r\n title: this.i18n.getString('FilterLocalization_DataAttribute_CampaignLifetimeBudgetAmount'),\r\n property: 'Budget/LifetimeBudgetAmount',\r\n type: 'number',\r\n minimum: 0,\r\n filterable: true,\r\n };\r\n\r\n updatedSchema.properties.BudgetAmount.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignDailyBudgetAmount');\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForCampaignLanguages(odataOptions);\r\n updateOdataOptionsForAvailableInsightTypeIds(odataOptions);\r\n\r\n _.extendOwn(odataOptions.custom, {\r\n DeliveryStatus: {\r\n eq: (value) => {\r\n let url = `DeliveryStatus eq ${value}`;\r\n\r\n if (value === \"Enum.DeliveryStatus'Eligible'\") {\r\n url += ' or DeliveryStatus eq Enum.DeliveryStatus\\'InlineOpportunity\\'';\r\n }\r\n\r\n return url;\r\n },\r\n },\r\n IsExperiment: {\r\n eq: (val) => {\r\n const operator = val ? 'gt' : 'le';\r\n\r\n return `ExperimentId ${operator} 0`;\r\n },\r\n },\r\n 'CampaignCashback/Scope': {\r\n eq: (filterValues) => {\r\n const queryStr = _.map(filterValues, value => `CampaignCashback/Scope eq ${value}`).join(' or ');\r\n\r\n return `(${queryStr})`;\r\n },\r\n },\r\n });\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { mapEnumValueForFilter, updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\nimport { updateAuctionInsightPropertyForFilter } from '../util/update-auction-insight-property-for-filter';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\nimport { updateStatusPropertyForFilter } from '../util/update-status-property-for-filter';\r\n\r\nexport class AdGroupSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n // update campaign title to 'campaign name' for adgroup filter, also\r\n // update the name to 'campaign' to avoid conflict with name for adgroup\r\n const campaignNameProperty = updatedSchema.properties.CampaignName;\r\n\r\n campaignNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignName');\r\n\r\n // update enum mapping for status\r\n const statusProperty = updatedSchema.properties.Status;\r\n\r\n const statusEnumSet = [\r\n 'CampaignUserPaused',\r\n 'CampaignBudgetPaused',\r\n 'CampaignBudgetUserPaused',\r\n 'Draft',\r\n 'Active',\r\n 'Paused',\r\n 'Expired'];\r\n statusProperty.enum = _.map(statusEnumSet, value => mapEnumValueForFilter('AdGroupStatus', value));\r\n\r\n // leave only SearchBid or CpcBid\r\n const {\r\n IsManualCpmEnabled,\r\n IsVideoAdsForCampaignEnabled,\r\n } = this.Permissions;\r\n const cpcbid = updatedSchema.properties.CpcBid;\r\n if (cpcbid) {\r\n cpcbid.filterable = false;\r\n }\r\n if (IsManualCpmEnabled || IsVideoAdsForCampaignEnabled) {\r\n const searchBid = updatedSchema.properties.SearchBid;\r\n searchBid.title = this.i18n.getString('AdGroupSummary_ColumnName_CpcBid');\r\n }\r\n if (!IsManualCpmEnabled) {\r\n const cpmbid = updatedSchema.properties.CpmBid;\r\n if (cpmbid) {\r\n cpmbid.filterable = false;\r\n }\r\n }\r\n if (!IsVideoAdsForCampaignEnabled && !(this.Permissions.dynamic && this.Permissions.dynamic.XandrVideoCampaigns)) {\r\n const cpvbid = updatedSchema.properties.CpvBid;\r\n if (cpvbid) {\r\n cpvbid.filterable = false;\r\n }\r\n }\r\n\r\n if (this.Permissions.dynamic && (this.Permissions.dynamic.XandrVideoCampaigns || this.Permissions.dynamic.XandrDisplayAdsCampaigns)) {\r\n const biddingStrategyType = updatedSchema.properties.DisplayBiddingStrategyType;\r\n if (!biddingStrategyType.localized) {\r\n biddingStrategyType.localized = {};\r\n }\r\n\r\n biddingStrategyType.localized[\"Enum.BiddingStrategyType'ManualCpm'\"] = this.i18n.getString('BidStrategy_ManualCpm_ViewableCpm');\r\n\r\n if (this.Permissions.dynamic.XandrVideoCampaigns) {\r\n biddingStrategyType.localized[\"Enum.BiddingStrategyType'ManualCpv'\"] = this.i18n.getString('BidStrategy_ManualCpv_Cpcv');\r\n }\r\n }\r\n\r\n // update adgroup title to 'ad group name'\r\n const adgroupNameProperty = updatedSchema.properties.Name;\r\n\r\n adgroupNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_AdGroupName');\r\n\r\n const adgroupLanguageProperty = updatedSchema.properties.Language;\r\n\r\n if (adgroupLanguageProperty && adgroupLanguageProperty.filterable) {\r\n adgroupLanguageProperty.enum = _.without(adgroupLanguageProperty.enum, \"Enum.Language'All'\");\r\n const {\r\n IsSimplifiedChineseLanguageEnabledInMultipleLanguage,\r\n IsAdsGlobalizationPhase1Enabled,\r\n IsAdsGlobalizationPhase2Enabled,\r\n IsAdsGlobalizationPhase2JapanEnabled,\r\n IsAdsGlobalizationPhase6Enabled,\r\n IsAdsGlobalizationPhase9Enabled,\r\n IsAdsGlobalizationPhase9VIEnabled,\r\n } = this.Permissions;\r\n\r\n if (!IsSimplifiedChineseLanguageEnabledInMultipleLanguage) {\r\n adgroupLanguageProperty.enum = _.without(adgroupLanguageProperty.enum, \"Enum.Language'TraditionalChinese'\");\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase1Enabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Greek'\",\r\n \"Enum.Language'Polish'\",\r\n \"Enum.Language'Bulgarian'\",\r\n \"Enum.Language'Croatian'\",\r\n \"Enum.Language'Czech'\",\r\n \"Enum.Language'Estonian'\",\r\n \"Enum.Language'Hungarian'\",\r\n \"Enum.Language'Latvian'\",\r\n \"Enum.Language'Lithuanian'\",\r\n \"Enum.Language'Maltese'\",\r\n \"Enum.Language'Romanian'\",\r\n \"Enum.Language'Slovak'\",\r\n \"Enum.Language'Slovenian'\",\r\n \"Enum.Language'Turkish'\",\r\n \"Enum.Language'Serbian'\",\r\n \"Enum.Language'Bosnian'\",\r\n \"Enum.Language'Albanian'\",\r\n \"Enum.Language'Macedonian'\",\r\n \"Enum.Language'Icelandic'\"\r\n );\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase2Enabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Turkish'\",\r\n \"Enum.Language'Serbian'\",\r\n \"Enum.Language'Bosnian'\",\r\n \"Enum.Language'Albanian'\",\r\n \"Enum.Language'Macedonian'\",\r\n \"Enum.Language'Icelandic'\"\r\n );\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase2JapanEnabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Japanese'\"\r\n );\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase6Enabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Hebrew'\",\r\n \"Enum.Language'Arabic'\",\r\n \"Enum.Language'Russian'\"\r\n );\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase9Enabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Hindi'\",\r\n \"Enum.Language'Malay'\",\r\n \"Enum.Language'Thai'\",\r\n \"Enum.Language'Indonesian'\",\r\n \"Enum.Language'Tagalog'\"\r\n );\r\n }\r\n\r\n if (!IsAdsGlobalizationPhase9VIEnabled) {\r\n adgroupLanguageProperty.enum = _.without(\r\n adgroupLanguageProperty.enum,\r\n \"Enum.Language'Vietnamese'\"\r\n );\r\n }\r\n\r\n adgroupLanguageProperty.enum.unshift(null);\r\n adgroupLanguageProperty.localized = {\r\n null: this.i18n.getString('Language_Inherit'),\r\n };\r\n }\r\n\r\n const deliveryStatusEnumSet = [\r\n 'InvalidFinancialStatusOther',\r\n 'CampaignSuspended',\r\n 'CampaignBudgetPaused',\r\n 'CampaignUserPaused',\r\n 'Eligible',\r\n 'AdGroupExpired',\r\n 'AdGroupDraft',\r\n 'AdGroupUserPaused',\r\n 'AdGroupPrivacyPending',\r\n 'AdGroupTargetingTooNarrow',\r\n 'NoEligibleAds',\r\n 'NoEligibleKeywords',\r\n ];\r\n\r\n updateStatusPropertyForFilter(entitySchema);\r\n updateDeliveryStatusPropertyForFilter(entitySchema, deliveryStatusEnumSet);\r\n updateAuctionInsightPropertyForFilter(entitySchema);\r\n\r\n // make campaignstatus not show in filter drop down\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'PerformanceMax'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions,\r\n });\r\n updatedSchema.properties.CampaignType.enum =\r\n _.difference(updatedSchema.properties.CampaignType.enum, campaignTypeNotSupported);\r\n // These properties are not supported by google.\r\n // For first iteration, we will drop their support.\r\n delete updatedSchema.properties.StartDate;\r\n delete updatedSchema.properties.EndDate;\r\n delete updatedSchema.properties.Language;\r\n }\r\n\r\n // automated rule will not work if wrap below in if (isVNext)\r\n if (this.Permissions.IsPersonalizedOffersEnabled) {\r\n updatedSchema.properties.AdGroupCashbackPercent = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n property: 'AdGroupCashback/Percent',\r\n required: true,\r\n };\r\n updatedSchema.properties.AdGroupCashbackScope = {\r\n filterable: true,\r\n type: 'string',\r\n property: 'AdGroupCashback/Scope',\r\n chooseType: 'checkbox',\r\n operators: ['eq'],\r\n enum: [\"Enum.CashbackScope'None'\", \"Enum.CashbackScope'Store'\", \"Enum.CashbackScope'Product'\"],\r\n enumValueMap: {\r\n \"Enum.CashbackScope'None'\": 'None',\r\n \"Enum.CashbackScope'Store'\": 'Store',\r\n \"Enum.CashbackScope'Product'\": 'Product',\r\n },\r\n required: true,\r\n };\r\n if (this.Permissions.IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.Coupon = {\r\n filterable: true,\r\n type: 'string',\r\n property: 'AdGroupCashback/CouponsEnabled',\r\n chooseType: 'checkbox',\r\n operators: ['in'],\r\n enum: [\"Enum.CouponsEnabled'None'\", \"Enum.CouponsEnabled'Enabled'\", \"Enum.CouponsEnabled'Disabled'\"],\r\n enumValueMap: {\r\n \"Enum.CouponsEnabled'None'\": 'None',\r\n \"Enum.CouponsEnabled'Enabled'\": 'Enabled',\r\n \"Enum.CouponsEnabled'Disabled'\": 'Disabled',\r\n },\r\n required: true,\r\n };\r\n }\r\n }\r\n\r\n if (!this.Permissions.IsDSAMixedModeCampaignEnabled) {\r\n delete updatedSchema.properties.AdGroupType;\r\n } else {\r\n const adGroupTypeProperty = updatedSchema.properties.AdGroupType;\r\n\r\n adGroupTypeProperty.chooseType = 'checkbox';\r\n adGroupTypeProperty.operators = ['eq'];\r\n adGroupTypeProperty.enum = _.without(adGroupTypeProperty.enum, \"Enum.AdGroupType'Unknown'\", \"Enum.AdGroupType'HotelAds'\");\r\n adGroupTypeProperty.enum.push(null);\r\n adGroupTypeProperty.localized = {\r\n null: '-',\r\n };\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n\r\n _.extendOwn(odataOptions.custom, {\r\n AdGroupType: {\r\n eq: (filterValues) => {\r\n let queryStr = _.map(filterValues, value => `AdGroupType eq ${value}`).join(' or ');\r\n\r\n if (this.Permissions.dynamic.HotelCampaign && filterValues.includes(null)) {\r\n queryStr += \" or AdGroupType eq Enum.AdGroupType'HotelAds'\";\r\n }\r\n\r\n return `(${queryStr})`;\r\n },\r\n },\r\n 'AdGroupCashback/Scope': {\r\n eq: (filterValues) => {\r\n const queryStr = _.map(filterValues, value => `AdGroupCashback/Scope eq ${value}`).join(' or ');\r\n\r\n return `(${queryStr})`;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","export function updateEntitySchemaForTrackingUrlTemplate(entitySchema) {\r\n const entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.TrackingUrlTemplate.operators\r\n = ['contains', 'doesnotcontain', 'startswith', 'eq'];\r\n\r\n return entitySchemaCopy;\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction lambdaConvertForFinals(property, contain) {\r\n return (values = '') => {\r\n const formalizedValues = values.replace(/'/g, '\\'\\'');\r\n if (contain) {\r\n return `${property}/any(d:contains(d,'${formalizedValues}'))`;\r\n }\r\n\r\n return `${property}/any(d:contains(d,'${formalizedValues}') eq false)`;\r\n };\r\n}\r\n\r\nexport function updateEntitySchemaForFinalUrls(entitySchema) {\r\n const entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.FinalUrls = {\r\n name: 'FinalUrls',\r\n property: 'FinalUrls',\r\n operators: ['contains', 'doesnotcontain'],\r\n type: 'string',\r\n filterable: true,\r\n };\r\n\r\n entitySchemaCopy.properties.MobileFinalUrls = {\r\n name: 'MobileFinalUrls',\r\n property: 'MobileFinalUrls',\r\n operators: ['contains', 'doesnotcontain'],\r\n type: 'string',\r\n filterable: true,\r\n };\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForFinalUrl(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n MobileFinalUrls: {\r\n contains: lambdaConvertForFinals('MobileFinalUrls', true),\r\n doesnotcontain: lambdaConvertForFinals('MobileFinalUrls', false),\r\n },\r\n FinalUrls: {\r\n contains: lambdaConvertForFinals('FinalUrls', true),\r\n doesnotcontain: lambdaConvertForFinals('FinalUrls', false),\r\n },\r\n });\r\n return optionsCopy;\r\n}\r\n","export function updateEntitySchemaForFinalURLSuffix(entitySchema) {\r\n const entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties.FinalUrlSuffix.operators\r\n = ['contains', 'doesnotcontain', 'startswith', 'eq'];\r\n\r\n return entitySchemaCopy;\r\n}\r\n","export function updateEditorialRejectionReasonForFilter({\r\n entitySchema, enableEditorialRejectionFilter, i18n,\r\n}) {\r\n // update editorial rejection reason filter property\r\n const editorialRejectionFlagId = entitySchema.properties.EditorialRejectionFlagId;\r\n const editorialRejectionDate = entitySchema.properties.EditorialRejectionDate;\r\n\r\n if (editorialRejectionFlagId) {\r\n editorialRejectionFlagId.filterable = enableEditorialRejectionFilter;\r\n editorialRejectionFlagId.title = i18n && i18n.getString('Schema_Ad_Property_EditorialRejectionFlagId');\r\n }\r\n if (editorialRejectionDate) {\r\n editorialRejectionDate.filterable = enableEditorialRejectionFilter;\r\n editorialRejectionDate.title = i18n && i18n.getString('Schema_Ad_Property_EditorialRejectionDate');\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\n\r\nexport function initialize(options) {\r\n i18n = options.passedInI18n;\r\n}\r\n\r\nexport function updateEntitySchemaForIsAppealPending(entitySchema) {\r\n _.extend(entitySchema.properties, {\r\n IsAppealPending: {\r\n name: 'IsAppealPending',\r\n localized: {\r\n true: i18n.getString('Is_Appeal_Pending_True'),\r\n false: i18n.getString('Is_Appeal_Pending_False'),\r\n },\r\n chooseType: 'select',\r\n filterable: true,\r\n property: 'IsAppealPending',\r\n type: 'boolean',\r\n title: i18n.getString('IsAppealPending'),\r\n },\r\n });\r\n\r\n return entitySchema;\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\nimport { updateAuctionInsightPropertyForFilter } from '../util/update-auction-insight-property-for-filter';\r\nimport { updateEntitySchemaForTrackingUrlTemplate } from '../util/update-tracking-template-property-for-filter';\r\nimport { updateOdataOptionsForFinalUrl, updateEntitySchemaForFinalUrls } from '../util/update-final-url-property-for-filter';\r\nimport { updateEntitySchemaForFinalURLSuffix } from '../util/update-final-url-suffix-property-for-filter';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\nimport { updateEditorialRejectionReasonForFilter } from '../util/update-editorial-rejection-reason-for-filter';\r\nimport { initialize as initializeIsAppealPending, updateEntitySchemaForIsAppealPending } from '../util/update-is-appeal-pending-property-for-filter';\r\nimport { updateStatusPropertyForFilter } from '../util/update-status-property-for-filter';\r\n\r\nexport class KeywordSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n initializeIsAppealPending(options);\r\n\r\n this.enableEditorialRejectionFilter = options.enableEditorialRejectionFilter;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const campaignNameProperty = updatedSchema.properties.CampaignName;\r\n campaignNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignName');\r\n\r\n const adgroupNameProperty = updatedSchema.properties.AdGroupName;\r\n adgroupNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_AdGroupName');\r\n\r\n const deliveryStatusEnumSet = ['NegativeKeywordConflicts',\r\n 'PartialNegativeKeywordConflicts',\r\n 'EditorialApprovedLimited',\r\n 'LowSupply',\r\n 'LowQuality',\r\n 'BidBelowFirstPageBid',\r\n 'CampaignBudgetPaused',\r\n 'CampaignUserPaused',\r\n 'AdGroupExpired',\r\n 'EditorialRejected',\r\n 'CampaignSuspended',\r\n 'AdGroupDraft',\r\n 'EditorialUnderAppeal',\r\n 'EditorialPending',\r\n 'AdGroupUserPaused',\r\n 'InvalidFinancialStatusOther',\r\n 'Eligible',\r\n ];\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.AppealUpheld) {\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialApprovedLimited') + 1, 0, 'EditorialApprovedLimitedAppealRejected');\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialRejected') + 1, 0, 'EditorialAppealRejected');\r\n }\r\n\r\n updateStatusPropertyForFilter(entitySchema);\r\n\r\n updateDeliveryStatusPropertyForFilter(entitySchema, deliveryStatusEnumSet);\r\n\r\n updateAuctionInsightPropertyForFilter(entitySchema);\r\n\r\n updateEntitySchemaForFinalUrls(entitySchema);\r\n\r\n updateEntitySchemaForTrackingUrlTemplate(entitySchema);\r\n\r\n updateEntitySchemaForFinalURLSuffix(entitySchema);\r\n\r\n // make campaignstatus and adgroupproperty not show in filter drop down\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n const adgroupStatusProperty = updatedSchema.properties.AdGroupStatus;\r\n\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n if (adgroupStatusProperty) {\r\n adgroupStatusProperty.filterable = false;\r\n }\r\n\r\n updateEditorialRejectionReasonForFilter({\r\n entitySchema: updatedSchema,\r\n enableEditorialRejectionFilter: this.enableEditorialRejectionFilter,\r\n i18n: this.passedInI18n,\r\n });\r\n\r\n if (!this.isForVNext) {\r\n if (updatedSchema.properties.EditorialStatus) {\r\n updatedSchema.properties.EditorialStatus.filterable = false;\r\n }\r\n }\r\n // only enable it on new ui\r\n if (this.isForVNext) {\r\n updateEntitySchemaForIsAppealPending(updatedSchema);\r\n }\r\n\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'PerformanceMax'\", \"Enum.CampaignType'LinkedIn'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions, campaignTypeNotSupported,\r\n });\r\n }\r\n\r\n const matchTypesToExclude = [\"Enum.MatchType'Content'\"];\r\n const isPredictiveTargetingEnabled = this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.RSABidStrategyAutoTargeting;\r\n const isPredictiveMatchingEnabled = this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.PredictiveMatching;\r\n if (!isPredictiveTargetingEnabled && !isPredictiveMatchingEnabled) {\r\n matchTypesToExclude.push(\"Enum.MatchType'Predictive'\");\r\n }\r\n\r\n updatedSchema.properties.MatchType.enum = _.without(updatedSchema.properties.MatchType.enum, ...matchTypesToExclude);\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nlet i18n = null;\r\n\r\n// The filter will be like this:\r\n// $filter=contains(HeadlinesAssetId, '12345;true;Headline1;Best;assettext')\r\nfunction getParameter(value) {\r\n const parameters = value.split(';');\r\n const isPinned = parameters[1];\r\n const pinnedPosition = parameters[2];\r\n const performanceRating = parameters[3];\r\n const assetText = parameters[4];\r\n\r\n return {\r\n isPinned,\r\n pinnedPosition,\r\n performanceRating,\r\n assetText,\r\n };\r\n}\r\n\r\nexport function initialize(options) {\r\n i18n = options.passedInI18n;\r\n}\r\n\r\nexport function updateEntitySchemaForHeadlinesAssetId(entitySchema) {\r\n _.extend(entitySchema.properties, {\r\n HeadlinesAssetId: {\r\n name: 'HeadlinesAssetId',\r\n localize: (value) => {\r\n const {\r\n isPinned,\r\n pinnedPosition,\r\n assetText,\r\n } = getParameter(value);\r\n\r\n if (isPinned || pinnedPosition !== '') {\r\n return i18n.getString('Asset_Filter_Headline_Pinned_Content_No_PerformanceRating', {\r\n assetText,\r\n pinnedPosition: isPinned ? i18n.getString('PinnedAnyPosition') : i18n.getString(pinnedPosition),\r\n });\r\n }\r\n return i18n.getString('Asset_Filter_Headline_Content_No_PerformanceRating', {\r\n assetText,\r\n });\r\n },\r\n operatorDisplayNameMap: {\r\n contains: ' ',\r\n },\r\n filterable: true,\r\n property: 'HeadlinesAssetId',\r\n type: 'string',\r\n title: i18n.getString('HeadlinesAssetId'),\r\n },\r\n });\r\n\r\n return entitySchema;\r\n}\r\n\r\nexport function updateEntitySchemaForDescriptionsAssetId(entitySchema) {\r\n _.extend(entitySchema.properties, {\r\n DescriptionsAssetId: {\r\n name: 'DescriptionsAssetId',\r\n localize: (value) => {\r\n const {\r\n isPinned,\r\n pinnedPosition,\r\n assetText,\r\n } = getParameter(value);\r\n\r\n if (isPinned || pinnedPosition !== '') {\r\n return i18n.getString('Asset_Filter_Description_Pinned_Content_No_PerformanceRating', {\r\n assetText,\r\n pinnedPosition: isPinned ? i18n.getString('PinnedAnyPosition') : i18n.getString(pinnedPosition),\r\n });\r\n }\r\n\r\n return i18n.getString('Asset_Filter_Description_Content_No_PerformanceRating', {\r\n assetText,\r\n });\r\n },\r\n operatorDisplayNameMap: {\r\n contains: ' ',\r\n },\r\n filterable: true,\r\n property: 'DescriptionsAssetId',\r\n type: 'string',\r\n title: i18n.getString('DescriptionsAssetId'),\r\n },\r\n });\r\n\r\n return entitySchema;\r\n}\r\n","import _ from 'underscore';\r\n\r\nfunction updateEntitySchemaForAssetId(entitySchema, name) {\r\n const entitySchemaCopy = entitySchema;\r\n\r\n entitySchemaCopy.properties[name] = {\r\n name,\r\n // originalProperty: ...\r\n property: name,\r\n operators: ['contains'],\r\n type: 'string',\r\n // required: true,\r\n filterable: true,\r\n };\r\n\r\n return entitySchemaCopy;\r\n}\r\n\r\nfunction updateOdataOptionsForAssetId(options, { propertyName, entityName, modelName }) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n [propertyName]: {\r\n contains: values => `Model.ResponsiveAd/${entityName}/any(al:al/Asset/${modelName}/Id eq ${values})`,\r\n },\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n\r\nexport const imageProcessors = {\r\n updateEntitySchema(entitySchema) {\r\n return updateEntitySchemaForAssetId(entitySchema, 'ResponsiveAdImageId');\r\n },\r\n\r\n updateOdataOptions(options) {\r\n return updateOdataOptionsForAssetId(options, {\r\n propertyName: 'ResponsiveAdImageId',\r\n entityName: 'Images',\r\n modelName: 'Model.ImageAsset',\r\n });\r\n },\r\n};\r\n\r\nexport const videoProcessors = {\r\n updateEntitySchema(entitySchema) {\r\n return updateEntitySchemaForAssetId(entitySchema, 'ResponsiveAdVideoId');\r\n },\r\n\r\n updateOdataOptions(options) {\r\n return updateOdataOptionsForAssetId(options, {\r\n propertyName: 'ResponsiveAdVideoId',\r\n entityName: 'Videos',\r\n modelName: 'Model.VideoAsset',\r\n });\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateOdataOptionsForFinalUrl, updateEntitySchemaForFinalUrls } from '../util/update-final-url-property-for-filter';\r\nimport { updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\nimport { updateEntitySchemaForTrackingUrlTemplate } from '../util/update-tracking-template-property-for-filter';\r\nimport { updateAdsByBingPropertyForFilter } from '../util/update-adsbybing-property-for-filter';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\nimport { updateEntitySchemaForFinalURLSuffix } from '../util/update-final-url-suffix-property-for-filter';\r\nimport { updateEditorialRejectionReasonForFilter } from '../util/update-editorial-rejection-reason-for-filter';\r\nimport { initialize as initializeAssetId, updateEntitySchemaForHeadlinesAssetId, updateEntitySchemaForDescriptionsAssetId } from '../util/update-asset-id-for-filter';\r\nimport { initialize as initializeIsAppealPending, updateEntitySchemaForIsAppealPending } from '../util/update-is-appeal-pending-property-for-filter';\r\nimport { imageProcessors, videoProcessors } from '../util/update-asset-library-asset-id-for-filter';\r\nimport { updateStatusPropertyForFilter } from '../util/update-status-property-for-filter';\r\nimport { updateAdResourceStatusForFilter } from '../util/update-ad-resource-status-for-filter';\r\nimport { updateAdStrengthPropertyForFilter } from '../util/update-ad-strength-property-for-filter';\r\n\r\nexport class AdSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n initializeAssetId(options);\r\n initializeIsAppealPending(options);\r\n\r\n this.enableEditorialRejectionFilter = options.enableEditorialRejectionFilter;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const campaignNameProperty = updatedSchema.properties.CampaignName;\r\n campaignNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignName');\r\n\r\n const adgroupNameProperty = updatedSchema.properties.AdGroupName;\r\n adgroupNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_AdGroupName');\r\n\r\n const deliveryStatusEnumSet = ['EditorialApprovedLimited',\r\n 'InvalidFinancialStatusOther',\r\n 'CampaignBudgetPaused',\r\n 'AdGroupExpired',\r\n 'EditorialRejected',\r\n 'Eligible',\r\n 'CampaignSuspended',\r\n 'EditorialUnderAppeal',\r\n 'EditorialPending',\r\n 'CampaignUserPaused',\r\n 'AdGroupDraft',\r\n 'AdGroupUserPaused',\r\n 'AdGroupPrivacyPending',\r\n 'AdGroupTargetingTooNarrow',\r\n 'AdUserPaused',\r\n 'AdExtensionAssociationDeleted',\r\n 'ApplicationNotFound',\r\n 'UrlInvalid',\r\n 'ApplicationDestinationUrlMismatch',\r\n 'PendingMetadataSync',\r\n ];\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.AppealUpheld) {\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialApprovedLimited') + 1, 0, 'EditorialApprovedLimitedAppealRejected');\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialRejected') + 1, 0, 'EditorialAppealRejected');\r\n }\r\n updateAdStrengthPropertyForFilter(entitySchema, this.i18n);\r\n\r\n updateStatusPropertyForFilter(entitySchema);\r\n\r\n updateDeliveryStatusPropertyForFilter(entitySchema, deliveryStatusEnumSet);\r\n\r\n updateEntitySchemaForFinalUrls(entitySchema);\r\n\r\n updateEntitySchemaForTrackingUrlTemplate(entitySchema);\r\n\r\n updateEntitySchemaForFinalURLSuffix(entitySchema);\r\n\r\n const adTypeNotSupported = [\"Enum.AdType'Mobile'\"];\r\n if (!this.Permissions.IsUserAppInstallAdsAllowed) {\r\n adTypeNotSupported.push(\"Enum.AdType'AppInstall'\");\r\n }\r\n\r\n if (this.Permissions.IsMultiMediaAdsEnabled) {\r\n // When enable IsMultiMediaAdsEnabled, show text as \"Responsive ad / Multimedia ad\"\r\n updatedSchema.properties.Type.enumValueMap[\"Enum.AdType'Responsive'\"] = 'Multimedia';\r\n } else if (!this.Permissions.IsAIMCampaignEnabled) {\r\n adTypeNotSupported.push(\"Enum.AdType'Responsive'\");\r\n }\r\n\r\n updatedSchema.properties.Type.enum =\r\n _.difference(updatedSchema.properties.Type.enum, adTypeNotSupported);\r\n\r\n // make campaignstatus and adgroupproperty not show in filter drop down\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n const adgroupStatusProperty = updatedSchema.properties.AdGroupStatus;\r\n\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n if (adgroupStatusProperty) {\r\n adgroupStatusProperty.filterable = false;\r\n }\r\n\r\n updateEditorialRejectionReasonForFilter({\r\n entitySchema: updatedSchema,\r\n enableEditorialRejectionFilter: this.enableEditorialRejectionFilter,\r\n i18n: this.passedInI18n,\r\n });\r\n\r\n updateEntitySchemaForHeadlinesAssetId(updatedSchema);\r\n\r\n updateEntitySchemaForDescriptionsAssetId(updatedSchema);\r\n\r\n if (this.Permissions.IsAdsByBingEnabled) {\r\n updateAdsByBingPropertyForFilter(entitySchema);\r\n }\r\n\r\n if ((!this.Permissions || !this.Permissions.dynamic || !this.Permissions.dynamic.LinkedInCampaigns) && updatedSchema.properties.Type) {\r\n const adType = updatedSchema.properties.Type;\r\n\r\n adType.enum = _.without(adType.enum, \"Enum.AdType'LinkedIn'\");\r\n adType.enumValueMap = _.omit(adType.enumValueMap, \"Enum.AdType'LinkedIn'\");\r\n }\r\n\r\n updateAdResourceStatusForFilter({\r\n i18n: this.passedInI18n,\r\n entitySchema: updatedSchema,\r\n IsGoogleImportVideoAdsEnabled: this.Permissions.IsGoogleImportVideoAdsEnabled,\r\n });\r\n\r\n updateEntitySchemaForIsAppealPending(updatedSchema);\r\n\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'PerformanceMax'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions, campaignTypeNotSupported,\r\n });\r\n\r\n imageProcessors.updateEntitySchema(updatedSchema);\r\n\r\n videoProcessors.updateEntitySchema(updatedSchema);\r\n\r\n delete updatedSchema.properties.PerformanceMetricsAverageCPM;\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n\r\n imageProcessors.updateOdataOptions(odataOptions);\r\n\r\n videoProcessors.updateOdataOptions(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function updateAdStrengthPropertyForFilter(entitySchema, i18n) {\r\n const adStrengthProperty = entitySchema.properties.AdStrength;\r\n const localized = {};\r\n _.each(adStrengthProperty.enum, (prop) => {\r\n localized[prop] = i18n.getString(`Ad_Strength_Score_${adStrengthProperty.enumValueMap[prop]}`);\r\n });\r\n _.extendOwn(adStrengthProperty, {\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n title: i18n.getString('FilterLocalization_DataAttribute_AdStrength'),\r\n localized,\r\n });\r\n return adStrengthProperty;\r\n}\r\n","export function updateAdResourceStatusForFilter({ entitySchema, i18n, IsGoogleImportVideoAdsEnabled }) {\r\n const adResourceStatusSchema = entitySchema.properties.AdResourceStatusId;\r\n\r\n if (IsGoogleImportVideoAdsEnabled) {\r\n adResourceStatusSchema.chooseType = 'select';\r\n adResourceStatusSchema.operators = ['eq'];\r\n adResourceStatusSchema.title = i18n && i18n.getString('Schema_Ad_Property_AdResourceStatusId');\r\n adResourceStatusSchema.enum = [\"Enum.AdResourceStatus'Invalid'\", \"Enum.AdResourceStatus'Valid'\", \"Enum.AdResourceStatus'Pending'\", \"Enum.AdResourceStatus'GoogleImportedVideoNeedRepair'\"];\r\n adResourceStatusSchema.enumValueMap = {\r\n \"Enum.AdResourceStatus'Invalid'\": 'Invalid',\r\n \"Enum.AdResourceStatus'Valid'\": 'Valid',\r\n \"Enum.AdResourceStatus'Pending'\": 'Pending',\r\n \"Enum.AdResourceStatus'GoogleImportedVideoNeedRepair'\": 'Online Video ad campaigns require videos to serve',\r\n };\r\n } else {\r\n adResourceStatusSchema.filterable = false;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\n\r\nexport class NegativeKeywordSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = entitySchema;\r\n\r\n const campaignNameProperty = updatedSchema.properties.CampaignName;\r\n campaignNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_CampaignName');\r\n\r\n if (updatedSchema.properties.AdGroupName) {\r\n const adgroupNameProperty = updatedSchema.properties.AdGroupName;\r\n adgroupNameProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_AdGroupName');\r\n }\r\n\r\n const textProperty = updatedSchema.properties.Text;\r\n textProperty.title = this.i18n.getString('FilterLocalization_DataAttribute_NegativeKeyword');\r\n\r\n updatedSchema.properties.MatchType.enum = _.difference(\r\n updatedSchema.properties.MatchType.enum,\r\n [\r\n \"Enum.MatchType'Broad'\",\r\n \"Enum.MatchType'Content'\",\r\n \"Enum.MatchType'Predictive'\",\r\n ]\r\n );\r\n\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'PerformanceMax'\", \"Enum.CampaignType'LinkedIn'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions, property: 'CampaignType', campaignTypeNotSupported,\r\n });\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n const isExperimentsEnabled = _.result(this.Permissions, 'IsExperimentsEnabled');\r\n\r\n if (isExperimentsEnabled) {\r\n _.extendOwn(odataOptions.custom, {\r\n CampaignIsExperiment: {\r\n eq: (val) => {\r\n const operator = val ? 'gt' : 'le';\r\n\r\n return `ExperimentId ${operator} 0`;\r\n },\r\n },\r\n });\r\n }\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\nimport { updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\n\r\n/* eslint-disable no-param-reassign */\r\n\r\nexport class AdGroupCriterionSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n // update schema to remove labels property\r\n updatedSchema.properties = _.omit(updatedSchema.properties, 'Labels');\r\n\r\n updateDeliveryStatusPropertyForFilter(updatedSchema, ['InvalidFinancialStatusOther',\r\n 'CampaignSuspended',\r\n 'CampaignBudgetPaused',\r\n 'CampaignUserPaused',\r\n 'Eligible',\r\n 'AdGroupExpired',\r\n 'AdGroupDraft',\r\n 'AdGroupUserPaused',\r\n 'AdGroupPrivacyPending',\r\n 'AdGroupTargetingTooNarrow',\r\n 'AdGroupCriterionExcluded',\r\n ]);\r\n\r\n // make campaignstatus and adgroupproperty not show in filter drop down\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n const adgroupStatusProperty = updatedSchema.properties.AdGroupStatus;\r\n if (adgroupStatusProperty) {\r\n adgroupStatusProperty.filterable = false;\r\n }\r\n\r\n if (this.Permissions.IsPersonalizedOffersEnabled) {\r\n updatedSchema.properties.CriterionCashback = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n required: true,\r\n };\r\n }\r\n\r\n // only add campaign type filter at account scope\r\n // eslint-disable-next-line max-len\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'Hotel'\", \"Enum.CampaignType'PerformanceMax'\", \"Enum.CampaignType'LinkedIn'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions,\r\n });\r\n updatedSchema.properties.CampaignType.enum =\r\n _.difference(updatedSchema.properties.CampaignType.enum, campaignTypeNotSupported);\r\n }\r\n return updatedSchema;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nimport _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nconst statusEnum = [\r\n \"Enum.Status'Active'\",\r\n \"Enum.Status'Paused'\",\r\n \"Enum.Status'Creating'\",\r\n \"Enum.Status'Scheduled'\",\r\n \"Enum.Status'Ended'\",\r\n \"Enum.Status'CreationFailed'\",\r\n \"Enum.Status'Applying'\",\r\n \"Enum.Status'Applied'\",\r\n \"Enum.Status'ApplyFailed'\",\r\n];\r\n\r\nconst statusEnumValueMap = {\r\n \"Enum.Status'Active'\": 'Active',\r\n \"Enum.Status'Applied'\": 'Applied',\r\n \"Enum.Status'ApplyFailed'\": 'ApplyFailed',\r\n \"Enum.Status'Applying'\": 'Applying',\r\n \"Enum.Status'Creating'\": 'Creating',\r\n \"Enum.Status'CreationFailed'\": 'CreationFailed',\r\n \"Enum.Status'Ended'\": 'Ended',\r\n \"Enum.Status'Paused'\": 'Paused',\r\n \"Enum.Status'Scheduled'\": 'Scheduled',\r\n};\r\n\r\nexport class ExperimentSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n entitySchema.properties.Status.enum = statusEnum;\r\n entitySchema.properties.Status.enumValueMap = statusEnumValueMap;\r\n\r\n // Hide CampaignStatus and CampaignIsExperiment from filter menu.\r\n const campaignStatusProperty = entitySchema.properties.CampaignStatus;\r\n const campaignIsExperimentProperty = entitySchema.properties.CampaignIsExperiment;\r\n\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n if (campaignIsExperimentProperty) {\r\n campaignIsExperimentProperty.filterable = false;\r\n }\r\n\r\n return entitySchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n _.extendOwn(odataOptions.custom, {\r\n Status: {\r\n eq: (value) => {\r\n let url = `Status eq ${value}`;\r\n\r\n if (value === 'Enum.Status\\'Applied\\'') {\r\n url = 'Status eq Enum.Status\\'Graduated\\' or Status eq Enum.Status\\'Promoted\\'';\r\n }\r\n if (value === 'Enum.Status\\'ApplyFailed\\'') {\r\n url = 'Status eq Enum.Status\\'GraduateFailed\\' or Status eq Enum.Status\\'PromoteFailed\\'';\r\n }\r\n if (value === 'Enum.Status\\'Applying\\'') {\r\n url = 'Status eq Enum.Status\\'Graduating\\' or Status eq Enum.Status\\'Promoting\\'';\r\n }\r\n\r\n return url.replace(/Enum.Status/g, 'Enum.ExperimentStatus');\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _, { pick } from 'underscore';\r\n\r\nexport class AssetLinkSchemaProcessor {\r\n constructor(options) {\r\n this.scope = options.scope;\r\n this.i18n = options.i18n;\r\n this.Permissions = options.globalConfig.get('Permissions');\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedEntitySchema = entitySchema;\r\n\r\n const { adType, campaignType, adSubType } = this.scope.values;\r\n\r\n const EditorialStatusEnumMap = {\r\n \"Enum.EditorialStatus'Approved'\": 'Approved',\r\n \"Enum.EditorialStatus'ApprovedLimited'\": 'ApprovedLimited',\r\n \"Enum.EditorialStatus'Rejected'\": 'Rejected',\r\n \"Enum.EditorialStatus'Pending'\": 'Pending',\r\n \"Enum.EditorialStatus'ApprovedLimitedAppealRejected'\": 'ApprovedLimitedAppealRejected',\r\n \"Enum.EditorialStatus'RejectedAppealRejected'\": 'RejectedAppealRejected',\r\n \"Enum.EditorialStatus'AppealPending'\": 'AppealPending',\r\n };\r\n\r\n updatedEntitySchema.properties.EditorialStatus = _.defaults({\r\n enum: _.keys(EditorialStatusEnumMap),\r\n enumValueMap: EditorialStatusEnumMap,\r\n localized: _.mapObject(EditorialStatusEnumMap, value => this.i18n.getString(`Asset_EditorialStatus_${value}`)),\r\n }, updatedEntitySchema.properties.EditorialStatus);\r\n\r\n const showAssetBasedEditorial = this.Permissions && ((this.Permissions.dynamic.AssetBasedEditorialForRSA && adType === 'ResponsiveSearch') || (this.Permissions.dynamic.AssetBasedEditorialForAIM && adSubType === 'native'));\r\n updatedEntitySchema.properties = pick(updatedEntitySchema.properties, [\r\n 'UiDisplayStatus',\r\n 'AssetAssetSource',\r\n 'AssociationType',\r\n showAssetBasedEditorial ? 'EditorialStatus' : '',\r\n ]);\r\n\r\n // common part\r\n updatedEntitySchema.properties.UiDisplayStatus = _.defaults({\r\n enum: [\r\n \"Enum.UiDisplayStatus'Active'\",\r\n \"Enum.UiDisplayStatus'Deleted'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.UiDisplayStatus'Active'\": 'Active',\r\n \"Enum.UiDisplayStatus'Deleted'\": 'Deleted',\r\n },\r\n }, updatedEntitySchema.properties.UiDisplayStatus);\r\n\r\n updatedEntitySchema.properties.AssetAssetSource = _.defaults({\r\n chooseType: 'checkbox',\r\n enumType: 'AssetSource',\r\n enum: [\r\n \"Enum.AssetSource'AdvertiserProvided'\",\r\n \"Enum.AssetSource'AutoGenerated'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetSource'AdvertiserProvided'\": 'AdvertiserProvided',\r\n \"Enum.AssetSource'AutoGenerated'\": 'AutoGenerated',\r\n },\r\n }, updatedEntitySchema.properties.AssetAssetSource);\r\n\r\n if (adType === 'Responsive') {\r\n updatedEntitySchema.properties.AssociationType = _.defaults({\r\n enum: [\r\n \"Enum.AssetAssociationType'ResponsiveAdHeadlines'\",\r\n \"Enum.AssetAssociationType'ResponsiveAdLongHeadlines'\",\r\n \"Enum.AssetAssociationType'ResponsiveAdDescriptions'\",\r\n \"Enum.AssetAssociationType'OriginalImage'\",\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\",\r\n \"Enum.AssetAssociationType'SquareImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\",\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\",\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\",\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\",\r\n \"Enum.AssetAssociationType'CallToAction'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'ResponsiveAdHeadlines'\": 'ResponsiveAdHeadlines',\r\n \"Enum.AssetAssociationType'ResponsiveAdLongHeadlines'\": 'ResponsiveAdLongHeadlines',\r\n \"Enum.AssetAssociationType'ResponsiveAdDescriptions'\": 'ResponsiveAdDescriptions',\r\n \"Enum.AssetAssociationType'OriginalImage'\": 'OriginalImage',\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\": 'SquareLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\": 'LandscapeLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\": 'LandscapeImageMedia',\r\n \"Enum.AssetAssociationType'SquareImageMedia'\": 'SquareImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\": 'ImageMedia1X2',\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\": 'ImageMedia15X10',\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\": 'ImageMedia133X100',\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\": 'ImageMedia178X100',\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\": 'ImageMedia4X1',\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\": 'ImageMedia93X100',\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\": 'ImageMedia155X100',\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\": 'ImageMedia169X100',\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\": 'ImageMedia172X100',\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\": 'ImageMedia201X100',\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\": 'ImageMedia200X100',\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\": 'ImageMedia153X100',\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\": 'ImageMedia124X100',\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\": 'ImageMedia120X100',\r\n \"Enum.AssetAssociationType'CallToAction'\": 'CallToAction',\r\n },\r\n }, updatedEntitySchema.properties.AssociationType);\r\n\r\n if (this.Permissions && this.Permissions.dynamic.AudienceAssetReport && campaignType === 'Audience') {\r\n updatedEntitySchema.properties.AssociationType.enum.push(\"Enum.AssetAssociationType'VideoMedia16X9'\", \"Enum.AssetAssociationType'DisplayCreativeImage'\");\r\n updatedEntitySchema.properties.AssociationType.enumValueMap[\"Enum.AssetAssociationType'VideoMedia16X9'\"] = 'VideoMedia16X9';\r\n updatedEntitySchema.properties.AssociationType.enumValueMap[\"Enum.AssetAssociationType'DisplayCreativeImage'\"] = 'DisplayCreativeImage';\r\n }\r\n } else if (adType === 'DynamicResponsive') {\r\n updatedEntitySchema.properties.AssociationType = _.defaults({\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n \"Enum.AssetAssociationType'OriginalImage'\",\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\",\r\n \"Enum.AssetAssociationType'SquareImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\",\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\",\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\",\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\",\r\n \"Enum.AssetAssociationType'DisplayCreativeImage'\",\r\n \"Enum.AssetAssociationType'CallToAction'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n \"Enum.AssetAssociationType'OriginalImage'\": 'OriginalImage',\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\": 'SquareLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\": 'LandscapeLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\": 'LandscapeImageMedia',\r\n \"Enum.AssetAssociationType'SquareImageMedia'\": 'SquareImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\": 'ImageMedia1X2',\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\": 'ImageMedia15X10',\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\": 'ImageMedia133X100',\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\": 'ImageMedia178X100',\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\": 'ImageMedia4X1',\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\": 'ImageMedia93X100',\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\": 'ImageMedia155X100',\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\": 'ImageMedia169X100',\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\": 'ImageMedia172X100',\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\": 'ImageMedia201X100',\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\": 'ImageMedia200X100',\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\": 'ImageMedia153X100',\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\": 'ImageMedia124X100',\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\": 'ImageMedia120X100',\r\n \"Enum.AssetAssociationType'DisplayCreativeImage'\": 'DisplayCreativeImage',\r\n \"Enum.AssetAssociationType'CallToAction'\": 'CallToAction',\r\n },\r\n }, updatedEntitySchema.properties.AssociationType);\r\n } else {\r\n updatedEntitySchema.properties.AssociationType = _.defaults({\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n },\r\n }, updatedEntitySchema.properties.AssociationType);\r\n }\r\n\r\n return updatedEntitySchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n _.extendOwn(odataOptions.custom, {\r\n EditorialStatus: {\r\n eq: (filterValues) => {\r\n const queryStr = `EditorialStatus eq ${filterValues.replace('Enum.EditorialStatus\\'AppealPending\\'', 'Enum.EditorialStatus\\'RejectedAppealPending\\' or EditorialStatus eq Enum.EditorialStatus\\'ApprovedLimitedAppealPending\\'')}`;\r\n return queryStr;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n\r\n","import _, { pick, defaults } from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class AssetWithBIDataSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n this.scope = options.scope;\r\n this.state = options.state;\r\n this.i18n = options.i18n;\r\n }\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = cloneDeep(entitySchema);\r\n\r\n const { campaignId } = (this.scope && this.scope.values) || {};\r\n const { CampaignType } = this.state || {};\r\n\r\n const {\r\n MMAAssetReportAccountLevel,\r\n AudienceAssetReport,\r\n AssetGridForPmaxCampaign,\r\n SearchAssetConversionColumn,\r\n AssetBasedEditorialForRSA,\r\n AssetBasedEditorialForAIM,\r\n } = this.Permissions.dynamic;\r\n\r\n const EditorialStatusEnumMap = {\r\n \"Enum.EditorialStatus'Approved'\": 'Approved',\r\n \"Enum.EditorialStatus'ApprovedLimited'\": 'ApprovedLimited',\r\n \"Enum.EditorialStatus'Rejected'\": 'Rejected',\r\n \"Enum.EditorialStatus'Pending'\": 'Pending',\r\n \"Enum.EditorialStatus'ApprovedLimitedAppealRejected'\": 'ApprovedLimitedAppealRejected',\r\n \"Enum.EditorialStatus'RejectedAppealRejected'\": 'RejectedAppealRejected',\r\n \"Enum.EditorialStatus'AppealPending'\": 'AppealPending',\r\n };\r\n\r\n updatedSchema.properties.AssetEditorialStatus = _.defaults({\r\n chooseType: 'checkbox',\r\n enum: _.keys(EditorialStatusEnumMap),\r\n enumValueMap: EditorialStatusEnumMap,\r\n localized: _.mapObject(EditorialStatusEnumMap, value => this.i18n.getString(`Asset_EditorialStatus_${value}`)),\r\n }, updatedSchema.properties.AssetEditorialStatus);\r\n\r\n const showAssetBasedEditorial = campaignId && ((AssetBasedEditorialForRSA && CampaignType === 'Default') || (AssetBasedEditorialForAIM && CampaignType === 'Audience'));\r\n\r\n\r\n updatedSchema.properties = pick(\r\n updatedSchema.properties,\r\n [\r\n 'AssetIsBlocked',\r\n 'AssetText',\r\n 'AssetAssetSource',\r\n 'AssociationType',\r\n 'UsedByCount',\r\n AssetGridForPmaxCampaign ? 'UsedByAssetGroupCount' : '',\r\n 'PinnedBitmask',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsSpend',\r\n SearchAssetConversionColumn ? 'PerformanceMetricsConversionsCredit' : '',\r\n SearchAssetConversionColumn ? 'PerformanceMetricsAdvertiserReportedRevenue' : '',\r\n showAssetBasedEditorial ? 'AssetEditorialStatus' : '',\r\n ]\r\n );\r\n\r\n\r\n updatedSchema.properties.AssetAssetSource = defaults({\r\n chooseType: 'checkbox',\r\n enumType: 'AssetSource',\r\n enum: [\r\n \"Enum.AssetSource'AdvertiserProvided'\",\r\n \"Enum.AssetSource'AutoGenerated'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetSource'AdvertiserProvided'\": 'AdvertiserProvided',\r\n \"Enum.AssetSource'AutoGenerated'\": 'AutoGenerated',\r\n },\r\n }, updatedSchema.properties.AssetAssetSource);\r\n\r\n updatedSchema.properties.AssetIsBlocked = defaults({\r\n title: this.i18n.getString('Status'),\r\n localized: {\r\n false: this.i18n.getString('Active'),\r\n true: this.i18n.getString('Deleted'),\r\n },\r\n }, updatedSchema.properties.AssetIsBlocked);\r\n\r\n updatedSchema.properties.AssociationType = defaults((MMAAssetReportAccountLevel || AudienceAssetReport) ? {\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n \"Enum.AssetAssociationType'OriginalImage'\",\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\",\r\n \"Enum.AssetAssociationType'SquareImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\",\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\",\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\",\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\",\r\n \"Enum.AssetAssociationType'DisplayCreativeImage'\",\r\n \"Enum.AssetAssociationType'CallToAction'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n \"Enum.AssetAssociationType'OriginalImage'\": 'OriginalImage',\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\": 'SquareLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\": 'LandscapeLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\": 'LandscapeImageMedia',\r\n \"Enum.AssetAssociationType'SquareImageMedia'\": 'SquareImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\": 'ImageMedia1X2',\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\": 'ImageMedia15X10',\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\": 'ImageMedia133X100',\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\": 'ImageMedia178X100',\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\": 'ImageMedia4X1',\r\n \"Enum.AssetAssociationType'ImageMedia93X100'\": 'ImageMedia93X100',\r\n \"Enum.AssetAssociationType'ImageMedia155X100'\": 'ImageMedia155X100',\r\n \"Enum.AssetAssociationType'ImageMedia169X100'\": 'ImageMedia169X100',\r\n \"Enum.AssetAssociationType'ImageMedia172X100'\": 'ImageMedia172X100',\r\n \"Enum.AssetAssociationType'ImageMedia201X100'\": 'ImageMedia201X100',\r\n \"Enum.AssetAssociationType'ImageMedia200X100'\": 'ImageMedia200X100',\r\n \"Enum.AssetAssociationType'ImageMedia153X100'\": 'ImageMedia153X100',\r\n \"Enum.AssetAssociationType'ImageMedia124X100'\": 'ImageMedia124X100',\r\n \"Enum.AssetAssociationType'ImageMedia120X100'\": 'ImageMedia120X100',\r\n \"Enum.AssetAssociationType'DisplayCreativeImage'\": 'DisplayCreativeImage',\r\n \"Enum.AssetAssociationType'CallToAction'\": 'CallToAction',\r\n },\r\n } : {\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n },\r\n }, updatedSchema.properties.AssociationType);\r\n\r\n if (AudienceAssetReport) {\r\n updatedSchema.properties.AssociationType.enum.push(\"Enum.AssetAssociationType'VideoMedia16X9'\");\r\n updatedSchema.properties.AssociationType.enumValueMap[\"Enum.AssetAssociationType'VideoMedia16X9'\"] = 'VideoMedia16X9';\r\n }\r\n\r\n updatedSchema.properties.PinnedBitmask = defaults({\r\n enum: [\r\n \"Enum.PinnedAssetPositionType'Position1'\",\r\n \"Enum.PinnedAssetPositionType'Position2'\",\r\n \"Enum.PinnedAssetPositionType'Position3'\",\r\n \"Enum.PinnedAssetPositionType'None'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.PinnedAssetPositionType'Position1'\": 'Position1',\r\n \"Enum.PinnedAssetPositionType'Position2'\": 'Position2',\r\n \"Enum.PinnedAssetPositionType'Position3'\": 'Position3',\r\n \"Enum.PinnedAssetPositionType'None'\": 'None',\r\n },\r\n }, updatedSchema.properties.PinnedBitmask);\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n _.extendOwn(odataOptions.custom, {\r\n 'Asset/EditorialStatus': {\r\n eq: (filterValues) => {\r\n const queryStr = `Asset/EditorialStatus eq ${filterValues.replace('Enum.EditorialStatus\\'AppealPending\\'', 'Enum.EditorialStatus\\'RejectedAppealPending\\' or Asset/EditorialStatus eq Enum.EditorialStatus\\'ApprovedLimitedAppealPending\\'')}`;\r\n return queryStr;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import { pick } from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class ResponsiveSearchAdInstanceSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = cloneDeep(entitySchema);\r\n\r\n // Only pick supported properties, ignore any properties from any pilot\r\n updatedSchema.properties = pick(updatedSchema.properties, [\r\n 'Headlines',\r\n 'Descriptions',\r\n 'PerformanceMetricsImpressions',\r\n ], this.Permissions.IsResponsiveSearchAdCombGridEnabled ? [\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsConversions',\r\n 'PerformanceMetricsSpend',\r\n 'PerformanceMetricsAverageCPC',\r\n 'PerformanceMetricsAverageCPM',\r\n 'PerformanceMetricsCPA',\r\n 'PerformanceMetricsRevenueOnAdSpend',\r\n 'PerformanceMetricsAdvertiserReportedRevenue',\r\n 'PerformanceMetricsConversionRate',\r\n ] : [], [\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsConversions',\r\n 'PerformanceMetricsSpend',\r\n ]);\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\nimport { updateOdataOptionsForCriterionType } from '../util/update-criterion-property-for-filter';\r\nimport { updateOdataOptionsForLevel } from '../util/update-level-property-for-filter';\r\n\r\nexport class BaseCriterionSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options, filterProperties) {\r\n super(options);\r\n this.filterProperties = filterProperties;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n // update schema to remove labels property\r\n updatedSchema.properties = _.omit(updatedSchema.properties, 'Labels');\r\n\r\n let filterList = ['Campaign/Id', 'Campaign/Name', 'Campaign/Status', 'AdGroup/Id', 'AdGroup/Name', 'AdGroup/Status', 'CriterionBid', 'LevelOfDetails'];\r\n if (this.Permissions.IsExperimentsEnabled) {\r\n filterList = filterList.concat(['Campaign/IsExperiment']);\r\n }\r\n filterList = filterList.concat(this.filterProperties);\r\n\r\n const biPattern = /^(PoP)?PerformanceMetrics/;\r\n updatedSchema.properties = _.pick(\r\n entitySchema.properties,\r\n prop => _.contains(filterList, prop.property) || biPattern.test(prop.property)\r\n );\r\n\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n const adgroupStatusProperty = updatedSchema.properties.AdGroupStatus;\r\n if (adgroupStatusProperty) {\r\n adgroupStatusProperty.filterable = false;\r\n }\r\n\r\n updatedSchema.properties = _.mapObject(updatedSchema.properties, prop => ({\r\n ...prop,\r\n title: prop.title || this.i18n.getString(`FilterLocalization_DataAttribute_${_.result(prop.alias, 'legacy') || prop.originalProperty}`),\r\n }));\r\n\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'LinkedIn'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions, campaignTypeNotSupported,\r\n });\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForCriterionType(odataOptions);\r\n updateOdataOptionsForLevel(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function updateOdataOptionsForCriterionType(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n Criterion: {\r\n isof: value => `isof(Criterion, ${value})`,\r\n },\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForDayTimeCriterionDay(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n 'Criterion/DayTimeCriterion/Day': {\r\n eq: (value) => {\r\n const enmu = value.replace('Enum.CriterionDayTimeCriterionDay', 'Enum.Day');\r\n return `Criterion/Model.DayTimeCriterion/Day eq ${enmu}`;\r\n },\r\n },\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n\r\nexport function updateOdataOptionsForDeviceCriterionDeviceName(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n 'Criterion/DeviceCriterion/DeviceName': {\r\n eq: (value) => {\r\n const enmu = value.replace('Enum.CriterionDeviceCriterionDeviceName', '');\r\n return `Criterion/Model.DeviceCriterion/DeviceName eq ${enmu}`;\r\n },\r\n },\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function updateOdataOptionsForLevel(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n LevelOfDetails: {\r\n eq: (val) => {\r\n const enmu = val.replace('Enum.LevelOfDetails', '');\r\n return `LevelOfDetails eq ${enmu}`;\r\n },\r\n },\r\n });\r\n\r\n return optionsCopy;\r\n}\r\n","import { BaseCriterionSchemaProcessor } from './base-criterion-schema-processor';\r\nimport { updateOdataOptionsForDayTimeCriterionDay } from '../util/update-criterion-property-for-filter';\r\n\r\nexport class DayTimeCriterionSchemaProcessor extends BaseCriterionSchemaProcessor {\r\n constructor(options) {\r\n super(options, ['Criterion/DayTimeCriterion/Day']);\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForDayTimeCriterionDay(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n if (this.Permissions.IsPersonalizedOffersEnabled &&\r\n !this.Permissions.IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.CriterionCashback = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n required: true,\r\n };\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import { BaseCriterionSchemaProcessor } from './base-criterion-schema-processor';\r\nimport { updateOdataOptionsForDeviceCriterionDeviceName } from '../util/update-criterion-property-for-filter';\r\n\r\nexport class DeviceCriterionSchemaProcessor extends BaseCriterionSchemaProcessor {\r\n constructor(options) {\r\n super(options, ['Criterion/DeviceCriterion/DeviceName']);\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForDeviceCriterionDeviceName(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n if (this.Permissions.IsPersonalizedOffersEnabled &&\r\n !this.Permissions.IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.CriterionCashback = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n required: true,\r\n };\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import { BaseCriterionSchemaProcessor } from './base-criterion-schema-processor';\r\n\r\nexport class LocationCriterionSchemaProcessor extends BaseCriterionSchemaProcessor {\r\n constructor(options) {\r\n super(options, ['Criterion/Webpage/Parameter/CriterionName']);\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const locationNameOption = updatedSchema.properties.CriterionWebpageParameterCriterionName;\r\n if (locationNameOption) {\r\n locationNameOption.property = 'Criterion/Name';\r\n }\r\n\r\n if (this.Permissions.IsPersonalizedOffersEnabled &&\r\n !this.Permissions.IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.CriterionCashback = {\r\n filterable: true,\r\n type: 'number',\r\n minimum: 0,\r\n maximum: 50,\r\n required: true,\r\n };\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import { compact, contains, pick, mapObject, result } from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateOdataOptionsForFinalUrl } from '../util/update-final-url-property-for-filter';\r\nimport { updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\n\r\nexport class AudienceCriterionWithBISchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n const {\r\n IsAIMCampaignEnabled,\r\n IsProductAudienceForSearchEnabled,\r\n IsCustomAudienceAllowed,\r\n IsCombinedListAudienceAllowed,\r\n IsInMarketAudienceAllowed,\r\n IsRemarketingSimilarAudienceAllowed,\r\n IsCustomerListAudienceAllowed,\r\n IsExperimentsEnabled,\r\n IsPersonalizedOffersEnabled,\r\n IsPersonalizedOffersV3Enabled,\r\n } = this.Permissions;\r\n const propWhitelist = compact([\r\n 'AudienceCriterion/AudienceId',\r\n 'AudienceCriterion/AudienceName',\r\n 'AudienceCriterion/AudienceType',\r\n 'AudienceCriterion/BidMultiplier',\r\n 'AdGroup/Name',\r\n 'AdGroup/Status',\r\n 'Campaign/Name',\r\n 'Campaign/Status',\r\n IsExperimentsEnabled && 'Campaign/IsExperiment',\r\n 'BidType',\r\n 'DeliveryStatus',\r\n 'Level',\r\n 'Status',\r\n ]);\r\n const biPattern = /^PerformanceMetrics/;\r\n\r\n updatedSchema.properties = pick(\r\n updatedSchema.properties,\r\n prop => contains(propWhitelist, prop.property) || biPattern.test(prop.property)\r\n );\r\n\r\n updatedSchema.properties = mapObject(updatedSchema.properties, prop => ({\r\n ...prop,\r\n title: prop.title || this.i18n.getString(`FilterLocalization_DataAttribute_${result(prop.alias, 'legacy') || prop.originalProperty}`),\r\n }));\r\n\r\n const deliveryStatusEnumSet = [\r\n 'Eligible',\r\n 'CampaignDeleted',\r\n 'CampaignSuspended',\r\n 'CampaignBudgetPaused',\r\n 'AdGroupExpired',\r\n 'AdGroupDraft',\r\n 'AdGroupPrivacyPending',\r\n 'AdGroupTargetingTooNarrow',\r\n 'CampaignUserPaused',\r\n 'AdGroupUserPaused',\r\n 'AdGroupAudienceAssociationPaused',\r\n 'AdGroupAudienceAssociationExcluded',\r\n ];\r\n\r\n const EnableImpressionBasedList = this.Permissions.dynamic && this.Permissions.dynamic.EnableImpressionBasedList;\r\n updateDeliveryStatusPropertyForFilter(entitySchema, deliveryStatusEnumSet);\r\n\r\n const audienceIdProperty = updatedSchema.properties.AudienceCriterionAudienceId;\r\n audienceIdProperty.skipLocalization = true;\r\n\r\n const audienceTypeProperty = updatedSchema.properties.AudienceCriterionAudienceType;\r\n if (audienceTypeProperty) {\r\n // Reject the audience type if the pilot isn't enabled\r\n audienceTypeProperty.enum = compact([\r\n 'Enum.AudienceType\\'Remessaging\\'',\r\n (IsAIMCampaignEnabled || IsProductAudienceForSearchEnabled) && 'Enum.AudienceType\\'Product\\'',\r\n IsCustomAudienceAllowed && 'Enum.AudienceType\\'Custom\\'',\r\n IsInMarketAudienceAllowed && 'Enum.AudienceType\\'InMarket\\'',\r\n IsRemarketingSimilarAudienceAllowed && 'Enum.AudienceType\\'RemarketingSimilar\\'',\r\n IsCustomerListAudienceAllowed && 'Enum.AudienceType\\'CustomerList\\'',\r\n IsCombinedListAudienceAllowed && 'Enum.AudienceType\\'CombinedList\\'',\r\n EnableImpressionBasedList && 'Enum.AudienceType\\'ImpressionBasedRemarketing\\'',\r\n ]);\r\n }\r\n\r\n // make campaignstatus and adgroupproperty not show in filter drop down\r\n updatedSchema.properties.CampaignStatus.filterable = false;\r\n updatedSchema.properties.AdGroupStatus.filterable = false;\r\n\r\n if (this.isForVNext) {\r\n const campaignTypeNotSupported = [\"Enum.CampaignType'LinkedIn'\"];\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions, campaignTypeNotSupported,\r\n });\r\n }\r\n\r\n if (IsPersonalizedOffersEnabled && !IsPersonalizedOffersV3Enabled) {\r\n updatedSchema.properties.AudienceCriterionCashbackAdjustment = {\r\n filterable: true,\r\n minimum: 0,\r\n maximum: 50,\r\n type: 'number',\r\n name: 'CashbackAdjustment',\r\n property: 'AudienceCriterion/CashbackAdjustment',\r\n title: this.i18n.getString('FilterLocalization_DataAttribute_CashbackAdjustment'),\r\n required: true,\r\n };\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class ProductSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const MPNProperty = updatedSchema.properties.MPN;\r\n\r\n if (MPNProperty && MPNProperty.alias != null) {\r\n MPNProperty.title = MPNProperty.alias;\r\n }\r\n\r\n if (this.Permissions.IsProductsTabV2Enabled) {\r\n const titleProperty = updatedSchema.properties.Title;\r\n if (titleProperty) {\r\n titleProperty.operators.push('eq');\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsViewThroughConversions) {\r\n updatedSchema.properties.PerformanceMetricsViewThroughConversions.filterable = false;\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsViewThroughConversionsRevenue) {\r\n // eslint-disable-next-line max-len\r\n updatedSchema.properties.PerformanceMetricsViewThroughConversionsRevenue.filterable = false;\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsViewThroughConversionsCPA) {\r\n updatedSchema.properties.PerformanceMetricsViewThroughConversionsCPA.filterable = false;\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsViewThroughConversionsReturnOnAdSpend) {\r\n // eslint-disable-next-line max-len\r\n updatedSchema.properties.PerformanceMetricsViewThroughConversionsReturnOnAdSpend.filterable = false;\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsViewThroughConversionsRate) {\r\n updatedSchema.properties.PerformanceMetricsViewThroughConversionsRate.filterable = false;\r\n }\r\n\r\n if (updatedSchema.properties.PerformanceMetricsQuantityBought) {\r\n updatedSchema.properties.PerformanceMetricsQuantityBought.filterable = false;\r\n }\r\n }\r\n\r\n const conditionProperty = updatedSchema.properties.Condition;\r\n if (conditionProperty) {\r\n conditionProperty.chooseType = 'radio';\r\n conditionProperty.operators = ['eq'];\r\n }\r\n\r\n const channelProperty = updatedSchema.properties.Channel;\r\n if (channelProperty) {\r\n channelProperty.chooseType = 'radio';\r\n channelProperty.operators = ['eq'];\r\n }\r\n\r\n const channelExclusivityProperty = updatedSchema.properties.ChannelExclusivity;\r\n\r\n if (channelExclusivityProperty) {\r\n channelExclusivityProperty.chooseType = 'radio';\r\n channelExclusivityProperty.operators = ['eq'];\r\n }\r\n\r\n const omitProperties = ['Language', 'Labels', 'SellerName', 'UniqueId'];\r\n updatedSchema.properties = _.omit(updatedSchema.properties, omitProperties);\r\n\r\n return updatedSchema;\r\n }\r\n\r\n formatFilterValue(value) {\r\n if (Array.isArray(value)) {\r\n return value[0];\r\n }\r\n return value;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n\r\n _.extendOwn(odataOptions.custom, {\r\n Condition: {\r\n eq: (value) => {\r\n const condition = this.formatFilterValue(value).split(\"'\")[1];\r\n const url = `Condition eq '${condition}'`;\r\n\r\n return url;\r\n },\r\n },\r\n Channel: {\r\n eq: (value) => {\r\n const channel = this.formatFilterValue(value).split(\"'\")[1];\r\n const url = `Channel eq '${channel}'`;\r\n\r\n return url;\r\n },\r\n },\r\n ChannelExclusivity: {\r\n eq: (value) => {\r\n const channelExclusivity = this.formatFilterValue(value).split(\"'\")[1];\r\n const url = `ChannelExclusivity eq '${channelExclusivity}'`;\r\n\r\n return url;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import { compact, any } from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateOdataOptionsForFinalUrl } from '../util/update-final-url-property-for-filter';\r\n\r\nexport class AudienceSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n const {\r\n IsAIMCampaignEnabled,\r\n IsCombinedListAudienceAllowed,\r\n IsCustomAudienceAllowed,\r\n IsCustomerHierarchyEnabled,\r\n IsCustomerListAudienceAllowed,\r\n IsNewAudienceEnabled,\r\n IsProductAudienceForSearchEnabled,\r\n IsRemarketingSimilarAudienceAllowed,\r\n IsSharedLibraryPhase1Enabled,\r\n } = this.Permissions;\r\n\r\n const EnableImpressionBasedList = this.Permissions.dynamic && this.Permissions.dynamic.EnableImpressionBasedList;\r\n\r\n if (IsNewAudienceEnabled) {\r\n const typeField = updatedSchema.properties.Type;\r\n typeField.enum = compact([\r\n 'Enum.AudienceType\\'Remessaging\\'',\r\n (IsAIMCampaignEnabled || IsProductAudienceForSearchEnabled) && 'Enum.AudienceType\\'Product\\'',\r\n IsCustomAudienceAllowed && 'Enum.AudienceType\\'Custom\\'',\r\n IsRemarketingSimilarAudienceAllowed && 'Enum.AudienceType\\'RemarketingSimilar\\'',\r\n IsCustomerListAudienceAllowed && 'Enum.AudienceType\\'CustomerList\\'',\r\n IsCombinedListAudienceAllowed && 'Enum.AudienceType\\'CombinedList\\'',\r\n EnableImpressionBasedList && 'Enum.AudienceType\\'ImpressionBasedRemarketing\\'',\r\n ]);\r\n }\r\n\r\n const trackingStatusField = updatedSchema.properties.TrackingStatus;\r\n trackingStatusField.chooseType = 'checkbox';\r\n trackingStatusField.enum = [\r\n 'Enum.TagTrackingStatus\\'Unverified\\'',\r\n 'Enum.TagTrackingStatus\\'Active\\'',\r\n 'Enum.TagTrackingStatus\\'Inactive\\'',\r\n ];\r\n trackingStatusField.enumValueMap = {\r\n 'Enum.TagTrackingStatus\\'Unverified\\'': 'Unverified',\r\n 'Enum.TagTrackingStatus\\'Active\\'': 'Active',\r\n 'Enum.TagTrackingStatus\\'Inactive\\'': 'Inactive',\r\n };\r\n\r\n const isAudienceTrackingStatusColumnExist = any([\r\n IsAIMCampaignEnabled,\r\n IsRemarketingSimilarAudienceAllowed,\r\n (IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled),\r\n ]);\r\n\r\n if (!isAudienceTrackingStatusColumnExist) {\r\n delete updatedSchema.properties.AudienceTrackingStatus;\r\n }\r\n\r\n if (!(IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled)) {\r\n delete updatedSchema.properties.OwnerName;\r\n delete updatedSchema.properties.OwnerNumber;\r\n }\r\n\r\n delete updatedSchema.properties.Labels;\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { mapEnumValueForFilter } from '../util/update-delivery-status-property-for-filter';\r\n\r\nexport class GMBImportSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const companyName = updatedSchema.properties.CompanyName;\r\n companyName.title = this.i18n.getString('LocationData_Grid_ColumnTitle_CompanyName');\r\n\r\n const statusProperty = updatedSchema.properties.Status;\r\n\r\n const statusEnumSet = ['Active', 'Deleted'];\r\n statusProperty.enum = _.map(statusEnumSet, value => mapEnumValueForFilter('AdExtensionStatus', value));\r\n\r\n const propWhitelist = _.compact(['CompanyName']);\r\n\r\n updatedSchema.properties = _.pick(\r\n updatedSchema.properties,\r\n prop => _.contains(propWhitelist, prop.property)\r\n );\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { addCampaignTypePropertyForFilter } from '../util/update-campaign-type-property-for-filter';\r\n\r\n// Most of the codes copied from private\\summary-tabs\\packages\\search-term\\src\\filter-config.es\r\nexport class SearchTermSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = cloneDeep(entitySchema);\r\n\r\n // Omit Added as it has been replaced by SearchTermStatus\r\n updatedSchema.properties = _.omit(entitySchema.properties, ['Added']);\r\n\r\n // Search term does not support ViewThroughConversions\r\n updatedSchema.properties = _.omit(updatedSchema.properties, [\r\n 'PerformanceMetricsViewThroughConversions',\r\n 'PerformanceMetricsViewThroughConversionsRevenue',\r\n 'PerformanceMetricsViewThroughConversionsCPA',\r\n 'PerformanceMetricsViewThroughConversionsReturnOnAdSpend',\r\n 'PerformanceMetricsViewThroughConversionsRate',\r\n ]);\r\n\r\n // make CampaignStatus and AdGroupStatus not show in filter menu.\r\n const campaignStatusProperty = updatedSchema.properties.CampaignStatus;\r\n const adgroupStatusProperty = updatedSchema.properties.AdGroupStatus;\r\n\r\n if (campaignStatusProperty) {\r\n campaignStatusProperty.filterable = false;\r\n }\r\n\r\n if (adgroupStatusProperty) {\r\n adgroupStatusProperty.filterable = false;\r\n }\r\n\r\n if (this.isForVNext) {\r\n updatedSchema.properties = _.omit(updatedSchema.properties, [\r\n 'CampaignCampaignType',\r\n ]);\r\n\r\n addCampaignTypePropertyForFilter({\r\n entitySchema: updatedSchema, permissions: this.Permissions,\r\n });\r\n\r\n // Search term campaign type filer not supported for Dynamic, Audience, and Smart\r\n const supportedTypes = [\"Enum.CampaignType'Default'\", \"Enum.CampaignType'Shopping'\"];\r\n updatedSchema.properties.CampaignType.enum\r\n = _.filter(\r\n updatedSchema.properties.CampaignType.enum,\r\n type => supportedTypes.indexOf(type) >= 0\r\n );\r\n } else {\r\n // Remove duplicated word 'Campaign' in enum values of CampaignCampaignType\r\n const duplicatedString = 'Campaign';\r\n updatedSchema.properties.CampaignCampaignType.enum =\r\n _.map(updatedSchema.properties.CampaignCampaignType.enum, item => item.replace(duplicatedString, ''));\r\n // Search term campaign type filer not supported for Dynamic, Audience, and Smart\r\n const supportedTypes = [\"Enum.CampaignType'Default'\", \"Enum.CampaignType'Shopping'\"];\r\n updatedSchema.properties.CampaignCampaignType.enum =\r\n _.filter(\r\n updatedSchema.properties.CampaignCampaignType.enum,\r\n type => supportedTypes.indexOf(type) >= 0\r\n );\r\n const updatedEnumValueMap = {};\r\n _.each(updatedSchema.properties.CampaignCampaignType.enumValueMap, (val, key) => {\r\n updatedEnumValueMap[key.replace(duplicatedString, '')] = val;\r\n });\r\n updatedSchema.properties.CampaignCampaignType.enumValueMap = updatedEnumValueMap;\r\n }\r\n\r\n if (this.Permissions.IsSearchTermCloseVariantMatchTypeEnabled) {\r\n // hide old enum 'DeliveredMatchType'\r\n updatedSchema.properties = _.omit(updatedSchema.properties, 'DeliveredMatchType');\r\n\r\n // Delete deprecated enum value 'Content' for DeliveredMatchTypeWithCloseVariant\r\n const deletingNewEnumItem = \"Enum.MatchTypeWithCloseVariant'Content'\";\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enum = _.without(\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enum,\r\n deletingNewEnumItem\r\n );\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enumValueMap = _.omit(\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enumValueMap,\r\n deletingNewEnumItem\r\n );\r\n\r\n // format filter appearance\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enumValueMap[\"Enum.MatchTypeWithCloseVariant'ExactCloseVariant'\"]\r\n = this.passedInI18n.getString('SearchTermMatchType_ExactCloseVariant');\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enumValueMap[\"Enum.MatchTypeWithCloseVariant'PhraseCloseVariant'\"]\r\n = this.passedInI18n.getString('SearchTermMatchType_PhraseCloseVariant');\r\n } else {\r\n // hide old enum 'DeliveredMatchTypeWithCloseVariant'\r\n updatedSchema.properties = _.omit(updatedSchema.properties, 'DeliveredMatchTypeWithCloseVariant');\r\n\r\n // Delete deprecated enum value 'Content' for DeliveredMatchType\r\n const deletingEnumItem = \"Enum.MatchType'Content'\";\r\n updatedSchema.properties.DeliveredMatchType.enum =\r\n _.without(updatedSchema.properties.DeliveredMatchType.enum, deletingEnumItem);\r\n updatedSchema.properties.DeliveredMatchType.enumValueMap =\r\n _.omit(updatedSchema.properties.DeliveredMatchType.enumValueMap, deletingEnumItem);\r\n }\r\n\r\n const isPredictiveTargetingEnabled = this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.RSABidStrategyAutoTargeting;\r\n const isPredictiveMatchingEnabled = this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.PredictiveMatching;\r\n if (!isPredictiveTargetingEnabled && !isPredictiveMatchingEnabled) {\r\n if (updatedSchema.properties.DeliveredMatchTypeWithCloseVariant) {\r\n updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enum = _.without(updatedSchema.properties.DeliveredMatchTypeWithCloseVariant.enum, \"Enum.MatchTypeWithCloseVariant'Predictive'\");\r\n }\r\n if (updatedSchema.properties.MatchType) {\r\n updatedSchema.properties.MatchType.enum = _.without(updatedSchema.properties.MatchType.enum, \"Enum.MatchType'Predictive'\");\r\n }\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst getAccountInactiveReasonsContainsQuery =\r\n valueArr => `AccountInactiveReasons/any(r:r/Reason eq Enum.AccountInactiveReasonCode'${valueArr[0]}')`;\r\nconst getAccountInactiveReasonsDoesNotContainQuery =\r\n valueArr => `AccountInactiveReasons/all(r:r/Reason ne Enum.AccountInactiveReasonCode'${valueArr[0]}')`;\r\n\r\nexport function updateEntitySchemaForAccountInactiveReasons(entitySchema, schemaI18nCampaign, permissions) {\r\n const enumValues = [\r\n 'PausedDueToSystemIssue',\r\n 'PausedZeroBalance',\r\n 'PausedNoValidIO',\r\n 'Processing',\r\n 'PendingPaymentMethod',\r\n 'PendingNewCustomer',\r\n 'Inactive',\r\n 'Hold',\r\n 'Deleted',\r\n 'AccountMissingVATId',\r\n 'AccountVerificationHold',\r\n ...permissions.dynamic && permissions.dynamic.TSTMasterDataMissingNotification ? [\r\n 'AccountTradeScreeningDataIssue',\r\n 'AccountTradeScreeningUnderReview',\r\n 'BillToCustomerTradeScreeningDataIssue',\r\n 'BillToCustomerTradeScreeningUnderReview',\r\n 'AccountTradeScreeningLicenseRequired',\r\n 'BillToCustomerTradeScreeningLicenseRequired',\r\n ] : [],\r\n ];\r\n\r\n _.extend(entitySchema.properties, {\r\n AccountInactiveReasons: {\r\n name: 'AccountInactiveReasons',\r\n title: schemaI18nCampaign.property('Account', 'AccountInactiveReasons'),\r\n localized: _.object(enumValues, _.map(enumValues, value => schemaI18nCampaign.value('AccountInactiveReason', 'Reason', value))),\r\n chooseType: 'select',\r\n operators: ['contains', 'doesnotcontain'],\r\n enum: enumValues,\r\n enumValueMap: {}, // just a placeholder so page will not break because of undefined.\r\n type: 'string',\r\n property: 'AccountInactiveReasons',\r\n originalProperty: 'AccountInactiveReasons',\r\n filterable: true,\r\n },\r\n });\r\n\r\n return entitySchema;\r\n}\r\n\r\nexport function updateOdataOptionsForAccountInactiveReasons(options = {}) {\r\n options.custom = options.custom || {}; // eslint-disable-line no-param-reassign\r\n\r\n _.extendOwn(options.custom, {\r\n AccountInactiveReasons: {\r\n contains: getAccountInactiveReasonsContainsQuery,\r\n doesnotcontain: getAccountInactiveReasonsDoesNotContainQuery,\r\n },\r\n });\r\n\r\n return options;\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport {\r\n updateEntitySchemaForAccountInactiveReasons,\r\n updateOdataOptionsForAccountInactiveReasons,\r\n} from '../util/update-account-inactive-reason-property-for-filter';\r\nimport { initialize as initializeLabels, updateEntitySchemaForLabels, updateOdataOptionsForLabels } from '../util/update-label-property-for-filter';\r\n\r\nexport class BaseAccountsSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options, { propWhitelist, allowBiPattern = false }) {\r\n super(options);\r\n this.propWhitelist = propWhitelist;\r\n this.allowBiPattern = allowBiPattern;\r\n this.schemaI18nCampaign = options.schemaI18nCampaign;\r\n if (this.Permissions.IsAccountLabelsEnabled) {\r\n initializeLabels(options);\r\n }\r\n }\r\n\r\n // Abstract function to use in child's Processor if needed\r\n getOverridenSchemaProperties() {\r\n return {};\r\n }\r\n\r\n getAdditionalSchemaProperties() {\r\n return {};\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n const biPattern = /^(PoP)?PerformanceMetrics/;\r\n\r\n updatedSchema.properties = _.pick(\r\n updatedSchema.properties,\r\n prop => _.contains(this.propWhitelist, prop.property) ||\r\n (this.allowBiPattern && biPattern.test(prop.property))\r\n );\r\n\r\n updatedSchema.properties = {\r\n ...updatedSchema.properties,\r\n ...this.getAdditionalSchemaProperties(),\r\n };\r\n\r\n const overridenProperties = {\r\n // Common properties to override\r\n ...{\r\n Name: { title: this.i18n.getString('FilterLocalization_DataAttribute_AccountName') },\r\n AccountType: {\r\n chooseType: 'radio',\r\n },\r\n },\r\n // child properties to override\r\n ...this.getOverridenSchemaProperties(),\r\n };\r\n\r\n updatedSchema.properties = _.mapObject(updatedSchema.properties, (prop) => {\r\n Object.assign(prop, overridenProperties[prop.name]);\r\n\r\n return {\r\n ...prop,\r\n title: prop.title || this.i18n.getString(`FilterLocalization_DataAttribute_${_.result(prop.alias, 'legacy') || prop.originalProperty}`),\r\n };\r\n });\r\n\r\n updateEntitySchemaForAccountInactiveReasons(updatedSchema, this.schemaI18nCampaign, this.Permissions);\r\n if (this.Permissions && this.Permissions.IsAccountLabelsEnabled) {\r\n updateEntitySchemaForLabels(updatedSchema, true);\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n\r\n updateOdataOptionsForAccountInactiveReasons(odataOptions);\r\n\r\n if (this.Permissions && this.Permissions.IsAccountLabelsEnabled) {\r\n updateOdataOptionsForLabels(odataOptions, true);\r\n }\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseAccountsSchemaProcessor } from './base-accounts-schema-processor';\r\nimport { initialize as initializeAvailableInsightTypeIds, updateEntitySchemaForAvailableInsightTypeIds, updateOdataOptionsForAvailableInsightTypeIds } from '../util/update-available-insight-type-ids-property-for-filter';\r\n\r\nexport class PerformanceSchemaProcessor extends BaseAccountsSchemaProcessor {\r\n constructor(options) {\r\n const propWhitelist = _.compact([\r\n 'Name',\r\n 'Currency',\r\n 'AccountType',\r\n 'Owner',\r\n 'BillToCustomerName',\r\n 'Budget/DailyBudget',\r\n 'InsertionOrderDetails/CurrentInsertionOrder/Budget',\r\n 'InsertionOrderDetails/CurrentInsertionOrder/RemainingBudget',\r\n 'InsertionOrderDetails/CurrentInsertionOrder/StartDate',\r\n 'InsertionOrderDetails/CurrentInsertionOrder/EndDate',\r\n 'InsertionOrderDetails/CurrentInsertionOrder/PurchaseOrder',\r\n 'AvailableInsightTypeIds',\r\n ]);\r\n\r\n initializeAvailableInsightTypeIds(options);\r\n super(options, { propWhitelist, allowBiPattern: true });\r\n }\r\n\r\n getOverridenSchemaProperties() {\r\n return {\r\n // TODO: Task 2242006 Date selection filter\r\n InsertionOrderDetailsCurrentInsertionOrderEndDate: { filterable: false },\r\n // TODO: Task 2242006 Date selection filter\r\n InsertionOrderDetailsCurrentInsertionOrderStartDate: { filterable: false },\r\n };\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n updateEntitySchemaForAvailableInsightTypeIds(updatedSchema);\r\n updatedSchema.properties = _.omit(\r\n updatedSchema.properties,\r\n 'PerformanceMetricsCostPerInstall',\r\n 'PerformanceMetricsRevenuePerInstall'\r\n );\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForAvailableInsightTypeIds(odataOptions);\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseAccountsSchemaProcessor } from './base-accounts-schema-processor';\r\nimport { initialize as initializeAvailableInsightTypeIds, updateEntitySchemaForAvailableInsightTypeIds, updateOdataOptionsForAvailableInsightTypeIds } from '../util/update-available-insight-type-ids-property-for-filter';\r\n\r\nexport class SmartPerformanceSchemaProcessor extends BaseAccountsSchemaProcessor {\r\n constructor(options) {\r\n const propWhitelist = _.compact([\r\n 'Name',\r\n 'Currency',\r\n 'AccountType',\r\n 'Owner',\r\n 'BillToCustomerName',\r\n 'Budget/DailyBudget',\r\n ]);\r\n\r\n initializeAvailableInsightTypeIds(options);\r\n super(options, { propWhitelist, allowBiPattern: true });\r\n }\r\n\r\n getOverridenSchemaProperties() {\r\n return {\r\n PerformanceMetricsAverageCPC: { filterable: false },\r\n PerformanceMetricsAverageCPM: { filterable: false },\r\n PerformanceMetricsTopImpressionRate: { filterable: false },\r\n PerformanceMetricsAbsoluteTopImpressionRate: { filterable: false },\r\n PerformanceMetricsAuctionWonPercent: { filterable: false },\r\n PerformanceMetricsAuctionLostToBudgetPercent: { filterable: false },\r\n PerformanceMetricsAuctionLostToRankPercent: { filterable: false },\r\n PerformanceMetricsAudienceAuctionWonPercent: { filterable: false },\r\n PerformanceMetricsAudienceTopISLostToBudgetPercent: { filterable: false },\r\n PerformanceMetricsAudienceTopISLostToRankPercent: { filterable: false },\r\n PerformanceMetricsClickSharePercent: { filterable: false },\r\n PerformanceMetricsExactMatchImpressionSharePercent: { filterable: false },\r\n PerformanceMetricsAbsoluteTopImpressionSharePercent: { filterable: false },\r\n PerformanceMetricsTopImpressionSharePercent: { filterable: false },\r\n PerformanceMetricsTopISLostToBudgetPercent: { filterable: false },\r\n PerformanceMetricsTopISLostToRankPercent: { filterable: false },\r\n PerformanceMetricsAbsoluteTopISLostToBudgetPercent: { filterable: false },\r\n PerformanceMetricsAbsoluteTopISLostToRankPercent: { filterable: false },\r\n PerformanceMetricsAllConversions: { filterable: false },\r\n PerformanceMetricsViewThroughConversions: { filterable: false },\r\n PerformanceMetricsViewThroughConversionsRevenue: { filterable: false },\r\n PerformanceMetricsViewThroughConversionsCPA: { filterable: false },\r\n PerformanceMetricsViewThroughConversionsReturnOnAdSpend: { filterable: false },\r\n PerformanceMetricsViewThroughConversionsRate: { filterable: false },\r\n PerformanceMetricsAllConversionCPA: { filterable: false },\r\n PerformanceMetricsAllConversionRate: { filterable: false },\r\n PerformanceMetricsAllConversionAdvertiserReportedRevenue: { filterable: false },\r\n PerformanceMetricsAllConversionRevenueOnAdSpend: { filterable: false },\r\n PerformanceMetricsRevenueOnAdSpend: { filterable: false },\r\n PerformanceMetricsAdvertiserReportedRevenue: { filterable: false },\r\n };\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n updateEntitySchemaForAvailableInsightTypeIds(updatedSchema);\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForAvailableInsightTypeIds(odataOptions);\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseAccountsSchemaProcessor } from './base-accounts-schema-processor';\r\n\r\nexport class ManagementSchemaProcessor extends BaseAccountsSchemaProcessor {\r\n constructor(options) {\r\n const propWhitelist = _.compact([\r\n 'Name',\r\n 'Currency',\r\n 'AccountType',\r\n 'Owner',\r\n 'BillToCustomerName',\r\n 'Budget/DailyBudget',\r\n 'Balance',\r\n 'PaymentInstrumentType',\r\n 'PreferredUserName',\r\n 'AccountVerificationStatus',\r\n 'BusinessLegalName',\r\n ]);\r\n super(options, { propWhitelist });\r\n const { dynamic } = this.Permissions;\r\n const IsChinaMarket = dynamic ? dynamic.CNMarketExpansion : false;\r\n this.isChinaMarket = IsChinaMarket;\r\n }\r\n\r\n getAdditionalSchemaProperties() {\r\n const additionalProperties = {};\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.CBTLifetimeBudget) {\r\n additionalProperties.LifetimeBudget = {\r\n title: this.passedInI18n.getString('ColumnName_CampaignLifetimeBudget'),\r\n property: 'Budget/LifetimeBudget',\r\n type: 'number',\r\n minimum: 0,\r\n filterable: true,\r\n };\r\n }\r\n\r\n return additionalProperties;\r\n }\r\n\r\n getOverridenSchemaProperties() {\r\n /* By design, filter fail or verified should also return overrideFailed and overrideVerified\r\n status from the query, so we filter the overrides status out here and add them in the query\r\n bellow, c.f. odataOptions.custom */\r\n // TODO: [jingl] comment this line to temporarily resolve build issue. Will fix later.\r\n // const aivStatusEnumValues =\r\n // _.values(_.omit(AccountVerificationStatus, 'OverrideFailed', 'OverrideVerified'));\r\n const aivStatusEnumValues = this.isChinaMarket ? [61, 62, 63, 64, 65, 66] : [1, 3, 4, 5, 6, 8, 9];\r\n\r\n return {\r\n PaymentInstrumentType: {\r\n // MT has type int, we need to override it is since all filters\r\n // value must be string for the type select\r\n type: 'string',\r\n // BUG 2245709: Override default [eq] operator because jsdata won't recognise it\r\n // due to the type select returns an array. In other words: jsdata predicate,\r\n // { where: $eq: [...values] } crash so we need to use $in: [...values] and\r\n // override the URL statement in odataOptions.custom)\r\n operators: ['in'],\r\n operatorDisplayNameMap: {\r\n in: this.passedInI18n.getString('Filter_Operator_EQ'),\r\n },\r\n },\r\n AccountVerificationStatus: {\r\n title: this.passedInI18n.getString('ColumnName_AccountVerificationStatus'),\r\n enum: aivStatusEnumValues,\r\n enumType: 'AccountVerificationStatus',\r\n enumValueMap: {},\r\n localized: _.object(aivStatusEnumValues, _.map(aivStatusEnumValues, value => this.i18n.getString(`AccountVerificationStatus_${value}`))),\r\n // Same as PaymentInstrumentType, we need to override it to string to make filter work\r\n type: 'string',\r\n operators: ['in'],\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n },\r\n BusinessLegalName: {\r\n title: this.passedInI18n.getString('ColumnName_BusinessLegalName'),\r\n },\r\n };\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n\r\n _.extendOwn(odataOptions.custom, {\r\n PaymentInstrumentType: {\r\n eq: (value) => {\r\n const intValue = value.split(\"'\")[1];\r\n const url = `PaymentInstrumentType eq ${intValue}`;\r\n return url;\r\n },\r\n },\r\n AccountVerificationStatus: {\r\n eq: (value) => {\r\n let url = `AccountVerificationStatus eq ${value}`;\r\n if (value === 1) { // AccountVerificationStatus.Failed\r\n url += ' or AccountVerificationStatus eq 2'; // AccountVerificationStatus.OverrideFailed\r\n }\r\n if (value === 6) { // AccountVerificationStatus.Verified\r\n url += ' or AccountVerificationStatus eq 7'; // AccountVerificationStatus.OverrideVerified\r\n }\r\n return url;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseAccountsSchemaProcessor } from './base-accounts-schema-processor';\r\n\r\nexport class AccountImportSchemaProcessor extends BaseAccountsSchemaProcessor {\r\n constructor(options) {\r\n const propWhitelist = _.compact([\r\n 'Name',\r\n 'LastImportInfo/ImportName',\r\n 'LastImportInfo/EntityIdsSpecified',\r\n ]);\r\n\r\n super(options, { propWhitelist });\r\n }\r\n\r\n getOverridenSchemaProperties() {\r\n return {\r\n LastImportInfoEntityIdsSpecified: {\r\n chooseType: 'radio-boolean',\r\n operators: ['eq'],\r\n },\r\n };\r\n }\r\n}\r\n","import { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class TagSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const {\r\n IsCustomerHierarchyEnabled,\r\n IsSharedLibraryPhase1Enabled,\r\n } = this.Permissions;\r\n const isOwnerFilterable = IsCustomerHierarchyEnabled && IsSharedLibraryPhase1Enabled;\r\n const updatedSchema = cloneDeep(entitySchema);\r\n\r\n if (!isOwnerFilterable) {\r\n delete updatedSchema.properties.OwnerName;\r\n delete updatedSchema.properties.OwnerNumber;\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class LinkedStoreSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n updatedSchema.properties = {\r\n Status: {\r\n filterable: true,\r\n title: 'Status',\r\n type: 'string',\r\n property: 'Status',\r\n originalProperty: 'Status',\r\n required: true,\r\n maximum: 1,\r\n enumValueMap: {\r\n 0: 'Pending',\r\n 1: 'Approved',\r\n 2: 'Rejected',\r\n 3: 'Expired',\r\n 4: 'Cancelled',\r\n },\r\n enum: [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n ],\r\n operators: [\r\n 'eq',\r\n ],\r\n chooseType: 'radio',\r\n },\r\n };\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n\r\n _.extendOwn(odataOptions.custom, {\r\n Status: {\r\n eq: (value) => {\r\n const status = value.split('\\'')[1];\r\n const url = `Status eq '${status}'`;\r\n\r\n return url;\r\n },\r\n },\r\n });\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import { extend } from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateOdataOptionsForFinalUrl } from '../util/update-final-url-property-for-filter';\r\n\r\nexport class GoalSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n this.goalsI18n = options.passedInI18n;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n const {\r\n IsViewThroughConversionEnabled,\r\n dynamic = {},\r\n } = this.Permissions;\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n updatedSchema.properties.IsMainConversionGoal = {\r\n filterable: true,\r\n name: 'IsMainConversionGoal',\r\n chooseType: 'radio-boolean',\r\n type: 'boolean',\r\n property: 'IsMainConversionGoal',\r\n };\r\n\r\n if (IsViewThroughConversionEnabled) {\r\n if (usePartialConversions) {\r\n updatedSchema.properties.ViewThroughConversionsCredit = {\r\n filterable: true,\r\n name: 'ViewThroughConversionsCredit',\r\n type: 'number',\r\n property: 'GoalPerformanceMetrics/ViewThroughConversionsCredit',\r\n required: true,\r\n alias: {\r\n propertyConversion: {\r\n sourcePropertyType: 'number',\r\n sourcePropertyName: 'ViewThroughConversions',\r\n },\r\n },\r\n };\r\n } else {\r\n updatedSchema.properties.ViewThroughConversions = {\r\n filterable: true,\r\n name: 'ViewThroughConversions',\r\n type: 'number',\r\n property: 'GoalPerformanceMetrics/ViewThroughConversions',\r\n required: true,\r\n alias: {\r\n propertyConversion: {\r\n sourcePropertyType: 'number',\r\n sourcePropertyName: 'ViewThroughConversionsCredit',\r\n },\r\n },\r\n };\r\n }\r\n }\r\n\r\n delete updatedSchema.properties.Labels;\r\n\r\n if (this.goalsI18n) {\r\n extend(updatedSchema.properties.Status, {\r\n localized: {\r\n \"Enum.GoalStatus'Paused'\": this.goalsI18n.getString('EntityStatus_Paused'),\r\n },\r\n });\r\n }\r\n\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n\r\n return odataOptions;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { lambdaConvertForArrayTypes } from '../util/update-odata-options-for-array-type';\r\n\r\nclass CampaignTypesDataSource {\r\n constructor(i18n) {\r\n this.disableSearch = true;\r\n this.campaignTypes = [{\r\n Id: 'Default',\r\n Name: i18n.getString(_TL_('Search')),\r\n }, {\r\n Id: 'Shopping',\r\n Name: i18n.getString(_TL_('Shopping')),\r\n }];\r\n }\r\n\r\n get(_viewFilter, searchFilter) {\r\n if (!searchFilter) {\r\n return Promise.resolve(this.campaignTypes);\r\n }\r\n\r\n const searchFilterLowerCase = searchFilter.toLowerCase();\r\n const typesToReturn =\r\n _.select(\r\n this.campaignTypes,\r\n type => type.Name.toLowerCase().indexOf(searchFilterLowerCase) === 0\r\n );\r\n\r\n return Promise.resolve(typesToReturn);\r\n }\r\n\r\n getByIds() {\r\n return Promise.resolve(this.campaignTypes);\r\n }\r\n}\r\n\r\nclass DeviceTypesDataSource {\r\n constructor(i18n) {\r\n this.disableSearch = true;\r\n this.deviceTypes = [{\r\n Id: 'Smartphones',\r\n Name: i18n.getString(_TL_('Smartphones')),\r\n }, {\r\n Id: 'Tablets',\r\n Name: i18n.getString(_TL_('Tablets')),\r\n }, {\r\n Id: 'Computers',\r\n Name: i18n.getString(_TL_('Computers')),\r\n }];\r\n }\r\n\r\n get(_viewFilter, searchFilter) {\r\n if (!searchFilter) {\r\n return Promise.resolve(this.deviceTypes);\r\n }\r\n\r\n const searchFilterLowerCase = searchFilter.toLowerCase();\r\n const typesToReturn =\r\n _.select(\r\n this.deviceTypes,\r\n type => type.Name.toLowerCase().indexOf(searchFilterLowerCase) === 0\r\n );\r\n\r\n return Promise.resolve(typesToReturn);\r\n }\r\n\r\n getByIds() {\r\n return Promise.resolve(this.deviceTypes);\r\n }\r\n}\r\n\r\nexport class SeasonalityAdjustmentSchemaProcessor extends BaseSchemaProcessor {\r\n updateOdataOptions(options) {\r\n const optionsCopy = options || { custom: {} };\r\n\r\n _.extendOwn(optionsCopy.custom, {\r\n CampaignTypeFilter: {\r\n containsall: lambdaConvertForArrayTypes('and', 'any', 'eq', 'CampaignTypeFilter', 'CampaignType'),\r\n containsany: lambdaConvertForArrayTypes('or', 'any', 'eq', 'CampaignTypeFilter', 'CampaignType'),\r\n containsnone: lambdaConvertForArrayTypes('and', 'all', 'ne', 'CampaignTypeFilter', 'CampaignType'),\r\n },\r\n DeviceTypeFilter: {\r\n containsall: lambdaConvertForArrayTypes('and', 'any', 'eq', 'DeviceTypeFilter', 'DeviceType'),\r\n containsany: lambdaConvertForArrayTypes('or', 'any', 'eq', 'DeviceTypeFilter', 'DeviceType'),\r\n containsnone: lambdaConvertForArrayTypes('and', 'all', 'ne', 'DeviceTypeFilter', 'DeviceType'),\r\n },\r\n });\r\n return optionsCopy;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const entitySchemaCopy = cloneDeep(entitySchema);\r\n const operatorDisplayNameMap = {\r\n containsall: this.passedInI18n.getString(_TL_('contains all')),\r\n containsany: this.passedInI18n.getString(_TL_('contains any')),\r\n containsnone: this.passedInI18n.getString(_TL_('contains none')),\r\n };\r\n const operators = ['containsall', 'containsany', 'containsnone'];\r\n\r\n entitySchemaCopy.properties.CampaignTypeFilter = {\r\n property: 'CampaignTypeFilter',\r\n name: this.passedInI18n.getString(_TL_('Campaign type')),\r\n title: this.passedInI18n.getString(_TL_('Campaign type')),\r\n operatorDisplayNameMap,\r\n operators,\r\n type: 'id',\r\n filterable: true,\r\n addtionalParams: {\r\n dataSource: new CampaignTypesDataSource(this.passedInI18n),\r\n selectorOptions: {\r\n keyMap: {\r\n Selector_Filter_Placeholder: () => this.passedInI18n.getString(_TL_('Campaign type')),\r\n },\r\n },\r\n },\r\n };\r\n\r\n entitySchemaCopy.properties.DeviceTypeFilter = {\r\n property: 'DeviceTypeFilter',\r\n name: this.passedInI18n.getString(_TL_('Device type')),\r\n title: this.passedInI18n.getString(_TL_('Device type')),\r\n operatorDisplayNameMap,\r\n operators,\r\n type: 'id',\r\n filterable: true,\r\n addtionalParams: {\r\n dataSource: new DeviceTypesDataSource(this.passedInI18n),\r\n selectorOptions: {\r\n keyMap: {\r\n Selector_Filter_Placeholder: () => this.passedInI18n.getString(_TL_('Device type')),\r\n },\r\n },\r\n },\r\n };\r\n\r\n return entitySchemaCopy;\r\n }\r\n}\r\n\r\n/**\r\n * In Odata model, DataExclusion is a special SeasonalityAdjustment.\r\n *\r\n * This is a string restriction. However, there are some difference, and we want to reuse most of the logic.\r\n *\r\n * So use inheritage from \"SeasonalityAdjustmentSchemaProcessor\" rather than \"BaseSchemaProcessor\"\r\n */\r\nexport class DataExclusionSchemaProcessor extends SeasonalityAdjustmentSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const entitySchemaCopy = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n if (entitySchemaCopy.properties.AdjustmentPercentage) {\r\n entitySchemaCopy.properties.AdjustmentPercentage = {\r\n ...entitySchemaCopy.properties.AdjustmentPercentage,\r\n filterable: false,\r\n };\r\n }\r\n\r\n return entitySchemaCopy;\r\n }\r\n}\r\n","import { pick } from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\n// shared budget summary page.\r\n// keep columns align with the old ui grid.\r\nexport class SharedBudgetSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n this.Permissions = options.globalConfig.get('Permissions');\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = cloneDeep(entitySchema);\r\n const {\r\n IsViewThroughConversionsRevenueEnabled,\r\n IsViewThroughConversionEnabled,\r\n IsAvgPositionDeprecationPhase2Enabled,\r\n dynamic = {},\r\n } = this.Permissions;\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n\r\n const propertyList = [\r\n 'Name',\r\n 'PerformanceMetricsSpend',\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsAveragePosition',\r\n 'PerformanceMetricsAverageCPC',\r\n usePartialConversions ? 'PerformanceMetricsConversionsCredit' : 'PerformanceMetricsConversions',\r\n usePartialConversions ? 'PerformanceMetricsAllConversionsCredit' : 'PerformanceMetricsAllConversions',\r\n ];\r\n\r\n if (IsViewThroughConversionEnabled) {\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughConversionsCredit' : 'PerformanceMetricsViewThroughConversions');\r\n }\r\n\r\n if (IsViewThroughConversionsRevenueEnabled) {\r\n propertyList.push('PerformanceMetricsViewThroughConversionsRevenue');\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughPartialConversionsCPA' : 'PerformanceMetricsViewThroughConversionsCPA');\r\n propertyList.push('PerformanceMetricsViewThroughConversionsReturnOnAdSpend');\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughPartialConversionsRate' : 'PerformanceMetricsViewThroughConversionsRate');\r\n }\r\n\r\n if (IsAvgPositionDeprecationPhase2Enabled) {\r\n propertyList.push('PerformanceMetricsTopImpressionRate');\r\n propertyList.push('PerformanceMetricsAbsoluteTopImpressionRate');\r\n }\r\n\r\n updatedSchema.properties = pick(updatedSchema.properties, propertyList);\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import { pick } from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class SharedBudgetCampaignSchemaProcessor extends BaseSchemaProcessor {\r\n constructor(options) {\r\n super(options);\r\n this.Permissions = options.globalConfig.get('Permissions');\r\n }\r\n\r\n // shared budget edit page.\r\n // keep columns align with the old ui grid.\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = cloneDeep(entitySchema);\r\n const {\r\n IsViewThroughConversionsRevenueEnabled,\r\n IsViewThroughConversionEnabled,\r\n IsAvgPositionDeprecationPhase2Enabled,\r\n dynamic = {},\r\n } = this.Permissions;\r\n const {\r\n PartialConversions: IsPartialConversionsEnabled,\r\n ColumnConversion: IsColumnConversionEnabled,\r\n } = dynamic;\r\n const usePartialConversions = IsPartialConversionsEnabled && IsColumnConversionEnabled;\r\n\r\n const propertyList = [\r\n 'Name',\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsAverageCPC',\r\n 'PerformanceMetricsSpend',\r\n 'PerformanceMetricsAveragePosition',\r\n usePartialConversions ? 'PerformanceMetricsConversionsCredit' : 'PerformanceMetricsConversions',\r\n usePartialConversions ? 'PerformanceMetricsPartialConversionRate' : 'PerformanceMetricsConversionRate',\r\n ];\r\n\r\n if (IsViewThroughConversionEnabled) {\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughConversionsCredit' : 'PerformanceMetricsViewThroughConversions');\r\n }\r\n\r\n if (IsViewThroughConversionsRevenueEnabled) {\r\n propertyList.push('PerformanceMetricsViewThroughConversionsRevenue');\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughPartialConversionsCPA' : 'PerformanceMetricsViewThroughConversionsCPA');\r\n propertyList.push('PerformanceMetricsViewThroughConversionsReturnOnAdSpend');\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsViewThroughPartialConversionsRate' : 'PerformanceMetricsViewThroughConversionsRate');\r\n }\r\n\r\n propertyList.push(usePartialConversions ? 'PerformanceMetricsAllConversionsCredit' : 'PerformanceMetricsAllConversions');\r\n\r\n if (IsAvgPositionDeprecationPhase2Enabled) {\r\n propertyList.push('PerformanceMetricsTopImpressionRate');\r\n propertyList.push('PerformanceMetricsAbsoluteTopImpressionRate');\r\n }\r\n\r\n updatedSchema.properties = pick(updatedSchema.properties, propertyList);\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class SelAccountLevelListsGridSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n // Hide filterable fields that are in the entitySchema but not in this grid.\r\n const entityNameProperty = entitySchema.properties.EntityName;\r\n const sharedEntityCustomerIdProperty = entitySchema.properties.SharedEntityCustomerId;\r\n\r\n if (entityNameProperty) {\r\n entityNameProperty.filterable = false;\r\n }\r\n\r\n if (sharedEntityCustomerIdProperty) {\r\n sharedEntityCustomerIdProperty.filterable = false;\r\n }\r\n\r\n return entitySchema;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class SelCustomerLevelAssociationsGridSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n // Hide filterable fields that are in the entitySchema but not in this grid.\r\n const sharedEntityNameProperty = entitySchema.properties.SharedEntityName;\r\n const listItemCountProperty = entitySchema.properties.ListItemCount;\r\n const sharedEntityCustomerIdProperty = entitySchema.properties.SharedEntityCustomerId;\r\n const sharedEntityCustomerNameProperty = entitySchema.properties.SharedEntityCustomerName;\r\n\r\n if (sharedEntityNameProperty) {\r\n sharedEntityNameProperty.filterable = false;\r\n }\r\n\r\n if (listItemCountProperty) {\r\n listItemCountProperty.filterable = false;\r\n }\r\n\r\n if (sharedEntityCustomerIdProperty) {\r\n sharedEntityCustomerIdProperty.filterable = false;\r\n }\r\n\r\n if (sharedEntityCustomerNameProperty) {\r\n sharedEntityCustomerNameProperty.filterable = false;\r\n }\r\n\r\n return entitySchema;\r\n }\r\n}\r\n","/* eslint-disable default-case */\r\n/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { updateOdataOptionsForFinalUrl } from '../util/update-final-url-property-for-filter';\r\n\r\nconst DeviceTypeLocalizeMap = {\r\n \"Enum.DeviceType'Mobile'\": 'HotelCenter_Overview_Grid_DeviceType_Enum_Smartphones',\r\n \"Enum.DeviceType'Tablet'\": 'HotelCenter_Overview_Grid_DeviceType_Enum_Tablets',\r\n \"Enum.DeviceType'Desktop'\": 'HotelCenter_Overview_Grid_DeviceType_Enum_Computers',\r\n};\r\n\r\nexport class HotelCenterOverviewSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n _.map(updatedSchema.properties, (item) => {\r\n if (item.property.indexOf('Metrics/') === 0) {\r\n item.property = `Performance${item.property}`;\r\n }\r\n });\r\n\r\n const {\r\n Id, BidAmount, DeviceType, PartnerHotelId, Status, Name,\r\n } = updatedSchema.properties;\r\n if (Id) {\r\n switch (updatedSchema.name) {\r\n case 'Hotel': {\r\n Id.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Hotel_ID_Label');\r\n break;\r\n }\r\n case 'HotelGroup': {\r\n Id.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Hotel_Group_ID_Label');\r\n break;\r\n }\r\n case 'SubAccount': {\r\n Id.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_SubAccount_Id_Label');\r\n break;\r\n }\r\n }\r\n }\r\n if (BidAmount) {\r\n BidAmount.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Bid_Label');\r\n }\r\n if (DeviceType) {\r\n DeviceType.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_DeviceType_Label');\r\n DeviceType.chooseType = 'checkbox';\r\n DeviceType.localized = _.mapObject(\r\n DeviceTypeLocalizeMap,\r\n EnumValue => this.passedInI18n.getString(EnumValue)\r\n );\r\n }\r\n if (PartnerHotelId) {\r\n PartnerHotelId.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Hotel_Advertiser_Hotel_ID_Label');\r\n }\r\n if (Status) {\r\n Status.chooseType = 'checkbox';\r\n Status.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_SubAccount_Status_Label');\r\n Status.localized = _.mapObject(Status.enumValueMap, EnumValue => this.passedInI18n.getString(`HotelCenter_Overview_Grid_Status_Enum_${EnumValue}`));\r\n }\r\n if (Name) {\r\n Name.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_SubAccount_Name_Label');\r\n }\r\n\r\n const propWhitelist = _.compact(['MaximumBidAmount', 'Labels']);\r\n\r\n // Add title for performance in other grids\r\n if (updatedSchema.name === 'HotelDimensionRow') {\r\n const {\r\n Clicks, Impressions, CTR, Spend, AverageCPC, AveragePosition,\r\n } = updatedSchema.properties;\r\n Clicks.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Clicks_Label');\r\n Impressions.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Impression_Label');\r\n CTR.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_CTR_Label');\r\n Spend.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_Spend_Label');\r\n AverageCPC.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_AverageCPC_Label');\r\n AveragePosition.title = this.passedInI18n.getString('HotelCenter_Overview_Grid_AveragePosition_Label');\r\n\r\n propWhitelist.push('AverageCPM');\r\n }\r\n\r\n if (updatedSchema.name === 'HotelGroup') {\r\n propWhitelist.push('Status');\r\n }\r\n\r\n updatedSchema.properties = _.omit(\r\n updatedSchema.properties,\r\n propWhitelist\r\n );\r\n return updatedSchema;\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n super.updateOdataOptions(odataOptions);\r\n const { fieldMap } = odataOptions;\r\n _.map(fieldMap, (value, key) => {\r\n if (value.indexOf('PerformanceMetrics/') === 0) {\r\n fieldMap[key] = value.replace('PerformanceMetrics/', 'Metrics/');\r\n }\r\n });\r\n updateOdataOptionsForFinalUrl(odataOptions);\r\n _.extendOwn(odataOptions.custom, {\r\n DeviceType: {\r\n eq: (filterValues) => {\r\n const queryStr = `DeviceType eq ${filterValues.replace('Enum.DeviceType', '')}`;\r\n return queryStr;\r\n },\r\n },\r\n });\r\n return odataOptions;\r\n }\r\n}\r\n","import { initialize as initializePop, appendPeriodOverPeriodProperties } from '../util/update-pop-property-for-filter';\r\n\r\nexport class PortfolioBidStrategySchemaProcessor {\r\n constructor(options) {\r\n initializePop(options);\r\n }\r\n\r\n updateOdataOptions(odataOptions) {\r\n return odataOptions;\r\n }\r\n\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n appendPeriodOverPeriodProperties(entitySchema);\r\n return entitySchema;\r\n }\r\n}\r\n","import { map, pick } from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { mapEnumValueForFilter, updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\n\r\nexport class AssetGroupSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n updatedSchema.properties = pick(updatedSchema.properties, [\r\n 'Name',\r\n 'DeliveryStatus',\r\n 'Status',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsConversionsCredit',\r\n 'PerformanceMetricsSpend',\r\n 'PerformanceMetricsAverageCPC',\r\n 'PerformanceMetricsAdvertiserReportedRevenue',\r\n 'PerformanceMetricsRevenueOnAdSpend',\r\n ], this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.SupportCPSForPmax ? [\r\n 'PerformanceMetricsAverageCPS',\r\n 'PerformanceMetricsSalesCount',\r\n ] : []);\r\n\r\n const statusProperty = updatedSchema.properties.Status;\r\n const statusEnumSet = ['Active', 'Paused', 'Expired'];\r\n statusProperty.enum = map(statusEnumSet, value => mapEnumValueForFilter('AssetGroupStatus', value));\r\n\r\n const deliveryStatusEnumSet = [\r\n 'Eligible',\r\n 'AssetGroupExpired',\r\n 'AssetGroupUserPaused',\r\n 'CampaignUserPaused',\r\n 'CampaignBudgetPaused',\r\n 'CampaignSuspended',\r\n 'CampaignInProgress',\r\n 'ShoppingCampaignStoreNotFound',\r\n 'ShoppingCampaignNoOffersPresent',\r\n 'InvalidFinancialStatusOther',\r\n 'EditorialApprovedLimited',\r\n 'EditorialRejected',\r\n 'EditorialUnderAppeal',\r\n 'EditorialPending',\r\n ];\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.AppealUpheld) {\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialApprovedLimited') + 1, 0, 'EditorialApprovedLimitedAppealRejected');\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialRejected') + 1, 0, 'EditorialAppealRejected');\r\n }\r\n\r\n updateDeliveryStatusPropertyForFilter(updatedSchema, deliveryStatusEnumSet);\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class PmaxAssetLinkSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n updatedSchema.properties.EditorialStatus = _.defaults({\r\n enum: [\r\n \"Enum.EditorialStatus'Approved'\",\r\n \"Enum.EditorialStatus'ApprovedLimited'\",\r\n \"Enum.EditorialStatus'Rejected'\",\r\n \"Enum.EditorialStatus'Pending'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.EditorialStatus'Approved'\": 'Approved',\r\n \"Enum.EditorialStatus'ApprovedLimited'\": 'ApprovedLimited',\r\n \"Enum.EditorialStatus'Rejected'\": 'Rejected',\r\n \"Enum.EditorialStatus'Pending'\": 'Pending',\r\n },\r\n }, updatedSchema.properties.EditorialStatus);\r\n\r\n updatedSchema.properties.AssociationType = _.defaults({\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'LongHeadlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\",\r\n \"Enum.AssetAssociationType'SquareImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\",\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\",\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\",\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\",\r\n \"Enum.AssetAssociationType'CallToAction'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'LongHeadlines'\": 'LongHeadlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\": 'ImageMedia1X2',\r\n \"Enum.AssetAssociationType'SquareImageMedia'\": 'SquareImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\": 'ImageMedia15X10',\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\": 'ImageMedia133X100',\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\": 'ImageMedia178X100',\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\": 'LandscapeImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\": 'ImageMedia4X1',\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\": 'SquareLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\": 'LandscapeLogoMedia',\r\n \"Enum.AssetAssociationType'CallToAction'\": 'CallToAction',\r\n },\r\n }, updatedSchema.properties.AssociationType);\r\n\r\n updatedSchema.properties.AssetAssetSource = _.defaults({\r\n chooseType: 'checkbox',\r\n enumType: 'AssetSource',\r\n enum: [\r\n \"Enum.AssetSource'AdvertiserProvided'\",\r\n \"Enum.AssetSource'AutoGenerated'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetSource'AdvertiserProvided'\": 'AdvertiserProvided',\r\n \"Enum.AssetSource'AutoGenerated'\": 'AutoGenerated',\r\n },\r\n }, updatedSchema.properties.AssetAssetSource);\r\n\r\n updatedSchema.properties = _.pick(updatedSchema.properties, 'AssetText', 'AssociationType', 'EditorialStatus', 'PerformanceMetricsImpressions', 'PerformanceMetricsAdvertiserReportedRevenue', 'PerformanceMetricsConversionsCredit', 'AssetId', 'AssetAssetSource');\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\n\r\nexport class UnifiedAdsAssetLinkSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n\r\n updatedSchema.properties.EditorialStatus = _.defaults({\r\n enum: [\r\n \"Enum.EditorialStatus'Approved'\",\r\n \"Enum.EditorialStatus'ApprovedLimited'\",\r\n \"Enum.EditorialStatus'Rejected'\",\r\n \"Enum.EditorialStatus'Pending'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.EditorialStatus'Approved'\": 'Approved',\r\n \"Enum.EditorialStatus'ApprovedLimited'\": 'ApprovedLimited',\r\n \"Enum.EditorialStatus'Rejected'\": 'Rejected',\r\n \"Enum.EditorialStatus'Pending'\": 'Pending',\r\n },\r\n }, updatedSchema.properties.EditorialStatus);\r\n\r\n updatedSchema.properties.AssociationType = _.defaults({\r\n enum: [\r\n \"Enum.AssetAssociationType'Headlines'\",\r\n \"Enum.AssetAssociationType'LongHeadlines'\",\r\n \"Enum.AssetAssociationType'Descriptions'\",\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\",\r\n \"Enum.AssetAssociationType'SquareImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\",\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\",\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\",\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\",\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\",\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\",\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\",\r\n \"Enum.AssetAssociationType'CallToAction'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetAssociationType'Headlines'\": 'Headlines',\r\n \"Enum.AssetAssociationType'LongHeadlines'\": 'LongHeadlines',\r\n \"Enum.AssetAssociationType'Descriptions'\": 'Descriptions',\r\n \"Enum.AssetAssociationType'ImageMedia1X2'\": 'ImageMedia1X2',\r\n \"Enum.AssetAssociationType'SquareImageMedia'\": 'SquareImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia15X10'\": 'ImageMedia15X10',\r\n \"Enum.AssetAssociationType'ImageMedia133X100'\": 'ImageMedia133X100',\r\n \"Enum.AssetAssociationType'ImageMedia178X100'\": 'ImageMedia178X100',\r\n \"Enum.AssetAssociationType'LandscapeImageMedia'\": 'LandscapeImageMedia',\r\n \"Enum.AssetAssociationType'ImageMedia4X1'\": 'ImageMedia4X1',\r\n \"Enum.AssetAssociationType'SquareLogoMedia'\": 'SquareLogoMedia',\r\n \"Enum.AssetAssociationType'LandscapeLogoMedia'\": 'LandscapeLogoMedia',\r\n \"Enum.AssetAssociationType'CallToAction'\": 'CallToAction',\r\n },\r\n }, updatedSchema.properties.AssociationType);\r\n\r\n updatedSchema.properties.AssetAssetSource = _.defaults({\r\n chooseType: 'checkbox',\r\n enumType: 'AssetSource',\r\n enum: [\r\n \"Enum.AssetSource'AdvertiserProvided'\",\r\n \"Enum.AssetSource'AutoGenerated'\",\r\n ],\r\n enumValueMap: {\r\n \"Enum.AssetSource'AdvertiserProvided'\": 'AdvertiserProvided',\r\n \"Enum.AssetSource'AutoGenerated'\": 'AutoGenerated',\r\n },\r\n }, updatedSchema.properties.AssetAssetSource);\r\n\r\n updatedSchema.properties = _.pick(\r\n updatedSchema.properties,\r\n 'AssetText',\r\n 'AssociationType',\r\n 'EditorialStatus',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsAdvertiserReportedRevenue',\r\n 'PerformanceMetricsConversionsCredit',\r\n 'AssetId',\r\n 'AssetAssetSource'\r\n );\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import { map, pick } from 'underscore';\r\nimport { BaseSchemaProcessor } from './base-schema-processor';\r\nimport { mapEnumValueForFilter, updateDeliveryStatusPropertyForFilter } from '../util/update-delivery-status-property-for-filter';\r\n\r\nexport class AppAdsAssetGroupSchemaProcessor extends BaseSchemaProcessor {\r\n updateEntitySchemaForFeatures(entitySchema) {\r\n const updatedSchema = super.updateEntitySchemaForFeatures(entitySchema);\r\n updatedSchema.properties = pick(updatedSchema.properties, [\r\n 'Name',\r\n 'DeliveryStatus',\r\n 'Status',\r\n 'PerformanceMetricsImpressions',\r\n 'PerformanceMetricsClicks',\r\n 'PerformanceMetricsCTR',\r\n 'PerformanceMetricsConversionsCredit',\r\n 'PerformanceMetricsSpend',\r\n 'PerformanceMetricsAverageCPC',\r\n 'PerformanceMetricsAdvertiserReportedRevenue',\r\n 'PerformanceMetricsRevenueOnAdSpend',\r\n 'PerformanceMetricsDownloads',\r\n 'PerformanceMetricsFirstLaunches',\r\n 'PerformanceMetricsPurchases',\r\n 'PerformanceMetricsPostClickDownloadRate',\r\n 'PerformanceMetricsCostPerDownload',\r\n 'PerformanceMetricsPostClickFirstLaunchRate',\r\n 'PerformanceMetricsCostPerFirstLaunch',\r\n 'PerformanceMetricsPostInstallPurchaseRate',\r\n 'PerformanceMetricsCostPerPurchase',\r\n 'PerformanceMetricsPostInstallSubscriptionRate',\r\n 'PerformanceMetricsCostPerSubscription',\r\n ], this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.SupportCPSForPmax ? [\r\n 'PerformanceMetricsAverageCPS',\r\n 'PerformanceMetricsSalesCount',\r\n ] : []);\r\n\r\n const statusProperty = updatedSchema.properties.Status;\r\n const statusEnumSet = ['Active', 'Paused', 'Expired'];\r\n statusProperty.enum = map(statusEnumSet, value => mapEnumValueForFilter('AssetGroupStatus', value));\r\n\r\n const deliveryStatusEnumSet = [\r\n 'Eligible',\r\n 'AssetGroupExpired',\r\n 'AssetGroupUserPaused',\r\n 'CampaignUserPaused',\r\n 'CampaignBudgetPaused',\r\n 'CampaignSuspended',\r\n 'CampaignInProgress',\r\n 'ShoppingCampaignStoreNotFound',\r\n 'ShoppingCampaignNoOffersPresent',\r\n 'InvalidFinancialStatusOther',\r\n 'EditorialApprovedLimited',\r\n 'EditorialRejected',\r\n 'EditorialUnderAppeal',\r\n 'EditorialPending',\r\n ];\r\n\r\n if (this.Permissions && this.Permissions.dynamic && this.Permissions.dynamic.AppealUpheld) {\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialApprovedLimited') + 1, 0, 'EditorialApprovedLimitedAppealRejected');\r\n deliveryStatusEnumSet.splice(deliveryStatusEnumSet.indexOf('EditorialRejected') + 1, 0, 'EditorialAppealRejected');\r\n }\r\n\r\n updateDeliveryStatusPropertyForFilter(updatedSchema, deliveryStatusEnumSet);\r\n\r\n return updatedSchema;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { FilterStorageFactory, WaterfallFilterStorage, WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport {\r\n updateEntitySchemaForPilotFeatures,\r\n enableFilterForExtraPerformanceMetrics,\r\n updateEntitySchemaForPartialConversions,\r\n disableFilterForExtraPerformanceMetrics,\r\n initialize as initializeCommonFilterConfig,\r\n} from './util/update-entity-schema-for-pilot-features';\r\nimport {\r\n KeywordSchemaProcessor,\r\n AdGroupSchemaProcessor,\r\n AdSchemaProcessor,\r\n DayTimeCriterionSchemaProcessor,\r\n DeviceCriterionSchemaProcessor,\r\n LocationCriterionSchemaProcessor,\r\n NegativeKeywordSchemaProcessor,\r\n ExperimentSchemaProcessor,\r\n AssetLinkSchemaProcessor,\r\n AssetWithBIDataSchemaProcessor,\r\n ResponsiveSearchAdInstanceSchemaProcessor,\r\n BaseCriterionSchemaProcessor,\r\n AudienceCriterionWithBISchemaProcessor,\r\n AudienceSchemaProcessor,\r\n ProductSchemaProcessor,\r\n GMBImportSchemaProcessor,\r\n SearchTermSchemaProcessor,\r\n PerformanceSchemaProcessor,\r\n SmartPerformanceSchemaProcessor,\r\n ManagementSchemaProcessor,\r\n AccountImportSchemaProcessor,\r\n TagSchemaProcessor,\r\n LinkedStoreSchemaProcessor,\r\n GoalSchemaProcessor,\r\n SeasonalityAdjustmentSchemaProcessor,\r\n DataExclusionSchemaProcessor,\r\n SharedBudgetSchemaProcessor,\r\n SharedBudgetCampaignSchemaProcessor,\r\n SelAccountLevelListsGridSchemaProcessor,\r\n SelCustomerLevelAssociationsGridSchemaProcessor,\r\n HotelCenterOverviewSchemaProcessor,\r\n AssetGroupSchemaProcessor,\r\n PmaxAssetLinkSchemaProcessor,\r\n UnifiedAdsAssetLinkSchemaProcessor,\r\n AppAdsAssetGroupSchemaProcessor,\r\n} from './schema-processors/index';\r\n\r\nconst featureToSchemaProcessorMapping = {\r\n AutomatedRuleKeywordGrid: KeywordSchemaProcessor,\r\n AutomatedRuleAdgroupGrid: AdGroupSchemaProcessor,\r\n AutomatedRuleAdGrid: AdSchemaProcessor,\r\n KeywordGrid: KeywordSchemaProcessor,\r\n AdgroupGrid: AdGroupSchemaProcessor,\r\n AdGrid: AdSchemaProcessor,\r\n AdScheduleGrid: DayTimeCriterionSchemaProcessor,\r\n LocationsGrid: LocationCriterionSchemaProcessor,\r\n ExcludedLocationsGrid: BaseCriterionSchemaProcessor,\r\n DevicesGrid: DeviceCriterionSchemaProcessor,\r\n campaignNegativeKeywordGrid: NegativeKeywordSchemaProcessor,\r\n adgroupNegativeKeywordGrid: NegativeKeywordSchemaProcessor,\r\n ExperimentsGrid: ExperimentSchemaProcessor,\r\n RSAAssetsGrid: AssetLinkSchemaProcessor,\r\n AssetsReportGrid: AssetWithBIDataSchemaProcessor,\r\n RSACombinationsGrid: ResponsiveSearchAdInstanceSchemaProcessor,\r\n AudienceAssociationGrid: AudienceCriterionWithBISchemaProcessor,\r\n AudienceGrid: AudienceSchemaProcessor,\r\n ProductGrid: ProductSchemaProcessor,\r\n GmbImportV2: GMBImportSchemaProcessor,\r\n SearchTermGrid: SearchTermSchemaProcessor,\r\n PerformanceGrid: PerformanceSchemaProcessor,\r\n SmartPerformanceGrid: SmartPerformanceSchemaProcessor,\r\n ManagementGrid: ManagementSchemaProcessor,\r\n ImportGrid: AccountImportSchemaProcessor,\r\n UETTagsGrid: TagSchemaProcessor,\r\n LinkedStoreGrid: LinkedStoreSchemaProcessor,\r\n ConversionGoalsGrid: GoalSchemaProcessor,\r\n SharedBudgetSummaryGrid: SharedBudgetSchemaProcessor,\r\n SharedBudgetEditGrid: SharedBudgetCampaignSchemaProcessor,\r\n AccountLevelListGrid: SelAccountLevelListsGridSchemaProcessor,\r\n CustomerLevelEditAccountsGrid: SelCustomerLevelAssociationsGridSchemaProcessor,\r\n HotelCenterOverviewGridHotelSubAccountGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelGroupGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelIdGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelDeviceTypeGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelDateGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelLengthOfStayGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelUserCountryGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelSlotTypeGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridHotelCountryGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridAdvancedBookingGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridCheckinDayGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridDateTypeGrid: HotelCenterOverviewSchemaProcessor,\r\n HotelCenterOverviewGridSiteTypeGrid: HotelCenterOverviewSchemaProcessor,\r\n SeasonalityAdjustmentGrid: SeasonalityAdjustmentSchemaProcessor,\r\n DataExclusionGrid: DataExclusionSchemaProcessor,\r\n AssetGroupGrid: AssetGroupSchemaProcessor,\r\n AppAdsAssetGroupGrid: AppAdsAssetGroupSchemaProcessor,\r\n PmaxAssetGrid: PmaxAssetLinkSchemaProcessor,\r\n UnifiedAdsAssetGrid: UnifiedAdsAssetLinkSchemaProcessor,\r\n};\r\n\r\nfunction mergeFilters(filters) {\r\n if (filters.length > 1) {\r\n return {\r\n filter: {\r\n key: filters[0].filter.key,\r\n value: {\r\n query: {\r\n $and: _.map(filters, filterObj => filterObj.filter.value.query),\r\n },\r\n },\r\n },\r\n };\r\n } else if (filters.length === 1) {\r\n return filters[0];\r\n }\r\n return null;\r\n}\r\n\r\nfunction getWaterfallFilterStoreVNext(filterKeys, preferenceService, featureName) {\r\n const waterfallFilterStorage = new WaterfallFilterStorage({\r\n preferenceService,\r\n });\r\n\r\n return {\r\n get: () => {\r\n const waterfallFilters = waterfallFilterStorage.getFilters(filterKeys);\r\n\r\n if (!_.isArray(waterfallFilters)) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n const filters = [];\r\n\r\n _.each(filterKeys, (filterKey, i) => {\r\n if (!waterfallFilters[i] || !waterfallFilters[i].filter.value.query) {\r\n return;\r\n }\r\n\r\n if (featureName === 'campaignNegativeKeywordGrid' && filterKey === WaterfallFilterType.AdGroupStatus) {\r\n return;\r\n }\r\n\r\n // If current grid is on the same level as the waterfall filter, ex. filtering by\r\n // ad group status in ad group grid, need to change filter's property name from\r\n // AdGroupStatus to Status. Need to do the same for campaign grid.\r\n if (featureName === 'AdgroupGrid' && filterKey === WaterfallFilterType.AdGroupStatus) {\r\n filters.push({\r\n filter: {\r\n key: WaterfallFilterType.AdGroupStatus,\r\n value: {\r\n query: {\r\n Status: waterfallFilters[i].filter.value.query.AdGroupStatus,\r\n },\r\n },\r\n },\r\n });\r\n } else if ((featureName === 'AllSettingsGrid') && filterKey === WaterfallFilterType.CampaignStatus) {\r\n filters.push({\r\n filter: {\r\n key: WaterfallFilterType.CampaignStatus,\r\n value: {\r\n query: {\r\n Status: waterfallFilters[i].filter.value.query.CampaignStatus,\r\n },\r\n },\r\n },\r\n });\r\n } else {\r\n filters.push(waterfallFilters[i]);\r\n }\r\n });\r\n return Promise.resolve(mergeFilters(filters));\r\n },\r\n };\r\n}\r\n\r\nexport function getCommonFilterConfig({\r\n featureName,\r\n schemaProcessor,\r\n searchbox,\r\n editor,\r\n selector,\r\n enableCampaignWaterfall = false,\r\n enableAdGroupWaterfall = false,\r\n enableAvgPositionDeprecation = true,\r\n allowCampaignStatusWaterfall = true,\r\n allowCampaignTypeWaterfall = true,\r\n enableEditorialRejectionFilter = false,\r\n i18n,\r\n entitySchema,\r\n cachedEntitySchema,\r\n filterExpressions = null,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n globalConfig,\r\n legacyGlobalI18n,\r\n schemaI18nCampaign,\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n getLegacySaved = true,\r\n updatePilot = true,\r\n preferenceService,\r\n customColumnPreference,\r\n odata = {\r\n ignoreCase: false,\r\n custom: {},\r\n },\r\n edm,\r\n state,\r\n extraPerformanceColumns,\r\n disabledPerformanceColumns,\r\n scope,\r\n}) {\r\n const schemaConfigOptions = {\r\n globalConfig,\r\n schemaI18nCampaign,\r\n i18n: legacyGlobalI18n,\r\n cacheService,\r\n dataContextManager,\r\n jsdata,\r\n isForVNext: true,\r\n passedInI18n: i18n,\r\n enableEditorialRejectionFilter,\r\n preferenceService,\r\n customColumnPreference,\r\n featureName,\r\n edm,\r\n state,\r\n scope,\r\n };\r\n\r\n let updatedEntitySchema = null;\r\n\r\n if (!cachedEntitySchema) {\r\n updatedEntitySchema = entitySchema;\r\n\r\n if (updatePilot) {\r\n initializeCommonFilterConfig(schemaConfigOptions);\r\n updatedEntitySchema = updateEntitySchemaForPilotFeatures(entitySchema, /* isForVNext */true, filterExpressions, enableAvgPositionDeprecation); // eslint-disable-line max-len\r\n }\r\n\r\n if (_.isArray(extraPerformanceColumns) && !_.isEmpty(extraPerformanceColumns)) {\r\n enableFilterForExtraPerformanceMetrics(updatedEntitySchema, extraPerformanceColumns);\r\n }\r\n\r\n if (_.isArray(disabledPerformanceColumns) && !_.isEmpty(disabledPerformanceColumns)) {\r\n disableFilterForExtraPerformanceMetrics(updatedEntitySchema, disabledPerformanceColumns);\r\n }\r\n\r\n if (updatePilot) {\r\n updateEntitySchemaForPartialConversions(updatedEntitySchema);\r\n }\r\n } else {\r\n updatedEntitySchema = cachedEntitySchema;\r\n }\r\n\r\n const maxSavedFilterLimit = 10;\r\n const enabled = [];\r\n let campaignGridFilterStore;\r\n let adgroupFilterStore;\r\n\r\n if (enableCampaignWaterfall) {\r\n const waterfallFilterTypes = [];\r\n if (allowCampaignTypeWaterfall) {\r\n waterfallFilterTypes.push(WaterfallFilterType.CampaignType);\r\n }\r\n // Campaign grid will treat status filter as quick filter\r\n if (allowCampaignStatusWaterfall && featureName !== 'CampaignsGrid') {\r\n waterfallFilterTypes.push(WaterfallFilterType.CampaignStatus);\r\n }\r\n campaignGridFilterStore = getWaterfallFilterStoreVNext(\r\n waterfallFilterTypes,\r\n preferenceService,\r\n featureName\r\n );\r\n }\r\n\r\n if (enableAdGroupWaterfall) {\r\n adgroupFilterStore = getWaterfallFilterStoreVNext(\r\n [WaterfallFilterType.AdGroupStatus],\r\n preferenceService,\r\n featureName\r\n );\r\n }\r\n\r\n\r\n let baseConfig = {\r\n getLegacySaved,\r\n entitySchema: updatedEntitySchema,\r\n schemaI18n: new SchemaI18n({ i18n }),\r\n i18n,\r\n // won't work for kendo datepicker\r\n // shortDateFormat: 'yMd',\r\n odata,\r\n maxSavedFilterLimit,\r\n storageFactory: new FilterStorageFactory({\r\n getLegacySaved,\r\n sessionStore,\r\n preferenceStoreFactory,\r\n featureName,\r\n maxSavedFilterLimit,\r\n preferenceService,\r\n }),\r\n featureName,\r\n edm,\r\n scope,\r\n };\r\n\r\n if (enableCampaignWaterfall && enableAdGroupWaterfall) {\r\n baseConfig = _.extend(baseConfig, {\r\n waterfallFilterStores: [campaignGridFilterStore, adgroupFilterStore],\r\n });\r\n } else if (enableCampaignWaterfall) {\r\n baseConfig = _.extend(baseConfig, {\r\n waterfallFilterStores: [campaignGridFilterStore],\r\n waterfallEvent: 'adGroupWaterfall',\r\n });\r\n }\r\n\r\n let schemaProcessorCopy = schemaProcessor;\r\n if (!_.isFunction(schemaProcessor) && featureToSchemaProcessorMapping[featureName]) {\r\n schemaProcessorCopy = new featureToSchemaProcessorMapping[featureName](schemaConfigOptions);\r\n }\r\n\r\n if (schemaProcessorCopy && _.isFunction(schemaProcessorCopy.updateEntitySchemaForFeatures)) {\r\n baseConfig = _.extend(baseConfig, {\r\n schemaProcessor:\r\n schemaProcessorCopy.updateEntitySchemaForFeatures.bind(schemaProcessorCopy),\r\n });\r\n }\r\n\r\n if (schemaProcessorCopy && _.isFunction(schemaProcessorCopy.updateOdataOptions)) {\r\n baseConfig = _.extend(baseConfig, {\r\n odataOptionsProcessor: schemaProcessorCopy.updateOdataOptions.bind(schemaProcessorCopy),\r\n });\r\n }\r\n\r\n if (searchbox) {\r\n baseConfig = _.extend(baseConfig, {\r\n searchbox,\r\n });\r\n enabled.push('searchbox');\r\n }\r\n\r\n if (editor) {\r\n baseConfig = _.extend(baseConfig, {\r\n editor: _.extend({\r\n isComparingEnabled: () => window.App && window.App.state && !!window.App.state.get('$daterange').compared,\r\n }, editor),\r\n });\r\n enabled.push('editor');\r\n }\r\n\r\n if (selector) {\r\n baseConfig = _.extend(baseConfig, {\r\n selector,\r\n });\r\n enabled.push('selector');\r\n }\r\n\r\n baseConfig = _.extend(baseConfig, { enabled });\r\n return baseConfig;\r\n}\r\n","export const GENERAL_INSIGHTS_PREFERENCES = 'WebApp.CampaignUI.GeneralInsightsPreferences';\r\nexport const FEATURE_NAME_GENERAL_INSIGHTS = 'GeneralInsightsGrid';\r\nexport const FEATURE_NAME_GENERAL_INSIGHTS_SHOPPING = 'GeneralInsightsShoppingGrid';\r\n\r\nexport const CAMPAIGN_TYPES = {\r\n Search: 'Default',\r\n Shopping: 'Shopping',\r\n};\r\n\r\nexport const CAMPAIGN_TYPES_ENUM_VALUE = {\r\n [CAMPAIGN_TYPES.Search]: 1,\r\n [CAMPAIGN_TYPES.Shopping]: 2,\r\n};\r\n\r\nexport const METRIC_PREFERENCE_KEY_NAME = {\r\n [CAMPAIGN_TYPES.Search]: 'selectedMetric',\r\n [CAMPAIGN_TYPES.Shopping]: 'shoppingSelectedMetric',\r\n};\r\n\r\nexport const GENERAL_INSIGHTS_FEATURE_NAMES = {\r\n [CAMPAIGN_TYPES.Search]: FEATURE_NAME_GENERAL_INSIGHTS,\r\n [CAMPAIGN_TYPES.Shopping]: FEATURE_NAME_GENERAL_INSIGHTS_SHOPPING,\r\n};\r\n","import _ from 'underscore';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nimport {\r\n GENERAL_INSIGHTS_PREFERENCES,\r\n} from './consts';\r\n\r\nexport function getGeneralInsightsPreferences(preferencesService) {\r\n const sessionData = preferencesService.findByNameAtUserLevel(GENERAL_INSIGHTS_PREFERENCES);\r\n\r\n return _.result(sessionData, 'Data', {});\r\n}\r\n\r\nexport function saveGeneralInsightsPreferences(preferencesService, data) {\r\n const Data = merge(\r\n {},\r\n getGeneralInsightsPreferences(preferencesService),\r\n data\r\n );\r\n\r\n preferencesService.setAtUserLevel({\r\n Name: GENERAL_INSIGHTS_PREFERENCES,\r\n Data,\r\n });\r\n}\r\n","/* eslint-disable quotes */\r\nexport const mockedTags = {\r\n '@odata.context': 'http://c1-si-odataapi.trafficmanager.net:8080/Advertiser/v2/$metadata#Tags',\r\n '@odata.count': 12,\r\n value: [\r\n {\r\n Id: 6302851,\r\n Name: 'xytestTag1',\r\n TrackingCode: '',\r\n IsPreferredTag: false,\r\n Owner: {\r\n Id: 257194955, Name: \"xytest\", Number: \"F10400ZC4Z\", Account: null,\r\n },\r\n },\r\n {\r\n Id: 1103231,\r\n Name: 'preferredTag',\r\n TrackingCode: '',\r\n IsPreferredTag: true,\r\n Owner: {\r\n Id: 257194955, Name: \"xytest\", Number: \"F10400ZC4Z\", Account: null,\r\n },\r\n },\r\n {\r\n Id: 104000491,\r\n Name: 'xytesttag111122',\r\n TrackingCode: '',\r\n IsPreferredTag: false,\r\n Owner: {\r\n Id: 257194955, Name: \"xytest\", Number: \"F10400ZC4Z\", Account: null,\r\n },\r\n },\r\n ],\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { AccessibleTreeView } from '@bingads-webui-react/accessible-tree-view';\r\nimport { NodeProps } from '@bingads-webui-react/tree-view';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getPageMenuStyles } from '../styles/page-menu-styles';\r\n\r\nclass PageMenu extends React.PureComponent {\r\n componentDidUpdate() {\r\n if (this.props.perfMarker &&\r\n !this.props.perfMarker.isDone\r\n ) {\r\n this.props.perfMarker.done();\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n {}}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nPageMenu.propTypes = {\r\n classes: PropTypes.shape(_.mapObject(\r\n getPageMenuStyles({}, {}),\r\n _.constant(PropTypes.string.isRequired)\r\n )).isRequired,\r\n treeNodes: PropTypes.arrayOf(NodeProps).isRequired,\r\n nodeChildRenderer: PropTypes.func.isRequired,\r\n perfMarker: PropTypes.shape({\r\n done: PropTypes.func.isRequired,\r\n isDone: PropTypes.bool.isRequired,\r\n }),\r\n ariaLabel: PropTypes.string,\r\n};\r\n\r\nPageMenu.defaultProps = {\r\n perfMarker: null,\r\n ariaLabel: '',\r\n};\r\n\r\nexport default withDefaultStyles(PageMenu, getPageMenuStyles);\r\n","import { getUetTagItemStyles } from './uet-tag-item-styles';\r\n\r\nexport const getPageMenuStyles = ({ pageMenu = {} }, { palette = {} }) => ({\r\n ...getUetTagItemStyles({ pageMenu }, { palette }),\r\n\r\n treeViewContainer: {\r\n position: 'relative',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n height: 'calc(100vh - 200px) !important',\r\n color: '#f3f2f1',\r\n backgroundColor: '#fff',\r\n flex: '1 1 1px',\r\n maxHeight: 'calc(100vh - 160px)',\r\n '& .ReactVirtualized__Grid': {\r\n overflowY: 'hidden !important',\r\n '&:hover': {\r\n overflowY: 'visible !important',\r\n },\r\n '& .ReactVirtualized__Grid__innerScrollContainer': {\r\n overflow: 'hidden !important',\r\n '& .tree-node button': {\r\n background: '#fff !important',\r\n },\r\n },\r\n },\r\n },\r\n statusIconContainer: {\r\n width: 12,\r\n height: 12,\r\n marginLeft: 12,\r\n marginTop: 4,\r\n marginBottom: 12,\r\n marginRight: 12,\r\n },\r\n labelContainer: {\r\n color: palette.white,\r\n },\r\n});\r\n","import { getButtonFocusOverrideStyle } from '@bingads-webui-campaign-react/main-menu';\r\n\r\nexport const getUetTagItemStyles = (menuItem, { palette = {} }) => ({\r\n baseMenuItem: {\r\n height: 36,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 'normal',\r\n lineHeight: 'normal',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingLeft: 20,\r\n paddingRight: 10,\r\n border: 0,\r\n textDecoration: 'none',\r\n color: '#f3f2f1',\r\n backgroundColor: '#f3f2f1',\r\n alignItems: 'center',\r\n textAlign: 'left',\r\n borderRadius: 'unset',\r\n // menu item is using Button, but states' style should not act the same as Button.\r\n '& a': {\r\n color: palette.white,\r\n },\r\n '&:focus': getButtonFocusOverrideStyle(palette.neutralSecondary),\r\n '&:active': {\r\n '&:focus': {\r\n '&:after': {\r\n border: 0,\r\n },\r\n },\r\n },\r\n '& .spinner_label': {\r\n color: palette.white,\r\n },\r\n },\r\n normalMenuItem: {\r\n backgroundColor: '#f3f2f1 !important',\r\n '&:focus': {\r\n backgroundColor: palette.neutralLight,\r\n fontWeight: 'bold',\r\n },\r\n '&:hover': {\r\n backgroundColor: palette.neutralLight,\r\n fontWeight: 'bold',\r\n },\r\n },\r\n selectedMenuItem: {\r\n paddingLeft: 16,\r\n fontWeight: 'bold',\r\n backgroundColor: '#DEECF9 !important',\r\n borderLeft: `4px solid ${palette.themePrimary}`,\r\n alignSelf: 'stretch',\r\n },\r\n menuItemAnchor: {\r\n width: '98px',\r\n marginTop: 3,\r\n },\r\n iconContainer: {\r\n marginLeft: 8,\r\n marginTop: 2,\r\n marginBottom: 6,\r\n marginRight: 8,\r\n height: 16,\r\n fontSize: 16,\r\n color: palette.white,\r\n },\r\n textContainer: {\r\n display: 'inline-block',\r\n width: '100px',\r\n overflow: 'hidden',\r\n marginTop: 8,\r\n marginBottom: 9,\r\n textOverflow: 'ellipsis',\r\n flex: '1 1 1px',\r\n whiteSpace: 'nowrap',\r\n fontSize: 14,\r\n color: 'black',\r\n },\r\n typeSelectionIcon: {\r\n fontSize: 16,\r\n margin: '0px !important',\r\n top: '0px !important',\r\n },\r\n placeholderTextContainer: {\r\n marginLeft: 22,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\nexport const TextSpanWithForwardedRef = ({\r\n classes, node, forwardedRef,\r\n}) => {\r\n const textContainerClassNames = [classes.textContainer];\r\n\r\n return (\r\n \r\n {node.Name}\r\n \r\n );\r\n};\r\n\r\nTextSpanWithForwardedRef.propTypes = {\r\n classes: PropTypes.shape({\r\n textContainer: PropTypes.string.isRequired,\r\n }).isRequired,\r\n node: PropTypes.shape({\r\n Name: PropTypes.string.isRequired,\r\n entityType: PropTypes.string.isRequired,\r\n TrackingStatus: PropTypes.string,\r\n }).isRequired,\r\n forwardedRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\r\n};\r\n\r\nTextSpanWithForwardedRef.defaultProps = {\r\n forwardedRef: null,\r\n};\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { Glyphicon, Button } from '@bingads-webui-react/primitive';\r\nimport { withOverflowProp } from '@bingads-webui-react/with-overflow-prop';\r\nimport { QueryParam, withScope } from '@bingads-webui-react/scope-service';\r\nimport { GetNodeClassNames } from '@bingads-webui-campaign-react/main-menu';\r\nimport { TextSpanWithForwardedRef } from './text-span-with-forwarded-ref';\r\n\r\nfunction getNodeText(scope, classes, node, forwardedRef) {\r\n function getNodeUrl() {\r\n const { location, processor, allowedKeys } = scope || {};\r\n const params = new QueryParam(location, null, null, processor, allowedKeys);\r\n params.append({ tagId: node.Id });\r\n return location && location.pathname ? `${location.pathname}?${params.stringify()}` : null;\r\n }\r\n\r\n // disable clicking on links, only allow to open in new tabs/windows\r\n function onClick(e) {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n function getNodeTextImpl() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const nodeUrl = getNodeUrl(node, location);\r\n const nodeText = getNodeTextImpl(classes, node, forwardedRef);\r\n\r\n return nodeUrl\r\n ? ({nodeText})\r\n : nodeText;\r\n}\r\n\r\nconst UetTagsTreeNodeWithTooltip = ({\r\n classes, node, forwardedRef, scope,\r\n}) => {\r\n const nodeClasses = [GetNodeClassNames(node, classes), 'main-menu-tree-node', 'uet-tree-node'];\r\n\r\n const iconContainerClassName = classNames([\r\n classes.iconContainer,\r\n classes.statusIconContainer]);\r\n\r\n const iconStatusClassName = classes.uetTagStatusIcon;\r\n\r\n const uetTagGlyphIcon = ((node.TrackingStatus === 'Unverified' || node.TrackingStatus === 'Inactive') && !node.IsReadOnly) ? 'ba-Warning' : '';\r\n const changeUrl = () => {\r\n scope.append({\r\n tagId: node.Id,\r\n });\r\n scope.save();\r\n };\r\n\r\n return (\r\n \r\n { changeUrl(); }}\r\n btnStyle=\"command\"\r\n className={classNames(nodeClasses)}\r\n key={node.Id}\r\n id={`id-${node.Id}`}\r\n title={node.Name}\r\n >\r\n {getNodeText(scope, classes, node, forwardedRef)}\r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nUetTagsTreeNodeWithTooltip.propTypes = {\r\n classes: PropTypes.shape({\r\n baseMenuItem: PropTypes.string.isRequired,\r\n textContainer: PropTypes.string.isRequired,\r\n iconContainer: PropTypes.string.isRequired,\r\n uetTagStatusIcon: PropTypes.string.isRequired,\r\n hiddenTooltip: PropTypes.string.isRequired,\r\n }).isRequired,\r\n node: PropTypes.shape({\r\n Id: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.number,\r\n ]).isRequired,\r\n Name: PropTypes.string.isRequired,\r\n entityType: PropTypes.string.isRequired,\r\n TrackingStatus: PropTypes.string,\r\n IsReadOnly: PropTypes.bool,\r\n isSelected: PropTypes.bool,\r\n }).isRequired,\r\n forwardedRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n};\r\n\r\nUetTagsTreeNodeWithTooltip.defaultProps = {\r\n forwardedRef: null,\r\n};\r\n\r\nexport default withScope(withOverflowProp(UetTagsTreeNodeWithTooltip));\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { StyledSpinnerWithLabel } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport UetTagsTreeNodeWithTooltip from './uet-tags-tree-node-with-tooltip';\r\n\r\nconst UetTagTreeNode = ({\r\n classes, node,\r\n}) => {\r\n if (node.isPlaceholderNode) {\r\n if (node.isLoadingData) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n const rootPlaceholderNodeTextContainerClassName = classNames([\r\n 'uet-tag-tree-node-place-holder',\r\n classes.textContainer,\r\n classes.placeholderTextContainer,\r\n ]);\r\n\r\n return (\r\n
\r\n \r\n {node.Name}\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nUetTagTreeNode.propTypes = {\r\n classes: PropTypes.shape({\r\n baseMenuItem: PropTypes.string.isRequired,\r\n textContainer: PropTypes.string.isRequired,\r\n placeholderTextContainer: PropTypes.string.isRequired,\r\n iconContainer: PropTypes.string.isRequired,\r\n rootNodeSpinnerContainer: PropTypes.string.isRequired,\r\n hiddenTooltip: PropTypes.string.isRequired,\r\n }).isRequired,\r\n node: PropTypes.shape({\r\n Id: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.number,\r\n ]).isRequired,\r\n Name: PropTypes.string.isRequired,\r\n entityType: PropTypes.string.isRequired,\r\n TrackingStatus: PropTypes.string,\r\n isSelected: PropTypes.bool,\r\n isPlaceholderNode: PropTypes.bool,\r\n isLoadingData: PropTypes.bool,\r\n }).isRequired,\r\n};\r\n\r\nexport function UetTagTreeNodeChildRenderer(classes) {\r\n return node => (\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope, QueryParam } from '@bingads-webui-react/scope-service';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\n// eslint-disable-next-line import/no-unresolved\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { getTags } from './uet-tags-repository';\r\nimport PageMenu from './page-menu';\r\nimport { UetTagTreeNodeChildRenderer } from './uet-tags-tree-node';\r\n\r\nclass UetTagsPageMenuInternal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tags: [],\r\n siteMap: props.siteMap,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { aid, cid: scopeCid } = this.props.scope.values;\r\n const { CurrentAccount } = this.props.serverContext;\r\n const cid = aid ? CurrentAccount.AdvertiserCustomerID : scopeCid;\r\n\r\n getTags(cid, aid).then((response) => {\r\n const Inactive = response.filter(tag => tag.TrackingStatus === 'Inactive' && !tag.IsReadOnly).sort((a, b) => a.Name.localeCompare(b.Name));\r\n const Unverified = response.filter(tag => tag.TrackingStatus === 'Unverified' && !tag.IsReadOnly).sort((a, b) => a.Name.localeCompare(b.Name));\r\n const Active = response.filter(tag => tag.TrackingStatus === 'Active' || tag.IsReadOnly).sort((a, b) => a.Name.localeCompare(b.Name));\r\n const tag = Inactive.concat(Unverified).concat(Active);\r\n this.setState({ tags: tag });\r\n });\r\n }\r\n\r\n getTreeNodesProps() {\r\n const uetTagsInTree =\r\n this.state.tags.map(tag => ({\r\n ...tag,\r\n iconHidden: true,\r\n isSelected: this.props.scope.values.tagId === tag.Id,\r\n hideFallback: () => this.setState({}),\r\n }));\r\n\r\n return {\r\n uetTagsInTree,\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n uetTagsInTree,\r\n } = this.getTreeNodesProps();\r\n\r\n const updateUrl = () => {\r\n this.props.scope.remove('tagId');\r\n this.props.scope.save();\r\n\r\n const queryParam = new QueryParam(this.props.scope.history.location, this.props.scope.history);\r\n this.props.scope.history.push({\r\n pathname: getRoutePathById(this.state.siteMap, 'uet-tag'),\r\n search: queryParam.stringify(),\r\n });\r\n };\r\n\r\n return (\r\n
\r\n { updateUrl(); }}\r\n style={{\r\n width: 164,\r\n textAlign: 'left',\r\n backgroundColor: '#fff',\r\n borderTop: 0,\r\n borderLeft: 0,\r\n borderBottom: 0,\r\n borderRight: 'solid 1px #e1dfdd',\r\n fontWeight: 'normal',\r\n outline: 'none',\r\n }}\r\n >{this.props.i18n.getString(_TL_('All tags'))}\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nUetTagsPageMenuInternal.propTypes = {\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n AdvertiserCustomerID: PropTypes.number,\r\n }).isRequired,\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n dynamic: PropTypes.shape({\r\n UETDashboard: PropTypes.bool.isRequired,\r\n }),\r\n }).isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.isRequired,\r\n};\r\n\r\nUetTagsPageMenuInternal.defaultProps = {\r\n serverContext: {},\r\n};\r\n\r\nexport const UetTagsPageMenu = withServerContext(withI18nConsumer(withScope(UetTagsPageMenuInternal)));\r\n","import { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { mockedTags } from './mock-data';\r\n\r\nexport const getTags = (cid, aid) => {\r\n if (cid && aid) {\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Accounts.$withKey(aid)\r\n .Tags\r\n .get({\r\n top: 200,\r\n select: ['Id', 'Name', 'TrackingStatus', 'IsReadOnly'],\r\n }).toPromise().then((tagResponse) => {\r\n if (tagResponse && tagResponse.value) {\r\n if (tagResponse.value.length > 0) {\r\n return tagResponse.value;\r\n }\r\n return [];\r\n }\r\n\r\n return [];\r\n });\r\n } else if (cid) {\r\n return edmCampaign\r\n .Customers.$withKey(cid)\r\n .Tags\r\n .get({\r\n top: 200,\r\n select: ['Id', 'Name', 'TrackingStatus', 'IsReadOnly'],\r\n }).toPromise().then((tagResponse) => {\r\n if (tagResponse && tagResponse.value) {\r\n if (tagResponse.value.length > 0) {\r\n return tagResponse.value;\r\n }\r\n return [];\r\n }\r\n\r\n return [];\r\n });\r\n }\r\n return new Promise((resolve) => {\r\n resolve(mockedTags.value);\r\n });\r\n};\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { CustomColumnFormPanel } from '@bingads-webui-campaign-react/custom-column-form-panel';\r\n\r\nexport class CustomColumnBackboneWrapper extends Backbone.View {\r\n constructor(options) {\r\n super(options);\r\n this.props = _.defaults({\r\n onSave: (customColumn) => {\r\n if (_.result(options, 'props', {}).onSave) {\r\n options.props.onSave(customColumn);\r\n }\r\n this.remove();\r\n },\r\n onCancel: () => {\r\n if (_.result(options, 'props', {}).onCancel) {\r\n options.props.onCancel();\r\n }\r\n this.remove();\r\n },\r\n }, options.props);\r\n }\r\n\r\n render() {\r\n document.body.appendChild(this.el);\r\n ReactDOM.render(\r\n React.createElement(\r\n CustomColumnFormPanel,\r\n this.props\r\n ),\r\n this.el\r\n );\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","\r\nclass Store {\r\n constructor() {\r\n this.store = {};\r\n }\r\n\r\n set(key, dataSource) {\r\n this.store[key] = dataSource;\r\n }\r\n\r\n get(key) {\r\n return this.store[key];\r\n }\r\n}\r\n\r\nconst DataSourceStore = new Store();\r\n\r\nexport { DataSourceStore };\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\n\r\nexport class PopupCallout extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n if (props.view) {\r\n props.view.on('closeDeliveryStatusPopup', this.close);\r\n }\r\n }\r\n\r\n close = () => {\r\n if (this.props.view) {\r\n this.props.view.off('closeDeliveryStatusPopup');\r\n }\r\n this.props.close();\r\n };\r\n\r\n render() {\r\n const { target } = this.props;\r\n const { right } = target.getBoundingClientRect();\r\n const calloutMaxWidth = 325; // this value is defined in global style\r\n const placement = right + calloutMaxWidth > window.innerWidth ? 'left' : 'right';\r\n const activeElement = document && document.activeElement;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nPopupCallout.propTypes = {\r\n /**\r\n * the content element or text of the callout\r\n */\r\n content: PropTypes.oneOfType([\r\n PropTypes.element.isRequired,\r\n PropTypes.string.isRequired,\r\n ]).isRequired,\r\n /**\r\n * target of the callout, DOM element\r\n */\r\n target: PropTypes.instanceOf(Element).isRequired,\r\n /**\r\n * function called to remove callout\r\n */\r\n close: PropTypes.func.isRequired,\r\n /**\r\n * callout id\r\n */\r\n popoverId: PropTypes.string.isRequired,\r\n /**\r\n * view that has event triggered to close the popup\r\n */\r\n view: PropTypes.shape({\r\n on: PropTypes.func.isRequired,\r\n off: PropTypes.func.isRequired,\r\n }),\r\n};\r\n\r\nPopupCallout.defaultProps = {\r\n view: null,\r\n};\r\n","export const ENTITY = {\r\n AD: 'Ad',\r\n KEYWORD: 'Keyword',\r\n CUSTOMIZERFEED: 'CustomizerFeed',\r\n EXTENSION: 'Extension',\r\n ASSETGROUP: 'AssetGroup',\r\n ASSET: 'Asset',\r\n};\r\n\r\nexport const CategoryFAID = {\r\n 2: 'Adult_General',\r\n 3: 'Alcohol_General',\r\n 29: 'Pharmacy_General',\r\n 99: 'Adult_Porn_Adult_Entertainment',\r\n 100: 'Adult_Illegal_Adult_Content',\r\n 119: 'Political_Politicians',\r\n 180: 'Disallowed_Content_Abortion',\r\n 221: 'Mature_Content',\r\n 222: 'Mature_Content',\r\n 224: 'Mature_Content',\r\n 225: 'Mature_Content',\r\n 226: 'Mature_Content',\r\n 227: 'Mature_Content',\r\n 228: 'Mature_Content',\r\n 262: 'Cryptocurrency',\r\n 263: 'Cryptocurrency',\r\n 264: 'Cryptocurrency',\r\n 265: 'Cryptocurrency',\r\n 266: 'Cryptocurrency',\r\n 281: 'Birth_Control',\r\n 282: 'Dating',\r\n 283: 'Fertility_Treatment',\r\n 292: 'Background_Checks',\r\n 299: 'Payday_Loans',\r\n 308: 'Penny_Stocks',\r\n 311: 'Psychics',\r\n 315: 'Tobacco_Image',\r\n 316: 'Alcohol_Image',\r\n 317: 'Unsubstantiated_Claim_Image',\r\n 334: 'Tobacco_Category',\r\n 335: 'Lingerie_Explicit',\r\n 280: 'Sensitive_Health',\r\n 340: 'Sensitive_Health',\r\n 223: 'Sensitive_Health',\r\n 341: 'Misinformation',\r\n 342: 'Drug_Paraphanelia_Category',\r\n 364: 'Sexual_Health_And_Erotica',\r\n 365: 'Skin_Exposure',\r\n 521: 'Ad_Functionality',\r\n 522: 'Unbranded_Creative',\r\n 523: 'End_Of_Life_Services',\r\n 524: 'Tattoo_And_Piercings',\r\n 525: 'Weapon_Accessories_And_Concealed_Permits',\r\n 533: 'Spam',\r\n};\r\n\r\nexport const CategoryFALink = {\r\n Adult_General: 'https://go.microsoft.com/fwlink/?linkid=2207051',\r\n Alcohol_General: 'https://about.ads.microsoft.com/en-us/policies/restricted-categories/alcohol',\r\n Pharmacy_General: 'https://go.microsoft.com/fwlink/?linkid=2194266',\r\n Adult_Porn_Adult_Entertainment: 'https://go.microsoft.com/fwlink/?linkid=2207051',\r\n Adult_Illegal_Adult_Content: 'https://go.microsoft.com/fwlink/?linkid=2207051',\r\n Political_Politicians: 'http://advertise.bingads.microsoft.com/en-us/disallowed-content-policies',\r\n Disallowed_Content_Abortion: 'https://go.microsoft.com/fwlink/?linkid=2194368',\r\n Mature_Content: 'https://go.microsoft.com/fwlink/?linkid=2207051',\r\n Cryptocurrency: 'https://go.microsoft.com/fwlink/?linkid=2194432',\r\n Birth_Control: 'https://advertise.bingads.microsoft.com/en-us/resources/policies/microsoft-audience-ads',\r\n Dating: 'https://advertise.bingads.microsoft.com/en-us/resources/policies',\r\n Fertility_Treatment: 'https://advertise.bingads.microsoft.com/en-us/resources/policies',\r\n Background_Checks: 'https://go.microsoft.com/fwlink/?linkid=2206943',\r\n Payday_Loans: 'https://advertise.bingads.microsoft.com/en-us/resources/policies',\r\n Penny_Stocks: 'https://advertise.bingads.microsoft.com/en-us/resources/policies/microsoft-audience-ads',\r\n Psychics: 'https://go.microsoft.com/fwlink/?linkid=2194268',\r\n Tobacco_Image: 'https://about.ads.microsoft.com/en-us/policies/disallowed-content/tobacco-products',\r\n Alcohol_Image: 'https://about.ads.microsoft.com/en-us/policies/restricted-categories/alcohol',\r\n Unsubstantiated_Claim_Image: 'https://advertise.bingads.microsoft.com/en-us/resources/policies',\r\n Tobacco_Category: 'https://about.ads.microsoft.com/en-us/policies/disallowed-content/tobacco-products',\r\n Lingerie_Explicit: 'https://advertise.bingads.microsoft.com/en-us/resources/policies',\r\n Sensitive_Health: 'https://advertise.bingads.microsoft.com/en-us/resources/policies/microsoft-audience-ads',\r\n Misinformation: 'https://go.microsoft.com/fwlink/?linkid=2205489',\r\n Drug_Paraphanelia_Category: 'https://about.ads.microsoft.com/en-us/policies/disallowed-content/drugs-and-related-paraphernalia',\r\n Sexual_Health_And_Erotica: 'http://advertise.bingads.microsoft.com/en-us/adult-content-policies',\r\n Skin_Exposure: 'https://go.microsoft.com/fwlink/?linkid=2207051',\r\n Ad_Functionality: 'https://go.microsoft.com/fwlink/?linkid=2207237',\r\n Unbranded_Creative: 'https://about.ads.microsoft.com/en-us/policies/general-ad-requirements',\r\n End_Of_Life_Services: 'https://go.microsoft.com/fwlink/?linkid=2194519',\r\n Tattoo_And_Piercings: 'https://go.microsoft.com/fwlink/?linkid=2206948',\r\n Weapon_Accessories_And_Concealed_Permits: 'https://go.microsoft.com/fwlink/?linkid=2194366',\r\n Spam: 'https://help.ads.microsoft.com/#apex/ads/en/60215/0-500',\r\n};\r\n\r\nexport const ENTITYToI18 = {\r\n Ad: 'EditorialAppeal_Entity_Ad',\r\n Keyword: 'EditorialAppeal_Entity_Keyword',\r\n AssetGroup: 'EditorialAppeal_Entity_Assetgroup',\r\n Extension: 'EditorialAppeal_Entity_Extension',\r\n Asset: 'EditorialAppeal_Entity_Asset',\r\n};\r\nexport const ENTITYPluralToI18 = {\r\n Ad: 'EditorialAppeal_Entity_Ad_Plural',\r\n Keyword: 'EditorialAppeal_Entity_Keyword_Plural',\r\n AssetGroup: 'EditorialAppeal_Entity_Assetgroup_Plural',\r\n Extension: 'EditorialAppeal_Entity_Extension_Plural',\r\n Asset: 'EditorialAppeal_Entity_Asset_Plural',\r\n};\r\n\r\nexport const BLACKLIST = [\r\n 'Incomplete',\r\n 'GeoCodingIncomplete',\r\n 'InlineOpportunity',\r\n];\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { contents } from '@bingads-webui/popover';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { keyVault } from '@bingads-webui-react/popup-manager';\r\nimport { PopupCallout } from './popup-callout';\r\nimport reasonTemplate from './reason-template.pug';\r\nimport noReasonFoundTemplate from './no-reason-found-template.pug';\r\nimport bidlandscapeDisalbedTemplate from './reason-disabled-template.pug';\r\nimport template from './template.pug';\r\nimport experimentTemplate from './experiment-info.pug';\r\nimport editorialCategoryTemplate from './editorial-category-template.pug';\r\nimport { CategoryFAID, BLACKLIST, CategoryFALink } from './constants';\r\n\r\nfunction getDateUtils({ i18n }) {\r\n return {\r\n reformatDate: (datetime) => {\r\n const date = datetime && datetime.substr(0, 10).replace(/-/g, '/');\r\n if (!date) {\r\n return i18n.getString('None');\r\n }\r\n return i18n.formatDate(new Date(datetime), { timeZone: null });\r\n },\r\n };\r\n}\r\n\r\nexport function mapCampaignSpecificDeliveryStatus(\r\n deliveryStatusUpdated,\r\n isSmartShoppingCampaignEnabled,\r\n entity\r\n) {\r\n let result = deliveryStatusUpdated;\r\n // special handling logic for smart shopping campaign and performance max campaign\r\n // as the only bidding strategy option is max conversion value\r\n // the second bullet-point of the rejection detail text is not needed\r\n if ((deliveryStatusUpdated === 'AutoBiddingLimitedByNotEnoughRevenue' ||\r\n deliveryStatusUpdated === 'AutoBiddingLimitedByNotEnoughConversions' ||\r\n deliveryStatusUpdated === 'NoEligibleAdGroups') &&\r\n (entity.CampaignType === 'PerformanceMax' ||\r\n (isSmartShoppingCampaignEnabled && entity.CampaignSubType === 'ShoppingSmartAds'))) {\r\n result = `${deliveryStatusUpdated}_For_SSC`;\r\n } else if (deliveryStatusUpdated === 'UrlInvalid' && entity.CampaignType === 'PerformanceMax') {\r\n result = `${deliveryStatusUpdated}_For_PMax`;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function mapDeliveryStatusForMMC(deliveryStatusUpdated) {\r\n let result = deliveryStatusUpdated;\r\n // special handling logic for merchant center related delivery status\r\n // use go to merchant center link\r\n if (deliveryStatusUpdated === 'ShoppingCampaignNoOffersPresent') {\r\n result = `${deliveryStatusUpdated}_With_Link`;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function shouldRepairGoogleImportVideoAd(item) {\r\n return item.Campaign\r\n && item.Campaign.CampaignSubType === 'BrandAwarenessVideoAds'\r\n && item.Campaign.CampaignType === 'Audience'\r\n && item.Campaign.DisplayBiddingStrategyType === 'ManualCpm'\r\n && _.isArray(item.Videos)\r\n && item.Videos.length === 1 // Brand Awareness video ad can only have one video\r\n && _.any(item.Videos, asset => asset.Asset && asset.Asset.SourceType === 'GoogleImported' && asset.Asset.Status === 'Failed');\r\n}\r\n\r\nexport function getViolationsFromCategoryFAIDMapping(editorialCategories) {\r\n if (editorialCategories && editorialCategories.length > 0) {\r\n return _.chain(editorialCategories).map(editorialCategorie => editorialCategorie.Categories)\r\n .flatten()\r\n .unique()\r\n .map(id => CategoryFAID[id])\r\n .filter(Boolean)\r\n .unique()\r\n .map(categoryName => (CategoryFALink[categoryName] &&\r\n { name: categoryName, link: CategoryFALink[categoryName] }))\r\n .value()\r\n .filter(Boolean);\r\n }\r\n return [];\r\n}\r\n\r\nexport function showRejectionReasons({\r\n deliveryStatusDetails = [],\r\n actionLinks = [],\r\n entity,\r\n event,\r\n i18n,\r\n useCustomTemplate = () => false,\r\n isContextualAttributeForRecommendation = false,\r\n isInlineDiagnosisForKeyword = false,\r\n getInlineDiagnosisForKeywordComponent,\r\n isSmartShoppingCampaignEnabled,\r\n getCustomTemplate,\r\n percentSymbol,\r\n containerSelector = '#rejectionContainer',\r\n popoverId = 'delivery-status-popup-callout',\r\n afterRender = () => { },\r\n view,\r\n config,\r\n instrumentation,\r\n inContextRepairRecommedationType,\r\n isForAdsPageOnly = false,\r\n isEditorialCategoryEnabled = false,\r\n}) {\r\n if ($(containerSelector).length === 0) {\r\n $(document.body).append(template({}));\r\n }\r\n\r\n const tableId = `rejection_reason_table_${_.uniqueId()}`;\r\n const popupContentKey = _.uniqueId(`${keyVault.hoveringPopup}-`);\r\n\r\n // add paged content for EditorialCategory violations\r\n const violations = getViolationsFromCategoryFAIDMapping(entity ? entity.EditorialCategories : undefined);\r\n\r\n const detailsToShow = _.difference(deliveryStatusDetails, BLACKLIST);\r\n\r\n const reasonCountToShow = Math.min(detailsToShow.length, 3);\r\n\r\n let promises = [];\r\n\r\n const activities = {};\r\n if (instrumentation) {\r\n activities.clickActivity =\r\n instrumentation.inContextRepairRecommendation.create().clickDeliveryStatus.create();\r\n activities.hoverActivity =\r\n instrumentation.inContextRepairRecommendation.create().hoverDeliveryStatus.create();\r\n activities.hoverPopupCalloutDurationActivity =\r\n instrumentation.popupManagement.create().hoverPopupCalloutDuration.create();\r\n }\r\n\r\n // get paged content for rejection reason\r\n if (event.bidlandscapeDisabled) {\r\n const { DeliveryStatus } = entity;\r\n promises.push(bidlandscapeDisalbedTemplate({\r\n deliveryStatus: DeliveryStatus,\r\n i18n,\r\n }));\r\n } else if (isForAdsPageOnly && isEditorialCategoryEnabled && violations.length > 0 && (_.contains(deliveryStatusDetails, 'Eligible') || _.contains(deliveryStatusDetails, 'Approved'))) {\r\n // for ads grid and Eligible status, only show this data\r\n promises = [editorialCategoryTemplate({\r\n violations,\r\n i18n,\r\n })];\r\n } else if (reasonCountToShow > 0) {\r\n if (isInlineDiagnosisForKeyword) {\r\n const inActiveReasons = _.result(config.get('CurrentAccount'), 'InactiveReasons') || [];\r\n const allowedList = [\r\n 'Eligible',\r\n ];\r\n promises.push(getInlineDiagnosisForKeywordComponent());\r\n if (\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n (inActiveReasons.length !== 0 && _.contains(allowedList, entity.DeliveryStatus)) ||\r\n (inActiveReasons.length === 0)\r\n ) {\r\n detailsToShow.shift();\r\n }\r\n }\r\n\r\n _.map(detailsToShow, (deliveryStatus, index) => {\r\n if (entity && entity.ExperimentId && entity.AssociatedExperiment) {\r\n promises.push(experimentTemplate({\r\n ...entity,\r\n deliveryStatus,\r\n i18n,\r\n percentSymbol,\r\n expDateUtils: getDateUtils({ i18n }),\r\n ...({ actionLink: actionLinks[deliveryStatus] }),\r\n }));\r\n } else if (useCustomTemplate(deliveryStatus)) {\r\n promises.push(getCustomTemplate(deliveryStatus, index));\r\n } else {\r\n let deliveryStatusUpdated = deliveryStatus;\r\n\r\n // special handling logic for smart shopping campaign\r\n // as the only bidding strategy option is max conversion value\r\n // the second bullet-point of the rejection detail text is not needed\r\n deliveryStatusUpdated = mapCampaignSpecificDeliveryStatus(\r\n deliveryStatusUpdated,\r\n isSmartShoppingCampaignEnabled,\r\n entity\r\n );\r\n\r\n // special handling logic for merchant center related delivery status\r\n deliveryStatusUpdated = mapDeliveryStatusForMMC(deliveryStatusUpdated);\r\n\r\n promises.push(reasonTemplate({\r\n deliveryStatus: deliveryStatusUpdated,\r\n reasonid: `${tableId}_${index}`,\r\n ...({ actionLink: actionLinks[deliveryStatus] }),\r\n i18n,\r\n }));\r\n }\r\n });\r\n } else if (isContextualAttributeForRecommendation) {\r\n promises.push(getCustomTemplate());\r\n } else {\r\n promises.push(noReasonFoundTemplate({ i18n }));\r\n }\r\n\r\n // for ads grid Non-Eligible status, append the editorial category page at last\r\n if (isForAdsPageOnly && isEditorialCategoryEnabled && violations.length > 0 && !_.contains(deliveryStatusDetails, 'Eligible') && !_.contains(deliveryStatusDetails, 'Approved')) {\r\n promises.push(editorialCategoryTemplate({\r\n violations,\r\n i18n,\r\n }));\r\n }\r\n\r\n\r\n function getLogForInContextRepairRecommedation(deliveryStatus) {\r\n let mes = {};\r\n if (inContextRepairRecommedationType === 'ad') {\r\n const adId = entity ? entity.Id : undefined;\r\n const adGroupId = entity && entity.AdGroup ? entity.AdGroup.Id : undefined;\r\n const campaignId = entity && entity.Campaign ? entity.Campaign.Id : undefined;\r\n mes = {\r\n CampaignId: campaignId,\r\n AdGroupId: adGroupId,\r\n AdId: adId,\r\n DeliveryStatusType: deliveryStatus,\r\n };\r\n } else if (inContextRepairRecommedationType === 'adGroup') {\r\n const adGroupId = entity ? entity.Id : undefined;\r\n const campaignId = entity && entity.Campaign ? entity.Campaign.Id : undefined;\r\n mes = {\r\n CampaignId: campaignId,\r\n AdGroupId: adGroupId,\r\n DeliveryStatusType: deliveryStatus,\r\n };\r\n } else if (inContextRepairRecommedationType === 'campaign') {\r\n const campaignId = entity ? entity.Id : undefined;\r\n mes = { CampaignId: campaignId, DeliveryStatusType: deliveryStatus };\r\n }\r\n\r\n return mes;\r\n }\r\n\r\n function getContentView(pages, page, container) {\r\n const contentView = new contents.PagedContent({\r\n pages,\r\n i18n,\r\n handlePaginationExternally: true,\r\n }).setPages(page);\r\n container.show();\r\n\r\n return contentView;\r\n }\r\n\r\n function hoverPopupDurationStart() {\r\n if (window.popupManager) {\r\n // force acquire lock for user-initiated popup\r\n window.popupManager.forceAcquireLock(popupContentKey);\r\n }\r\n if (activities.hoverPopupCalloutDurationActivity) {\r\n activities.hoverPopupCalloutDurationActivity.startSignal('onHover');\r\n }\r\n }\r\n\r\n function hoverPopupDurationStop() {\r\n if (window.popupManager) {\r\n // release lock for user-initiated popup\r\n window.popupManager.releaseLock(popupContentKey);\r\n }\r\n if (activities.hoverPopupCalloutDurationActivity) {\r\n activities.hoverPopupCalloutDurationActivity.stopSignal('onHoverEnd');\r\n }\r\n }\r\n\r\n function renderPages(pages, page, container) {\r\n const contentView = getContentView(pages, page, container);\r\n\r\n contentView.once('rendered', () => {\r\n const contentViewReactWrapper = ;\r\n const containerDOM = document.querySelector(containerSelector);\r\n\r\n if (containerDOM) {\r\n ReactDOM.render(\r\n {\r\n ReactDOM.unmountComponentAtNode(containerDOM);\r\n hoverPopupDurationStop();\r\n }}\r\n view={view}\r\n popoverId={popoverId}\r\n />,\r\n containerDOM,\r\n hoverPopupDurationStart\r\n );\r\n afterRender(contentView, event);\r\n }\r\n });\r\n contentView.once('willPageUpdate', (newPage) => {\r\n view.trigger('closeDeliveryStatusPopup');\r\n renderPages(pages, newPage, container);\r\n });\r\n\r\n contentView.$el.one('contentUpdated', (e, newPageContent) => {\r\n const newPages = [...pages];\r\n newPages[contentView.currentPage - 1] = newPageContent;\r\n renderPages(newPages, contentView.currentPage, container);\r\n });\r\n\r\n // Below code is used to log for measurement\r\n // Log as click event when user click on the delivery status link\r\n contentView.$el.on('click', 'a', (eventObject) => {\r\n if (activities.clickActivity) {\r\n const deliveryStatus = $(eventObject.target).parent().data('delivery-status');\r\n if (deliveryStatus) {\r\n const mes = getLogForInContextRepairRecommedation(deliveryStatus);\r\n activities.clickActivity.trace(JSON.stringify(mes));\r\n }\r\n }\r\n });\r\n\r\n // Below code is used to log for measurement\r\n // Log as hover event when user hover no rejection popup and turn to specific page\r\n // contains delivery status link\r\n const currentConent = pages[page - 1];\r\n\r\n if (activities.hoverActivity) {\r\n const deliveryStatus = _.find(\r\n ['NoEligibleAdGroups', 'NoEligibleAds', 'NoEligibleKeywords', 'ShoppingCampaignNoOffersPresent_With_Link'],\r\n status => currentConent.includes(status)\r\n );\r\n if (deliveryStatus) {\r\n const mes = getLogForInContextRepairRecommedation(deliveryStatus);\r\n activities.hoverActivity.trace(JSON.stringify(mes));\r\n }\r\n }\r\n\r\n return contentView;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n Promise.all(promises).then((pages) => {\r\n const container = $(containerSelector);\r\n const contentView = renderPages(pages, 1, container);\r\n\r\n resolve(contentView);\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { showRejectionReasons } from './rejection/show-rejection-reasons';\r\n\r\n/**\r\n * Manages creation of delivery status column popups\r\n * This popup is based on the projection grid\r\n */\r\nexport class DeliveryStatusPopupFactory {\r\n /**\r\n * Constructs the factory, associating with a grid and rejection view handler\r\n * @param {Object} grid - The grid to which this factory will be associated\r\n * @param {Object} i18n - Localization function\r\n */\r\n constructor({\r\n grid,\r\n i18n,\r\n }) {\r\n this.grid = grid;\r\n this.i18n = i18n;\r\n }\r\n\r\n /**\r\n * Creates entity object from event target using the grid associated with the factory.\r\n *\r\n * @param {Object} event - The click event from where the quality score cell was clicked.\r\n * @returns {Object} entity - The entity object for the clicked row\r\n * it should contains at least { Name, DeliveryStatusDetails, Id } as property.\r\n */\r\n getEventTargetEntity(event) {\r\n const model = this.getEventTargetModel(event);\r\n\r\n return model;\r\n }\r\n\r\n /**\r\n * Gets model object from event target using the grid associated with the factory.\r\n *\r\n * @param {Object} event - The click event from where the quality score cell was clicked.\r\n * @returns {Object} entity - The entity object for the clicked row\r\n * it should contains at least { Name, DeliveryStatusDetails, Id } as property.\r\n */\r\n getEventTargetModel(event) {\r\n const key = this.grid.gridView.keyOfElement(event.target);\r\n\r\n return this.grid.gridView.itemWithKey(key);\r\n }\r\n\r\n /**\r\n * show campaign reject reasons\r\n *\r\n * @param {Object} event - The click event from where the quality score cell was clicked.\r\n * @param {Function} [getCustomeTemplate] - Method that returns whether to use custome template\r\n * @param {Function} [useCustomTemplate] - Methot that returns custom reason templates\r\n * @param {String} [containerSelector] - popup container selector\r\n * @param {String} [popoverId] - popup id\r\n * @param {Object} [view] - view that has event triggered to close the popup\r\n * @returns {undefined}.\r\n */\r\n showRejectionPopup({\r\n event,\r\n useCustomTemplate,\r\n getCustomTemplate,\r\n actionLinks,\r\n containerSelector,\r\n isContextualAttributeForRecommendation,\r\n isInlineDiagnosisForKeyword,\r\n IsExperimentsOpenBetaEnabled,\r\n isSmartShoppingCampaignEnabled,\r\n percentSymbol,\r\n getInlineDiagnosisForKeywordComponent,\r\n popoverId,\r\n view,\r\n afterRender,\r\n config,\r\n instrumentation,\r\n inContextRepairRecommedationType,\r\n isEditorialCategoryEnabled,\r\n }) {\r\n const entity = this.getEventTargetEntity(event);\r\n\r\n if (entity === null && !isContextualAttributeForRecommendation) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (IsExperimentsOpenBetaEnabled && entity.ExperimentId && entity.AssociatedExperiment) {\r\n entity.statusForCombinedPopup = [\r\n 'CampaignUserPaused',\r\n 'InvalidFinancialStatusOther',\r\n 'CampaignSuspended',\r\n 'AutoBiddingLimitedByNotEnoughConversions',\r\n ];\r\n\r\n if (_.contains(['Promoted', 'Graduated', 'Ended'], entity.AssociatedExperiment.Status)) {\r\n // Show experiment info only\r\n entity.DeliveryStatusDetails = ['ExperimentInfo'];\r\n } else if (!_.contains(entity.statusForCombinedPopup, entity.DeliveryStatus)) {\r\n // Show original info and experiment info in different pages\r\n entity.DeliveryStatusDetails = _.union(entity.DeliveryStatusDetails, ['ExperimentInfo']);\r\n }\r\n // Otherwise show original info combined with experiment info within the same page\r\n }\r\n\r\n return showRejectionReasons({\r\n event,\r\n entity,\r\n getCustomTemplate,\r\n useCustomTemplate,\r\n deliveryStatusDetails: entity && entity.DeliveryStatusDetails,\r\n actionLinks,\r\n i18n: this.i18n,\r\n getInlineDiagnosisForKeywordComponent,\r\n isInlineDiagnosisForKeyword,\r\n isContextualAttributeForRecommendation,\r\n isSmartShoppingCampaignEnabled,\r\n containerSelector,\r\n percentSymbol,\r\n popoverId,\r\n view,\r\n afterRender,\r\n config,\r\n instrumentation,\r\n inContextRepairRecommedationType,\r\n isForAdsPageOnly: this.grid.config && this.grid.config.name === 'summary_tab_ad',\r\n isEditorialCategoryEnabled,\r\n });\r\n }\r\n}\r\n\r\n","/* eslint-disable no-bitwise */\r\nexport const EditorialComponent =\r\n {\r\n None: 0,\r\n Keyword: 1,\r\n KeywordParam1: 2,\r\n KeywordParam2: 4,\r\n KeywordParam3: 8,\r\n AdTitleDescription: 256,\r\n AdTitle: 512,\r\n AdDescription: 1024,\r\n DisplayUrl: 2048,\r\n DestinationUrl: 4096,\r\n LandingURL: 8192,\r\n SiteDomain: 16384,\r\n BusinessName: 32768,\r\n PhoneNumber: 65536,\r\n AltText: 262144,\r\n Audio: 524288,\r\n Video: 1048576,\r\n Flash: 2097152,\r\n CAsset: 4194304,\r\n Image: 8388608,\r\n Destination: 16777216,\r\n Asset: 33554432,\r\n Ad: 67108864,\r\n Order: 134217728,\r\n OrderItem: 268435456,\r\n Association: 536870912,\r\n Script: 1073741824,\r\n };\r\n\r\nexport function getLocationString({ location, commonI18n }) {\r\n const locations = [];\r\n if ((location & EditorialComponent.AdTitle) === EditorialComponent.AdTitle) {\r\n locations.push(commonI18n.getString('EdReason_AdTitle'));\r\n }\r\n\r\n if ((location & EditorialComponent.AdTitleDescription)\r\n === EditorialComponent.AdTitleDescription) {\r\n locations.push(commonI18n.getString('EdReason_AdTitleDesc'));\r\n }\r\n\r\n if ((location & EditorialComponent.AdDescription) === EditorialComponent.AdDescription) {\r\n locations.push(commonI18n.getString('EdReason_AdDesc'));\r\n }\r\n\r\n if ((location & EditorialComponent.DisplayUrl) === EditorialComponent.DisplayUrl) {\r\n locations.push(commonI18n.getString('EdReason_DisplayUrl'));\r\n }\r\n\r\n if ((location & EditorialComponent.DestinationUrl) === EditorialComponent.DestinationUrl) {\r\n locations.push(commonI18n.getString('EdReason_AdDestUrl'));\r\n }\r\n\r\n if ((location & EditorialComponent.BusinessName) === EditorialComponent.BusinessName) {\r\n locations.push(commonI18n.getString('EdReason_BusinessName'));\r\n }\r\n\r\n if ((location & EditorialComponent.PhoneNumber) === EditorialComponent.PhoneNumber) {\r\n locations.push(commonI18n.getString('EdReason_PhoneNumber'));\r\n }\r\n\r\n if ((location & EditorialComponent.Keyword) === EditorialComponent.Keyword) {\r\n locations.push(commonI18n.getString('EdReason_Keyword'));\r\n }\r\n\r\n if ((location & EditorialComponent.KeywordParam1) === EditorialComponent.KeywordParam1) {\r\n locations.push(commonI18n.getString('EdReason_Param1'));\r\n }\r\n\r\n if ((location & EditorialComponent.KeywordParam2) === EditorialComponent.KeywordParam2) {\r\n locations.push(commonI18n.getString('EdReason_Param2'));\r\n }\r\n\r\n if ((location & EditorialComponent.KeywordParam3) === EditorialComponent.KeywordParam3) {\r\n locations.push(commonI18n.getString('EdReason_Param3'));\r\n }\r\n\r\n if ((location & EditorialComponent.LandingURL) === EditorialComponent.LandingURL) {\r\n locations.push(commonI18n.getString('EdReason_LandingUrl'));\r\n }\r\n\r\n if ((location & EditorialComponent.SiteDomain) === EditorialComponent.SiteDomain) {\r\n locations.push(commonI18n.getString('EdReason_SiteDomain'));\r\n }\r\n\r\n if ((location & EditorialComponent.Image) === EditorialComponent.Image) {\r\n locations.push(commonI18n.getString('EdReason_Image'));\r\n }\r\n\r\n if ((location & EditorialComponent.AltText) === EditorialComponent.AltText) {\r\n locations.push(commonI18n.getString('EdReason_AltText'));\r\n }\r\n\r\n if ((location & EditorialComponent.Flash) === EditorialComponent.Flash) {\r\n locations.push(commonI18n.getString('EdReason_Flash'));\r\n }\r\n\r\n if ((location & EditorialComponent.Audio) === EditorialComponent.Audio) {\r\n locations.push(commonI18n.getString('EdReason_Audio'));\r\n }\r\n\r\n if ((location & EditorialComponent.Video) === EditorialComponent.Video) {\r\n locations.push(commonI18n.getString('EdReason_Video'));\r\n }\r\n\r\n if ((location & EditorialComponent.CAsset) === EditorialComponent.CAsset) {\r\n locations.push(commonI18n.getString('EdReason_CAsset'));\r\n }\r\n\r\n if ((location & EditorialComponent.Asset) === EditorialComponent.Asset) {\r\n locations.push(commonI18n.getString('EdReason_Asset'));\r\n }\r\n\r\n if ((location & EditorialComponent.Ad) === EditorialComponent.Ad) {\r\n locations.push(commonI18n.getString('EdReason_Ad'));\r\n }\r\n\r\n if ((location & EditorialComponent.Order) === EditorialComponent.Order) {\r\n locations.push(commonI18n.getString('EdReason_Order'));\r\n }\r\n\r\n if ((location & EditorialComponent.OrderItem) === EditorialComponent.OrderItem) {\r\n locations.push(commonI18n.getString('EdReason_OrderItem'));\r\n }\r\n\r\n if ((location & EditorialComponent.Destination) === EditorialComponent.Destination) {\r\n locations.push(commonI18n.getString('EdReason_AdDestUrl'));\r\n }\r\n\r\n if ((location & EditorialComponent.Association) === EditorialComponent.Association) {\r\n locations.push(commonI18n.getString('EdReason_Association'));\r\n }\r\n\r\n if ((location & EditorialComponent.Script) === EditorialComponent.Script) {\r\n locations.push(commonI18n.getString('EdReason_Script'));\r\n }\r\n\r\n // javascript has overflowing issue for big numbers such as Math.pow(2, 60)\r\n // use comparation instead\r\n // eslint-disable-next-line no-restricted-properties\r\n if (location && location > Math.pow(2, 59) && location <= Math.pow(2, 60)) {\r\n locations.push(commonI18n.getString('EdReason_DataFeedItem'));\r\n }\r\n\r\n return locations.join(', ');\r\n}\r\n","/* eslint-disable no-bitwise */\r\nimport _ from 'underscore';\r\nimport { isXandrServing, isLinkedInCampaign } from '@bingads-webui-campaign-react/constants';\r\n\r\nimport { getEditorialErrorMessage } from '@bingads-webui-campaign/api-errors';\r\nimport { getLocationString } from './location-Enum-To-String-Mapping';\r\nimport editorialTemplate from './editorial-reason.pug';\r\nimport { ENTITY, ENTITYToI18, ENTITYPluralToI18 } from './constants';\r\n\r\nfunction getRejectionFooterText(i18n, entity, isAppealable, isDisclaimerDisapproved, hideParentLevel) {\r\n const thisEntity = i18n.getString('EditorialAppeal_ThisEntity')\r\n .replace('{0}', i18n.getString(ENTITYToI18[entity]));\r\n const allEntitiesInThisAdGroup = i18n.getString('EditorialAppeal_AllEntitiesInThisAdGroup')\r\n .replace('{0}', i18n.getString(ENTITYPluralToI18[entity]));\r\n const allEntitiesInThisCampaign = i18n.getString('EditorialAppeal_AllEntitiesInThisCampaign')\r\n .replace('{0}', i18n.getString(ENTITYPluralToI18[entity]));\r\n const allEntitiesInThisAd = i18n.getString('EditorialAppeal_AllEntitiesInThisAd').replace('{0}', i18n.getString(ENTITYPluralToI18[entity]));\r\n const requestExceptionForThisEntity = i18n.getString('Request_Exception').replace('{0}', thisEntity);\r\n let requestExceptionLink = `${requestExceptionForThisEntity}`;\r\n const requestExceptionForThisParentEntity = i18n.getString('Request_Exception').replace('{0}', entity === ENTITY.ASSETGROUP ? allEntitiesInThisCampaign : allEntitiesInThisAdGroup);\r\n let requestParentLevelExceptionLink = hideParentLevel ? null : `${requestExceptionForThisParentEntity}`;\r\n const helpText = i18n.getString('Fix_Disapproved_Entity_Help').replace('{0}', isDisclaimerDisapproved ? i18n.getString('DisclaimerLabelText') : i18n.getString(ENTITYToI18[entity]));\r\n if (entity === ENTITY.EXTENSION) {\r\n requestExceptionLink = `${isDisclaimerDisapproved ? i18n.getString('Request_Exception').replace('{0}', i18n.getString('DisclaimerLabelText')) : requestExceptionForThisEntity}`;\r\n requestParentLevelExceptionLink = null;\r\n }\r\n if (entity === ENTITY.ASSET) {\r\n requestExceptionLink = `${i18n.getString('Request_Exception').replace('{0}', hideParentLevel ? allEntitiesInThisAd : allEntitiesInThisAdGroup)}`;\r\n requestParentLevelExceptionLink = null;\r\n }\r\n return {\r\n requestExceptionLink,\r\n requestParentLevelExceptionLink,\r\n helpText,\r\n };\r\n}\r\n\r\nfunction getRejectionStaticLinkFooterText(i18n) {\r\n const contactSupportLink = `${i18n.getString('Contact_Support')}`;\r\n return {\r\n contactSupportLink,\r\n requestReviewText: i18n.getString('Request_Another_Review'),\r\n };\r\n}\r\n\r\nexport function getEditorialTemplates({\r\n reasons,\r\n errI18n,\r\n i18n,\r\n locationI18n,\r\n commonI18n,\r\n entity,\r\n deliveryStatus,\r\n ad,\r\n keyword,\r\n isAppealable,\r\n permissions,\r\n isDetectionRejectionTypeEnabled,\r\n logActivity,\r\n hideParentLevel,\r\n hideLocation,\r\n scope,\r\n}) {\r\n const updatedReasons = [];\r\n const isXandrAd = ENTITY.AD === entity && isXandrServing(\r\n _.chain(ad).result('Campaign').result('CampaignSubType').value(),\r\n _.chain(ad).result('Campaign').result('CampaignSettings').value()\r\n );\r\n const { adGroupId } = (scope && scope.values) || {};\r\n const isAssetAppealEnable = permissions && permissions.dynamic.AssetBasedEditorialInlineAppeal && ENTITY.ASSET === entity && adGroupId;\r\n const isLinkedinAd = ENTITY.AD === entity && isLinkedInCampaign(_.chain(ad).result('Campaign').result('CampaignType').value());\r\n const isPmaxAppealEnable = ENTITY.ASSETGROUP === entity && permissions && permissions.dynamic && permissions.dynamic.PmaxAppealEnable;\r\n const isAdExtensionInlineAppeal = ENTITY.EXTENSION === entity && permissions && permissions.dynamic && permissions.dynamic.AdExtensionInlineAppeal;\r\n const showRequestExceptionLink = ((!isXandrAd && !isLinkedinAd) && _.contains([ENTITY.AD, ENTITY.KEYWORD], entity)) || isPmaxAppealEnable || isAdExtensionInlineAppeal || isAssetAppealEnable;\r\n const isCountryListEnabled = permissions && permissions.dynamic && permissions.dynamic.EditorialCountryList;\r\n\r\n if (logActivity && logActivity.signal) {\r\n logActivity.signal(`reject reasons of ${entity} - ${ad ? ad.Id : keyword && keyword.Id} : ${deliveryStatus} : ${JSON.stringify(reasons)}`);\r\n }\r\n\r\n _.each(reasons, (reason, i) => {\r\n const reasonCode = reason.ReasonCode;\r\n let endReason = true;\r\n\r\n if ((i !== reasons.length - 1) && (reasons[i + 1].ReasonCode === reasonCode)) {\r\n endReason = false;\r\n }\r\n\r\n if (endReason) {\r\n const violation = getEditorialErrorMessage(reason.ReasonCode, errI18n, null, permissions);\r\n let locations = '';\r\n let countries = '';\r\n\r\n const locationString = typeof (reason.Location) === 'string' ? reason.Location : getLocationString({\r\n location: reason.Location,\r\n i18n,\r\n commonI18n,\r\n });\r\n\r\n if (locationString && !hideLocation) {\r\n locations = i18n.getString('DeliveryStatus_Violcation_Location').replace('{0}', locationString);\r\n }\r\n\r\n countries =\r\n _.chain(reason.LanguageToCountries)\r\n .pluck('PublisherCountries')\r\n .flatten()\r\n .uniq()\r\n .map(country => (entity === ENTITY.EXTENSION ? country : locationI18n.getString(`PublisherCountry_${country}`)))\r\n .value();\r\n\r\n let violationCountry = null;\r\n if (countries.length === 1) {\r\n violationCountry = i18n.getString('DeliveryStatus_Violcation_One_Country').replace('{0}', countries[0]);\r\n } else {\r\n violationCountry = isCountryListEnabled ? i18n.getString('DeliveryStatus_Violcation_Country_WithLink', {\r\n number: countries.length,\r\n tag: '',\r\n endtag: '',\r\n }) :\r\n i18n.getString('DeliveryStatus_Violcation_Country').replace('{0}', countries.length);\r\n }\r\n\r\n updatedReasons.push({\r\n violation,\r\n locations,\r\n violationCountry,\r\n countries,\r\n detectionType: isDetectionRejectionTypeEnabled ? i18n.getString(`Editorial_Detection_Type_${reason.DetectionMode || 'Unknown'}`) : '',\r\n rejectionType: isDetectionRejectionTypeEnabled ? i18n.getString(`Editorial_Rejection_Type_${reason.RejectionMode || 'Unknown'}`) : '',\r\n });\r\n }\r\n });\r\n\r\n const isDisclaimerDisapproved = deliveryStatus === 'DisclaimerInfoRejected' || deliveryStatus === 'DisclaimerInfoApprovedLimited' || deliveryStatus === 'DisclaimerInfoRejectedAppealRejected' || deliveryStatus === 'DisclaimerInfoApprovedLimitedAppealRejected';\r\n const isDisapproved = deliveryStatus === 'EditorialRejected' || deliveryStatus === 'Rejected' || deliveryStatus === 'EditorialAppealRejected' || isDisclaimerDisapproved;\r\n let title = i18n.getString('EntityStatus_Rejected');\r\n switch (deliveryStatus) {\r\n // new string\r\n case 'AppealRejected':\r\n case 'RejectedAppealRejected':\r\n case 'EditorialAppealRejected':\r\n title = i18n.getString('Label_DeliveryStatus_EditorialAppealRejected');\r\n break;\r\n case 'ApprovedLimitedAppealRejected':\r\n case 'EditorialApprovedLimitedAppealRejected':\r\n title = i18n.getString('Label_DeliveryStatus_EditorialApprovedLimitedAppealRejected');\r\n break;\r\n case 'ApprovedLimited':\r\n case 'EditorialApprovedLimited':\r\n title = i18n.getString('EntityStatus_ApprovedLimited');\r\n break;\r\n case 'DisclaimerInfoRejected':\r\n title = i18n.getString('EntityStatus_DisclaimerInfoRejected');\r\n break;\r\n case 'DisclaimerInfoApprovedLimited':\r\n title = i18n.getString('EntityStatus_DisclaimerInfoApprovedLimited');\r\n break;\r\n case 'DisclaimerInfoRejectedAppealRejected':\r\n title = i18n.getString('Label_DeliveryStatus_DisclaimerInfoRejectedAppealRejected');\r\n break;\r\n case 'DisclaimerInfoApprovedLimitedAppealRejected':\r\n title = i18n.getString('Label_DeliveryStatus_DisclaimerInfoApprovedLimitedAppealRejected');\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return editorialTemplate({\r\n title,\r\n reasons: updatedReasons,\r\n i18n,\r\n commonI18n,\r\n showRequestExceptionLink,\r\n footer: showRequestExceptionLink\r\n ? getRejectionFooterText(i18n, entity, isAppealable, isDisclaimerDisapproved, hideParentLevel)\r\n : getRejectionStaticLinkFooterText(i18n),\r\n isDisapproved,\r\n isDetectionRejectionTypeEnabled,\r\n isCountryListHidden: isLinkedinAd,\r\n isCountryListEnabled,\r\n countryListLabel: isCountryListEnabled ? i18n.getString('RejectionCountriesText') : '',\r\n });\r\n}\r\n\r\nexport function isDeliveryStatusDisapproved(deliveryStatusDetails) {\r\n const editorialStatus = ['EditorialRejected', 'EditorialApprovedLimited', 'EditorialAppealRejected', 'EditorialApprovedLimitedAppealRejected'];\r\n return _.contains(editorialStatus, deliveryStatusDetails);\r\n}\r\n\r\n","import $ from 'jquery';\r\n\r\nexport function registerCountryListEvent(popupView, logActivity, logContext) {\r\n popupView.find('.toggle-country-list').on('click', (e) => {\r\n const $target = $(e.target);\r\n const $parent = $target.hasClass('icon') ? $target.parent() : $target.parentsUntil('li').parent();\r\n const $icon = $parent.find('.icon');\r\n if ($icon.hasClass('iconba-ChevronDown')) {\r\n $icon.removeClass('iconba-ChevronDown').addClass('iconba-ChevronUp');\r\n } else {\r\n $icon.removeClass('iconba-ChevronUp').addClass('iconba-ChevronDown');\r\n }\r\n const $country = $parent.find('.country-list');\r\n $country.toggle();\r\n\r\n if (logActivity && logActivity.trace) {\r\n logActivity.trace(`toggle country list of ${logContext && logContext.entity}: ${logContext && logContext.id}`);\r\n }\r\n\r\n // reposition the popup\r\n popupView.trigger('contentUpdated', popupView.find('.new-editorial-popup')[0].outerHTML);\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nconst dependencyResolverHash = {};\r\n\r\n/**\r\n * Class DependencyResolver with the static instance of the hash\r\n * Through global hash, dependencies can be inserted or resolved.\r\n *\r\n * @class DependencyResolver\r\n * @extends {Backbone.Model}\r\n */\r\nexport class DependencyResolver extends Backbone.Model {\r\n /**\r\n * Get the component with the given key.\r\n *\r\n * @static\r\n * @param {string} key - key string for getting the component\r\n * @returns {Object} - object mapped to the key\r\n */\r\n static get(key) {\r\n return dependencyResolverHash[key];\r\n }\r\n\r\n /**\r\n * Setting the component with the key\r\n *\r\n * @static\r\n * @param {string} key - string used to get the component\r\n * @param {Object} value - component maps to the key\r\n * @memberof DependencyResolver\r\n * @returns {undefined}\r\n */\r\n static set(key, value) {\r\n if (_.isString(key)) {\r\n dependencyResolverHash[key] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Return the copy of the all the dependency objects\r\n *\r\n * @static\r\n * @returns {Object} - object of the dependency map.\r\n */\r\n static getAll() {\r\n return _.clone(dependencyResolverHash);\r\n }\r\n}\r\n\r\n","/* eslint-disable no-underscore-dangle */\r\nimport _ from 'underscore';\r\nimport { dataSource as GridDataSource } from 'projection-grid';\r\n\r\nexport const CHART_DATA_KEY = '@ns.performancetimeseries';\r\n\r\nfunction translateOrderBy(dataSource, orderByParams) {\r\n const orderBy = _.chain(dataSource.normalizeOrderBy(orderByParams))\r\n .map(([key, direction]) => [\r\n key,\r\n direction > 0 ? 'ASC' : 'DESC',\r\n ])\r\n .value();\r\n\r\n return _.isEmpty(orderBy) ? null : orderBy;\r\n}\r\n\r\nfunction translateParams(dataSource, params) {\r\n return _.chain(params)\r\n .omit('skip', 'take', 'filter', 'orderby')\r\n .extend(_.pick({\r\n offset: params.skip,\r\n limit: params.take,\r\n where: params.filter,\r\n orderBy: translateOrderBy(dataSource, params.orderby),\r\n }, Boolean))\r\n .value();\r\n}\r\n\r\nexport class JSGridChartDataSource extends GridDataSource.JSData {\r\n constructor(resource, options = {}) {\r\n super(resource, options);\r\n this.chartData = null;\r\n this.loadingCallback = null;\r\n this.successCallback = null;\r\n this.errorCallback = null;\r\n }\r\n query(params) {\r\n const options = _.defaults({}, params.options, this._options);\r\n if (this.loadingCallback) {\r\n this.loadingCallback();\r\n }\r\n return this._resource\r\n .findAll(translateParams(this, _.omit(params, 'options')), options)\r\n .then((data) => {\r\n if (_.isArray(data)) {\r\n try {\r\n this.updateChartData(JSON.parse(data.raw[CHART_DATA_KEY]));\r\n if (this.successCallback) {\r\n this.successCallback(this.chartData);\r\n }\r\n } catch (e) {\r\n if (this.errorCallback) {\r\n this.errorCallback(e);\r\n }\r\n }\r\n return ({\r\n items: data.slice(),\r\n totalCount: data.totalCount || 0,\r\n });\r\n }\r\n throw data;\r\n });\r\n }\r\n updateChartData(chartData) {\r\n this.chartData = chartData;\r\n }\r\n getChartData(successCallback, errorCallback) {\r\n this.successCallback = successCallback;\r\n this.errorCallback = errorCallback;\r\n if (this.successCallback && this.chartData) {\r\n this.successCallback(this.chartData);\r\n }\r\n }\r\n onLoading(loadingCallback) {\r\n this.loadingCallback = loadingCallback;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport { dataSource as GridDataSource } from 'projection-grid';\r\nimport { JSGridChartDataSource } from './grid-chart-datasource';\r\n\r\nconst defaultAfterFindAll = ((__, attrs) => attrs);\r\nexport function connect(dataSourceConfig, dataQueryBuilder, featureName, logger = {\r\n logActivityMarker: _.noop,\r\n}, usingCacheManager, useJSGridChartDataSource = false, customDataSource, afterFindAllPromiseResolve) {\r\n if (dataSourceConfig.type !== 'jsdata') {\r\n throw new Error('Data source type not implemented');\r\n }\r\n\r\n let dataSource;\r\n if (useJSGridChartDataSource) {\r\n dataSource = new JSGridChartDataSource(dataSourceConfig.entity, dataSourceConfig.options);\r\n } else {\r\n dataSource = new GridDataSource.JSData(dataSourceConfig.entity, dataSourceConfig.options);\r\n }\r\n if (customDataSource) {\r\n dataSource = customDataSource;\r\n }\r\n\r\n const originalQuery = dataSource.query;\r\n\r\n let callCount = 1;\r\n\r\n function shouldBustCache() {\r\n return !usingCacheManager && callCount < 3;\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n dataSource.query = (\r\n queryParams = {},\r\n { queryTransform = _.identity } = {},\r\n onStartQuery = _.noop,\r\n isDFMCall\r\n ) => dataQueryBuilder.getQuery().then((params) => {\r\n logger.logActivityMarker(`DataFetchManager/DFMCall.${callCount}`, { FeatureName: featureName });\r\n if (isDFMCall) {\r\n /**\r\n * 1. Call afterFindAll in dataSourceConfig\r\n * 2. Cannot use _.result to get the afterFindAll property\r\n * because _.result invokes the function property\r\n */\r\n const {\r\n afterFindAll: originalAfterFindAllInParams = defaultAfterFindAll,\r\n } = params.options || {};\r\n const {\r\n afterFindAll: originalAfterFindAllInConfig = defaultAfterFindAll,\r\n } = dataSourceConfig.options || {};\r\n params.options = _.extend({}, params.options, {\r\n afterFindAll: (resources, attrs) => {\r\n dataSource.dfmData = attrs;\r\n dataSource.dfmRawData = _.property('raw')(attrs);\r\n const returnData = originalAfterFindAllInConfig(\r\n resources,\r\n originalAfterFindAllInParams(resources, attrs)\r\n );\r\n if (afterFindAllPromiseResolve) {\r\n if (dataSource.options && dataSource.options.afterFindAll) {\r\n return dataSource.options.afterFindAll(resources, attrs);\r\n }\r\n afterFindAllPromiseResolve(attrs);\r\n }\r\n\r\n return returnData;\r\n },\r\n });\r\n }\r\n\r\n const finalParams = params;\r\n\r\n // Do not merge schema as it may have circular references\r\n const querySchema = _.chain(queryParams)\r\n .result('options')\r\n .result('filterOptions')\r\n .result('schema')\r\n .value();\r\n\r\n const finalSchema = _.chain(finalParams)\r\n .result('options')\r\n .result('filterOptions')\r\n .result('schema')\r\n .value();\r\n\r\n const hasQuerySchema = _.isObject(querySchema);\r\n const hasFinalSchema = _.isObject(finalSchema);\r\n\r\n if (hasQuerySchema) {\r\n // eslint-disable-next-line no-param-reassign\r\n delete queryParams.options.filterOptions.schema;\r\n }\r\n\r\n if (hasFinalSchema) {\r\n delete finalParams.options.filterOptions.schema;\r\n }\r\n\r\n finalParams.options = merge({}, queryParams.options, finalParams.options);\r\n\r\n if (hasQuerySchema || hasFinalSchema) {\r\n finalParams.options.filterOptions.schema = finalSchema || querySchema;\r\n }\r\n\r\n\r\n if (shouldBustCache()) {\r\n finalParams.cacheBusterFlag = `call-number-${callCount}-cache-buster`;\r\n }\r\n\r\n const result = originalQuery.call(dataSource, queryTransform(finalParams, queryParams));\r\n onStartQuery();\r\n\r\n callCount += 1;\r\n\r\n return result;\r\n });\r\n\r\n dataSource.queryBuilder = dataQueryBuilder;\r\n\r\n return dataSource;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst defaultAfterFindAll = (options, data) => data;\r\n/**\r\n * Previously, we accessed the error through the grid instance,\r\n * but now we prefetch the grid odata call,\r\n * when we execute afterFindAll there is no grid instance constructed yet,\r\n * so we access the error through the dataSource instance\r\n */\r\nexport class QueryErrorFactory {\r\n static make(dataSourceConfig) {\r\n const errors = {\r\n tooMuchDataError: false,\r\n };\r\n const originalAfterFindAll = dataSourceConfig.options.afterFindAll || defaultAfterFindAll;\r\n // eslint-disable-next-line no-param-reassign\r\n dataSourceConfig.options.afterFindAll = (options, data = {}) => {\r\n _.mapObject(errors, (val, key) => {\r\n errors[key] = false;\r\n });\r\n if (_.any(data.errors, err => err.Code === 'TooMuchDataToDownload')) {\r\n errors.tooMuchDataError = true;\r\n }\r\n return originalAfterFindAll(options, data);\r\n };\r\n return errors;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n// allow feature name for entity name filter\r\nexport const allowedEntityNameFilterFeatureName = ['CampaignsGrid'];\r\n\r\nexport const entityNameFilterType = _.reduce(allowedEntityNameFilterFeatureName, (memo, featureName) => _.extend(memo, { [featureName]: `EntityNameFilter_${featureName}` }), {});\r\n\r\nexport const featureNameToEntityNameFilter = entityNameFilterType;\r\n","export const featureIdToFilterAlias = {\r\n CampaignsGrid: {\r\n newCampaign: campaignName => ([{\r\n SelectedColumn: 'CampaignName',\r\n SelectedOperator: 'Contains',\r\n Values: [campaignName],\r\n }]),\r\n },\r\n};\r\n","import 'jquery';\r\nimport kendo from '@bingads-webui/kendo/kendo.core';\r\n\r\nexport function addDateListener(state, handler) {\r\n state.on('change:$daterange', handler);\r\n}\r\n\r\nexport function removeDateListener(state, handler) {\r\n state.off('change:$daterange', handler);\r\n}\r\n\r\n// Use passed in format to read the dateString into a Date object.\r\nexport function parseDate(dateString, format) {\r\n return kendo.parseDate(dateString, format);\r\n}\r\n\r\nconst defaultDateFormat = 'M/d/yyyy';\r\n\r\n// Take JS Date object and transform it to a string to display in the UI.\r\nexport function formatDateForUI(date, isUINext, pageContext, serverContext) {\r\n let format = defaultDateFormat;\r\n\r\n if (isUINext) {\r\n format = serverContext.CurrentUser.CultureDateTimeFormat.ShortDatePattern || defaultDateFormat;\r\n } else {\r\n format = pageContext.CultureDateTimeFormat.ShortDatePattern || defaultDateFormat;\r\n }\r\n\r\n return kendo.toString(date, format);\r\n}\r\n\r\n// ICM 177956313\r\n// This function formats a Date object to a string of format M/d/yyyy.\r\n// Do not use this function for displaying to the UI.\r\nexport function formatDateForMT(date) {\r\n return kendo.toString(date, defaultDateFormat);\r\n}\r\n\r\nexport function parseDateRangeToQuery(dateRange) {\r\n const query = {\r\n startDate: formatDateForMT(dateRange.start),\r\n endDate: formatDateForMT(dateRange.end),\r\n };\r\n\r\n return query;\r\n}\r\n\r\n// Trims 2019-07-24T00:00:00-07:00 to 2019-07-24 and then parses that to a Date object.\r\nexport function getDateFromYearMonthDayDateString(dateString) {\r\n if (!dateString) {\r\n return null;\r\n }\r\n\r\n const dateStringToBeParsed = dateString.substring(0, dateString.indexOf('T'));\r\n const date = parseDate(dateStringToBeParsed, 'yyyy-MM-dd');\r\n return date;\r\n}\r\n\r\n// ICM 172236553\r\n// We want to display the maximum start date and the minimum end date to tell the user that\r\n// the metrics data is valid for when the experiment is active within the selected date range.\r\n// The selected date range comes from the date picker.\r\n// The date picker date range is compared with the experiment's start and end date.\r\nexport function getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n pageContext = {},\r\n serverContext = {},\r\n}) {\r\n // Create JavaScript Date objects for use in equality and greater/less than comparisons.\r\n // If MT changes the format of the returned StartDate and EndDate, we'll need to change this.\r\n const parsedExpStartDate = getDateFromYearMonthDayDateString(experimentStartDate);\r\n const parsedExpEndDate = getDateFromYearMonthDayDateString(experimentEndDate);\r\n\r\n // In a valid scenario, parsedExpStartDate will exist since an experiment must have a start date.\r\n // Check to see if the Experiment's start and end date are within the date picker's date range.\r\n const doDateValuesExist = parsedExpEndDate && datePickerStartDate && datePickerEndDate;\r\n const existsAndIntersects = doDateValuesExist &&\r\n parsedExpStartDate <= datePickerEndDate &&\r\n datePickerStartDate <= parsedExpEndDate;\r\n\r\n // If the experiment has no end date,\r\n // check to see that the experiment start date is within the date picker's end date.\r\n const existsAndIntersectsExceptExperimentEndDate = !parsedExpEndDate &&\r\n datePickerStartDate && datePickerEndDate &&\r\n parsedExpStartDate <= datePickerEndDate;\r\n\r\n let perfCompPeriodStartDate = datePickerStartDate;\r\n\r\n // This logic is to display the start date of the performance comparison period:\r\n // perfCompPeriodStartDate = max(ExperimentStartDate, DatePickerStartDate).\r\n // There is a case where the Experiment has no end date, then we will\r\n // still display the max of the 2 start dates.\r\n if ((existsAndIntersects || existsAndIntersectsExceptExperimentEndDate) &&\r\n parsedExpStartDate > datePickerStartDate) {\r\n perfCompPeriodStartDate = parsedExpStartDate;\r\n }\r\n\r\n let perfCompPeriodEndDate = datePickerEndDate;\r\n\r\n // This logic is to display the end date of the performance comparison period:\r\n // end = min(ExperimentEndDate, DatePickerEndDate).\r\n if (existsAndIntersects && datePickerEndDate > parsedExpEndDate) {\r\n perfCompPeriodEndDate = parsedExpEndDate;\r\n }\r\n\r\n // Done comparing with Date objects, now we want to get strings for the UI.\r\n const start = formatDateForUI(perfCompPeriodStartDate, isUINext, pageContext, serverContext);\r\n const end = formatDateForUI(perfCompPeriodEndDate, isUINext, pageContext, serverContext);\r\n\r\n return {\r\n start,\r\n end,\r\n };\r\n}\r\n\r\nexport function shouldCookieBasedWarningBeShown(startDate, experimentType) {\r\n if (startDate && experimentType === 'CookieBased') {\r\n const twoMonthsAgo = new Date();\r\n twoMonthsAgo.setMonth(twoMonthsAgo.getMonth() - 2);\r\n return startDate <= twoMonthsAgo;\r\n }\r\n\r\n return false;\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './apply.pug';\r\n\r\nexport class ApplyView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n experimentName,\r\n originalCampaignName,\r\n }) {\r\n this.i18n = i18n;\r\n this.experimentName = experimentName;\r\n this.originalCampaignName = originalCampaignName;\r\n this.setState({\r\n selectedItem: 'update-original',\r\n });\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click input[name=\"apply-option\"]': (e) => {\r\n this.setState({\r\n selectedItem: e.target.id,\r\n });\r\n },\r\n };\r\n }\r\n}\r\n","import { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport template from './end.pug';\r\n\r\nexport class EndView extends DeterministicView {\r\n initialize({\r\n i18n,\r\n experimentName,\r\n }) {\r\n this.i18n = i18n;\r\n this.experimentName = experimentName;\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n}\r\n","/* eslint-disable import/no-unresolved */\r\n/* eslint-disable import/extensions */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport { DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { Dialog } from '@bingads-webui/dialog';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { AlertHelper } from '@bingads-webui-campaign/alert-helper';\r\nimport { ApplyView } from './apply';\r\nimport { EndView } from './end';\r\nimport template from './template-vnext.pug';\r\n\r\n// Needed for cases where this view loads before legacy-bootstrap can do this\r\nBackbone.$ = $;\r\n\r\nconst i18nMap = {\r\n Experiment_UseExperimentSettingsIn: _TL_('Apply experiment to...'),\r\n Experiment_Error_ExperimentStatusInvalid: _TL_('Experiment status is invalid'),\r\n Experiment_Error_EndedExperimentCannotBeChanged: _TL_('The experiment has already ended and cannot be changed.'),\r\n Experiment_Error_undefined: _TL_('Bing Ads has encountered an error. Please try again or contact Support.'),\r\n Cancel: _TL_('Cancel'),\r\n Save: _TL_('Save'),\r\n Experiment_EndDialog_Title: _TL_('Are you sure you want to end this experiment now?'),\r\n Experiment_EndDialog_SaveButton: _TL_('Yes, end experiment'),\r\n Experiment_EndDialog_Description1: _TL_('{{name}} will be ended now.'),\r\n Experiment_EndDialog_Description2: _TL_('Once an experiment is ended, it cannot be restarted.'),\r\n Experiment_ConvertToNewCampaign_Description: _TL_('Your new campaign will have the same daily budget as your original campaign ({{name}}) and will adopt the settings of this experiment. {{name}} will pause automatically.'),\r\n Experiment_ConvertToNewCampaign_Title: _TL_('A new campaign'),\r\n Experiment_UpdateOriginalCampaign_Description: _TL_('Your original campaign will adopt the settings of this experiment and {{name}} will pause automatically.'),\r\n Experiment_UpdateOriginalCampaign_Title: _TL_('Your original campaign'),\r\n Experiment_EndNow: _TL_('End experiment now'),\r\n};\r\n\r\nexport class ExperimentActions extends DeterministicView {\r\n initialize({\r\n experimentEntity,\r\n expItemFromEdm,\r\n i18n,\r\n scope,\r\n }) {\r\n this.i18n = buildLegacyI18n(i18n, [i18nMap]);\r\n // Allow fallback to general error string, see handleServerError\r\n this.i18n.failFast = false;\r\n this.experimentEntity = experimentEntity;\r\n this.expItemFromEdm = expItemFromEdm;\r\n this.setState({\r\n status: experimentEntity.Status,\r\n });\r\n this.scope = scope;\r\n }\r\n\r\n get template() {\r\n return template;\r\n }\r\n\r\n updateExperiment = (status) => {\r\n const requestBody = _.defaults({\r\n Status: status,\r\n }, _.pick(this.experimentEntity, ['ExperimentName', 'ExperimentCampaignId', 'ExperimentType', 'StartDate', 'EndDate', 'TrafficSplitPercent', 'BaseCampaignId']));\r\n\r\n const observable = this.expItemFromEdm.patch(requestBody);\r\n const observer = {\r\n next: () => this.handleExperimentUpdate(status),\r\n error: response => this.handleServerError(response),\r\n };\r\n\r\n this.subscription = observable.subscribe(observer);\r\n }\r\n\r\n\r\n handleExperimentUpdate = (status) => {\r\n this.setState({ status });\r\n if (status !== 'Ended') {\r\n // redirect to experiments page\r\n this.scope.set({\r\n cid: this.scope.values.cid,\r\n aid: this.scope.values.aid,\r\n uid: this.scope.values.uid,\r\n });\r\n this.scope.save('/campaign/vnext/experiments');\r\n }\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n handleServerError = (response) => {\r\n const alertHelper = new AlertHelper({ i18n: this.i18n });\r\n const errorCode = putil.get(response, 'errors[0].Code');\r\n this.subscription.unsubscribe();\r\n alertHelper.showError(this.i18n.getString(`Experiment_Error_${errorCode}`) || this.i18n.getString('Experiment_Error_undefined'));\r\n }\r\n\r\n showApplyDialog() {\r\n const contentView = new ApplyView({\r\n i18n: this.i18n,\r\n experimentName: this.experimentEntity.ExperimentName,\r\n originalCampaignName: this.experimentEntity.BaseCampaignName,\r\n });\r\n\r\n this.dialog = new Dialog()\r\n .setContent(contentView)\r\n .setState({\r\n title: this.i18n.getString('Experiment_UseExperimentSettingsIn'),\r\n buttons: [{\r\n text: this.i18n.getString('Save'),\r\n name: 'confirm',\r\n class: 'btn-primary',\r\n }, {\r\n text: this.i18n.getString('Cancel'),\r\n name: 'cancel',\r\n }],\r\n });\r\n\r\n this.dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n const status = _.result({\r\n 'update-original': 'Promoted',\r\n 'convert-to-new': 'Graduated',\r\n }, contentView.getState().selectedItem);\r\n\r\n this.updateExperiment(status);\r\n }\r\n\r\n this.removeDialog();\r\n });\r\n\r\n this.dialog.$el.appendTo(document.body);\r\n this.dialog.show();\r\n this.dialog.$('.modal').addClass('experiment-actions-apply-dialog');\r\n }\r\n\r\n showEndDialog() {\r\n const contentView = new EndView({\r\n i18n: this.i18n,\r\n experimentName: this.experimentEntity.ExperimentName,\r\n });\r\n\r\n this.dialog = new Dialog()\r\n .setContent(contentView)\r\n .setState({\r\n title: this.i18n.getString('Experiment_EndDialog_Title'),\r\n buttons: [{\r\n text: this.i18n.getString('Experiment_EndDialog_SaveButton'),\r\n name: 'confirm',\r\n class: 'btn-primary',\r\n }, {\r\n text: this.i18n.getString('Cancel'),\r\n name: 'cancel',\r\n }],\r\n });\r\n\r\n this.dialog.on('clickedButton', (name) => {\r\n if (name === 'confirm') {\r\n this.updateExperiment('Ended');\r\n }\r\n\r\n this.removeDialog();\r\n });\r\n\r\n this.dialog.$el.appendTo(document.body);\r\n this.dialog.show();\r\n this.dialog.$('.modal').addClass('experiment-actions-end-dialog');\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .apply-experiment': () => this.showApplyDialog(),\r\n 'click .end-experiment': () => this.showEndDialog(),\r\n };\r\n }\r\n\r\n removeDialog() {\r\n if (this.dialog) {\r\n this.dialog.remove();\r\n this.dialog = null;\r\n }\r\n }\r\n\r\n remove() {\r\n this.removeDialog();\r\n super.remove();\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { getPerformanceComparisonPeriodDateText } from '../shared/utils';\r\n\r\nexport class Title extends React.PureComponent {\r\n render() {\r\n const {\r\n i18n,\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n serverContext,\r\n } = this.props;\r\n\r\n const isUINext = true;\r\n const { start, end } = getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n serverContext,\r\n });\r\n\r\n return (\r\n
\r\n {i18n.getString('Experiment_ScoreCard_PerformanceComparisonPeriod', { start, end })}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTitle.defaultProps = {\r\n experimentStartDate: null,\r\n experimentEndDate: null,\r\n};\r\n\r\nTitle.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n datePickerStartDate: PropTypes.instanceOf(Date).isRequired,\r\n datePickerEndDate: PropTypes.instanceOf(Date).isRequired,\r\n experimentStartDate: PropTypes.string,\r\n experimentEndDate: PropTypes.string,\r\n serverContext: PropTypes.shape({\r\n CurrentUser: PropTypes.shape({\r\n CultureDateTimeFormat: PropTypes.shape({\r\n ShortDatePattern: PropTypes.string,\r\n }),\r\n }),\r\n }).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class LabelRow extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nLabelRow.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nlet i18n;\r\n\r\nexport function setupFormatter(deps) {\r\n ({ i18n } = deps);\r\n}\r\n\r\nfunction isInvalid(value) {\r\n return _.isUndefined(value) || _.isNull(value) || _.isNaN(value);\r\n}\r\n\r\nconst basicOptions = {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n};\r\n\r\nconst formatters = {\r\n decimal(value) {\r\n if (isInvalid(value)) {\r\n return '--';\r\n }\r\n return i18n.decimalFormatter({\r\n ...basicOptions,\r\n })(value);\r\n },\r\n decimalWithSign(value) {\r\n if (isInvalid(value)) {\r\n return '--';\r\n }\r\n return i18n.decimalFormatter({\r\n ...basicOptions,\r\n withSign: 'always',\r\n })(value);\r\n },\r\n percent(value) {\r\n if (isInvalid(value)) {\r\n return '--%';\r\n }\r\n return i18n.percentFormatter({\r\n ...basicOptions,\r\n })(value);\r\n },\r\n percentWithSign(value) {\r\n if (isInvalid(value)) {\r\n return '--%';\r\n }\r\n return i18n.percentFormatter({\r\n ...basicOptions,\r\n withSign: 'always',\r\n })(value);\r\n },\r\n};\r\n\r\n\r\nconst TYPE = {\r\n PERCENT: 'percent',\r\n DEFAULT: 'decimal',\r\n};\r\n\r\nconst nameToType = {\r\n CTR: TYPE.PERCENT,\r\n ConversionRate: TYPE.PERCENT,\r\n AllConversionRate: TYPE.PERCENT,\r\n};\r\n\r\nconst typeToOp = {\r\n [TYPE.PERCENT]: {\r\n formatValue: formatters.percent,\r\n formatChangedValue: formatters.percentWithSign,\r\n formatChangedPercent: formatters.percentWithSign,\r\n },\r\n [TYPE.DEFAULT]: {\r\n formatValue: formatters.decimal,\r\n formatChangedValue: formatters.decimalWithSign,\r\n formatChangedPercent: formatters.percentWithSign,\r\n },\r\n};\r\n\r\nexport function getFormatter(name) {\r\n const type = nameToType[name] || TYPE.DEFAULT;\r\n const op = typeToOp[type];\r\n\r\n return op;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class LabelColumn extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nLabelColumn.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.array,\r\n ]).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class SpanExperiment extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nSpanExperiment.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class SpanOriginal extends React.PureComponent {\r\n render() {\r\n const { children } = this.props;\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n }\r\n}\r\n\r\nSpanOriginal.propTypes = {\r\n children: PropTypes.string.isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelRow } from './label-row';\r\nimport { LabelColumn } from './label-column';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { SpanOriginal } from './span-original';\r\n\r\nexport class TableFixedVnext extends React.PureComponent {\r\n render() {\r\n const { i18n, DecimalFormatter, data } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {i18n.getString('Experiment_ScoreCard_Split')}\r\n \r\n
\r\n \r\n {i18n.getString('Experiment_ScoreCard_Experiment')}\r\n \r\n \r\n \r\n {`${data.TrafficSplitPercent}${DecimalFormatter.percentSymbol}`}\r\n \r\n
\r\n \r\n {i18n.getString('Experiment_ScoreCard_Original')}\r\n \r\n \r\n \r\n {`${(100 - data.TrafficSplitPercent)}${DecimalFormatter.percentSymbol}`}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTableFixedVnext.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n DecimalFormatter: PropTypes.objectOf(PropTypes.any).isRequired,\r\n data: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelColumn } from './label-column';\r\n\r\nexport class MetricPicker extends React.PureComponent {\r\n render() {\r\n const {\r\n index,\r\n i18n,\r\n selected,\r\n others,\r\n onPick,\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n { i18n.getString(`ColumnName_${selected}`) }\r\n { ' ' }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMetricPicker.propTypes = {\r\n index: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n selected: PropTypes.string.isRequired,\r\n others: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onPick: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { OverlayTrigger, Popover } from '@bingads-webui-react/primitive';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { getFormatter } from '../shared/format';\r\n\r\nconst COLORMAP = {\r\n green: '#006D21',\r\n red: '#D90026',\r\n grey: '#666',\r\n black: '#333',\r\n};\r\n\r\nexport function getColor(name, value) {\r\n let color;\r\n\r\n if (value) {\r\n if (value.IsSignificant) {\r\n let isPositive = value.ExperimentAggregatedValue >= value.BaseAggregatedValue;\r\n\r\n if (_.contains(['CPA', 'AverageCPC'], name)) {\r\n isPositive = !isPositive;\r\n }\r\n\r\n color = isPositive ? 'green' : 'red';\r\n } else {\r\n color = 'grey';\r\n }\r\n } else {\r\n color = 'black';\r\n }\r\n\r\n return COLORMAP[color];\r\n}\r\n\r\nexport function getAnnotation(isSignificant, i18n) {\r\n if (isSignificant === false) {\r\n return (\r\n \r\n {i18n.getString('Experiment_ScoreCard_NonStatSigAnnotation')}\r\n \r\n }\r\n >\r\n *\r\n \r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class MetricExperiment extends React.PureComponent {\r\n render() {\r\n const {\r\n name,\r\n value,\r\n i18n,\r\n } = this.props;\r\n const {\r\n ExperimentAggregatedValue,\r\n BaseAggregatedValue,\r\n PercentChange,\r\n IsSignificant,\r\n } = (value || {});\r\n const {\r\n formatValue,\r\n formatChangedValue,\r\n formatChangedPercent,\r\n } = getFormatter(name);\r\n const color = getColor(name, value);\r\n\r\n return (\r\n \r\n
\r\n \r\n {formatValue(ExperimentAggregatedValue)}\r\n \r\n
\r\n \r\n {formatChangedPercent(PercentChange / 100)}\r\n {' ('}\r\n {formatChangedValue(ExperimentAggregatedValue - BaseAggregatedValue)}\r\n {')'}\r\n {getAnnotation(IsSignificant, i18n)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMetricExperiment.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n value: PropTypes.shape({\r\n IsSignificant: PropTypes.bool,\r\n BaseAggregatedValue: PropTypes.number,\r\n ExperimentAggregatedValue: PropTypes.number,\r\n PercentChange: PropTypes.number,\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nMetricExperiment.defaultProps = {\r\n value: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { SpanOriginal } from './span-original';\r\nimport { getFormatter } from '../shared/format';\r\n\r\n\r\nexport class MetricOriginal extends React.PureComponent {\r\n render() {\r\n const { name, value } = this.props;\r\n const {\r\n BaseAggregatedValue,\r\n } = (value || {});\r\n const {\r\n formatValue,\r\n } = getFormatter(name);\r\n\r\n return (\r\n \r\n \r\n {formatValue(BaseAggregatedValue)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMetricOriginal.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n value: PropTypes.shape({\r\n IsSignificant: PropTypes.bool,\r\n BaseAggregatedValue: PropTypes.number,\r\n ExperimentAggregatedValue: PropTypes.number,\r\n PercentChange: PropTypes.number,\r\n }),\r\n};\r\n\r\nMetricOriginal.defaultProps = {\r\n value: null,\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MetricPicker } from './metric-picker';\r\nimport { MetricExperiment } from './metric-experiment';\r\nimport { MetricOriginal } from './metric-original';\r\n\r\n/* eslint-disable react/no-array-index-key */\r\n\r\nfunction derivedStateFromProps(props) {\r\n const { biData } = props;\r\n const metricsList = _.difference(_.keys(biData), ['ComparisonStartDate', 'ComparisonEndDate', '@odata.type']);\r\n const slots = _.clone(metricsList);\r\n\r\n return { metricsList, slots, biData };\r\n}\r\n\r\nexport class TableScrollable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = derivedStateFromProps(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.biData !== prevState.biData) {\r\n return derivedStateFromProps(nextProps);\r\n }\r\n return null;\r\n }\r\n\r\n onPickMetric(metric, index) {\r\n const slots = _.clone(this.state.slots);\r\n\r\n slots[index] = metric;\r\n\r\n this.setState({ slots });\r\n }\r\n\r\n render() {\r\n const { i18n, biData } = this.props;\r\n const { metricsList, slots } = this.state;\r\n\r\n const slotsToDisplay = _.first(slots, 6);\r\n\r\n return (\r\n \r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n this.onPickMetric(pickedMetric, index)}\r\n />\r\n ))}\r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n {slotsToDisplay.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableScrollable.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n biData: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport function Stroke() {\r\n return (\r\n
\r\n );\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nexport const experimentActionsStyles = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.modal-backdrop.in': {\r\n zIndex: `${Constants.ZIndexShellComponents.ModalBackDrop} !important`,\r\n backgroundColor: '#ffffff !important',\r\n },\r\n '.experiment-score-card': {\r\n '& button.btn-default': {\r\n background: 'transparent',\r\n },\r\n '& input.btn-default[type=\"button\"]': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n },\r\n '& .open .dropdown-menu-right': {\r\n left: '0px !important',\r\n width: 'min-content',\r\n },\r\n },\r\n '.experiment-actions-apply-dialog, .experiment-actions-end-dialog': {\r\n '& input[type=\"radio\"]': {\r\n position: 'relative',\r\n },\r\n '& .form-horizontal': {\r\n marginBottom: 20,\r\n '& .form-group': {\r\n marginBottom: 16,\r\n },\r\n },\r\n },\r\n});\r\n","import { extend, pick, reduce, compact, reject } from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { ExperimentActions } from '@bingads-webui-campaign/experiment-actions';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Title } from './views/title-vnext';\r\nimport { TableFixedVnext } from './views/table-fixed-vnext';\r\nimport { TableScrollable } from './views/table-scrollable-vnext';\r\nimport { Stroke } from './views/stroke';\r\nimport { shouldCookieBasedWarningBeShown } from './shared/utils';\r\nimport { setupFormatter } from './shared/format';\r\nimport { experimentActionsStyles } from './shared/experiment-actions-styles';\r\n\r\nconst i18nMap = {\r\n Experiment_ScoreCard_CookieBasedWarning: _TL_('This period extends beyond 60 days in the past. Performance comparison data older than 60 days is not statistically significant.'),\r\n Experiment_ScoreCard_NonStatSigAnnotation: _TL_('This change is not statistically significant, meaning that it is not attributable to a specific cause.'),\r\n Experiment_ScoreCard_Split: _TL_('Split'),\r\n Experiment_ScoreCard_Experiment: _TL_('Experiment'),\r\n Experiment_ScoreCard_Original: _TL_('Original campaign'),\r\n Experiment_ScoreCard_PerformanceComparisonPeriod: _TL_('Performance comparison period: {{start}} - {{end}}'),\r\n ColumnName_Impressions: _TL_('Impr.'),\r\n ColumnName_Clicks: _TL_('Clicks'),\r\n ColumnName_CTR: _TL_('CTR'),\r\n ColumnName_Spend: _TL_('Spend'),\r\n ColumnName_AverageCPC: _TL_('Avg. CPC'),\r\n ColumnName_AveragePosition: _TL_('Avg. pos'),\r\n ColumnName_Conversions: _TL_('Compare to Conv.'),\r\n ColumnName_CPA: _TL_('CPA'),\r\n ColumnName_ConversionRate: _TL_('Conversion rate'),\r\n ColumnName_ConversionValue: _TL_('Revenue'),\r\n ColumnName_ROA: _TL_('Return on ad spend'),\r\n ColumnName_AllConversions: _TL_('All conv.'),\r\n ColumnName_AllConversionCPA: _TL_('All conv. CPA'),\r\n ColumnName_AllConversionRate: _TL_('All conv. rate'),\r\n ColumnName_AllConversionValue: _TL_('All conv. revenue'),\r\n ColumnName_AllConversionROA: _TL_('All conv. return on ad spend'),\r\n ColumnName_Experiment: _TL_('Experiment name'),\r\n ColumnName_Campaign: _TL_('Campaign'),\r\n ColumnName_Split: _TL_('Split'),\r\n ColumnName_Status: _TL_('Status'),\r\n ColumnName_StartDate: _TL_('Start date'),\r\n ColumnName_EndDate: _TL_('End date'),\r\n ColumnName_Actions: _TL_('Actions'),\r\n ColumnName_TopImpressionRate: _TL_('Top impr. rate'),\r\n ColumnName_AbsoluteTopImpressionRate: _TL_('Abs. top impr. rate'),\r\n 'Click to learn more about performance comparison period': _TL_('Click to learn more about performance comparison period'),\r\n};\r\n\r\nfunction getExperimentMetricsWhiteList(permissions) {\r\n const { IsAvgPositionDeprecationPhase1Enabled } = permissions;\r\n\r\n return compact([\r\n 'ComparisonStartDate',\r\n 'ComparisonEndDate',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'AverageCPC',\r\n // 'AveragePosition' is removed\r\n IsAvgPositionDeprecationPhase1Enabled && 'TopImpressionRate',\r\n IsAvgPositionDeprecationPhase1Enabled && 'AbsoluteTopImpressionRate',\r\n 'Conversions',\r\n 'CPA',\r\n 'ConversionRate',\r\n 'ConversionValue',\r\n 'ROA',\r\n 'AllConversions',\r\n 'AllConversionCPA',\r\n 'AllConversionRate',\r\n 'AllConversionValue',\r\n 'AllConversionROA',\r\n ]);\r\n}\r\n\r\nconst getExperimentsStyles = (_, { palette = {} }) => extend({\r\n '@global': Object.assign(\r\n {},\r\n experimentActionsStyles({ palette })\r\n ),\r\n});\r\n\r\nclass ExperimentScoreCard extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.i18n = buildLegacyI18n(this.props.i18n, [i18nMap]);\r\n\r\n setupFormatter({ i18n: this.i18n });\r\n this.experimentMetricsWhiteList = getExperimentMetricsWhiteList(this.props.permissions);\r\n\r\n let { ExperimentMetrics } = this.props.experimentData;\r\n\r\n if (ExperimentMetrics) {\r\n ExperimentMetrics = pick(ExperimentMetrics, this.experimentMetricsWhiteList);\r\n } else {\r\n // When no ExperimentMetrics are available use start/end dates from dateFilter directly\r\n this.experimentMetricsWhiteList = reject(this.experimentMetricsWhiteList, metric => metric === 'ComparisonStartDate' || metric === 'ComparisonEndDate');\r\n\r\n ExperimentMetrics = reduce(\r\n this.experimentMetricsWhiteList,\r\n (memo, property) => ({\r\n ...memo,\r\n [property]: null,\r\n }),\r\n {\r\n ComparisonStartDate: this.props.dateFilter.RangeStartDate,\r\n ComparisonEndDate: this.props.dateFilter.RangeEndDate,\r\n }\r\n );\r\n }\r\n\r\n this.data = {\r\n ...this.props.experimentData,\r\n ExperimentMetrics,\r\n };\r\n\r\n this.experimentActions = new ExperimentActions({\r\n experimentEntity: this.data,\r\n i18n: this.props.i18n,\r\n scope: this.props.scope,\r\n expItemFromEdm: this.props.expItemFromEdm,\r\n });\r\n }\r\n\r\n render() {\r\n const biData = putil.get(this.data, 'ExperimentMetrics', {});\r\n\r\n const isInCookieBasedPilot = this.props.permissions.IsCookieBasedExperimentTypeEnabled;\r\n const showCookieBasedWarning = isInCookieBasedPilot &&\r\n this.data && this.data.ExperimentType &&\r\n shouldCookieBasedWarningBeShown(\r\n this.props.dateFilter.start,\r\n this.data.ExperimentType\r\n );\r\n\r\n return (\r\n this.data && (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {showCookieBasedWarning &&\r\n \r\n {this.i18n.getString('Experiment_ScoreCard_CookieBasedWarning')}\r\n
\r\n }\r\n \r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nExperimentScoreCard.propTypes = {\r\n serverContext: PropTypes.shape({\r\n DecimalFormatter: PropTypes.object.isRequired,\r\n }).isRequired,\r\n permissions: PropTypes.shape({\r\n IsCookieBasedExperimentTypeEnabled: PropTypes.bool.isRequired,\r\n }).isRequired,\r\n dateFilter: PropTypes.shape({\r\n RangeStartDate: PropTypes.string.isRequired,\r\n RangeEndDate: PropTypes.string.isRequired,\r\n start: PropTypes.instanceOf(Date).isRequired,\r\n end: PropTypes.instanceOf(Date).isRequired,\r\n }).isRequired,\r\n experimentData: PropTypes.shape({\r\n ExperimentMetrics: PropTypes.object,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n values: PropTypes.object.isRequired,\r\n }).isRequired,\r\n // eslint-disable-next-line react/require-default-props\r\n expItemFromEdm: PropTypes.shape({}),\r\n};\r\n\r\nexport const ExperimentScoreCard2 = withDefaultStyles(ExperimentScoreCard, getExperimentsStyles);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { getPerformanceComparisonPeriodDateText } from '../shared/utils';\r\n\r\nexport class Title extends React.PureComponent {\r\n render() {\r\n const {\r\n i18n,\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n pageContext,\r\n } = this.props;\r\n\r\n const isUINext = false;\r\n const { start, end } = getPerformanceComparisonPeriodDateText({\r\n datePickerStartDate,\r\n datePickerEndDate,\r\n experimentStartDate,\r\n experimentEndDate,\r\n isUINext,\r\n pageContext,\r\n });\r\n\r\n return (\r\n \r\n {i18n.getString('Experiment_ScoreCard_PerformanceComparisonPeriod', { start, end })}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTitle.defaultProps = {\r\n experimentStartDate: null,\r\n experimentEndDate: null,\r\n};\r\n\r\nTitle.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n datePickerStartDate: PropTypes.instanceOf(Date).isRequired,\r\n datePickerEndDate: PropTypes.instanceOf(Date).isRequired,\r\n experimentStartDate: PropTypes.string,\r\n experimentEndDate: PropTypes.string,\r\n pageContext: PropTypes.shape({\r\n CultureDateTimeFormat: PropTypes.shape({\r\n ShortDatePattern: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LabelRow } from './label-row';\r\nimport { LabelColumn } from './label-column';\r\nimport { SpanExperiment } from './span-experiment';\r\nimport { SpanOriginal } from './span-original';\r\n\r\nexport class TableFixed extends React.PureComponent {\r\n render() {\r\n const { i18n, pageContext, data } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n { i18n.getString('Experiment_ScoreCard_Split') }\r\n \r\n
\r\n \r\n { i18n.getString('Experiment_ScoreCard_Experiment') }\r\n \r\n \r\n \r\n { `${data.TrafficSplitPercent}${pageContext.DecimalFormatter.percentSymbol}` }\r\n \r\n
\r\n \r\n { i18n.getString('Experiment_ScoreCard_Original') }\r\n \r\n \r\n \r\n { `${(100 - data.TrafficSplitPercent)}${pageContext.DecimalFormatter.percentSymbol}` }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nTableFixed.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n pageContext: PropTypes.objectOf(PropTypes.any).isRequired,\r\n data: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MetricPicker } from './metric-picker';\r\nimport { MetricExperiment } from './metric-experiment';\r\nimport { MetricOriginal } from './metric-original';\r\n\r\n/* eslint-disable react/no-array-index-key */\r\n\r\nfunction derivedStateFromProps(props) {\r\n const { biData } = props;\r\n const metricsList = _.difference(_.keys(biData), ['ComparisonStartDate', 'ComparisonEndDate', '@odata.type']);\r\n const slots = _.clone(metricsList);\r\n\r\n return { metricsList, slots, biData };\r\n}\r\n\r\nexport class TableScrollable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = derivedStateFromProps(props);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.biData !== prevState.biData) {\r\n return derivedStateFromProps(nextProps);\r\n }\r\n return null;\r\n }\r\n\r\n onPickMetric(metric, index) {\r\n const slots = _.clone(this.state.slots);\r\n\r\n slots[index] = metric;\r\n\r\n this.setState({ slots });\r\n }\r\n\r\n render() {\r\n const { i18n, biData } = this.props;\r\n const { metricsList, slots } = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n {slots.map((metric, index) => (\r\n this.onPickMetric(pickedMetric, index)}\r\n />\r\n ))}\r\n \r\n \r\n {slots.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n {slots.map((metric, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableScrollable.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n biData: PropTypes.objectOf(PropTypes.any).isRequired,\r\n};\r\n\r\n","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model) {pug_html = pug_html + \"\\u003Cdiv class=\\\"nameTemplate\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([['labels-cell-scope', model.Scope === 'Customer' ? 'labels-cell-mcc' : 'labels-cell-account']], [true]), false, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"table__cell--menu-item-style table__cell--ellipsis-overflow\\\"\\u003E\" + (pug.escape(null == (pug_interp = model.Name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, violations) {pug_html = pug_html + \"\\u003Cdiv class=\\\"popup-header\\\" style=\\\"font-size: 20px; padding-bottom: 10px;\\\"\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = i18n.getString('Label_DeliveryStatus_Sensitive_Content')) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv\" + (\" class=\\\"popup-categories\\\"\"+pug.attr(\"style\", pug.style('max-height: 150px;' + (violations.length > 4 ? 'overflow-y: scroll;' : '')), true, true)) + \"\\u003E\";\n// iterate violations\n;(function(){\n var $$obj = violations;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var violation = $$obj[pug_index0];\nvar name = i18n.getString('CategoryFAID_' + violation.name);\nvar requestExceptionLink = violation.link ? `${name}` : `${name}`;\npug_html = pug_html + \"\\u003Cdiv class=\\\"tr\\\"\\u003E\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-ErrorBadge\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+\" role=\\\"img\\\" style=\\\"color:red;\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"categories\\\" style=\\\"line-height: 2; font-size: 15px; padding-left: 10px;\\\"\\u003E\" + (null == (pug_interp = requestExceptionLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var violation = $$obj[pug_index0];\nvar name = i18n.getString('CategoryFAID_' + violation.name);\nvar requestExceptionLink = violation.link ? `${name}` : `${name}`;\npug_html = pug_html + \"\\u003Cdiv class=\\\"tr\\\"\\u003E\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-ErrorBadge\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+\" role=\\\"img\\\" style=\\\"color:red;\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"categories\\\" style=\\\"line-height: 2; font-size: 15px; padding-left: 10px;\\\"\\u003E\" + (null == (pug_interp = requestExceptionLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"popup-footer\\\" style=\\\"padding-top: 15px;\\\"\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = i18n.getString('Label_DeliveryStatus_Sensitive_Content_Explaination')) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"violations\" in locals_for_with?locals_for_with.violations:typeof violations!==\"undefined\"?violations:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (countryListLabel, footer, i18n, isCountryListEnabled, isCountryListHidden, isDetectionRejectionTypeEnabled, isDisapproved, reasons, showRequestExceptionLink, title) {pug_html = pug_html + \"\\u003Cdiv class=\\\"new-editorial-popup\\\"\\u003E\\u003Cdiv class=\\\"popup-header\\\"\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = title) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"popup-content\\\"\\u003E\";\n// iterate reasons\n;(function(){\n var $$obj = reasons;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var rejectionReason = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"editorial-reason\\\"\\u003E\";\nif ((isDisapproved)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"iconba iconba-ErrorBadge\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"iconba iconba-Warning\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"violation\\\"\\u003E\" + (null == (pug_interp = rejectionReason.violation) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\";\nif ((isDetectionRejectionTypeEnabled)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"detection-rejection\\\"\\u003E\\u003Cspan class=\\\"detection-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Editorial_Detection')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"detection-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = rejectionReason.detectionType) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"rejection-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Editorial_Rejection')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"rejection-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = rejectionReason.rejectionType) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cul\\u003E\";\nif (rejectionReason.locations) {\npug_html = pug_html + \"\\u003Cli\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = rejectionReason.locations) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\";\n}\nif ((!isCountryListHidden)) {\npug_html = pug_html + \"\\u003Cli\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = rejectionReason.violationCountry) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\";\nif ((isCountryListEnabled && rejectionReason.countries && rejectionReason.countries.length > 1)) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"toggle-country-list iconba-ChevronDown icon\\\"\"+\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", countryListLabel, true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"country-list\\\"\\u003E\";\n// iterate rejectionReason.countries\n;(function(){\n var $$obj = rejectionReason.countries;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var country = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (null == (pug_interp = country) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var country = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (null == (pug_interp = country) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fli\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var rejectionReason = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cdiv class=\\\"editorial-reason\\\"\\u003E\";\nif ((isDisapproved)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"iconba iconba-ErrorBadge\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv class=\\\"iconba iconba-Warning\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cspan class=\\\"violation\\\"\\u003E\" + (null == (pug_interp = rejectionReason.violation) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\";\nif ((isDetectionRejectionTypeEnabled)) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"detection-rejection\\\"\\u003E\\u003Cspan class=\\\"detection-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Editorial_Detection')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"detection-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = rejectionReason.detectionType) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"rejection-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Editorial_Rejection')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan class=\\\"rejection-type\\\"\\u003E\" + (pug.escape(null == (pug_interp = rejectionReason.rejectionType) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003Cul\\u003E\";\nif (rejectionReason.locations) {\npug_html = pug_html + \"\\u003Cli\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = rejectionReason.locations) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fli\\u003E\";\n}\nif ((!isCountryListHidden)) {\npug_html = pug_html + \"\\u003Cli\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = rejectionReason.violationCountry) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\";\nif ((isCountryListEnabled && rejectionReason.countries && rejectionReason.countries.length > 1)) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"toggle-country-list iconba-ChevronDown icon\\\"\"+\" role=\\\"button\\\" tabindex=\\\"0\\\"\"+pug.attr(\"aria-label\", countryListLabel, true, true)) + \"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"country-list\\\"\\u003E\";\n// iterate rejectionReason.countries\n;(function(){\n var $$obj = rejectionReason.countries;\n if ('number' == typeof $$obj.length) {\n for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) {\n var country = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (null == (pug_interp = country) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index2 in $$obj) {\n $$l++;\n var country = $$obj[pug_index2];\npug_html = pug_html + \"\\u003Cdiv\\u003E\" + (null == (pug_interp = country) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fli\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Ful\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cdiv class=\\\"popup-footer\\\"\\u003E\";\nif ((showRequestExceptionLink)) {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (null == (pug_interp = footer.requestExceptionLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = ' | ') ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = footer.requestParentLevelExceptionLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = footer.requestParentLevelExceptionLink ? ' | ' : '') ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Ca class=\\\"HelpTopic\\\" query=\\\"help:app50003\\\" href=\\\"javascript:void(0);\\\"\\u003E\" + (pug.escape(null == (pug_interp = footer.helpText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\\u003E\" + (null == (pug_interp = footer.contactSupportLink) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = ' ') ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003Cspan\\u003E\" + (null == (pug_interp = footer.requestReviewText) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"countryListLabel\" in locals_for_with?locals_for_with.countryListLabel:typeof countryListLabel!==\"undefined\"?countryListLabel:undefined,\"footer\" in locals_for_with?locals_for_with.footer:typeof footer!==\"undefined\"?footer:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isCountryListEnabled\" in locals_for_with?locals_for_with.isCountryListEnabled:typeof isCountryListEnabled!==\"undefined\"?isCountryListEnabled:undefined,\"isCountryListHidden\" in locals_for_with?locals_for_with.isCountryListHidden:typeof isCountryListHidden!==\"undefined\"?isCountryListHidden:undefined,\"isDetectionRejectionTypeEnabled\" in locals_for_with?locals_for_with.isDetectionRejectionTypeEnabled:typeof isDetectionRejectionTypeEnabled!==\"undefined\"?isDetectionRejectionTypeEnabled:undefined,\"isDisapproved\" in locals_for_with?locals_for_with.isDisapproved:typeof isDisapproved!==\"undefined\"?isDisapproved:undefined,\"reasons\" in locals_for_with?locals_for_with.reasons:typeof reasons!==\"undefined\"?reasons:undefined,\"showRequestExceptionLink\" in locals_for_with?locals_for_with.showRequestExceptionLink:typeof showRequestExceptionLink!==\"undefined\"?showRequestExceptionLink:undefined,\"title\" in locals_for_with?locals_for_with.title:typeof title!==\"undefined\"?title:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (AssociatedExperiment, actionLink, deliveryStatus, expDateUtils, i18n, percentSymbol, statusForCombinedPopup) {pug_mixins[\"experimentInfo\"] = pug_interp = function(){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cp\\u003E\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_Status_Long_' + AssociatedExperiment.Status)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\\u003C\\u002Fp\\u003E\\u003Cp\\u003E\\u003Cdiv\\u003E\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_DeliveryStatus_StartDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = expDateUtils.reformatDate(AssociatedExperiment.StartDate)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv\\u003E\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_DeliveryStatus_EndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = expDateUtils.reformatDate(AssociatedExperiment.EndDate)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fp\\u003E\\u003Cdiv\\u003E\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_DeliveryStatus_Split')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = AssociatedExperiment.TrafficSplitPercent) ? \"\" : pug_interp)) + (pug.escape(null == (pug_interp = percentSymbol) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n};\nif ((deliveryStatus === 'ExperimentInfo')) {\npug_mixins[\"experimentInfo\"]();\n}\nelse\nif ((statusForCombinedPopup.indexOf(deliveryStatus) > -1)) {\npug_html = pug_html + \"\\u003Cp\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_DeliveryStatus_' + deliveryStatus)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fp\\u003E\\u003Chr\\u003E\";\npug_mixins[\"experimentInfo\"]();\n}\nelse {\npug_html = pug_html + (null == (pug_interp = i18n.getString('Experiment_DeliveryStatus_' + deliveryStatus) || i18n.getString(`Message_DeliveryStatus_${deliveryStatus}`, {actionLink: actionLink})) ? \"\" : pug_interp);\n}}.call(this,\"AssociatedExperiment\" in locals_for_with?locals_for_with.AssociatedExperiment:typeof AssociatedExperiment!==\"undefined\"?AssociatedExperiment:undefined,\"actionLink\" in locals_for_with?locals_for_with.actionLink:typeof actionLink!==\"undefined\"?actionLink:undefined,\"deliveryStatus\" in locals_for_with?locals_for_with.deliveryStatus:typeof deliveryStatus!==\"undefined\"?deliveryStatus:undefined,\"expDateUtils\" in locals_for_with?locals_for_with.expDateUtils:typeof expDateUtils!==\"undefined\"?expDateUtils:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"percentSymbol\" in locals_for_with?locals_for_with.percentSymbol:typeof percentSymbol!==\"undefined\"?percentSymbol:undefined,\"statusForCombinedPopup\" in locals_for_with?locals_for_with.statusForCombinedPopup:typeof statusForCombinedPopup!==\"undefined\"?statusForCombinedPopup:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_html = pug_html + \"\\u003Cspan class=\\\"no-reject-reason-found\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('NoRejectionReasonFound')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (deliveryStatus, i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"description-text bold margin-zero\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_BidLandscape_Disabled_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"description-text margin-zero\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Campaign_BidLandscape_Disabled_Desc_'+deliveryStatus)||i18n.getString('Campaign_BidLandscape_Disabled_Desc')+i18n.getString('Label_DeliveryStatus_' + deliveryStatus)) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"deliveryStatus\" in locals_for_with?locals_for_with.deliveryStatus:typeof deliveryStatus!==\"undefined\"?deliveryStatus:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (actionLink, deliveryStatus, i18n, reasonid) {pug_html = pug_html + \"\\u003Ctable\" + (\" class=\\\"reasonDiv\\\"\"+pug.attr(\"id\", reasonid, true, true)) + \"\\u003E\\u003Ctr\\u003E\\u003Ctd class=\\\"reason\\\"\\u003E\\u003Cdiv\\u003E\";\nif (deliveryStatus === '') {\npug_html = pug_html + \"\\u003Cdiv class=\\\"gridPopup-reasonList\\\"\\u003E\" + (null == (pug_interp = i18n.getString('NoRejectionReasonFound')) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"gridPopup-reasonList\\\"\"+pug.attr(\"data-delivery-status\", deliveryStatus, true, true)) + \"\\u003E\" + (null == (pug_interp = i18n.getString(`Message_DeliveryStatus_${deliveryStatus}`, {actionLink: actionLink})) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftable\\u003E\";}.call(this,\"actionLink\" in locals_for_with?locals_for_with.actionLink:typeof actionLink!==\"undefined\"?actionLink:undefined,\"deliveryStatus\" in locals_for_with?locals_for_with.deliveryStatus:typeof deliveryStatus!==\"undefined\"?deliveryStatus:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"reasonid\" in locals_for_with?locals_for_with.reasonid:typeof reasonid!==\"undefined\"?reasonid:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv id=\\\"rejectionContainer\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group clearfix\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 text-right\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"apply-option\\\" id=\\\"update-original\\\"\"+pug.attr(\"checked\", (model.selectedItem === 'update-original'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 radioInput\\\"\\u003E\\u003Clabel class=\\\"type-normal\\\" for=\\\"update-original\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Title') + ' ') ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 col-sm-offset-1\\\"\\u003E\\u003Cspan style=\\\"word-break: break-word;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Description').split('{{name}}')[0]) ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.experimentName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_UpdateOriginalCampaign_Description').split('{{name}}')[1]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row clearfix\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 text-right\\\"\\u003E\\u003Cinput\" + (\" type=\\\"radio\\\" name=\\\"apply-option\\\" id=\\\"convert-to-new\\\"\"+pug.attr(\"checked\", (model.selectedItem === 'convert-to-new'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11\\\"\\u003E\\u003Clabel class=\\\"type-normal\\\" for=\\\"convert-to-new\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-11 col-sm-offset-1\\\"\\u003E\\u003Cspan style=\\\"word-break: break-word;\\\"\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[0]) ? \"\" : pug_interp) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[1]) ? \"\" : pug_interp) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.originalCampaignName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (null == (pug_interp = i18n.getString('Experiment_ConvertToNewCampaign_Description').split('{{name}}')[2]) ? \"\" : pug_interp) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {var i18n = view.i18n\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\" style=\\\"word-break: break-word;\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description1').split('{{name}}')[0]) ? \"\" : pug_interp)) + \"\\u003Cb\\u003E\" + (pug.escape(null == (pug_interp = view.experimentName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fb\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description1').split('{{name}}')[1]) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"row\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Experiment_EndDialog_Description2')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\nvar isCreation = model.status === 'Creating' || model.status === 'CreationFailed'\nvar isPromoted = model.status === 'Promoting' || model.status === 'Promoted' || model.status === 'PromoteFailed'\nvar isGraduated = model.status === 'Graduating' || model.status === 'Graduated' || model.status === 'GraduateFailed'\nvar isEnded = model.status === 'Ended'\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-default apply-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated), true, true)+pug.attr(\"value\", i18n.getString('Experiment_UseExperimentSettingsIn'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default end-experiment\\\"\"+\" type=\\\"button\\\" style=\\\"margin-left: 10px;\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated || isEnded), true, true)+pug.attr(\"value\", i18n.getString('Experiment_EndNow'), true, true)) + \"\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (model, view) {var i18n = view.i18n\nvar isCreation = model.status === 'Creating' || model.status === 'CreationFailed'\nvar isPromoted = model.status === 'Promoting' || model.status === 'Promoted' || model.status === 'PromoteFailed'\nvar isGraduated = model.status === 'Graduating' || model.status === 'Graduated' || model.status === 'GraduateFailed'\nvar isEnded = model.status === 'Ended'\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"btn btn-primary apply-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated), true, true)+pug.attr(\"value\", i18n.getString('Experiment_UseExperimentSettingsIn'), true, true)) + \"\\u003E\\u003Cinput\" + (\" class=\\\"btn btn-default end-experiment\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"disabled\", (isCreation || isPromoted || isGraduated || isEnded), true, true)+pug.attr(\"value\", i18n.getString('Experiment_EndNow'), true, true)) + \"\\u003E\";}.call(this,\"model\" in locals_for_with?locals_for_with.model:typeof model!==\"undefined\"?model:undefined,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["getColumnConversions","columnConfigs","chain","map","_ref3","targetColumnName","name","columnConversion","compact","object","value","buildColumnConversions","columnConversionsMetadata","conversionsMap","pairs","_ref","_ref2","_slicedToArray","sourceColumnName","buildColumnConversionsMap","applyColumnConversions","columnNames","columnName","result","buildSortingConversions","applySortingInfoConversion","_ref4","savedSortableHeader","sortableHeader","savedOrderbyInfo","orderbyInfo","res","_objectSpread","isObject","isString","isEmpty","sortableConversionInfo","find","_ref5","targetSortableProperty","_sortableConversionIn","_sortableConversionIn2","sourceSortableProperty","isArray","cloneDeep","each","orderByItem","key","buildColumnAndSortingConversions","partialConversionPairs","Conversions","CPA","ConversionRate","AllConversionCPA","AllConversions","AllConversionRate","ViewThroughConversionsCPA","ViewThroughConversionsRate","ViewThroughConversions","RepeatRate","applyPartialConversionColumnName","names","arguments","length","undefined","_permission$dynamic","dynamic","IsPartialConversionsEnabled","PartialConversions","IsColumnConversionEnabled","ColumnConversion","ColumnConversionEnabledFeatures","summary_tab_campaign","summary_tab_keyword","summary_tab_ad_group","summary_tab_ad","AdExtensionsGrid","DimensionsGrid","PerformanceGrid","perfMetricColumnConvertion","_defineProperty","concat","perfMetricColumnConvertionDef","getColumnsConversionMap","featureName","permissions","biColumnNames","_toConsumableArray","IsViewThroughConversionEnabled","IsViewThroughConversionsRevenueEnabled","_permissions$dynamic","usePartialConversions","rawConversionColumns","push","generateConversionColumns","pick","Permissions","updateEntitySchemaForSOV","originalSchema","schema","putil","_","performanceMetrics","performanceMetricsProperties","propsToAdd","filter","propName","sovcolumn","schemaName","schemaNameWhiteList","propNameBlackList","IsAvgPositionDeprecationPhase1Enabled","isFilterable","filterable","union","prop","FeatureName","customColumnPreference","propsToDelete","globalConfig","pilotFlagMapping","Account","Campaign","AdGroup","Ad","AdExtensionAssociation","Keyword","SearchTerm","summaryTabMapping","excludedFeatures","updateEntitySchemaForRemovedPerformanceMetrics","expression","property","enableForAudienceSOVFeatures","IsAudienceSOVEnabled","audienceSOVMetrics","columnsToAdd","audienceSOVMetric","properties","PerformanceMetrics","initialize","options","get","initializeSOV","_ref$featureName","customColumnPref","initializeCustomColumn","alias","legacy","isDeletedProperty","format","type","nullable","initializeAveragePosition","initializeAudienceSOV","getFeaturePermissionByPropertyName","propertyName","toLowerCase","IsEnhancedShoppingCampaignAllowed","IsDynamicSearchAdsV1Enabled","IsAIMCampaignEnabled","IsCampaignMultipleLanguageEnabled","IsAudienceGridNewColumnsSupported","IsExperimentsEnabled","IsAdsByBingEnabled","IsManualCpmEnabled","IsVideoAdsForCampaignEnabled","IsVideoAdsPerfMetricsEnabled","updateEnumValueSets","entityName","disabledTargets","disabled","enumValueSets","IsSmartCampaignPhase2Enabled","HotelCampaign","PerformanceMaxCampaigns","IsCampaignTargetROASBidStrategyEnabled","IsNewCampaignTargetROASBidStrategyEnabled","IsMaximizeConversionValueEnabled","IsSmartShoppingCampaignEnabled","IsTargetImpressionShareEnabled","IsCostPerSaleEnabled","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","IsAdsGlobalizationPhase6Enabled","IsAdsGlobalizationPhase2JapanEnabled","IsAdsGlobalizationPhase9Enabled","IsAdsGlobalizationPhase9VIEnabled","target","removeEnumArray","schemaCopy","enum","removeEnumValuesFromProperty","updateFilterableForExtraPerformanceMetrics","metricNameArray","isEnabling","enableFilterForPilotedPerformanceMetrics","pilotName","PARTIAL_CONVERSIONS_ENABLED_ENTITIES","updateEntitySchemaForPartialConversions","isPartialConversionsEnbled","isColumnConversionEnabled","enabledEntity","useNewParameters","filterableArray","hasFilterableArray","propertyNameToDisable","propertyNameToEnable","propertyToDisable","propertyToEnable","isDisablePropFilterable","isEnablePropFilterable","difference","updatePerformanceMetricsForPartialConversions","updateEntitySchemaForPilotFeatures","isForVNext","filterExpressions","enableAvgPositionDeprecation","IsCustomColumnFilterSupported","indexOf","summaryTab","customColumnData","CustomColumnServiceWrapper","getCustomColumnPreferenceName","CustomColumns","getCustomColumnPreferenceStore","getAll","customColumn","id","isInvalidProperty","isValidForFeature","title","filterExpression","SelectedColumn","startsWith","split","updateEntitySchemaForCustomColumn","AvailableInsightTypeIds","$ref","enumType","chooseType","operators","enableAndUpdateFilterForAvailableInsightTypeIds","scopeable","isInPilot","isAccountScope","campaignProperty","isExperimentProperty","enableForExperimentFeature","isAllowedEntity","bidStrategyNameProperty","enableForPortfolioBidStrategyFeature","enableForViewThroughConversionsFeature","enableForConversionValueRuleFeature","updateEntitySchemaForMainGoalSelectionFeature","pilotProperty","updateEntitySchemaForVideoAdsFeature","updateEntitySchemaForAppCampaign","updateEntitySchemaForCPS","updateEntitySchemaForInstallColumns","propertyNameArray","enableFilterForPilotProperties","i18n","appendPeriodOverPeriodProperties","entitySchema","popPrefix","biPattern","biReplacePattern","biTitlePrefix","customColumnStr","propObj","test","isCustomColumn","originalProperty","propKey","unlocalized","originalTitle","replace","isPercentValue","minimum","maximum","appendPopProperties","propCopy","getString","addCampaignTypePropertyForFilter","_ref$property","campaignTypeNotSupported","isHotelCampaignEnabled","isPerformanceMaxEnabled","isLinkedInCampaignEnabled","IsRenameHotelToLodgingEnabled","toExtended","CampaignType","enumValueMap","mapEnumValueForFilter","enumValue","DeliveryStatusToCategoryMap","Eligible","New","AdGroupAudienceAssociationPaused","AdGroupAudienceAssociationExcluded","AdGroupCriterionPaused","AdGroupCriterionExcluded","DSAAutoTargetProcessing","EditorialApprovedLimited","EditorialApprovedLimitedAppealRejected","LowSupply","LowQuality","NegativeKeywordConflicts","PartialNegativeKeywordConflicts","DSAAutoTargetNegativeTargetConflict","DSAAutoTargetBelowFirstPageBid","BidBelowFirstPageBid","BudgetSuggestions","AutoBiddingLimitedByNotEnoughRevenue","AutoBiddingLimitedByNotEnoughConversions","AutoBiddingLimitedInventoryLimit","AutoBiddingLimitedMaxCPCRestriction","AutoBiddingLimitedBudgetRestriction","AutoBiddingLimitedUnAttainableTarget","AutoBiddingPortfolioBidStrategyTrainingStatus","AutoBiddingLearning","CampaignInReview","CPSInsufficientConversions","CPSAttributionBroken","CreditCardExpired","IOExceeded","PaymentInformationMissing","InvalidFinancialStatusOther","CampaignSuspended","CampaignBudgetPaused","DomainLanguageNotSupported","AdGroupExpired","AssetGroupExpired","EditorialRejected","EditorialAppealRejected","CampaignDeleted","StoreIdNotAssociated","ShoppingCampaignStoreNotFound","ShoppingCampaignNoOffersPresent","AdGroupTargetingTooNarrow","CampaignInProgress","CampaignUserPaused","AssetGroupUserPaused","AdGroupUserPaused","AdGroupDraft","AdUserPaused","EditorialPending","AdGroupPrivacyPending","AssociationDeleted","KeywordUserPaused","EditorialUnderAppeal","UrlInvalid","ApplicationNotFound","ApplicationDestinationUrlMismatch","PendingMetadataSync","ProductTargetUserPaused","AdExtensionDeleted","AdExtensionAssociationDeleted","AdNotPresent","AdNotActive","NoEligibleAdGroups","NoEligibleAds","NoEligibleKeywords","DSAAutoTargetUserPaused","DSAAutoTargetNoMatchingLandingPage","CPSNonRetailDomain","AudienceTooNarrow","LinkedInAccountServingHold","LinkedInCompanyPagePaidMediaRequired","updateDeliveryStatusPropertyForFilter","enumSet","deliveryStatusProperty","DeliveryStatus","_getDeliveryStatusCat","groupedItems","enumSetToUse","localized","categoryEnumValuesMap","enumValues","category","mappedValues","categoryName","itemLocalized","items","getDeliveryStatusCategoryForFilter","updateAdExtensionAssociationSourcePropertyForFilter","SourceType","sortable","schemaI18nCampaign","cacheService","dataContextManager","jsdata","edm","scope","wrapFilterExpression","secondLogic","buildLabelFilter","operator","wrapFilter","customerLevelLabelEnabled","label","newValue","JSON","parse","Id","Scope","getLabel","secondaryOperator","lambdaConvertForLabels","logic","values","url","wrapInnerFilter","index","updateEntitySchemaForLabels","entitySchemaCopy","Labels","operatorDisplayNameMap","containsall","containsany","containsnone","addtionalParams","dataSource","LabelsDataSource","templates","nameTemplate","labelNameTemplate","updateOdataOptionsForLabels","optionsCopy","custom","updateAuctionInsightPropertyForFilter","hasAuctionInsightOption","eq","true","false","BaseSchemaProcessor","_createClass","_classCallCheck","initializeDeliveryStatus","initializeLabels","initializePop","initializeAuctionInsight","initializeExperiment","initializeAdsByBing","this","passedInI18n","isAccountLabelsEnabled","IsAccountLabelsEnabled","odataOptions","val","op","updateOdataOptionsForMultiplied","lambdaConvertForArrayTypes","languageI18n","s$AdGroup","LanaguageDataSource","languages","Language","unshift","IsSimplifiedChineseLanguageEnabledInMultipleLanguage","IsDomesticSimplifiedChineseEnabled","language","Name","getLanguagesItems","_viewFilter","searchFilter","Promise","searchFilterLowerCase","languagesToReturn","lambdaConvertForAvailableInsightTypeIds","baseEntitySchemaForAvailableInsightTypeIds","updateEntitySchemaForAvailableInsightTypeIds","_TL_","updateOdataOptionsForAvailableInsightTypeIds","contains","updateStatusPropertyForFilter","statusProperty","Status","deleteIndex","splice","CampaignSchemaProcessor","_BaseSchemaProcessor","_this","initializeCampaignLanguages","initializeAvailableInsightTypeIds","_callSuper","newI18n","isFromCampaignGrid","_inherits","updatedSchema","_superPropGet","deliveryStatusEnumSet","idx","slice","AutoBiddingStrategies","LinkedInCampaigns","Languages","selectorOptions","keyMap","Selector_Filter_Placeholder","updateEntitySchemaForCampaignLanguages","item","SeasonalityAdjustment","DataExclusion","XandrVideoCampaigns","XandrDisplayAdsCampaigns","biddingStrategyType","DisplayBiddingStrategyType","DisplayBiddingStrategyTargetCpa","DisplayBiddingStrategyTargetRoas","DisplayBiddingStrategyTargetImpressionShare","AppAdsCampaignPhaseOne","DisplayBiddingStrategyManualCpi","UnifiedAppAds","DisplayBiddingStrategyManualCpc","IsPersonalizedOffersEnabled","CampaignCashbackPercent","required","IsPersonalizedOffersV2Enabled","IsPersonalizedOffersV3Enabled","CampaignCashbackMonthlyBudget","CampaignCashbackScope","Coupon","IsOptimizationScoreInCampaignsGridEnabled","OptimizationScore","campaignType","CampaignLifetimeBudget","LifetimeBudget","BudgetAmount","updateOdataOptionsForCampaignLanguages","IsExperiment","filterValues","queryStr","join","AdGroupSchemaProcessor","CampaignName","_this$Permissions","cpcbid","CpcBid","SearchBid","cpmbid","CpmBid","cpvbid","CpvBid","adgroupLanguageProperty","_this$Permissions2","null","campaignStatusProperty","CampaignStatus","StartDate","EndDate","AdGroupCashbackPercent","AdGroupCashbackScope","IsDSAMixedModeCampaignEnabled","adGroupTypeProperty","AdGroupType","includes","updateEntitySchemaForTrackingUrlTemplate","TrackingUrlTemplate","lambdaConvertForFinals","contain","formalizedValues","updateEntitySchemaForFinalUrls","FinalUrls","MobileFinalUrls","updateOdataOptionsForFinalUrl","doesnotcontain","updateEntitySchemaForFinalURLSuffix","FinalUrlSuffix","updateEditorialRejectionReasonForFilter","enableEditorialRejectionFilter","editorialRejectionFlagId","EditorialRejectionFlagId","editorialRejectionDate","EditorialRejectionDate","updateEntitySchemaForIsAppealPending","IsAppealPending","KeywordSchemaProcessor","initializeIsAppealPending","AdGroupName","AppealUpheld","adgroupStatusProperty","AdGroupStatus","EditorialStatus","matchTypesToExclude","isPredictiveTargetingEnabled","RSABidStrategyAutoTargeting","isPredictiveMatchingEnabled","PredictiveMatching","MatchType","apply","getParameter","parameters","isPinned","pinnedPosition","performanceRating","assetText","updateEntitySchemaForAssetId","updateOdataOptionsForAssetId","modelName","imageProcessors","videoProcessors","AdSchemaProcessor","initializeAssetId","adStrengthProperty","AdStrength","updateAdStrengthPropertyForFilter","adTypeNotSupported","IsUserAppInstallAdsAllowed","IsMultiMediaAdsEnabled","Type","HeadlinesAssetId","localize","_getParameter","updateEntitySchemaForHeadlinesAssetId","DescriptionsAssetId","_getParameter2","updateEntitySchemaForDescriptionsAssetId","hasAdsByBingOption","updateAdsByBingPropertyForFilter","adType","IsGoogleImportVideoAdsEnabled","adResourceStatusSchema","AdResourceStatusId","updateAdResourceStatusForFilter","PerformanceMetricsAverageCPM","NegativeKeywordSchemaProcessor","Text","CampaignIsExperiment","AdGroupCriterionSchemaProcessor","CriterionCashback","statusEnum","statusEnumValueMap","ExperimentSchemaProcessor","campaignIsExperimentProperty","AssetLinkSchemaProcessor","updatedEntitySchema","_this$scope$values","adSubType","EditorialStatusEnumMap","showAssetBasedEditorial","AssetBasedEditorialForRSA","AssetBasedEditorialForAIM","UiDisplayStatus","AssetAssetSource","AssociationType","AudienceAssetReport","AssetWithBIDataSchemaProcessor","state","_this2","campaignId","_this$Permissions$dyn","MMAAssetReportAccountLevel","AssetGridForPmaxCampaign","SearchAssetConversionColumn","AssetEditorialStatus","defaults","AssetIsBlocked","PinnedBitmask","ResponsiveSearchAdInstanceSchemaProcessor","IsResponsiveSearchAdCombGridEnabled","BaseCriterionSchemaProcessor","filterProperties","filterList","Criterion","isof","updateOdataOptionsForCriterionType","LevelOfDetails","enmu","updateOdataOptionsForLevel","DayTimeCriterionSchemaProcessor","_BaseCriterionSchemaP","updateOdataOptionsForDayTimeCriterionDay","DeviceCriterionSchemaProcessor","updateOdataOptionsForDeviceCriterionDeviceName","LocationCriterionSchemaProcessor","locationNameOption","CriterionWebpageParameterCriterionName","AudienceCriterionWithBISchemaProcessor","IsProductAudienceForSearchEnabled","IsCustomAudienceAllowed","IsCombinedListAudienceAllowed","IsInMarketAudienceAllowed","IsRemarketingSimilarAudienceAllowed","IsCustomerListAudienceAllowed","propWhitelist","mapObject","EnableImpressionBasedList","AudienceCriterionAudienceId","skipLocalization","audienceTypeProperty","AudienceCriterionAudienceType","AudienceCriterionCashbackAdjustment","ProductSchemaProcessor","MPNProperty","MPN","IsProductsTabV2Enabled","titleProperty","Title","PerformanceMetricsViewThroughConversions","PerformanceMetricsViewThroughConversionsRevenue","PerformanceMetricsViewThroughConversionsCPA","PerformanceMetricsViewThroughConversionsReturnOnAdSpend","PerformanceMetricsViewThroughConversionsRate","PerformanceMetricsQuantityBought","conditionProperty","Condition","channelProperty","Channel","channelExclusivityProperty","ChannelExclusivity","Array","condition","formatFilterValue","channel","channelExclusivity","AudienceSchemaProcessor","IsCustomerHierarchyEnabled","IsNewAudienceEnabled","IsSharedLibraryPhase1Enabled","trackingStatusField","TrackingStatus","any","AudienceTrackingStatus","OwnerName","OwnerNumber","GMBImportSchemaProcessor","CompanyName","SearchTermSchemaProcessor","supportedTypes","duplicatedString","CampaignCampaignType","updatedEnumValueMap","IsSearchTermCloseVariantMatchTypeEnabled","deletingNewEnumItem","DeliveredMatchTypeWithCloseVariant","deletingEnumItem","DeliveredMatchType","getAccountInactiveReasonsContainsQuery","valueArr","getAccountInactiveReasonsDoesNotContainQuery","BaseAccountsSchemaProcessor","_ref$allowBiPattern","allowBiPattern","getAdditionalSchemaProperties","overridenProperties","AccountType","getOverridenSchemaProperties","Object","assign","TSTMasterDataMissingNotification","AccountInactiveReasons","updateEntitySchemaForAccountInactiveReasons","updateOdataOptionsForAccountInactiveReasons","PerformanceSchemaProcessor","_BaseAccountsSchemaPr","InsertionOrderDetailsCurrentInsertionOrderEndDate","InsertionOrderDetailsCurrentInsertionOrderStartDate","SmartPerformanceSchemaProcessor","PerformanceMetricsAverageCPC","PerformanceMetricsTopImpressionRate","PerformanceMetricsAbsoluteTopImpressionRate","PerformanceMetricsAuctionWonPercent","PerformanceMetricsAuctionLostToBudgetPercent","PerformanceMetricsAuctionLostToRankPercent","PerformanceMetricsAudienceAuctionWonPercent","PerformanceMetricsAudienceTopISLostToBudgetPercent","PerformanceMetricsAudienceTopISLostToRankPercent","PerformanceMetricsClickSharePercent","PerformanceMetricsExactMatchImpressionSharePercent","PerformanceMetricsAbsoluteTopImpressionSharePercent","PerformanceMetricsTopImpressionSharePercent","PerformanceMetricsTopISLostToBudgetPercent","PerformanceMetricsTopISLostToRankPercent","PerformanceMetricsAbsoluteTopISLostToBudgetPercent","PerformanceMetricsAbsoluteTopISLostToRankPercent","PerformanceMetricsAllConversions","PerformanceMetricsAllConversionCPA","PerformanceMetricsAllConversionRate","PerformanceMetricsAllConversionAdvertiserReportedRevenue","PerformanceMetricsAllConversionRevenueOnAdSpend","PerformanceMetricsRevenueOnAdSpend","PerformanceMetricsAdvertiserReportedRevenue","ManagementSchemaProcessor","IsChinaMarket","CNMarketExpansion","isChinaMarket","additionalProperties","CBTLifetimeBudget","aivStatusEnumValues","PaymentInstrumentType","in","AccountVerificationStatus","BusinessLegalName","intValue","AccountImportSchemaProcessor","LastImportInfoEntityIdsSpecified","TagSchemaProcessor","isOwnerFilterable","LinkedStoreSchemaProcessor","status","GoalSchemaProcessor","goalsI18n","IsMainConversionGoal","ViewThroughConversionsCredit","propertyConversion","sourcePropertyType","sourcePropertyName","extend","CampaignTypesDataSource","disableSearch","campaignTypes","typesToReturn","DeviceTypesDataSource","deviceTypes","SeasonalityAdjustmentSchemaProcessor","CampaignTypeFilter","DeviceTypeFilter","DataExclusionSchemaProcessor","_SeasonalityAdjustmen","AdjustmentPercentage","SharedBudgetSchemaProcessor","IsAvgPositionDeprecationPhase2Enabled","propertyList","SharedBudgetCampaignSchemaProcessor","SelAccountLevelListsGridSchemaProcessor","entityNameProperty","EntityName","sharedEntityCustomerIdProperty","SharedEntityCustomerId","SelCustomerLevelAssociationsGridSchemaProcessor","sharedEntityNameProperty","SharedEntityName","listItemCountProperty","ListItemCount","sharedEntityCustomerNameProperty","SharedEntityCustomerName","DeviceTypeLocalizeMap","HotelCenterOverviewSchemaProcessor","_updatedSchema$proper","BidAmount","DeviceType","PartnerHotelId","EnumValue","_updatedSchema$proper2","Clicks","Impressions","CTR","Spend","AverageCPC","AveragePosition","fieldMap","PortfolioBidStrategySchemaProcessor","AssetGroupSchemaProcessor","SupportCPSForPmax","PmaxAssetLinkSchemaProcessor","UnifiedAdsAssetLinkSchemaProcessor","AppAdsAssetGroupSchemaProcessor","featureToSchemaProcessorMapping","AutomatedRuleKeywordGrid","AutomatedRuleAdgroupGrid","AutomatedRuleAdGrid","KeywordGrid","AdgroupGrid","AdGrid","AdScheduleGrid","LocationsGrid","ExcludedLocationsGrid","DevicesGrid","campaignNegativeKeywordGrid","adgroupNegativeKeywordGrid","ExperimentsGrid","RSAAssetsGrid","AssetsReportGrid","RSACombinationsGrid","AudienceAssociationGrid","AudienceGrid","ProductGrid","GmbImportV2","SearchTermGrid","SmartPerformanceGrid","ManagementGrid","ImportGrid","UETTagsGrid","LinkedStoreGrid","ConversionGoalsGrid","SharedBudgetSummaryGrid","SharedBudgetEditGrid","AccountLevelListGrid","CustomerLevelEditAccountsGrid","HotelCenterOverviewGridHotelSubAccountGrid","HotelCenterOverviewGridHotelGroupGrid","HotelCenterOverviewGridHotelIdGrid","HotelCenterOverviewGridHotelDeviceTypeGrid","HotelCenterOverviewGridHotelDateGrid","HotelCenterOverviewGridHotelLengthOfStayGrid","HotelCenterOverviewGridHotelUserCountryGrid","HotelCenterOverviewGridHotelSlotTypeGrid","HotelCenterOverviewGridHotelCountryGrid","HotelCenterOverviewGridAdvancedBookingGrid","HotelCenterOverviewGridCheckinDayGrid","HotelCenterOverviewGridDateTypeGrid","HotelCenterOverviewGridSiteTypeGrid","SeasonalityAdjustmentGrid","DataExclusionGrid","AssetGroupGrid","AppAdsAssetGroupGrid","PmaxAssetGrid","UnifiedAdsAssetGrid","getWaterfallFilterStoreVNext","filterKeys","preferenceService","waterfallFilterStorage","WaterfallFilterStorage","waterfallFilters","getFilters","filters","filterKey","i","query","WaterfallFilterType","$and","filterObj","mergeFilters","getCommonFilterConfig","schemaProcessor","searchbox","editor","selector","_ref$enableCampaignWa","enableCampaignWaterfall","_ref$enableAdGroupWat","enableAdGroupWaterfall","_ref$enableAvgPositio","_ref$allowCampaignSta","allowCampaignStatusWaterfall","_ref$allowCampaignTyp","allowCampaignTypeWaterfall","_ref$enableEditorialR","cachedEntitySchema","_ref$filterExpression","sessionStore","preferenceStoreFactory","legacyGlobalI18n","_ref$getLegacySaved","getLegacySaved","_ref$updatePilot","updatePilot","_ref$odata","odata","ignoreCase","extraPerformanceColumns","disabledPerformanceColumns","schemaConfigOptions","initializeCommonFilterConfig","disableFilterForExtraPerformanceMetrics","campaignGridFilterStore","adgroupFilterStore","enabled","waterfallFilterTypes","baseConfig","schemaI18n","SchemaI18n","maxSavedFilterLimit","storageFactory","FilterStorageFactory","waterfallFilterStores","waterfallEvent","schemaProcessorCopy","updateEntitySchemaForFeatures","bind","updateOdataOptions","odataOptionsProcessor","isComparingEnabled","window","App","compared","GENERAL_INSIGHTS_PREFERENCES","FEATURE_NAME_GENERAL_INSIGHTS","FEATURE_NAME_GENERAL_INSIGHTS_SHOPPING","CAMPAIGN_TYPES","Search","Shopping","CAMPAIGN_TYPES_ENUM_VALUE","METRIC_PREFERENCE_KEY_NAME","GENERAL_INSIGHTS_FEATURE_NAMES","getGeneralInsightsPreferences","preferencesService","sessionData","findByNameAtUserLevel","saveGeneralInsightsPreferences","data","Data","merge","setAtUserLevel","mockedTags","TrackingCode","IsPreferredTag","Owner","Number","PageMenu","_React$PureComponent","props","perfMarker","isDone","done","classes","_jsx","React","children","AccessibleTreeView","ariaLabel","nodes","treeNodes","treeViewClassNames","classNames","treeViewContainer","nodeChildRenderer","nodePaddingLeft","onChange","defaultProps","withDefaultStyles","pageMenu","_ref2$palette","palette","menuItem","_ref$palette","baseMenuItem","height","fontFamily","fontWeight","lineHeight","display","flexDirection","paddingLeft","paddingRight","border","textDecoration","color","backgroundColor","alignItems","textAlign","borderRadius","white","getButtonFocusOverrideStyle","neutralSecondary","normalMenuItem","neutralLight","selectedMenuItem","borderLeft","themePrimary","alignSelf","menuItemAnchor","width","marginTop","iconContainer","marginLeft","marginBottom","marginRight","fontSize","textContainer","overflow","textOverflow","flex","whiteSpace","typeSelectionIcon","margin","top","placeholderTextContainer","getUetTagItemStyles","position","overflowY","overflowX","maxHeight","background","statusIconContainer","labelContainer","TextSpanWithForwardedRef","node","forwardedRef","textContainerClassNames","className","ref","getNodeText","nodeUrl","location","processor","allowedKeys","params","QueryParam","append","tagId","pathname","stringify","getNodeUrl","nodeText","href","onClick","e","preventDefault","UetTagsTreeNodeWithTooltip","nodeClasses","GetNodeClassNames","iconContainerClassName","iconStatusClassName","uetTagStatusIcon","uetTagGlyphIcon","IsReadOnly","_jsxs","Button","save","btnStyle","Glyphicon","glyph","iconStyle","withScope","withOverflowProp","UetTagTreeNode","isPlaceholderNode","isLoadingData","rootNodeSpinnerContainer","StyledSpinnerWithLabel","rootPlaceholderNodeTextContainerClassName","UetTagTreeNodeChildRenderer","UetTagsPageMenuInternal","_React$Component","tags","siteMap","_this$props$scope$val","aid","scopeCid","cid","CurrentAccount","serverContext","edmCampaign","Customers","$withKey","Accounts","Tags","select","toPromise","then","tagResponse","resolve","getTags","AdvertiserCustomerID","response","Inactive","tag","sort","a","b","localeCompare","Unverified","Active","setState","_this3","uetTagsInTree","iconHidden","isSelected","hideFallback","_this4","getTreeNodesProps","style","borderRight","remove","queryParam","history","getRoutePathById","search","updateUrl","borderTop","borderBottom","outline","UetTagsPageMenu","withServerContext","withI18nConsumer","CustomColumnBackboneWrapper","_Backbone$View","onSave","onCancel","document","body","appendChild","el","ReactDOM","CustomColumnFormPanel","Backbone","DataSourceStore","Store","store","PopupCallout","close","view","off","on","placement","getBoundingClientRect","right","innerWidth","activeElement","onMouseLeave","Callout","onClose","show","popoverId","closeButton","focusLockContent","shouldUpdatePosition","ENTITY","AD","KEYWORD","CUSTOMIZERFEED","EXTENSION","ASSETGROUP","ASSET","CategoryFAID","CategoryFALink","Adult_General","Alcohol_General","Pharmacy_General","Adult_Porn_Adult_Entertainment","Adult_Illegal_Adult_Content","Political_Politicians","Disallowed_Content_Abortion","Mature_Content","Cryptocurrency","Birth_Control","Dating","Fertility_Treatment","Background_Checks","Payday_Loans","Penny_Stocks","Psychics","Tobacco_Image","Alcohol_Image","Unsubstantiated_Claim_Image","Tobacco_Category","Lingerie_Explicit","Sensitive_Health","Misinformation","Drug_Paraphanelia_Category","Sexual_Health_And_Erotica","Skin_Exposure","Ad_Functionality","Unbranded_Creative","End_Of_Life_Services","Tattoo_And_Piercings","Weapon_Accessories_And_Concealed_Permits","Spam","ENTITYToI18","AssetGroup","Extension","Asset","ENTITYPluralToI18","BLACKLIST","getDateUtils","reformatDate","datetime","substr","formatDate","Date","timeZone","shouldRepairGoogleImportVideoAd","CampaignSubType","Videos","asset","getViolationsFromCategoryFAIDMapping","editorialCategories","editorialCategorie","Categories","flatten","unique","Boolean","link","showRejectionReasons","_ref2$deliveryStatusD","deliveryStatusDetails","_ref2$actionLinks","actionLinks","entity","event","_ref2$useCustomTempla","useCustomTemplate","_ref2$isContextualAtt","isContextualAttributeForRecommendation","_ref2$isInlineDiagnos","isInlineDiagnosisForKeyword","getInlineDiagnosisForKeywordComponent","isSmartShoppingCampaignEnabled","getCustomTemplate","percentSymbol","_ref2$containerSelect","containerSelector","_ref2$popoverId","_ref2$afterRender","afterRender","config","instrumentation","inContextRepairRecommedationType","_ref2$isForAdsPageOnl","isForAdsPageOnly","_ref2$isEditorialCate","isEditorialCategoryEnabled","$","template","tableId","popupContentKey","keyVault","hoveringPopup","violations","EditorialCategories","detailsToShow","reasonCountToShow","Math","min","promises","activities","clickActivity","inContextRepairRecommendation","create","clickDeliveryStatus","hoverActivity","hoverDeliveryStatus","hoverPopupCalloutDurationActivity","popupManagement","hoverPopupCalloutDuration","bidlandscapeDisabled","bidlandscapeDisalbedTemplate","deliveryStatus","editorialCategoryTemplate","inActiveReasons","shift","ExperimentId","AssociatedExperiment","experimentTemplate","expDateUtils","actionLink","deliveryStatusUpdated","mapCampaignSpecificDeliveryStatus","mapDeliveryStatusForMMC","reasonTemplate","reasonid","noReasonFoundTemplate","getLogForInContextRepairRecommedation","mes","adId","adGroupId","CampaignId","AdGroupId","AdId","DeliveryStatusType","hoverPopupDurationStart","popupManager","forceAcquireLock","startSignal","renderPages","pages","page","container","contentView","contents","PagedContent","handlePaginationExternally","setPages","getContentView","once","contentViewReactWrapper","BackboneInstanceWrapper","instance","containerDOM","querySelector","content","releaseLock","stopSignal","newPage","trigger","$el","one","newPageContent","newPages","currentPage","eventObject","parent","trace","currentConent","DeliveryStatusPopupFactory","grid","getEventTargetModel","gridView","keyOfElement","itemWithKey","IsExperimentsOpenBetaEnabled","getEventTargetEntity","statusForCombinedPopup","DeliveryStatusDetails","EditorialComponent","None","KeywordParam1","KeywordParam2","KeywordParam3","AdTitleDescription","AdTitle","AdDescription","DisplayUrl","DestinationUrl","LandingURL","SiteDomain","BusinessName","PhoneNumber","AltText","Audio","Video","Flash","CAsset","Image","Destination","Order","OrderItem","Association","Script","getLocationString","commonI18n","locations","pow","getRejectionFooterText","isAppealable","isDisclaimerDisapproved","hideParentLevel","thisEntity","allEntitiesInThisAdGroup","allEntitiesInThisCampaign","allEntitiesInThisAd","requestExceptionForThisEntity","requestExceptionLink","requestExceptionForThisParentEntity","requestParentLevelExceptionLink","helpText","getRejectionStaticLinkFooterText","contactSupportLink","requestReviewText","getEditorialTemplates","reasons","errI18n","locationI18n","ad","keyword","isDetectionRejectionTypeEnabled","logActivity","hideLocation","updatedReasons","isXandrAd","isXandrServing","isAssetAppealEnable","AssetBasedEditorialInlineAppeal","isLinkedinAd","isLinkedInCampaign","isPmaxAppealEnable","PmaxAppealEnable","isAdExtensionInlineAppeal","AdExtensionInlineAppeal","showRequestExceptionLink","isCountryListEnabled","EditorialCountryList","signal","reason","reasonCode","ReasonCode","endReason","countries","violation","getEditorialErrorMessage","locationString","Location","violationCountry","LanguageToCountries","pluck","uniq","country","number","endtag","detectionType","DetectionMode","rejectionType","RejectionMode","isDisapproved","editorialTemplate","footer","isCountryListHidden","countryListLabel","isDeliveryStatusDisapproved","registerCountryListEvent","popupView","logContext","$target","$parent","hasClass","parentsUntil","$icon","removeClass","addClass","toggle","outerHTML","dependencyResolverHash","DependencyResolver","_Backbone$Model","translateOrderBy","orderByParams","orderBy","normalizeOrderBy","JSGridChartDataSource","_GridDataSource$JSDat","resource","chartData","loadingCallback","successCallback","errorCallback","_options","_resource","findAll","omit","offset","skip","limit","take","where","orderby","translateParams","updateChartData","raw","totalCount","GridDataSource","JSData","defaultAfterFindAll","__","attrs","connect","dataSourceConfig","dataQueryBuilder","logger","logActivityMarker","usingCacheManager","useJSGridChartDataSource","customDataSource","afterFindAllPromiseResolve","Error","originalQuery","callCount","queryParams","_ref$queryTransform","queryTransform","onStartQuery","isDFMCall","getQuery","_ref2$afterFindAll","afterFindAll","originalAfterFindAllInParams","_ref3$afterFindAll","originalAfterFindAllInConfig","resources","dfmData","dfmRawData","returnData","finalParams","querySchema","finalSchema","hasQuerySchema","hasFinalSchema","filterOptions","cacheBusterFlag","call","queryBuilder","QueryErrorFactory","errors","tooMuchDataError","originalAfterFindAll","err","Code","entityNameFilterType","memo","featureNameToEntityNameFilter","featureIdToFilterAlias","CampaignsGrid","newCampaign","campaignName","SelectedOperator","Values","defaultDateFormat","formatDateForUI","date","isUINext","pageContext","CurrentUser","CultureDateTimeFormat","ShortDatePattern","kendo","formatDateForMT","parseDateRangeToQuery","dateRange","startDate","start","endDate","end","getDateFromYearMonthDayDateString","dateString","parseDate","substring","getPerformanceComparisonPeriodDateText","datePickerStartDate","datePickerEndDate","experimentStartDate","experimentEndDate","_ref$pageContext","_ref$serverContext","parsedExpStartDate","parsedExpEndDate","existsAndIntersects","perfCompPeriodStartDate","perfCompPeriodEndDate","ApplyView","_DeterministicView","experimentName","originalCampaignName","selectedItem","DeterministicView","EndView","i18nMap","Experiment_UseExperimentSettingsIn","Experiment_Error_ExperimentStatusInvalid","Experiment_Error_EndedExperimentCannotBeChanged","Experiment_Error_undefined","Cancel","Save","Experiment_EndDialog_Title","Experiment_EndDialog_SaveButton","Experiment_EndDialog_Description1","Experiment_EndDialog_Description2","Experiment_ConvertToNewCampaign_Description","Experiment_ConvertToNewCampaign_Title","Experiment_UpdateOriginalCampaign_Description","Experiment_UpdateOriginalCampaign_Title","Experiment_EndNow","ExperimentActions","_len","args","_key","updateExperiment","requestBody","experimentEntity","observable","expItemFromEdm","patch","observer","next","handleExperimentUpdate","error","handleServerError","subscription","subscribe","set","uid","unsubscribe","alertHelper","AlertHelper","errorCode","showError","buildLegacyI18n","failFast","ExperimentName","BaseCampaignName","dialog","Dialog","setContent","buttons","text","class","getState","removeDialog","appendTo","showApplyDialog","showEndDialog","_this$props","_getPerformanceCompar","HelpPopup","topic","LabelRow","LabelColumn","SpanExperiment","SpanOriginal","TableFixedVnext","DecimalFormatter","borderCollapse","borderSpacing","verticalAlign","TrafficSplitPercent","MetricPicker","selected","others","onPick","minWidth","padding","metric","role","isInvalid","basicOptions","minimumFractionDigits","maximumFractionDigits","formatters","decimal","decimalFormatter","decimalWithSign","withSign","percent","percentFormatter","percentWithSign","TYPE","nameToType","typeToOp","formatValue","formatChangedValue","formatChangedPercent","getFormatter","COLORMAP","green","red","grey","black","getAnnotation","isSignificant","OverlayTrigger","overlay","Popover","MetricExperiment","ExperimentAggregatedValue","BaseAggregatedValue","PercentChange","IsSignificant","_getFormatter","isPositive","getColor","MetricOriginal","derivedStateFromProps","biData","metricsList","slots","TableScrollable","_this$state","slotsToDisplay","pickedMetric","onPickMetric","nextProps","prevState","Stroke","experimentActionsStyles","iconFontFamily","zIndex","Constants","ZIndexShellComponents","ModalBackDrop","neutralSecondaryAlt","boxShadow","outlineOffset","left","Experiment_ScoreCard_CookieBasedWarning","Experiment_ScoreCard_NonStatSigAnnotation","Experiment_ScoreCard_Split","Experiment_ScoreCard_Experiment","Experiment_ScoreCard_Original","Experiment_ScoreCard_PerformanceComparisonPeriod","ColumnName_Impressions","ColumnName_Clicks","ColumnName_CTR","ColumnName_Spend","ColumnName_AverageCPC","ColumnName_AveragePosition","ColumnName_Conversions","ColumnName_CPA","ColumnName_ConversionRate","ColumnName_ConversionValue","ColumnName_ROA","ColumnName_AllConversions","ColumnName_AllConversionCPA","ColumnName_AllConversionRate","ColumnName_AllConversionValue","ColumnName_AllConversionROA","ColumnName_Experiment","ColumnName_Campaign","ColumnName_Split","ColumnName_Status","ColumnName_StartDate","ColumnName_EndDate","ColumnName_Actions","ColumnName_TopImpressionRate","ColumnName_AbsoluteTopImpressionRate","ExperimentScoreCard","deps","experimentMetricsWhiteList","getExperimentMetricsWhiteList","ExperimentMetrics","experimentData","reject","reduce","ComparisonStartDate","dateFilter","RangeStartDate","ComparisonEndDate","RangeEndDate","experimentActions","showCookieBasedWarning","IsCookieBasedExperimentTypeEnabled","ExperimentType","experimentType","twoMonthsAgo","setMonth","getMonth","shouldCookieBasedWarningBeShown","maxWidth","paddingBottom","paddingTop","float","ExperimentScoreCard2","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","model","attr","escape","$$obj","pug_index0","$$l","rejectionReason","pug_index1","pug_index2","pug_mixins","block","attributes","isCreation","isPromoted","isGraduated","isEnded"],"sourceRoot":""}