{"version":3,"file":"static/js/application.async.landing~d9e17232.b1513a66.chunk.js","mappings":"maAEaA,EAAgB,SAAHC,GAAA,IAAAC,EAAAD,EAAME,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA,MAAQ,CAClD,kBAAmB,CACjBE,UAAW,SACXC,OAAQ,mBACRC,UAAW,IACXC,QAAS,eACTC,SAAU,IACVC,MAAO,mBAET,0BAA2B,CACzBA,MAAO,OACPC,OAAQ,qBAEV,4BAA6B,CAC3BC,SAAU,IACVF,MAAO,OAET,oCAAqC,CACnCG,WAAY,UAEd,+BAAgC,CAC9BC,UAAW,QACXJ,MAAO,OAET,oBAAqB,CACnBK,WAAY,GAEd,0BAA2B,CACzBC,YAAa,GACbC,YAAa,IAEf,mBAAiBC,EAAAA,EAAAA,GAAA,CACfC,aAAc,IACXC,EAAAA,EAAAA,oBAAmB,CAAEhB,QAAAA,KAE1B,kBAAmB,CACjBe,aAAc,GAEhB,wBAAyB,CACvBA,aAAc,IAEjB,EC3CYE,EAA2B,CACtC,gDAAiD,CAC/Cb,QAAS,OACTc,WAAY,UAEd,mDAAoD,CAClDd,QAAS,OACTc,WAAY,YAEd,wEAAyE,CACvEd,QAAS,OACTc,WAAY,YAEd,uFAAwF,CACtFC,WAAY,OAEd,mHAAoH,CAClHjB,OAAQ,WAEV,2FAA4F,CAC1FS,WAAY,OAEd,mEAAoE,CAClES,OAAQ,OACRhB,QAAS,OACTc,WAAY,SAEZ,WAAY,CACVG,WAAY,sBACZC,QAAS,aAGb,gCAAiC,CAC/BX,WAAY,GACZY,OAAQ,YClCCC,EAA0B,SAAH1B,GAAA,IAAME,EAAOF,EAAPE,QAASyB,EAAc3B,EAAd2B,eAAc,MAAQ,CACvE,2BAA4B,CAC1B,sCAAuC,CACrCZ,YAAa,GAEf,uBAAwB,CACtBF,WAAY,GAEd,oBAAqB,CACnBE,YAAa,GAEf,oBAAqB,CACnB,UAAW,CACTa,WAAW,GAADC,OAAK3B,EAAQ4B,kBAAiB,iBAG5C,6BAA8B,CAC5BF,WAAW,GAADC,OAAK3B,EAAQ6B,aAAY,eAEnC,oBAAqB,CACnB,UAAW,CACTH,WAAW,GAADC,OAAK3B,EAAQ8B,UAAS,iBAGpC,YAAa,CACX,UAAW,CACTJ,WAAW,GAADC,OAAK3B,EAAQ8B,UAAS,kBAItC,8BAA+B,CAC7BJ,WAAY1B,EAAQ+B,kBAEtB,sCAAuC,CACrCL,WAAY1B,EAAQgC,KAEtB,yDAA0D,CACxDzB,OAAQ,sBACR0B,MAAO,UACP7B,QAAS,eACTiB,WAAY,oBACZa,SAAU,OACVzB,WAAY,IACZW,OAAQ,OACRlB,OAAQ,QACRiC,SAAU,WACVC,MAAO,QACP9B,MAAO,OACP,YAAa,CACXgB,QAAS,aAGb,kCAAmC,CACjCX,WAAY,IAEd,WAAY,CACVsB,MAAOjC,EAAQgC,KAEjB,oCAAqC,CACnC5B,QAAS,eACTO,WAAY,QAEd,wCAAyC,CACvCP,QAAS,gBAEX,4BAA6B,CAC3BQ,YAAa,OAEf,gEAAiE,CAC/DU,QAAS,YAEX,yDAA0D,CACxDa,SAAU,WACVE,IAAK,OACLC,MAAO,OACPL,MAAO,UACPC,SAAU,OACVb,WAAY,qBAEd,uBAAwB,CACtB,uBAAwB,CACtBR,YAAa,eACb,cAAe,CACbO,OAAQ,KAGZ,sBAAuB,CACrBmB,WAAY,SACZN,MAAOjC,EAAQwC,eACf/B,WAAY,UAEd,qBAAsB,CACpBW,OAAQ,IAEV,qBAAsB,CACpBmB,WAAY,SACZN,MAAOjC,EAAQ6B,cAEjB,oCAAqC,CACnCU,WAAY,SACZN,MAAO,YAGX,mBAAoB,CAClBvB,UAAW,kBACXJ,MAAO,OACPmC,QAAS,gBACT1B,aAAc,OACdX,QAAS,OACTK,WAAY,IACZ8B,WAAY,OACZL,SAAU,OACV,UAAW,CACTO,QAAS,GAEX,qBAAsB,CACpBP,SAAU,OACVzB,WAAY,WAGhB,gBAAiB,CACfH,MAAO,OACP,wCAAyC,CACvCoC,UAAW,QAEb,sBAAuB,CACrBA,UAAW,GAEb,2BAA4B,CAC1B3B,aAAc,GAEhB,+BAAgC,CAC9BT,MAAO,mBACPc,OAAQ,MACRa,MAAOjC,EAAQ2C,aACfC,UAAW,cAGf,kCAAmC,CACjC/B,YAAa,GAEf,4BAA6B,CAC3B4B,QAAS,IACTrC,QAAS,eACTyC,cAAe,MACf,eAAgB,CACdjC,YAAa,GAEf,kBAAmB,CACjBkC,WAAY,IACZxC,MAAO,GACPF,QAAS,gBAEX,gCAAiC,CAC/B2C,EAAG,OACHC,EAAG,OACHC,WAAY,OACZ7C,QAAS,eACTgB,OAAQ,GACRd,MAAO,GACPmC,QAAS,EACTS,eAAgB,cAChB3C,OAAO,aAADoB,OAAe3B,EAAQmD,cAC7BC,gBAAiBpD,EAAQmD,aACzBE,aAAc,OAEhB,wBAAyB,CACvBN,EAAG,OACHC,EAAG,OACHC,WAAY,OACZ7C,QAAS,eACTgB,OAAQ,GACRd,MAAO,GACP4C,eAAgB,cAChB3C,OAAO,aAADoB,OAAe3B,EAAQwC,gBAC7BY,gBAAiB3B,EAAe6B,eAChCD,aAAc,OAEhB,uBAAwB,CACtB1C,WAAY,GAEd,sBAAuB,CACrBP,QAAS,WACT,UAAW,CACTA,QAAS,aAGb,4BAA6B,CAC3BqC,QAAS,EACT,aAAc,CACZlC,OAAQ,OACRa,OAAQ,GACRqB,QAAS,qBAIf,oBAAqB,CACnB7B,YAAa,GAEf,wBAAyB,CACvBR,QAAS,gBAEX,kBAAmB,CACjBE,MAAO,KAET,mBAAoB,CAClBK,WAAY,IACZE,YAAa,KAEf,2BAA4B,CAC1BF,WAAY,IACZ8B,QAAS,IACTnC,MAAO,kBACP,gCAAiC,CAC/BoC,UAAW,EACXT,MAAOjC,EAAQ+B,iBACfQ,WAAY,OACZL,SAAU,GACVb,WAAY,oBACZwB,cAAe,UAEjB,6BAA8B,CAC5BvB,QAAS,uBAEX,SAAU,CACRW,MAAOjC,EAAQwC,gBAEjB,8BAA+B,CAC7B5B,YAAa,EACbQ,OAAQ,GACRd,MAAO,GACPe,WAAY,oBACZY,MAAOjC,EAAQ6B,cAEjB,2BAA4B,CAC1BP,QAAS,uBAEX,sDAAuD,CACrDc,MAAO,OACPzB,WAAY,OACZP,QAAS,eACTsC,UAAW,GAGb,8EAA+E,CAC7E7B,YAAa,GACbuB,MAAO,QAET,mBAAoB,CAClBlB,WAAY,QAGhB,yBAA0B,CACxBd,QAAS,eACT,2BAA4B,CAC1BA,QAAS,OACTc,WAAY,SACZ,6CAA8C,CAC5CZ,MAAO,OACPiD,cAAe,MAKxB,ECtQYC,EAA2B,SAAH1D,GAAA,IAAAC,EAAAD,EAAME,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA0D,EAAA3D,EAAE4D,eAAAA,OAAc,IAAAD,EAAG,oBAAmBA,EAAA,MAAQ,CACnG,6CAA8C,CAC5C7C,YAAa,OAEf,6CAA8C,CAC5CG,aAAc,OAEhB,0CAA2C,CACzC+B,WAAY,MACZS,cAAe,OAEjB,mBAAoB,CAClBV,cAAe,SACfzC,QAAS,eAET,uBAAwB,CACtB0C,WAAY,MACZS,cAAe,OAEjB,mBAAoB,CAClBT,WAAY,QAGhB,mDAAoD,CAClDA,WAAY,OAEd,2BAA4B,CAC1Ba,UAAW,SACXzB,SAAU,OACVW,cAAe,SACfjC,YAAa,MAEb,WAAY,CACVS,WAAYqC,EACZpC,QAAS,aAGb,iCAAkC,CAChCX,WAAY,MACZC,YAAa,OAEf,kBAAmB,CACjB6B,QAAS,OACTxC,UAAW,QAEb,0BAA2B,CACzB2D,WAAY,OACZC,YAAa,QAEf,yDAA0D,CACxDtD,OAAQ,YACRuD,YAAa9D,EAAQ+D,eACrBH,WAAY,OACZxC,OAAQ,OACRqB,QAAS,WAEX,qFAAsF,CACpFoB,YAAa,QAEf,gCAAiC,CAC/B5B,MAAO,WACPC,SAAU,QAEZ,kCAAmC,CACjCD,MAAOjC,EAAQwC,eACf/B,WAAY,SACZc,OAAQ,SAEV,gCAAiC,CAC/BX,YAAa,MACbuB,SAAU,YAEZ,+CAAgD,CAC9CA,SAAU,YAEZ,6CAA8C,CAC5C/B,QAAS,gBAEX,uCAAwC,CACtCA,QAAS,OACTc,WAAY,SACZ,qBAAsB,CACpBd,QAAS,OACTc,WAAY,WAGhB,0DAA2D,CACzDN,YAAa,QAEf,gBAAiB,CACfqB,MAAOjC,EAAQgE,SAEjB,WAAY,CACV/B,MAAOjC,EAAQgE,SAEjB,4BAA6B,CAC3BpD,YAAa,OAGf,kCAAmC,CACjCR,QAAS,gBAEX,2CAA4C,CAC1CO,WAAY,OAEd,mCAAoC,CAClC,qCAAsC,CACpCP,QAAS,iBAGb,6GAA8G,CAC5GA,QAAS,eACTO,WAAY,EACZC,YAAa,EACbN,MAAO,IAET,6BAA2BQ,EAAAA,EAAAA,GAAA,CACzBoB,SAAU,GACVK,WAAY,OACZN,MAAOjC,EAAQwC,iBAEZyB,EAAAA,EAAAA,yBAEL,uCAAwC,CACtC1D,OAAQ,iBACRkC,QAAS,EACTvC,OAAQ,CAAC,EAAG,EAAG,EAAG,IAEpB,gIAAiI,CAC/H+B,MAAO,WAET,uCAAwC,CACtC,wFAAyF,CACvF3B,MAAO,OACPO,YAAa,EACbqD,aAAc,EACd,0CAA2C,CACzCjC,MAAOjC,EAAQ6B,aACfR,WAAYqC,GAEd,8BAA+B,CAC7BpC,QAAS,YAEX,2BAA4B,CAC1BA,QAAS,WACTV,YAAa,GAEf,gBAAiB,CACfV,OAAQ,GAEV,mBAAoB,CAClBI,MAAO,eACP,YAAa,CACXF,QAAS,gBAEX,iBAAkB,CAChBA,QAAS,iBAGb,wBAAyB,CACvBE,MAAO,gBACP,yBAA0B,CACxBA,MAAO,MACPF,QAAS,gBAEX,wBAAyB,CACvBA,QAAS,cACTE,MAAO,MACP,yBAA0B,CACxBF,QAAS,SACTS,YAAa,GACb,yBAA0B,CACxBT,QAAS,UAEX,iBAAkB,CAChBA,QAAS,SACTS,YAAa,EACboB,MAAOjC,EAAQwC,eACf2B,UAAW,cAIjB,gBAAiB,CACfvD,YAAa,MACbF,UAAW,QACXK,aAAc,KAGlB,oDAAqD,CACnDJ,WAAY,eACZE,YAAa,GACboB,MAAOjC,EAAQwC,gBAEjB,sEAAuE,CACrEP,MAAOjC,EAAQoE,gBACfvD,YAAa,GACbU,OAAQ,UACR,oBAAqB,CACnBU,MAAOjC,EAAQoE,oBAMvB,0CAA2C,CACzClE,OAAQ,EACRM,SAAU,IACVD,OAAQ,EACR8D,UAAW,OACX,gBAAiB,CACfnE,OAAQ,mBACR,UAAW,CACTA,OAAQ,EACRuC,QAAS,EACT,YAAa,CACXA,QAAS,GAEX,WAAY,CACVhC,WAAY,UAEd,aAAc,CACZP,OAAQ,mBACRuC,QAAS,EACT,cAAe,CACbA,QAAS,kBACTnC,MAAO,MACP,yBAA0B,CACxB4B,SAAU,GACVK,WAAY,OACZ9B,WAAY,UAEd,kBAAmB,CACjBP,OAAQ,kBACR,SAAU,CACRwC,UAAW,UAIjB,cAAe,CACbpC,MAAO,MACPO,YAAa,GACbqD,aAAc,EACd,yBAA0B,CACxBhC,SAAU,GACVK,WAAY,OACZ9B,WAAY,KAEd,qBAAsB,CACpBiC,UAAW,EACXD,QAAS,EACTP,SAAU,GACVK,WAAY,OACZhC,OAAO,aAADoB,OAAe3B,EAAQ+B,kBAC7BsB,aAAc,MACd3B,WAAY,UACZpB,MAAO,QAET,oBAAqB,CACnBI,UAAW,QACXgC,UAAW,EACX3B,aAAc,EACdmB,SAAU,GACVK,WAAY,UAIlB,0BAA2B,CACzBrC,OAAQ,uBAKhB,uCAAwC,CACtC,qBAAsB,CACpBI,MAAO,OACP,UAAW,CACT8B,MAAO,OACPkC,OAAQ,MAGZ,eAAgB,CACd3D,WAAY,IAGhB,kBAAmB,CACjBsB,MAAO,UACPmB,gBAAiB,UACjB3C,WAAY,IACZyB,SAAU,GACV3B,OAAQ,EACRgE,cAAe,EACfzB,WAAY,EACZS,cAAe,EACf1C,YAAa,EACbqD,aAAc,EACdrB,cAAe,SACfQ,aAAc,EACd1C,WAAY,GAEf,EC3SY6D,EAAyBC,EAAAA,uBCFzBC,EAAa,CACxB,0BAA2B,CACzB,gBAAiB,CACfjC,QAAS,EACTvC,OAAQ,EACR,OAAQ,CACNa,aAAc,EACd,cAAe,CACb+B,WAAY,EACZ,UAAW,CACTA,WAAY,EACZS,cAAe,KAIrB,sCAAuC,CACrCrD,OAAQ,CACNmC,IAAK,EACLiC,OAAQ,IAGZ,8BAA+B,CAC7BpE,OAAQ,CACNmC,KAAM,EACNiC,QAAS,EACTK,MAAO,KAGX,2BAA4B,CAC1BzE,OAAQ,CACNmC,IAAK,EACLC,OAAQ,IAGZ,cAAe,CACbhC,MAAO,KAET,cAAe,CACbA,MAAO,QC3BbsE,EAKEC,EAAAA,kBALFD,mBACAE,EAIED,EAAAA,kBAJFC,8BACAC,EAGEF,EAAAA,kBAHFE,kBACAC,EAEEH,EAAAA,kBAFFG,6BACAC,EACEJ,EAAAA,kBADFI,2B,YCFIC,EAAoB,SAAAC,GACxB,SAAAD,EAAYE,GAAQ,IAADC,EAEgB,OAFhBC,EAAAA,EAAAA,GAAA,KAAAJ,IACjBG,GAAAE,EAAAA,EAAAA,GAAA,KAAAL,EAAA,CAAME,KACDI,QAAUC,EAAAA,YAAkBJ,CACnC,CAAC,OAAAK,EAAAA,EAAAA,GAAAR,EAAAC,IAAAQ,EAAAA,EAAAA,GAAAT,EAAA,EAAAU,IAAA,oBAAAC,MAED,WACE,GAAIC,KAAKN,SAAWM,KAAKN,QAAQO,QAAS,CAExC,IAAMC,GAAeC,EAAAA,EAAAA,SAAOC,EAAAA,EAAAA,kBAAiBJ,KAAKN,QAAQO,UAAU,SAAAI,GAAI,OAAIC,IAAED,GAAME,GAAG,WAAW,IAE9FL,GAAgBA,EAAaM,OAAS,GACxCN,EAAa,GAAGO,MAAM,CACpBC,eAAe,KAGnBC,EAAAA,EAAAA,cAAaX,KAAKN,QAAQO,QAC5B,CACF,GAAC,CAAAH,IAAA,SAAAC,MAED,WACE,IAAIa,EAAgB,KACpBC,EAEIb,KAAKV,MADPwB,EAASD,EAATC,UAAWC,EAAaF,EAAbE,cAAeC,EAAOH,EAAPG,QAgB5B,OAbIF,IAEAF,EADEjB,EAAAA,eAAqBmB,GACRA,GAGbG,EAAAA,EAAAA,KAACC,EAAAA,wBAAuB,CACtBC,SAAO,EACPC,SAAUN,MAOhBG,EAAAA,EAAAA,KAAA,OAAKI,GAAG,oBAAoBC,IAAKtB,KAAKN,QAAS6B,UAAWC,IAAW,CAAC,gBAAiBT,EAAcU,yBAA0BT,EAAQU,4BAA4BC,SAChKf,GAGP,IAAC,CA5CuB,CAASjB,EAAAA,eAyDnCP,EAAqBwC,aAAe,CAClCd,UAAW,KACXC,cAAe,CAAC,GAGX,IAAMc,GAAeC,EAAAA,EAAAA,mBAC1B1C,GD1D0C,SAAC2C,EAAC/H,GAAA,IAAAC,EAAAD,EAC5CE,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA+H,EAAAhI,EACZ2B,eAAAA,OAAc,IAAAqG,EAAG,CAAC,EAACA,EAAAC,EAAAjI,EACnBkI,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA,MACP,CAELP,0BAA2BS,OAAOC,OAChC,CAAC,GAACpH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAGA2B,QAAS,MACTvC,OAAQ,MACRG,SAAU,SACVG,SAAU,SACV2B,SAAU,WACVgG,OAAQ,EAER,UAAW,CACTC,QAAS,SAGRnD,EAA2B,CAAEjF,QAAAA,KAAU,IAE1C,+BAAgC,CAC9ByC,QAAS,EACTf,WAAY,UACZX,aAAc,MACdmB,SAAU,OACV5B,MAAO,QAEP,gBAAiB,CACf2B,MAAO,UACPC,SAAU,kBACVE,MAAO,OACP8B,aAAc,UAKpBrE,EAAc,CAAEG,QAAAA,IAChBwD,EAAyB,CAAExD,QAAAA,IAC3BiB,EACAO,EAAwB,CAAExB,QAAAA,EAASyB,eAAAA,EAAgBuG,QAAAA,IACnDpD,EACAE,EAA8B9E,GAC9B+E,EACAC,EAA6BhF,GAC7BwE,EAAuB,CAAExE,QAAAA,IACzB0E,GAEF,UAAWuD,OAAOC,OAChB,CAAC,GACDG,EAAAA,EAAAA,iBAAgB,CAAErI,QAAAA,KAErB,G,mSEnEKsI,GAAQC,EAAAA,EAAAA,aAAY,CACxBhG,WAAY,K,wCCHDiG,EAAkB,SAAH1I,GAAA,IAC1B2I,EAAQ3I,EAAR2I,SAAUC,EAAW5I,EAAX4I,YAAajB,EAAQ3H,EAAR2H,SAAakB,GAAYC,EAAAA,EAAAA,GAAA9I,EAAA+I,GAAA,OAC5C9B,EAAAA,EAAAA,KAAC0B,GAAQ3H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK4H,GAAiBC,GAAY,IAAAlB,SAAGA,IAAqB,EAWzEe,EAAgBd,aAAe,CAC7BgB,YAAa,KACbjB,SAAU,MCdL,IAAMqB,EAAsB,SAACC,GAClC,IAAMC,EAAyB,SAAC5D,GAC9B,IAAQqD,EAAarD,EAAbqD,SAER,OACE1B,EAAAA,EAAAA,KAAAkC,EAAAA,SAAA,CAAAxB,SACGgB,GAAW1B,EAAAA,EAAAA,KAACyB,GAAe1H,EAAAA,EAAAA,GAAA,GAAKsE,KAAY2B,EAAAA,EAAAA,KAACgC,GAASjI,EAAAA,EAAAA,GAAA,GAAKsE,KAGlE,EAUA,OAJA4D,EAAuBtB,aAAe,CACpCe,SAAU,MAGLO,CACT,E,0DClBME,EAAe,SAAHpJ,GAEX,IADLqJ,EAAKrJ,EAALqJ,MAAOC,EAAQtJ,EAARsJ,SAAUC,EAAUvJ,EAAVuJ,WAAYC,EAASxJ,EAATwJ,UAAWC,EAAOzJ,EAAPyJ,QAAYC,GAAIZ,EAAAA,EAAAA,GAAA9I,EAAA+I,GAElDY,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBC,EAAaR,GAAY,CAC7BA,SAAAA,EACAS,OAAQR,GAAc,CACpBS,KAAM,CACJ7H,MAAO,aAKb,OACE8E,EAAAA,EAAAA,KAAA,OAAKM,UAAU,uBAAsBI,UACnCV,EAAAA,EAAAA,KAACgD,EAAAA,eAAajJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACkJ,UAAWJ,EAAYL,QAASA,EAASD,UAAWA,GAAeE,GAAI,IAAA/B,SAAGgC,EAAKQ,UAAUd,OAG9G,EAUAD,EAAaxB,aAAe,CAC1B0B,SAAU,KACVC,WAAY,MAGd,IAAMa,EAAsBpB,EAAoBI,GC/B1CiB,GAAe5B,EAAAA,EAAAA,aAAY,CAC/B9F,QAAS,oBACT2H,YAAa,QACbC,YAAa,kBACbvG,YAAa,YAGTwG,EAAoB,CACxBR,KAAM,CACJ1I,OAAQ,KAINmJ,GAAchC,EAAAA,EAAAA,aAAY,CAC9BrG,SAAU,GACVzB,WAAY,MAGR+J,EAAS,SAAH1K,GAEL,IADL2K,EAAK3K,EAAL2K,MAAOC,EAAY5K,EAAZ4K,aAAcC,EAAmB7K,EAAnB6K,oBAAqBC,EAAE9K,EAAF8K,GAEpCnB,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxB,OACE5C,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAW,eAAgB6C,GAAc1C,UACvDoD,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,YAAU,EAACC,gBAAgB,gBAAgBnI,cAAc,SAASgH,OAAQS,EAAkB7C,SAAA,EACjGV,EAAAA,EAAAA,KAACkE,EAAAA,KAAI,CAAC5D,UAAWC,IAAW,QAASiD,GAAcK,GAAIA,EAAGnD,SAAEgC,EAAKQ,UAAUQ,KAC1EC,IAAgB3D,EAAAA,EAAAA,KAACmC,GAAYpI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK4J,GAAkBC,QAI7D,EASAH,EAAO9C,aAAe,CACpBgD,aAAc,KACdC,oBAAqB,KACrBC,GAAI,QAGN,IAAMM,EAAgBpC,EAAoB0B,GChDpCW,GAAc5C,EAAAA,EAAAA,aAAY,CAC9BjI,MAAO,IACPoB,WAAY,UACZ2B,aAAc,EACdgB,UAAW,+DAGP+G,GAAqB7C,EAAAA,EAAAA,aAAY,CACrC9F,QAAS,wBAGE4I,EAAQ,SAAHvL,GAAA,IAChBwL,EAAMxL,EAANwL,OAAQC,EAAazL,EAAbyL,cAAe9D,EAAQ3H,EAAR2H,SAAQ,OAG7BoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW8D,EAAY1D,SAAA,CACzB6D,IAAUvE,EAAAA,EAAAA,KAACyD,GAAM1J,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKwK,GAAYC,KACnCxE,EAAAA,EAAAA,KAAA,OAAKM,UAAW+D,EAAmB3D,SAChCA,MAEC,EAYV4D,EAAM3D,aAAe,CACnB4D,OAAQ,KACRC,cAAe,M,eCjCXC,EAAa,SAACpG,GAClB,IAAMqE,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAChB8B,EAAkBrG,EAAlBqG,KAASjC,GAAIZ,EAAAA,EAAAA,GAAKxD,EAAKyD,GAC/B,OAAO9B,EAAAA,EAAAA,KAAC2E,EAAAA,YAAgB5K,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK0I,GAAI,IAAA/B,SAAGgC,EAAKQ,UAAUwB,KACrD,EAQAD,EAAW9D,aAAe,CACxBe,SAAU,KACVkD,cAAe,KACfF,KAAM,MAGR,IAAMG,EAAoB9C,EAAoB0C,GCjBxCK,GAActD,EAAAA,EAAAA,aAAY,CAC9B9H,WAAY,IACZyB,SAAU,GACVK,WAAY,GACZjC,MAAO,IACPO,YAAa,EACbiC,WAAY,GACZS,cAAe,KAcXuI,EAAuBhD,GAXP,SAAHhJ,GAAmB,IAAbqJ,EAAKrJ,EAALqJ,MACjBM,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxB,OACE5C,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAW,iBAAkBuE,GAAapE,UAACV,EAAAA,EAAAA,KAACkE,EAAAA,KAAI,CAAAxD,SAAEgC,EAAKQ,UAAUd,MAErF,ICfM4C,GAAaxD,EAAAA,EAAAA,aAAY,CAC7B1H,YAAa,EACbiC,WAAY,GACZS,cAAe,GACfyI,SAAU,SACV1L,MAAO,IACPa,WAAY,WAiBR8K,EAAsBnD,GAdP,SAAHhJ,GAAA,IAAM2H,EAAQ3H,EAAR2H,SAAQ,OAE5BV,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAW,gBAAiByE,GAAYtE,SACrDA,GACG,ICdGyE,EAAc,SAAHpM,GAAA,IACtBqM,EAAarM,EAAbqM,cAAeC,EAAoBtM,EAApBsM,qBAAsBC,EAAYvM,EAAZuM,aAAcC,EAAmBxM,EAAnBwM,oBAAqB7E,EAAQ3H,EAAR2H,SAAQ,OAEhFV,EAAAA,EAAAA,KAAA,OAAAU,UACEoD,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,YAAU,EAACwB,eAAa,EAAA9E,SAAA,EAC7BV,EAAAA,EAAAA,KAACyF,GAAa1L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKqL,GAAmBC,KACtCrF,EAAAA,EAAAA,KAAC0F,GAAY3L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKuL,GAAkBC,GAAmB,IAAA7E,SACpDA,SAGD,EAcRyE,EAAYxE,aAAe,CACzB2E,aAAc,KACdC,oBAAqB,KACrBF,qBAAsB,KACtB3E,SAAU,MC/BZ,IAAMiF,GAAgBnE,EAAAA,EAAAA,aAAY,CAChCnH,OAAQ,EACRM,WAAY,Y,WCDR4G,GAAQC,EAAAA,EAAAA,aAAY,CACxBhG,WAAY,KCMDoK,EAAiB,CAC5BlB,KZHkB,SAAH3L,GAA2B,IAArB2L,EAAI3L,EAAJ2L,KAASjC,GAAIZ,EAAAA,EAAAA,GAAA9I,EAAA+I,GAC5BY,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxB,OAAO5C,EAAAA,EAAAA,KAAC6F,EAAAA,MAAU9L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACuG,UAAWiB,GAAWkB,GAAI,IAAA/B,SAAGgC,EAAKQ,UAAUwB,KACjE,EYCEoB,MAAOxB,EACP,cAAeG,EACf,eAAgBU,EAChB,qBFR+B,WAAH,OAASnF,EAAAA,EAAAA,KAAA,OAAKM,UAAWqF,GAAkB,EESvE,mBAAoBlE,EACpBsE,KDVkB,SAAHhN,GAAA,IAAMgN,EAAIhN,EAAJgN,KAAStD,GAAIZ,EAAAA,EAAAA,GAAA9I,EAAA+I,GAAA,OAAO9B,EAAAA,EAAAA,KAAC6F,EAAAA,MAAU9L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACuG,UAAWiB,GAAWkB,GAAI,IAAA/B,SAAGqF,IAAmB,G,iBED1FC,EAAqB,SAAC3H,GACjC,IDiB2B4H,ECjBnBC,EAAiC7H,EAAjC6H,OAAQC,EAAyB9H,EAAzB8H,qBDiBWF,ECwBdE,EDvBbrF,IAAAA,OAAS8E,EAAgBK,GCyBzB,IAAQnD,EAA4BoD,EAA5BpD,OAAQsD,EAAoBF,EAApBE,gBAEVC,EAAuBvF,IAAAA,KAAOA,IAAAA,KAAOoF,GAAQ,SAAAI,GAAC,OAAqB,IAAjBA,EAAEC,UAAoB,KACxEC,EAA2B1F,IAAAA,KAAM2F,MAAN3F,IAAC,CAAMoF,EAAQ,SAAU,mBAAiBtL,QAAA8L,EAAAA,EAAAA,GAAKL,KAE1EM,EAAmB7F,IAAAA,MAAQ0F,GAE3BI,EAAyB9F,IAAAA,IAAM6F,GAAkB,SAACE,EAAiBhI,GAAG,OAhDhD,SAAH9F,GAElB,IADL8N,EAAe9N,EAAf8N,gBAAiBhI,EAAG9F,EAAH8F,IAAKiI,EAAkB/N,EAAlB+N,mBAAoBC,EAAkBhO,EAAlBgO,mBAAoBX,EAAerN,EAAfqN,gBAExDY,EAAQH,EAAgB,GACxBI,EAASJ,EAAgB,GAEzB7E,EAAY4D,EAAeqB,EAAOC,MAElCC,EAA8Bf,GAAmBvH,EAAMkI,EAAqB,EAAIX,EAAkB,CAAC,EAEnGgB,EAAkBtG,IAAAA,OAASqG,EAA6BF,EAAOnE,QAAUgE,GACzEO,EAAqBJ,EAAO3G,WAAS,GAAA1F,OAAOoM,EAAK,KAAApM,OAAIqM,EAAOC,MAE5CI,EAAsEL,EAApFrF,aAA+D2F,EAAqBN,EAAjCO,WAErDC,EAAQzF,EAAY,SAAC0F,EAAkBC,GAC3C,IAAMC,EAA6CD,GAC9CL,GACAA,EAAoCK,IAAuB,CAAC,EAC3DE,EAAyCH,GAAoBA,EAAiBV,IAAW,CAAC,EAE5Ec,EAA8CD,EAA1DL,WAAiD/E,GAAIZ,EAAAA,EAAAA,GAAKgG,EAAqC/F,GACjGiG,GAA+BjH,IAAAA,QAAU8G,IAA8CA,GAA8CnF,EAErIuF,GAAqE,IAA1CD,EAA2BxB,WACtD0B,GAA8BzG,EAAAA,EAAAA,aAAYV,IAAAA,OAASsG,EAAiBW,EAA2BjF,OAAQ,CAAEzJ,QAAS2O,EAA2B,OAAS,WAE5J,OACEhI,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAW8G,EAAoBY,GAA6BvH,UAC1EV,EAAAA,EAAAA,KAACgC,GAASjI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKkN,GAAYc,GAA0B,IAAArH,SAClD6G,IAAoBvH,EAAAA,EAAAA,KAACkI,GAAWnO,EAAAA,EAAAA,GAAA,CAACmM,OAAQqB,EAAkBG,iBAAkBI,GAAsCH,QAFtC9I,EAMtF,EAAI,KAEJ,OAAO4I,EAAQ,CAAET,MAAAA,EAAOS,MAAAA,GAAU,IACpC,CAYEU,CAAoB,CAClBtB,gBAAAA,EACAhI,IAAAA,EACAkI,mBAAoBJ,EAAiBpH,OACrCuH,mBAAoBhE,EACpBsD,gBAAAA,GACA,IAEJ,OAAOtF,IAAAA,QAAU8F,EAAwB,KAC3C,E,uDC/DasB,EAAc,SAAHnP,GAEjB,IADLmN,EAAMnN,EAANmN,OAAQwB,EAAgB3O,EAAhB2O,iBAAkBvB,EAAoBpN,EAApBoN,qBAAyBwB,GAAiB9F,EAAAA,EAAAA,GAAA9I,EAAA+I,GAE9DsG,GAA2BC,EAAAA,EAAAA,UAAQ,kBAAMrC,EAAmB,CAAEE,OAAAA,EAAQC,qBAAAA,GAAuB,GAAE,CAACD,EAAQC,IAQ9G,OAN4BkC,EAAAA,EAAAA,UAC1B,kBACEvH,IAAAA,IAAMsH,GAA0B,SAAAE,GAAgB,OAAIA,EAAiBb,MAAMC,EAAkBC,EAAkB,GAAC,GAClH,CAACS,EAA0BT,EAAmBD,GAIlD,EAEAQ,EAAYK,UAAY,CACtBrC,OAAQsC,IAAAA,MAAgB,CAAC,GAAGC,YClBvB,ICAMC,EAA2B,SAACrK,GACvC,IACE+D,EAIE/D,EAJF+D,MACA2D,EAGE1H,EAHF0H,KACAjD,EAEEzE,EAFFyE,OAII6F,EAAmB,CACvBzB,KAAM,eACN9B,cAAe,CACbhD,MAAAA,GAEFoF,WAAY,CACVzB,KAAM,CACJmB,KAAM,OACNnB,KAAAA,EACAnE,aAXFvD,EADFuD,gBAiBF,OAAOd,IAAAA,OAAS6H,EAAkB,CAAE7F,OAAAA,GACtC,C,8iBCjBM8F,EAAiB,SAACC,GAWtB,OAVgB,SAAH9P,GAAoD,IAA9C+P,EAAgB/P,EAAhB+P,iBAAkBC,EAAWhQ,EAAXgQ,YAAgBtG,GAAIZ,EAAAA,EAAAA,GAAA9I,EAAA+I,GACjDkH,GAAaX,EAAAA,EAAAA,UAAQ,kBAAMS,IAAoBG,EAAAA,EAAAA,GAA+BF,EAAY,GAAE,CAACD,EAAkBC,IAErH,OACE/I,EAAAA,EAAAA,KAAC6I,GAAc9O,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACT0I,GAAI,IACRqG,iBAAkBE,IAGxB,CAEF,EAEaE,EAAiCN,EAAeO,EAAAA,IAChDC,EAAmCR,EAAeS,EAAAA,ICrBlDC,E,UAAgBC,U,qBCChBC,EACU,sBADVA,EAEU,sBAFVA,EAGU,sBAHVA,EAIS,qBAJTA,EAKE,cALFA,EAME,cANFA,EAOE,cAPFA,EAQE,cARFA,EASE,cATFA,EAUE,cAVFA,EAWE,cAXFA,EAYE,cAZFA,EAaC,aAbDA,EAcE,cAdFA,EAeE,cAfFA,EAgBE,cAhBFA,EAiBE,cAjBFA,EAkBE,cAlBFA,EAmBY,wBAnBZA,EAoBY,wBApBZA,EAqBY,wBArBZA,EAsBY,wBAtBZA,EAuBY,wBAvBZA,EAwBY,wBAxBZA,EAyBY,wBAzBZA,EA0BY,wBA1BZA,EA2BW,uBA3BXA,EA4BQ,oBA5BRA,EA6BQ,oBA7BRA,EA8BQ,oBA9BRA,EA+BQ,oBA/BRA,EAgCQ,oBAhCRA,EAiCQ,oBAjCRA,EAkCQ,oBAKRC,IAAoCC,EAAA,IAAAC,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,GAAAD,EAC9CF,EAA4C,CAACI,EAAAA,GAAIC,oBACjDL,EAA4C,CAACI,EAAAA,GAAIE,6BACjDN,EAA4C,CAACI,EAAAA,GAAIG,sBACjDP,EAA2C,CAACI,EAAAA,GAAII,wBAEhDR,EAAoC,CAACI,EAAAA,GAAIK,mCAAoCL,EAAAA,GAAIM,4BACjFV,EAAoC,CAACI,EAAAA,GAAIO,yCACzCX,OAAoCY,GACpCZ,EAAoC,CAACI,EAAAA,GAAIS,4BAA6BT,EAAAA,GAAIU,yCAC1Ed,OAAoCY,GACpCZ,EAAoC,CAACI,EAAAA,GAAIW,4BAAyBZ,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,GAAAD,EAClEF,EAAoC,CAACI,EAAAA,GAAIY,6BACzChB,EAAoC,CAACI,EAAAA,GAAIa,iCAAkCb,EAAAA,GAAIc,mCAC/ElB,OAAmCY,GACnCZ,EAAoC,CAACI,EAAAA,GAAIe,uCAAwCf,EAAAA,GAAIgB,oDACrFpB,EAAoC,CAACI,EAAAA,GAAIiB,yBACzCrB,EAAoC,CAACI,EAAAA,GAAIkB,kCAAmClB,EAAAA,GAAImB,wCAChFvB,EAAoC,CAACI,EAAAA,GAAIoB,4BAA6BpB,EAAAA,GAAIqB,kCAC1EzB,EAAoC,CAACI,EAAAA,GAAIsB,gCAEzC1B,EAA8C,CAACI,EAAAA,GAAIuB,4CACnD3B,EAA8C,CAC7CI,EAAAA,GAAIwB,8CACJxB,EAAAA,GAAIyB,qDACL1B,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,GAAAD,EACAF,EAA8C,CAACI,EAAAA,GAAI0B,gDACnD9B,EAA8C,CAACI,EAAAA,GAAI2B,qCACnD/B,EAA8C,CAACI,EAAAA,GAAI4B,qCACnDhC,EAA8C,CAACI,EAAAA,GAAI6B,kCACnDjC,EAA8C,CAC7CI,EAAAA,GAAI8B,kCACJ9B,EAAAA,GAAI+B,iDACJ/B,EAAAA,GAAIgC,kDAELpC,EAA8C,CAACI,EAAAA,GAAIiC,0CACnDrC,EAA6C,CAACI,EAAAA,GAAIkC,oCAElDtC,EAA0C,CAACI,EAAAA,GAAImC,wCAAyCnC,EAAAA,GAAIoC,kCAC5FxC,EAA0C,CAACI,EAAAA,GAAIqC,wCAC/CzC,EAA0C,CAACI,EAAAA,GAAIsC,iCAA8BvC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAD,EAC7EF,EAA0C,CAACI,EAAAA,GAAIuC,kCAC/C3C,EAA0C,CAACI,EAAAA,GAAIwC,8CAC/C5C,EAA0C,CAACI,EAAAA,GAAIyC,6BAC/C7C,EAA0C,CAACI,EAAAA,GAAI0C,0BAIrCC,IAAmCC,EAAA,IAAA7C,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,GAAA6C,EAE7C5C,EAAAA,GAAIC,kBAAoBL,GACxBI,EAAAA,GAAIE,2BAA6BN,GACjCI,EAAAA,GAAIG,oBAAsBP,GAC1BI,EAAAA,GAAII,sBAAwBR,GAG5BI,EAAAA,GAAIK,mCAAqCT,GACzCI,EAAAA,GAAIO,uCAAyCX,GAC7CI,EAAAA,GAAIW,yBAA2Bf,GAC/BI,EAAAA,GAAIY,2BAA6BhB,GACjCI,EAAAA,GAAIa,iCAAmCjB,GAGvCI,EAAAA,GAAIe,uCAAyCnB,IAAiCG,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,GAAA6C,EAC9E5C,EAAAA,GAAIiB,uBAAyBrB,GAC7BI,EAAAA,GAAIM,0BAA4BV,GAChCI,EAAAA,GAAIS,4BAA8Bb,GAClCI,EAAAA,GAAIkB,kCAAoCtB,GACxCI,EAAAA,GAAIoB,4BAA8BxB,GAClCI,EAAAA,GAAIsB,8BAAgC1B,GACpCI,EAAAA,GAAIc,iCAAmClB,GAGvCI,EAAAA,GAAImC,wCAA0CvC,GAC9CI,EAAAA,GAAIqC,sCAAwCzC,GAC5CI,EAAAA,GAAIwC,4CAA8C5C,IAAuCG,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,GAAA6C,EACzF5C,EAAAA,GAAIsC,8BAAgC1C,GACpCI,EAAAA,GAAIuC,gCAAkC3C,GACtCI,EAAAA,GAAI0C,uBAAyB9C,GAC7BI,EAAAA,GAAIoC,gCAAkCxC,GACtCI,EAAAA,GAAIyC,2BAA6B7C,GAEjCI,EAAAA,GAAIgB,kDAAoDpB,GACxDI,EAAAA,GAAIU,uCAAyCd,GAC7CI,EAAAA,GAAIqB,gCAAkCzB,GACtCI,EAAAA,GAAImB,sCAAwCvB,GAI5CI,EAAAA,GAAIuB,0CAA4C3B,IAA2CG,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,GAAA6C,EAG3F5C,EAAAA,GAAIwB,8CAAgD5B,GACpDI,EAAAA,GAAIyB,kDAAoD7B,GAExDI,EAAAA,GAAI0B,8CAAgD9B,GACpDI,EAAAA,GAAI2B,mCAAqC/B,GACzCI,EAAAA,GAAI4B,mCAAqChC,GACzCI,EAAAA,GAAI6B,gCAAkCjC,GAGtCI,EAAAA,GAAI8B,kCAAoClC,GACxCI,EAAAA,GAAI+B,iDAAmDnC,GACvDI,EAAAA,GAAIgC,gDAAkDpC,GAEtDI,EAAAA,GAAIiC,wCAA0CrC,IAA2CG,EAAAA,EAAAA,GAAA6C,EACzF5C,EAAAA,GAAIkC,kCAAoCtC,I,gDCnHrCiD,GAAyB,SAACC,GAC9B,IAAA3T,EAA4C2T,GAAS,CAAC,EAA9CC,EAAkB5T,EAAlB4T,mBAAoBC,EAAW7T,EAAX6T,YACtBC,EAAiBpD,GAAqCkD,GAC5D,OAAK7L,IAAAA,QAAU+L,GAGR,GAFE/L,IAAAA,IAAM+L,GAAgB,SAAAC,GAAa,MAAK,CAAEA,cAAAA,EAAeC,SAAUH,EAAa,GAG3F,EAuBMI,GAAiB,SAACC,GACtB,OAAKA,GAASnM,IAAAA,SAAWmM,GAChBA,EAtBiB,SAACA,GAC3B,IAAAC,EAEID,GAAS,CAAC,EADZ7M,EAAE8M,EAAF9M,GAAI+M,EAAGD,EAAHC,IAAK5T,EAAK2T,EAAL3T,MAAOc,EAAM6S,EAAN7S,OAAQ+S,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cAAeC,EAAcJ,EAAdI,eAAgBC,EAAqBL,EAArBK,sBAAuBC,EAAiBN,EAAjBM,kBAAmBC,EAAOP,EAAPO,QAASC,EAAYR,EAAZQ,aAezH,MAbmB,CACjBtN,GAAAA,EACA+M,IAAAA,EACA5T,MAAAA,EACAc,OAAAA,EACA+S,YAAAA,EACAC,cAAAA,EACAC,eAAAA,EACAK,cAAeJ,EACfK,mBAAoB9M,IAAAA,QAAUA,IAAAA,IAAM0M,EAAmBf,KACvDgB,QAAAA,EACAC,aAAAA,EAGJ,CAMSG,CAAoBZ,EAC7B,EAeaa,GAAoB,SAACC,EAAiBC,GAEjD,IAAMC,GAAoB5F,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,IAAMiN,GAAiB,SAAAG,GAAA,IAAGjB,EAAKiB,EAALjB,MAAOkB,EAAaD,EAAbC,cAAa,MAAQ,CAC5FlB,MAAOD,GAAeC,GACtBkB,cAAAA,EACD,GAAE,GAAE,CAACJ,IAENK,GAIIC,EAAAA,EAAAA,IAAsBJ,EAAmBD,GAHvBM,EAAsBF,EAA1CG,mBACqBC,EAAuBJ,EAA5CK,oBACGhM,GAAIZ,EAAAA,EAAAA,GAAAuM,EAAAtM,IAIHyM,GAAqBG,EAAAA,EAAAA,cAAY,SAACC,GACtC,IAAMC,EAAY9N,IAAAA,IAAM6N,GAAQ,SAAAE,GAAA,IAAG5B,EAAK4B,EAAL5B,MAAOkB,EAAaU,EAAbV,cAAa,MAAQ,CAC7DlB,MAAOD,GAAeC,GACtBkB,cAAAA,EACD,IACD,OAAOG,EAAuBM,EAChC,GAAG,CAACN,IAEEG,GAAsBpG,EAAAA,EAAAA,UAAQ,WA0BlC,OAzBYvH,IAAAA,IAAM0N,GAAyB,SAAAM,GAA4B,IAAzB7B,EAAK6B,EAAL7B,MAAO8B,EAAUD,EAAVC,WAC7CpB,EAAgBV,EAAM+B,mBAAqB/B,EAAMU,cAAgB,KACjEH,EAAoB1M,IAAAA,MAAQiO,GAC/BE,KAAI,SAAAC,GAA+D,IAA5DC,EAAaD,EAAbC,cAAeH,EAAkBE,EAAlBF,mBAAoBI,EAAiBF,EAAjBE,kBACzC,OAAIJ,EACK,CAAErC,mBAAoBJ,GAAoC4C,EAAcrC,eAAgBF,YAAawC,GAEvG,IACT,IACCC,UACAC,QAAO,SAACC,EAAKH,GAEZ,IAAQzC,EAAuByC,EAAvBzC,mBAIR,OAHK4C,EAAI5C,KACP4C,EAAI5C,GAAsByC,GAErBG,CACT,GAAG,CAAC,GACHzQ,QAEH,MAAO,CACL0Q,aAAc7B,EACdH,kBAAmB1M,IAAAA,QAAUA,IAAAA,OAAS0M,KAAuB,GAEjE,GAEF,GAAG,CAACgB,IAEJ,OAAAzU,EAAAA,EAAAA,GAAA,CAASwU,mBAAAA,EAAoBE,oBAAAA,GAAwBhM,EACvD,E,aChIagN,GAA8B,SAACC,EAAiBC,GAyD3D,OAtD6B,SAAH5W,GAAyD,IAAnD6W,EAAS7W,EAAT6W,UAAWjC,EAAa5U,EAAb4U,cAAekC,EAAiB9W,EAAjB8W,kBAExD,GAAIlC,EACF,OAAOmC,EAAAA,EAAAA,IAA4B,CAAEF,UAAAA,EAAWjC,cAAAA,EAAekC,kBAAAA,IAGjE,IAAME,EAAsBjP,IAAAA,IAAM+O,GAAmB,SAACV,GAEpD,MAAO,CAAEa,YADwBb,EAAzBa,YACcC,QADWd,EAAZc,QAEvB,IAEA,OAAOP,EAAgBQ,kBAAkB,CACvCC,SAAUP,EAAUxC,YACpBI,kBAAmBuC,IAClBK,MAAK,SAACC,GAsBP,OArBYvP,IAAAA,IAAM+O,GAAmB,SAACV,GACpC,IAAMmB,EAAQxP,IAAAA,KAAOuP,GAAQ,SAAAnD,GAAc,OAAAA,EAAXqD,cAAkCpB,EAAcqB,cAAc,IAC9F,GAAIF,EAAO,CACT,IAAMG,EAAgB,CACpBC,YAAaJ,EAAMK,MACnBC,aAAcN,EAAMO,OACpBC,QAASR,EAAMS,EACfC,QAASV,EAAMW,GAEXC,GAAuBC,EAAAA,GAAAA,IAA0B,CACrDC,cAAe,CAAE7X,MAAOqW,EAAUvC,cAAehT,OAAQuV,EAAUtC,eAAgB+D,IAAKzB,EAAUxC,aAClGoC,aAAciB,EACdnX,SAAU6V,EAAcc,QAAQ,GAChCqB,UAAWnC,EAAcc,QAAQ,GACjCD,YAAab,EAAca,YAC3BL,kBAAAA,IAEF,MAAO,CAAER,cAAAA,EAAesB,cAAeS,EAAuBT,EAAgB,KAChF,CACA,MAAO,CAAEtB,cAAAA,EAAesB,cAAe,KACzC,GAEF,IAAGc,OAAM,WACP,IACCnB,MAAK,SAACoB,GAEP,IAAMC,EAAiC3Q,IAAAA,OAAS0Q,GAA+B,SAAAtD,GAAgB,OAAAA,EAAbuC,aAAkC,IAChHiB,EAAe,KACnB,GAAK5Q,IAAAA,QAAU2Q,GAKbC,EAAe5Q,IAAAA,IAAM0Q,GAA+B,SAAA1C,GAAgB,MAAQ,CAAEM,kBAAVN,EAAb2B,cAAyD,QALlE,CAC9C,IAAMkB,GAAsB7B,EAAAA,EAAAA,IAA4B,CAAEF,UAAAA,EAAWjC,cAAAA,EAAekC,kBAAAA,IAEpF6B,EAAe5Q,IAAAA,IAAM0Q,GAA+B,SAAA3C,EAAoB+C,GAAG,IAApBnB,EAAa5B,EAAb4B,cAAa,OAAaA,EAAgB,CAAErB,kBAAmBqB,GAAkBkB,EAAoBC,EAAI,GAClK,CAGA,OAAOF,CACT,GACF,CAGF,E,mGCrDaG,IAAgCC,EAAA,IAAAnI,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,GAAAmI,EAC1CC,EAAAA,GAAelI,kBAAoB,iBACnCkI,EAAAA,GAAejI,2BAA6B,uBAC5CiI,EAAAA,GAAehI,oBAAsB,oBACrCgI,EAAAA,GAAe/H,sBAAwB,iBAGvC+H,EAAAA,GAAe9H,mCAAqC,uBACpD8H,EAAAA,GAAetH,iCAAmC,oBAClDsH,EAAAA,GAAe5H,uCAAyC,qBACxD4H,EAAAA,GAAexH,yBAA2B,mBAC1CwH,EAAAA,GAAevH,2BAA6B,qBAG5CuH,EAAAA,GAAepH,uCAAyC,sBAAmBhB,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,GAAAmI,EAC3EC,EAAAA,GAAerH,iCAAmC,oBAClDqH,EAAAA,GAAelH,uBAAyB,qBACxCkH,EAAAA,GAAe7H,0BAA4B,uBAC3C6H,EAAAA,GAAe7G,8BAAgC,qBAC/C6G,EAAAA,GAAe1H,4BAA8B,qBAC7C0H,EAAAA,GAAejH,kCAAoC,qBACnDiH,EAAAA,GAAe/G,4BAA8B,qBAG7C+G,EAAAA,GAAeC,kCAAoC,qBACnDD,EAAAA,GAAeE,kCAAoC,qBACnDF,EAAAA,GAAeG,kCAAoC,sBAAmBvI,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,GAAAmI,EACtEC,EAAAA,GAAeI,kCAAoC,qBACnDJ,EAAAA,GAAeK,kCAAoC,qBACnDL,EAAAA,GAAeM,kCAAoC,qBACnDN,EAAAA,GAAeO,iCAAmC,oBAClDP,EAAAA,GAAeQ,gCAAkC,uBACjDR,EAAAA,GAAeS,wBAA0B,oBACzCT,EAAAA,GAAeU,iCAAmC,uBAClDV,EAAAA,GAAeW,wBAA0B,qBAGzCX,EAAAA,GAAe5G,0CAA4C,uBAC3D4G,EAAAA,GAAelG,wCAA0C,qBAAkBlC,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,GAAAmI,EAC3EC,EAAAA,GAAe3G,8CAAgD,qBAC/D2G,EAAAA,GAAe1G,kDAAoD,qBACnE0G,EAAAA,GAAezG,8CAAgD,qBAC/DyG,EAAAA,GAAexG,mCAAqC,qBACpDwG,EAAAA,GAAevG,mCAAqC,qBACpDuG,EAAAA,GAAetG,gCAAkC,mBACjDsG,EAAAA,GAAerG,kCAAoC,qBACnDqG,EAAAA,GAAepG,iDAAmD,qBAClEoG,EAAAA,GAAenG,gDAAkD,qBACjEmG,EAAAA,GAAejG,kCAAoC,qBAAkBnC,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,GAAAmI,EACrEC,EAAAA,GAAeY,+BAAiC,uBAChDZ,EAAAA,GAAea,yCAA2C,qBAE1Db,EAAAA,GAAec,6BAA+B,iBAC9Cd,EAAAA,GAAee,sCAAwC,uBACvDf,EAAAA,GAAegB,+BAAiC,oBAChDhB,EAAAA,GAAeiB,iCAAmC,iBAGlDjB,EAAAA,GAAekB,8CAAgD,uBAC/DlB,EAAAA,GAAemB,4CAA8C,oBAC7DnB,EAAAA,GAAeoB,kDAAoD,qBACnEpB,EAAAA,GAAeqB,oCAAsC,oBAAiBzJ,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,GAAAmI,EACtEC,EAAAA,GAAesB,sCAAwC,qBAEvDtB,EAAAA,GAAeuB,2CAA6C,uBAC5DvB,EAAAA,GAAewB,mCAAqC,oBACpDxB,EAAAA,GAAeyB,4CAA8C,uBAC7DzB,EAAAA,GAAe0B,mCAAqC,qBAGpD1B,EAAAA,GAAe2B,kDAAoD,qBACnE3B,EAAAA,GAAe4B,4CAA8C,oBAC7D5B,EAAAA,GAAe6B,kCAAoC,qBACnD7B,EAAAA,GAAe8B,qCAAuC,uBACtD9B,EAAAA,GAAe+B,yCAA2C,sBAAmBnK,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,GAAAmI,EAC7EC,EAAAA,GAAegC,uCAAyC,qBACxDhC,EAAAA,GAAeiC,6CAA+C,qBAC9DjC,EAAAA,GAAekC,uCAAyC,qBAGxDlC,EAAAA,GAAemC,wCAA0C,uBACzDnC,EAAAA,GAAeoC,uCAAyC,uBACxDpC,EAAAA,GAAeqC,iDAAmD,uBAClErC,EAAAA,GAAesC,oDAAsD,uBACrEtC,EAAAA,GAAeuC,uCAAyC,uBAExDvC,EAAAA,GAAewC,qCAAuC,oBACtDxC,EAAAA,GAAeyC,oCAAsC,qBAAkB7K,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,GAAAmI,EACvEC,EAAAA,GAAe0C,8CAAgD,oBAC/D1C,EAAAA,GAAe2C,iDAAmD,oBAClE3C,EAAAA,GAAe4C,oCAAsC,oBAErD5C,EAAAA,GAAe6C,sCAAwC,sBACvD7C,EAAAA,GAAe8C,gDAAkD,sBACjE9C,EAAAA,GAAe+C,mDAAqD,sBACpE/C,EAAAA,GAAegD,sCAAwC,sBAGvDhD,EAAAA,GAAezF,uBAAyB,iBACxCyF,EAAAA,GAAe/F,gCAAkC,uBACjD+F,EAAAA,GAAe1F,2BAA6B,kBAAe1C,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,GAAAmI,EAC3DC,EAAAA,GAAehG,wCAA0C,uBACzDgG,EAAAA,GAAe9F,sCAAwC,oBACvD8F,EAAAA,GAAe3F,4CAA8C,qBAC7D2F,EAAAA,GAAe7F,8BAAgC,mBAC/C6F,EAAAA,GAAe5F,gCAAkC,qBAEjD4F,EAAAA,GAAenH,kDAAoD,qBACnEmH,EAAAA,GAAezH,uCAAyC,qBACxDyH,EAAAA,GAAe9G,gCAAkC,qBACjD8G,EAAAA,GAAehH,sCAAwC,qBACvDgH,EAAAA,GAAeiD,6BAA+B,wBAAqBrL,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,GAAAmI,EAGnEC,EAAAA,GAAekD,kCAAoC,iBACnDlD,EAAAA,GAAemD,2CAA6C,uBAC5DnD,EAAAA,GAAeoD,sCAAwC,iBACvDpD,EAAAA,GAAeqD,mDAAqD,uBACpErD,EAAAA,GAAesD,iDAAmD,oBAClEtD,EAAAA,GAAeuD,uDAAyD,qBACxEvD,EAAAA,GAAewD,yCAA2C,mBAC1DxD,EAAAA,GAAeyD,2CAA6C,qBAG5DzD,EAAAA,GAAe0D,iCAAmC,aAClD1D,EAAAA,GAAe2D,4BAA8B,sBAAmB/L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAmI,EAChEC,EAAAA,GAAe4D,wCAA0C,oBACzD5D,EAAAA,GAAe6D,4BAA8B,uBAG7C7D,EAAAA,GAAe8D,6DAA+D,qBAC9E9D,EAAAA,GAAe+D,kDAAoD,qBACnE/D,EAAAA,GAAegE,2CAA6C,qBAC5DhE,EAAAA,GAAeiE,iDAAmD,qBAClEjE,EAAAA,GAAekE,wCAA0C,wBAoBtDC,GAAwB,SAACC,GAC7B,IAAKA,EACH,OAAO,KAET,IAAAjI,EAAgDiI,GAAkB,CAAC,EAA3DC,EAASlI,EAATkI,UAAWC,EAAanI,EAAbmI,cAAeC,EAASpI,EAAToI,UAClCzH,EAA4DwH,GAAiB,CAAC,EAAtEE,EAAc1H,EAAd0H,eAAgBla,EAAewS,EAAfxS,gBAAiBma,EAAc3H,EAAd2H,eAMzC,OALyBF,EAAY,CACnCG,WAAYL,EACZM,YAAaH,GAAkBla,GAAmBma,EAClDF,UAAAA,GACE,IAEN,EA0BMK,GAAoC,SAACC,EAAqBC,EAA0BC,EAAuBC,GAE/G,IAAIC,EAAYlW,IAAAA,QAAUA,IAAAA,IAAM+V,GAA0B,SAACI,GACzD,IAAMlI,EAAajO,IAAAA,OAASmW,GAAqB,SAAAnI,GAAS,OAAAA,EAANoI,MAAoB,IACxE,OAAOpW,IAAAA,QAAUiO,GAAc,KAAOA,CACxC,MAAO,GAEPiI,EA3B8B,SAACH,GAE/B,IAAIM,GAAU,EACRC,EAAe,GAUrB,OATAtW,IAAAA,QAAU+V,GAA0B,SAACQ,GAEnC,IAAMC,EAAmBxW,IAAAA,QAAUuW,EAAe,OAC5CE,EAAUzW,IAAAA,KAAOwW,GACvBH,EAAUA,GAAWI,EAAQhY,OAAS,EACtCgY,EAAQC,SAAQ,SAACC,GACfL,EAAaM,KAAKJ,EAAiBG,GACrC,GACF,IACON,EAAUC,EAAeP,CAClC,CAacc,CAAwBX,GAEpC,IAAMY,EAAoBb,EAA4Bc,EAAAA,GAA0BC,EAAAA,GAiHhF,OA/GyBhX,IAAAA,IAAMkW,GAAW,SAACC,GAEzC,IAAIrH,EAAY,KACZjC,EAAgB,KAChBoK,EAAmB,KACnBC,GAA0B,EAExB7J,EAAgBrN,IAAAA,IAAM8V,GAAqB,SAAA1H,GAA2C,IAAxC+I,EAAgB/I,EAAhB+I,iBAAkBpL,EAAcqC,EAAdrC,eA0FpE,MAJqB,CACnBqL,KAAMD,EACNZ,cAvFoBvW,IAAAA,IAAM+L,GAAgB,SAACC,GAC3C,IAAMqC,EAAgByI,EAAkB9K,IAAkB,CAAC,EAGrDqL,EAAqBtG,GAAiC/E,IAAkB,GAGxEsL,EAAYtX,IAAAA,KAAOmW,GAAqB,SAAAoB,GAAA,IAAGC,EAAeD,EAAfC,gBAAe,OAAOA,GAAmBH,GAAuBG,EAAgBC,gBAAkBJ,EAAmBI,aAAc,IAEpL,IAAKH,EACH,MAAO,CACLjJ,cAAAA,EACAC,kBAAmB,KACnBoJ,qBAAsB,KACtBxJ,oBAAoB,EACpByJ,qBAAqB,EAErBC,wBAAwB,GAK5B,IAAMC,EAAYP,EAAUQ,WAAa,CAAC,EAErChJ,IACHA,EAAY,CACVxP,GAAIuY,EAAUE,UAAYF,EAAUG,IAAMV,EAAUU,GACpD3L,IAAKiL,EAAU/G,KAAO+G,EAAUW,aAAeJ,EAAUtH,KAAOsH,EAAUI,YAC1Exf,MAAOof,EAAUhI,OAASgI,EAAUK,eAAiBZ,EAAUzH,OAASyH,EAAUY,cAClF3e,OAAQse,EAAU9H,QAAU8H,EAAUM,gBAAkBb,EAAUvH,QAAUuH,EAAUa,eACtF7L,YAAauL,EAAUI,aAAeJ,EAAUtH,KAAO+G,EAAUW,aAAeX,EAAU/G,IAC1FhE,cAAesL,EAAUK,eAAiBL,EAAUhI,OAASyH,EAAUY,eAAiBZ,EAAUzH,MAClGrD,eAAgBqL,EAAUM,gBAAkBN,EAAU9H,QAAUuH,EAAUa,gBAAkBb,EAAUvH,SAKrGlD,IACHA,EAAgBgL,EAAUO,cAIvBnB,IACHA,EAAmB7B,GAAsByC,EAAUQ,iBAIjDR,EAAUS,kBACZpB,EAA0BA,GAA2BW,EAAUS,mBAIjE,IAAIZ,EAAuB,MACvBJ,EAAUe,gBAAoBR,EAAUQ,gBAAkBf,EAAUe,eAAe7C,YAAcqC,EAAUQ,eAAe7C,YAC5HkC,EAAuBtC,GAAsBkC,EAAUe,iBAGzD,IAAAE,EAnI8B,SAACjB,EAAWkB,GAChD,IAAAvgB,EAEIqf,GAAa,CAAC,EADhBmB,EAAkBxgB,EAAlBwgB,mBAAoB/J,EAAYzW,EAAZyW,aAAcgK,EAAyBzgB,EAAzBygB,0BAE5BC,GAAiBjK,GAAgB,CAAC,GAAlCiK,aAER,OAAOC,EAAAA,EAAAA,IAAqB,CAC1BH,mBAAAA,EACAI,iBAAkBvB,EAAUwB,sBAC5BC,mBAAoBzB,EAAUyB,mBAC9BC,oBAAqB1B,EAAU0B,oBAC/BC,0BAA2B3B,EAAU2B,0BACrCP,0BAAAA,EACAQ,WAAY,WAAF,OAAQV,GAAkBG,IAAiBQ,GAAAA,GAAgBC,UAAU,KAC3E,CAAC,CACT,CAyHYC,CAA8B/B,EAAWL,GAAoBS,GAJ/DuB,EAAyBV,EAAzBU,0BACAJ,EAAgBN,EAAhBM,iBACAE,EAAkBR,EAAlBQ,mBACAC,EAAmBT,EAAnBS,oBAIIM,GAAqBjL,EAAckL,oBAAsBvD,EAG/D,MAAO,CACL3H,cAAAA,EACAC,kBAAmBgJ,EAAUc,cAAgB,KAE7CV,qBAAAA,EACAxJ,mBAAqBoJ,EAAUgB,iBAAmBhB,EAAUgB,oBAAsB,EAClFX,oBAAqBL,EAAUkC,aAAc,EAE7C5B,wBAAwB,EACxBiB,iBAAkBS,EAAoBT,OAAmBvP,EACzDyP,mBAAoBO,EAAoBP,OAAqBzP,EAC7D0P,oBAAqBM,EAAoBN,OAAsB1P,EAC/D2P,0BAA2BK,EAAoBL,OAA4B3P,EAE/E,IAQF,IAUA,MAAO,CAAEmQ,aARY,CACnB3K,UAAAA,EACAjC,cAAAA,EACAoK,iBAAAA,EACA/I,mBAAoBgJ,GAIC7J,cAAAA,EACzB,GAGF,EAQaqM,GAAmC,SAACzM,EAAiB0M,EAAkB3D,GAClF,IAAA1I,GAKIC,EAAAA,EAAAA,MAJFqM,EAAkBtM,EAAlBsM,mBACAnM,EAAkBH,EAAlBG,mBACAoM,EAAuBvM,EAAvBuM,wBACGlY,GAAIZ,EAAAA,EAAAA,GAAAuM,EAAAtM,IAGHiH,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBACzB7D,EAA4BjW,IAAAA,IAAMiI,EAAa,CAAC,UAAW,qBAE3D8R,GAAqBnM,EAAAA,EAAAA,cAAY,SAACkB,GACtC,IAAQzC,GAAQyC,GAAa,CAAC,GAAtBzC,IACF2N,EAAiBL,IAAqB3Z,IAAAA,SAAW2Z,GAAoBA,EAAmBA,EAAiBtN,KAC/G,OAAOA,GAAO2N,GAAkB3N,IAAQ2N,CAC1C,GAAG,CAACL,IAGEM,GAA+B1S,EAAAA,EAAAA,UAAQ,WAC3C,IAAI8O,GAAU,EACR6D,EAAMla,IAAAA,IAAM6Z,GAAyB,SAAAM,GAA0C,IAAvChD,EAAgBgD,EAAhBhD,iBAAkBZ,EAAa4D,EAAb5D,cAO9D,MAAO,CAAEY,iBAAAA,EAAkBZ,cANFvW,IAAAA,IAAMuW,GAAe,SAACe,GAC7C,IAAQ8C,GAAW9C,GAAa,IAAxB8C,OACFC,EAAYra,IAAAA,OAASoa,GAAQ,SAAAE,GAAA,IAAG1C,EAAsB0C,EAAtB1C,uBAAwB9I,EAASwL,EAATxL,UAAS,OAAO8I,GAA0BmC,EAAmBjL,EAAU,KAAK,GAE1I,OADAuH,EAAUA,GAAWgE,EAAU5b,SAAW2b,EAAO3b,QACjDxF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAYqe,GAAS,IAAE8C,OAAQC,GACjC,IAEF,IACA,OAAOhE,EAAU6D,EAAML,CACzB,GAAG,CAACE,EAAoBF,IAElBU,GAAmC3M,EAAAA,EAAAA,cAAY,SAACmI,EAA0ByE,EAAoBC,GAClG,IAAMC,EAAwB7E,GAAkC5I,EAAiB8I,EAA0BC,EAAuBC,GAClI,GAAKjW,IAAAA,QAAU0a,GAGJf,GAETlM,EAAmB,CAAC,CAAEtB,MAAOwN,EAAkBtM,cAAeJ,SALzB,CACrC,IAAM0N,EAAuBD,GAAyBA,EAAsBvM,KAAI,SAACyM,EAAKC,GAAK,OAAKA,CAAK,IACrGjB,EAAmB,CAAEc,sBAAAA,EAAuBF,mBAAoBA,GAAsBG,GAAwB,CAAC,GAAIF,eAAAA,GACrH,CAIF,GAAG,CAACzE,EAAuB2D,EAAkB1M,EAAiB2M,EAAoBnM,EAAoBwI,IAEtG,OAAAhd,EAAAA,EAAAA,GAAA,CACEshB,iCAAAA,EACAV,wBAAAA,EACAI,6BAAAA,GACGtY,EAEP,ECpRamZ,GAAsBtS,EAAcuS,EAAAA,IACpCC,GAAiCxS,EAAcyS,EAAAA,IAC/C5S,GAA0BG,EAAcJ,GACxCG,GAA4BC,EAAcF,GAC1C4S,GAAkC1S,EAAc2S,EAAAA,IAMhDC,IAJ6B5S,EAAc6S,EAAAA,IACL7S,EAAc8S,EAAAA,IACrB9S,EAAc+S,EAAAA,IACZ/S,EAAcgT,EAAAA,IACbhT,EAAciT,EAAAA,KAoFhDC,IAlFuClT,EAAcmT,EAAAA,IAChBnT,EAAcoT,EAAAA,IACDpT,EAAcqT,EAAAA,IACtBrT,EAAcsT,EAAAA,IACVtT,EAAcuT,EAAAA,IAEPvT,EAAcwT,EAAAA,IACpBxT,EAAcyT,EAAAA,IACvBzT,EAAc0T,EAAAA,IACX1T,EAAc2T,EAAAA,IACV3T,EAAc4T,EAAAA,IAChB5T,EAAc6T,EAAAA,IACT7T,EAAc8T,EAAAA,IACnB9T,EAAc+T,EAAAA,GAErB/T,EAAcgU,EAAAA,IACRhU,EAAciU,EAAAA,IACtBjU,EAAckU,EAAAA,IACpBlU,EAAcmU,EAAAA,IACXnU,EAAcoU,EAAAA,IACpBpU,EAAcqU,EAAAA,IACJrU,EAAcsU,EAAAA,IACdtU,EAAcuU,EAAAA,IAEbvU,EAAcwU,EAAAA,IACHxU,EAAcyU,EAAAA,IACZzU,EAAc0U,EAAAA,IAChB1U,EAAc2U,EAAAA,IACjB3U,EAAc4U,EAAAA,IACd5U,EAAc6U,EAAAA,IACnB7U,EAAc8U,EAAAA,IACV9U,EAAc+U,EAAAA,IACT/U,EAAcgV,EAAAA,IACfhV,EAAciV,EAAAA,IAC3BjV,EAAckV,EAAAA,IACLlV,EAAcmV,EAAAA,IAE9BnV,EAAcoV,EAAAA,IAEXpV,EAAcqV,EAAAA,IACPrV,EAAcsV,EAAAA,IACftV,EAAcuV,EAAAA,IAEFvV,EAAcwV,EAAAA,IACrBxV,EAAcyV,EAAAA,IACZzV,EAAc0V,EAAAA,IAClB1V,EAAc2V,EAAAA,IACO3V,EAAc4V,EAAAA,IACtB5V,EAAc6V,EAAAA,IACV7V,EAAc8V,EAAAA,IACvB9V,EAAc+V,EAAAA,IACZ/V,EAAcgW,EAAAA,IACzBhW,EAAciW,EAAAA,IACfjW,EAAckW,EAAAA,IACjBlW,EAAcmW,EAAAA,IAERnW,EAAcoW,EAAAA,IACfpW,EAAcqW,EAAAA,IACLrW,EAAcsW,EAAAA,IACXtW,EAAcuW,EAAAA,IAC1BvW,EAAcwW,EAAAA,IAEpBxW,EAAcyW,EAAAA,IAClBzW,EAAc0W,EAAAA,IACJ1W,EAAc2W,EAAAA,IACzB3W,EAAc4W,EAAAA,IACd5W,EAAc6W,EAAAA,IAgBJ7W,EAAc8W,EAAAA,KACpDC,GAA4B/W,EAAcgX,EAAAA,IAC1CC,GAA0BjX,EAAckX,EAAAA,IACxCC,GAA8BnX,EAAcoX,EAAAA,IAC5CC,GAA6BrX,EAAcsX,EAAAA,IAC3CC,IAA8BlX,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxCmX,EAAAA,GAAmBC,SAAWJ,IAC9BG,EAAAA,GAAmBE,QAAUX,IAC7BS,EAAAA,GAAmBG,UAAYR,IAC/BK,EAAAA,GAAmBI,kBAAoB1E,IACvCsE,EAAAA,GAAmBK,MAAQZ,G,4tEChNxBa,EAAa,CAAE5Z,WAAY,CAAC,EAAG6Z,KAAM,CAAC,GAkCrC,IAAMC,EAAuB,SAACC,EAAkBC,EAAWC,GAAO,OA3BlE,SAA0BF,EAAkBC,EAAWC,GAC5D,IAPqBzf,EAOrBjJ,EAII0oB,GAAW,CAAC,EAHdC,EAAe3oB,EAAf2oB,gBACAC,EAAY5oB,EAAZ4oB,aACAC,EAAa7oB,EAAb6oB,cAGIC,EAAM,SAACxjB,GAEX,IACA6O,EADkB7O,EAAVyjB,OAC8BV,EAA9B5Z,EAAU0F,EAAV1F,WAAY6Z,EAAInU,EAAJmU,KAEdU,GAAe1Z,EAAAA,EAAAA,UAAQ,kBAAMmZ,EAAUha,EAAY6Z,EAAK,GAAE,CAAC7Z,EAAY6Z,IAEvEthB,GADYsI,EAAAA,EAAAA,UAAQ,kBAAM2Z,EAAAA,EAAAA,iBAAgBD,EAAcL,EAAkB,CAAExJ,KAAMwJ,QAAoBtX,EAAU,GAAE,CAAC2X,GACzGE,IAAe,CAAC,EAChC,OACEjiB,EAAAA,EAAAA,KAACuhB,GAAgBxnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAE0B,QAASA,EAASgiB,aAAcJ,EAAeI,OAAe3X,IAE/F,EAMA,OAJAyX,EAAIK,YAAW,oBAAAtnB,OAAuBgnB,IA1BjB5f,EA0BiDuf,GA1B1BW,aAAelgB,EAAUkW,MAAQ,YA0BU,KAEvFiK,IAAqBN,EAAKN,GAEnBM,CACT,CAE8EO,CAAiBb,EAAkBC,GAASznB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAO0nB,GAAO,IAAEC,gBAAiB,SAAU,E,2CCtC/JW,EAAwB,CAC5BjnB,SAAU,sBACVM,QAAS,sBACTvC,OAAQ,uBACRwB,WAAY,yBACZO,MAAO,qBACPM,WAAY,mBACZL,SAAU,kBACVzB,WAAY,iBACZY,WAAY,qCACZd,OAAQ,gCACR8C,aAAc,kBCXV+lB,EAAwB,CAC5BjnB,SAAU,sBACVM,QAAS,sBACTvC,OAAQ,uBACRwB,WAAY,yBACZO,MAAO,qBACPM,WAAY,mBACZL,SAAU,kBACVzB,WAAY,iBACZY,WAAY,qCACZd,OAAQ,gCACR8C,aAAc,kBAqBHgmB,EAAmD,SAACR,GAE/D,IAAMS,EApBgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAOnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3B,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,KAER,kCAAmC,CACjCJ,MAAO,QACPioB,eAAgB,aAElB5pB,MAAO,mBACPc,OAAQ,MAGVuoB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,GACL8nB,gBAAiB,wDACjBne,SAAU,UAGZyd,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,EACR7B,QAAS,GACTP,SAAU,GACVD,MAAO,WAGT2nB,uBAAwB,CACtB3nB,MAAO,QACP3B,MAAO,IACPc,OAAQ,OACRc,SAAU,GACV/B,UAAW,IACXM,WAAY,MACZ8B,WAAY,OACZxB,aAAc,EACdwC,cAAe,GAGjB0mB,kCAAmC,CACjCxnB,QAAS,mBACTvC,OAAQ,6BACRgC,SAAU,kBACVK,WAAY,kBACZb,WAAY,yBACZO,MAAO,sCACPoB,aAAc,iBAEd,gBAAcvC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBlpB,OAAQ,eACR+B,MAAO,sCACPP,WAAY,yBACZnB,OAAQ,gDACR6pB,QAAS,eACTloB,SAAU,kBACVK,WAAY,oBAEd,mBAAoB,CAClBN,MAAO,gCACPQ,QAAS,yBAIjB,EAEa4nB,EAAoC,SAACxB,GAEhD,IAAMS,EAhGgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAmFnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,GACRqB,QAAS,iBACTf,WAAY,OACZ4oB,cAAe,mBAGjBd,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,IACPc,OAAQ,GACRR,YAAa,IAGf6oB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtB3nB,MAAO,sBACPb,OAAQ,GACRlB,OAAQ,gBACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZgB,cAAe,GAGjB0mB,kCAAmC,CACjCxnB,QAAS,mBACTY,aAAc,iBAEd,gBAAcvC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBnnB,MAAO,+BACPC,SAAU,oBAEZ,mBAAoB,CAClBO,QAAS,iBAIjB,EAEa8nB,EAAuC,SAAC1B,GAEnD,IAAMS,EAtJgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAyInC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRqB,QAAS,mBAGXgnB,uBAAwB,CACtBnpB,MAAO,IACPc,OAAQ,IACRqB,QAAS,GACTf,WAAY,2DACZQ,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBznB,SAAU,WACVE,IAAK,EACLJ,MAAO,UACP3B,MAAO,IACPe,WAAY,gCACZsC,UAAW,SACXzB,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB9nB,MAAO,UACP3B,MAAO,IACP4B,SAAU,GACVb,WAAY,gCACZsC,UAAW,SACXzD,OAAQ,YACRqC,WAAY,KACZ9B,WAAY,KAGdwpB,kCAAmC,CACjC3pB,MAAO,IACPmC,QAAS,mBACTvC,OAAQ,6BACRgC,SAAU,kBACVK,WAAY,kBACZc,aAAc,iBACdlB,SAAU,WACVmC,OAAQ,GACR5C,WAAY,yBAEZ,gBAAcZ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBlpB,OAAQ,eACR+B,MAAO,+BACPmoB,QAAS,eACTloB,SAAU,kBACVK,WAAY,kBACZlB,WAAY,8CAEd,mBAAoB,CAClBoB,QAAS,uBACTpB,WAAY,6CAEd,cAAe,CACbe,MAAO,QACPooB,MAAO,GACPppB,OAAQ,KAIhB,EAEaqpB,EAAyC,SAAC5B,GACrD,IAAMS,EAnOgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAsNnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3B,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,IAER/B,MAAO,mBACPc,OAAQ,MAGVuoB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,IACL8nB,gBAAiB,yDAGnBV,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT4nB,sBAAuB,CACrBvpB,MAAO,IACP4B,SAAU,GAEVd,OAAQ,IACRX,WAAY,IACZM,aAAc,EACdkB,MAAO,QACPM,WAAY,OAEZ,+BAAgC,CAC9BJ,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,gBAAcnpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBnnB,MAAO,qBACPmoB,QAAS,eACT7pB,OAAQ,qBAEV,mBAAoB,CAClBkC,QAAS,eACTR,MAAO,sBAET,cAAe,CACbG,MAAO,QACPooB,MAAO,GACPppB,OAAQ,KAIhB,EAEaspB,EAA8C,SAAC7B,GAE1D,IAAMS,EAvSgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAyRnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,MAGVqoB,uBAAwB,CACtBhnB,QAAS,GACTnC,MAAO,IACPc,OAAQ,GACRa,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdsnB,sBAAuB,CACrBxnB,KAAM,EACNJ,MAAO,UACP3B,MAAO,IACPc,OAAQ,GACRlB,OAAQ,EACRiC,SAAU,WACVD,SAAU,GACVK,WAAY,QAGd0nB,kCAAmC,CACjCxnB,QAAS,mBACT,gBAAc3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxB/lB,aAAc,iBACd+mB,QAAS,iBAEX,mBAAoB,CAClB3nB,QAAS,eACTR,MAAO,oBAIf,EAEa0oB,EAAyC,SAAC9B,GAErD,IAAMS,EApVgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAuUnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRqB,QAAS,EACT6nB,cAAe,mBAGjBd,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,IACPc,OAAQ,GACRlB,OAAQ,iBAGVupB,uBAAwB,CACtBhnB,QAAS,EACTR,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtB3nB,MAAO,UACPb,OAAQ,GACR4K,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZE,QAAS,SAGXwnB,kCAAmC,CACjC3pB,MAAO,IACPmC,QAAS,yBACT,gBAAc3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBlpB,OAAQ,eACRkqB,QAAS,iBAEX,mBAAoB,CAClB3nB,QAAS,uBACTvC,OAAQ,wBAEV,cAAe,CACbkC,MAAO,QACPooB,MAAO,GACPppB,OAAQ,KAIhB,EAEawpB,EAA2C,SAAC/B,GAEvD,IAAMS,EA9YgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAgYnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3B,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,KAER,kCAAmC,CACjC6nB,eAAgB,aAElB5pB,MAAO,mBACPc,OAAQ,MAGVuoB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,EACL8nB,gBAAiB,yDAGnBV,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtB3nB,MAAO,QACP3B,MAAO,IACP4B,SAAU,GACVb,WAAY,oBACZZ,WAAY,MACZ8B,WAAY,OACZxB,aAAc,GACdwC,cAAe,GAGjB0mB,kCAAmC,CACjC9nB,SAAU,WACVmC,QAAS,GACT7D,WAAY,MACZ8B,WAAY,MACZL,SAAU,GACVO,QAAS,yBACT,gBAAc3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBnnB,MAAO,gCACPC,SAAU,kBACVzB,WAAY,iBACZF,OAAQ,2CACR6pB,QAAS,iBAEX,mBAAoB,CAClB3nB,QAAS,eACTvC,OAAQ,eACR+B,MAAO,gCACPxB,WAAY,mBAIpB,EAEaoqB,EAA6C,SAAChC,GAEzD,IAAMS,EAndgD,CACtDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAscnC,MAAO,CAELoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BtnB,MAAO,OACP3B,MAAO,mBACPc,OAAQ,GACRqB,QAAS,EACTf,WAAY,OACZ4oB,cAAe,mBAGjBd,wBAAyB,CACvBpnB,MAAO,QACP9B,MAAO,GACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtB9oB,WAAY,EACZuB,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtB3nB,MAAO,QACPb,OAAQ,GACRlB,OAAQ,QACR8L,SAAU,SACV9J,SAAU,GACVb,WAAY,WACZZ,WAAY,IACZ8B,WAAY,OACZgB,cAAe,GAGjB0mB,kCAAmC,CACjC1nB,WAAY,kBACZlB,WAAY,WACZoB,QAAS,mBACTN,SAAU,WACVE,IAAK,GACL,gBAAcvB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBlpB,OAAQ,eACR+B,MAAO,qBACP1B,OAAQ,6CACR6pB,QAAS,eACTloB,SAAU,oBAEZ,mBAAoB,CAClBC,SAAU,sBACVM,QAAS,kBACTvC,OAAQ,eACR+B,MAAO,qBACPC,SAAU,oBAIlB,E,iGCpda4oB,EAAmC,SAACjC,GAC/C,IAAAkC,EA5EqD,CACrDxB,cAAe,CACbnpB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACVtK,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZqoB,uBAAwB,CACtBvpB,OAAQ,gBACRgC,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,WAGT,6BAA8B,CAC5B7B,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,YAIrBT,sBAAuB,CACrBzoB,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZyJ,SAAU,SACV1L,MAAO,QAETwpB,kBAAmB,CACjB1oB,OAAQ,GACRc,SAAU,GACVD,MAAO,WAETgpB,8BAA+B,CAC7B7qB,QAAS,QAEXspB,kBAAmB,CACjBvnB,SAAU,oBACVF,MAAO,qBACP1B,OAAQ,4BACRL,OAAQ,uBACRE,QAAS,SACTgqB,QAAS,kBACT3nB,QAAS,mBACTtC,UAAW,GACXM,WAAY,IACZ8B,WAAY,EACZc,aAAc,kBAEhB0mB,qBAAsB,CACpB9nB,MAAO,OACP7B,QAAS,eACT8B,SAAU,GACVgpB,SAAU,IAKJ3B,EAAawB,EAAbxB,cAAeE,EAAsBsB,EAAtBtB,uBAA2BH,GAAU1gB,EAAAA,EAAAA,GAAAmiB,EAAAliB,GA2B5D,OA1BY/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBjpB,MAAO,IACP+X,UAAW,IACX5V,QAAS,WACTvB,WAAY,eAEduoB,wBAAsB3oB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjB2oB,GAAsB,IACzB,4DAA6D,CAC3DxnB,MAAO,OACPC,SAAU,GACVzB,WAAY,IACZ8B,WAAY,UAGhB4oB,uBAAwB,CACtBjnB,aAAc,EACd,wBAAyB,CACvBb,aAAc,KAKtB,EAEa+nB,EAA0C,SAACvC,GACtD,IAAAwC,EA3GqD,CACrD9B,cAAe,CACbnpB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACVtK,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZqoB,uBAAwB,CACtBvpB,OAAQ,gBACRgC,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,WAGT,6BAA8B,CAC5B7B,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,YAIrBT,sBAAuB,CACrBzoB,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZyJ,SAAU,SACV1L,MAAO,QAETwpB,kBAAmB,CACjB1oB,OAAQ,GACRc,SAAU,GACVD,MAAO,WAETgpB,8BAA+B,CAC7B7qB,QAAS,QAEXspB,kBAAmB,CACjBvnB,SAAU,oBACVF,MAAO,qBACP1B,OAAQ,4BACRL,OAAQ,uBACRE,QAAS,SACTgqB,QAAS,kBACT3nB,QAAS,mBACTtC,UAAW,GACXM,WAAY,IACZ8B,WAAY,EACZc,aAAc,kBAEhB0mB,qBAAsB,CACpB9nB,MAAO,OACP7B,QAAS,eACT8B,SAAU,GACVgpB,SAAU,IAoCJ3B,EAAa8B,EAAb9B,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAyiB,EAAAC,GA6BpC,OA5BYxqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBnpB,QAAS,QACTE,MAAO,IACPc,OAAQ,IACRiB,IAAK,EACLI,QAAS,WACT4B,UAAW,SAIbknB,+BAAgC,CAC9BnrB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SACZ,kBAAmB,CACjBiB,SAAU,WACVwC,MAAO,GACPvD,OAAQ,IACR,QAAS,CACPyB,cAAe,aAMzB,EAEa2oB,EAAyC,SAAC3C,GACrD,IAAA4C,EA5IqD,CACrDlC,cAAe,CACbnpB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACVtK,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZqoB,uBAAwB,CACtBvpB,OAAQ,gBACRgC,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,WAGT,6BAA8B,CAC5B7B,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,YAIrBT,sBAAuB,CACrBzoB,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZyJ,SAAU,SACV1L,MAAO,QAETwpB,kBAAmB,CACjB1oB,OAAQ,GACRc,SAAU,GACVD,MAAO,WAETgpB,8BAA+B,CAC7B7qB,QAAS,QAEXspB,kBAAmB,CACjBvnB,SAAU,oBACVF,MAAO,qBACP1B,OAAQ,4BACRL,OAAQ,uBACRE,QAAS,SACTgqB,QAAS,kBACT3nB,QAAS,mBACTtC,UAAW,GACXM,WAAY,IACZ8B,WAAY,EACZc,aAAc,kBAEhB0mB,qBAAsB,CACpB9nB,MAAO,OACP7B,QAAS,eACT8B,SAAU,GACVgpB,SAAU,IAqEJ3B,EAAakC,EAAblC,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAA6iB,EAAAC,GA0CpC,OAzCY5qB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBnpB,QAAS,QACTE,MAAO,IACPC,OAAQ,mBACRa,OAAQ,IACRqB,QAAS,WACT4B,UAAW,+EACXhB,aAAc,OAEhBsoB,8BAA+B,CAC7BvrB,QAAS,OACT8qB,SAAU,EACVZ,cAAe,SACfppB,WAAY,SACZiB,SAAU,WACV7B,MAAO,IACP8pB,QAAS,OACT7pB,OAAQ,oBACR8C,aAAc,gBACduoB,aAAc,OACd,yCAA0C,CACxC1rB,OAAQ,mBACR0rB,aAAc,OACdvoB,aAAc,EACdE,cAAe,EAEf,WAAY,CACVpB,SAAU,WACVE,IAAK,GACLsC,KAAM,MACNpE,OAAQ,oBACRe,QAAS,KACT+B,aAAc,MAMxB,E,wCChKawoB,EAAkC,SAAChD,GAC9C,IAAAiD,EAxBkD,CAClDvC,cAAe,CACbnpB,QAAS,QACTG,OAAQ,oBACRL,OAAQ,OACR8L,SAAU,SACV7J,SAAU,sBACVT,WAAY,OACZspB,UAAW,cACX3mB,UAAW,OAEX,4BAA6B,CAC3B/D,MAAO,OACPc,OAAQ,SAGZqoB,4BAAwBtY,EACxB8Y,uCAAmC9Y,EACnCyY,4BAAwBzY,EACxB4Y,0BAAsB5Y,EACtBga,4BAAwBha,GAIhBoY,EAAauC,EAAbvC,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAkjB,EAAAjjB,GAqFpC,OApFY/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBjpB,MAAO,IACPc,OAAQ,GACRiC,aAAc,SACdZ,QAAS,oBAET,4BAA6B,CAC3BrC,QAAS,OACTkqB,cAAe,SAInBb,uBAAwB,CACtBrpB,QAAS,QACT8B,SAAU,kBACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,YAIXgoB,kCAAmC,CACjChoB,MAAO,mBACPC,SAAU,kBACV1B,SAAU,IACVkC,UAAW,iBACXH,WAAY,kBACZM,cAAe,SAEf,eAAgB,CACdZ,MAAO,mBACP3B,MAAO,OACPc,OAAQ,GACRlB,OAAQ,uBACRE,QAAS,0BACTqC,QAAS,mBACTF,WAAY,kBACZM,cAAe,SACfO,gBAAiB,kBACjB7C,OAAQ,mBACR8C,aAAc,iBACdlB,SAAU,sBACVD,SAAU,mBAGZ,mBAAoB,CAClBD,MAAO,mBACPQ,QAAS,mBACTP,SAAU,mBACVQ,UAAW,mBACXH,WAAY,qBAIhBqnB,uBAAwB,CACtB1nB,SAAU,GACVQ,UAAW,EACXjC,WAAY,IACZ8B,WAAY,SACZgB,cAAe,GAGjBwmB,qBAAsB,CACpB9nB,MAAO,QACPC,SAAU,GACVQ,UAAW,EACXH,WAAY,UAGd4oB,uBAAwB,CACtBroB,WAAY,EACZoB,aAAc,GACd,wBAAyB,CACvBb,aAAc,SAKtB,EAEa0oB,EAA+B,SAAClD,GAC3C,IAAAmD,EAjHkD,CAClDzC,cAAe,CACbnpB,QAAS,QACTG,OAAQ,oBACRL,OAAQ,OACR8L,SAAU,SACV7J,SAAU,sBACVT,WAAY,OACZspB,UAAW,cACX3mB,UAAW,OAEX,4BAA6B,CAC3B/D,MAAO,OACPc,OAAQ,SAGZqoB,4BAAwBtY,EACxB8Y,uCAAmC9Y,EACnCyY,4BAAwBzY,EACxB4Y,0BAAsB5Y,EACtBga,4BAAwBha,GA6FhBoY,EAAayC,EAAbzC,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAojB,EAAAV,GA4GpC,OA3GYxqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEb2C,mBAAoB,CAClB7rB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SACZhB,OAAQ,QAGVqpB,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBlpB,SAAU,IACVgD,aAAc,EAEd,4BAA6B,CAC3BjD,QAAS,OACTkqB,cAAe,MACfppB,WAAY,YAIhBuoB,uBAAwB,CACtBrpB,QAAS,SACT8B,SAAU,kBACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SAEV,qCAAsC,CACpC5L,QAAS,eACT+B,SAAU,aAId8nB,kCAAmC,CACjC7pB,QAAS,0BACTF,OAAQ,8BACR2C,cAAe,SAEf,eAAgB,CACdZ,MAAO,mBACP3B,MAAO,OACPc,OAAQ,GACRlB,OAAQ,uBACRE,QAAS,0BACTqC,QAAS,mBACTF,WAAY,kBACZM,cAAe,SACfO,gBAAiB,kBACjB7C,OAAQ,mBACR8C,aAAc,iBACd+mB,QAAS,iBACT/nB,KAAM,IACNF,SAAU,sBACVD,SAAU,mBAGZ,mBAAoB,CAClBD,MAAO,mBACPC,SAAU,kBACVK,WAAY,kBACZE,QAAS,uBAIbmnB,uBAAwB,CACtBxpB,QAAS,eACT6B,MAAO,OACPQ,QAAS,EACThC,WAAY,IACZ8C,cAAe,EACf,WAAY,CACVjC,QAAS,MACTf,OAAQ,aACRH,QAAS,eACTqC,QAAS,MACTypB,UAAW,iCACX7hB,YAAa,kBACbzJ,YAAa,GACbuB,SAAU,WACVwC,MAAO,GAET,WAAY,CACVrD,QAAS,MACTlB,QAAS,SACTqC,QAAS,EACTR,MAAO,OACPE,SAAU,WACVwC,KAAM,IAIVolB,qBAAsB,CACpB3pB,QAAS,eACT6B,MAAO,QACPQ,QAAS,GAGX0oB,uBAAwB,CACtB1oB,QAAS,CAAC,EAAG,EAAG,EAAG,GACnB,wBAAyB,CACvBY,aAAc,SAKtB,EC3Ma8oB,EAAsC,SAAAtD,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAnBR,CAC9CyoB,cAAe,CACblmB,aAAc,gBAEhB+oB,yBAAqBjb,EACrBkb,0BAAsBlb,EACtBmb,yBAAqBnb,EACrBob,mBAAepb,EACfqb,0BAAsBrb,EACtBsb,0BAAsBtb,EACtBqY,6BAAyBrY,EACzBub,+BAA2Bvb,EAC3Bwb,uBAAmBxb,EACnB2Y,uBAAmB3Y,EACnB6Y,2BAAuB7Y,IAOmB,IAG1CoY,cAAe,CACbnoB,OAAQ,OACRwrB,IAAK,kBACL/rB,YAAa,kBACbqD,aAAc,kBACdX,cAAe,iBACf,mBAAoB,qBAEtB6oB,oBAAqB,CACnBrrB,aAAc,SACdF,YAAa,SACbqD,aAAc,SACdomB,cAAe,SACfppB,WAAY,SACZ,wBAAyB,sBAE3BqrB,cAAe,CACbjsB,MAAO,OACPc,OAAQ,QAEVorB,qBAAsB,CACpBvqB,MAAO,UACPZ,WAAY,WACZa,SAAU,MACVyB,UAAW,SACXlD,WAAY,IACZ8B,WAAY,WACZsqB,cAAe,YAEjBJ,qBAAsB,CACpBvqB,SAAU,qBACVD,MAAO,UACPM,WAAY,uBAEdmqB,0BAA2B,CACzBhqB,UAAW,MACX7B,YAAa,SACbqD,aAAc,SACdnD,aAAc,SACdmB,SAAU,uBAEZmqB,qBAAsB,CACpBjsB,QAAS,QAEXopB,wBAAyB,CACzB,EACA8C,oBAAqB,CACnBlsB,QAAS,OACT0C,WAAY,SACZS,cAAe,SACf1C,YAAa,SACbqD,aAAc,SACdmG,YAAa,MACbyiB,eAAgB,gBAChBprB,WAAY,WAEdirB,kBAAmB,CACjBzsB,OAAQ,iBACR8L,SAAU,oBACV5L,QAAS,yBACT2sB,gBAAiB,sBACjBC,gBAAiB,eACjBvqB,QAAS,iBACTP,SAAU,qBACVzB,WAAY,iBACZwB,MAAO,sBAET6nB,kBAAmB,CACjB5pB,OAAQ,MACRuC,QAAS,MACTlC,OAAQ,MACRH,QAAS,mBACT8B,SAAU,qBACVD,MAAO,sBAET+nB,sBAAuB,CACrBzoB,OAAQ,qBACR0rB,mBAAoB,kBACpB5U,UAAW,kBACXhY,SAAU,iBACVgD,aAAc,sBACd3C,UAAW,oBACXwB,SAAU,qBACVzB,WAAY,iBACZ8B,WAAY,qBACZ8B,UAAW,+BACXpC,MAAO,qBACP7B,QAAS,OACTgB,OAAQ,OACRqB,QAAS,kBACTqqB,eAAgB,SAChB5rB,WAAY,SACZkC,gBAAiB,uBAClB,EAQU8pB,EAA8C,SAAArE,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA7HhB,CAC9CyoB,cAAe,CACblmB,aAAc,gBAEhB+oB,yBAAqBjb,EACrBkb,0BAAsBlb,EACtBmb,yBAAqBnb,EACrBob,mBAAepb,EACfqb,0BAAsBrb,EACtBsb,0BAAsBtb,EACtBqY,6BAAyBrY,EACzBub,+BAA2Bvb,EAC3Bwb,uBAAmBxb,EACnB2Y,uBAAmB3Y,EACnB6Y,2BAAuB7Y,IAiHmB,IAG1CoY,cAAe,CACbnoB,OAAQ,OACR,mBAAoB,qBAEtBmrB,cAAe,CACbjsB,MAAO,kBACPc,OAAQ,mBAEVorB,qBAAsB,CACpBvqB,MAAO,qBACPZ,WAAY,sBACZa,SAAU,qBACVyB,UAAW,oBACXlD,WAAY,iBACZ8B,WAAY,sBACZsqB,cAAe,sBACfG,gBAAiB,eACjBD,gBAAiB,sBACjBpsB,WAAY,kBAEd0rB,qBAAsB,CACpBjsB,QAAS,mBAEXksB,oBAAqB,CACnBlsB,QAAS,kBACTkqB,cAAe,qBACfxnB,WAAY,SACZ8pB,IAAK,sBAEPD,kBAAmB,CACjB1qB,MAAO,qBACPZ,WAAY,sBACZa,SAAU,qBACVyB,UAAW,oBACXlD,WAAY,iBACZ8B,WAAY,sBACZsqB,cAAe,sBACfzsB,QAAS,2BAEX+sB,qBAAsB,CACpB/sB,QAAS,2BAEXgtB,gBAAiB,CACfhtB,QAAS,0BACTc,WAAY,WACZ4rB,eAAgB,iBAElB9C,sBAAuB,CACrB5pB,QAAS,kBACTqC,QAAS,6BACTqqB,eAAgB,oBAChB5rB,WAAY,oBACZmC,aAAc,qBACd3B,WAAY,qBACZL,WAAY,sBACZa,SAAU,qBACVyB,UAAW,oBACXlD,WAAY,iBACZ8B,WAAY,kBACZN,MAAO,qBACP5B,SAAU,mBACX,E,gFCjIUgtB,EAAwC,SAACxE,GAEpD,IAAMS,EAhE0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAgDnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAM3BpnB,SAAU,sBACVjC,OAAQ,eACRyE,KAAM,MACNtC,IAAK,iBACL6pB,UAAW,wBACX5rB,MAAO,kBACPc,OAAQ,mBAER,mBAAoB,CAClBkpB,cAAe,SACfppB,WAAY,SACZiB,SAAU,WACV/B,QAAS,OACT0sB,eAAgB,gBAChBzqB,IAAK,GACLsC,KAAM,MACN1C,MAAO,QACPiqB,UAAW,kBACX3pB,WAAY,OACZ,UAAW,CACTL,SAAU,IAEZ,UAAW,CACTA,SAAU,EACVrB,YAAa,MAInB4oB,uBAAwB,CACtBrpB,QAAS,OACTkqB,cAAe,SACfwC,eAAgB,SAChB5rB,WAAY,SACZiB,SAAU,WACVE,IAAK,GACLsC,KAAM,QACNrC,MAAO,GACPgC,OAAQ,QACRhE,MAAO,IACPc,OAAQ,IACRqB,QAAS,GACTR,MAAO,QACPmoB,QAAS,GACTloB,SAAU,EACVK,WAAY,OACZc,aAAc,EACd3B,WAAY,eAEd4rB,uBAAwB,CACtBnrB,SAAU,WACVE,IAAK,IACLsC,KAAM,IACNrE,MAAO,GACP4B,SAAU,IAEZqrB,0BAA2B,CACzBprB,SAAU,WACVE,IAAK,EACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,IAEVosB,+BAAgC,CAC9BvrB,MAAO,QACPC,SAAU,EACVxB,UAAW,SACXgC,UAAW,GACXH,WAAY,OAEdkrB,yBAA0B,CACxBtrB,SAAU,WACVE,IAAK,EACLsC,KAAM,GACNrE,MAAO,IAETotB,oBAAqB,CACnBvrB,SAAU,WACVE,IAAK,EACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,IAEVyoB,sBAAuB,CACrB5nB,MAAO,QACPC,SAAU,EACVxB,UAAW,SACXgC,UAAW,GACXH,WAAY,OAEdwnB,qBAAsB,CACpB9nB,MAAO,QACPC,SAAU,EACVxB,UAAW,SACXgC,UAAW,EACXH,WAAY,OAEdorB,wBAAyB,CACvBxrB,SAAU,WACVE,IAAK,EACLsC,MAAO,IACPrE,MAAO,IAETstB,2BAA4B,CAC1BzrB,SAAU,WACVE,IAAK,EACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,IAEVysB,6BAA8B,CAC5B5rB,MAAO,QACPC,SAAU,EACVxB,UAAW,SACXgC,UAAW,GACXH,WAAY,OAEdurB,kBAAmB,CACjB3rB,SAAU,WACVE,IAAK,IACLsC,KAAM,IACNrE,MAAO,GACPc,OAAQ,IAEV2sB,qBAAsB,CACpB5rB,SAAU,WACVE,IAAK,IACLsC,KAAM,IACNrE,MAAO,EACPc,OAAQ,IAGd,E,qBC5Ma4sB,EAAsB,SAAHluB,GAAA,IAAMmuB,EAAcnuB,EAAdmuB,eAAc,OAAO,SAACC,EAACja,GAAA,IAAAka,EAAAla,EAAIjU,QAAAA,OAAO,IAAAmuB,EAAG,CAAC,EAACA,EAAA,MAC3E,CACEC,0BAA0BC,EAAAA,EAAAA,QAAO,CAC/BpsB,MAAOjC,EAAQ6B,aACfK,SAAU,OACVK,WAAY,OACZ1B,YAAa,OACZotB,EAAeG,0BAElBE,iBAAiBD,EAAAA,EAAAA,QAAO,CACtB,sBAAuB,CACrBjrB,gBAAiB,QACjBnB,MAAO,UACPC,SAAU,OACVK,WAAY,OACZ2nB,eAAgB,YAChBrpB,YAAa,MACbN,OAAQ,SAET0tB,EAAeK,iBAElBC,mBAAmBF,EAAAA,EAAAA,QAAO,CACxB,qBAAsB,CACpB/tB,MAAO,QACPmC,QAAS,QAEX,iBAAkB,CAChBW,gBAAiB,QACjB7C,OAAQ,OACR6B,MAAO,QACPM,UAAW,QAEb,WAAY,CACVT,MAAO,UACPlB,aAAc,QAEhB,aAAc,CACZA,aAAc,OAEhB,oBAAqB,CACnBkB,MAAOjC,EAAQ6B,aACfK,SAAU,OACVK,WAAY,SAEb0rB,EAAeM,mBACnB,CACD,E,4FC1CIC,EAA2C,SAAAlF,GAAU,OAAAxoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEpDwoB,GAAU,IAEbmF,2BAAyB3tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACpBwoB,EAAWmF,2BAAyB,IAEvCruB,QAAS,SAGXmpB,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAE3BnoB,OAAQ,QACRiX,UAAW,QACX5V,QAAS,uBAGXgnB,wBAAsB3oB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjBwoB,EAAWG,wBAAsB,IAEpCloB,OAAQ,UAGVsoB,uBAAqB/oB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAChBwoB,EAAWO,uBAAqB,IAEnCzoB,OAAQ,QACRiX,UAAW,SAGb4S,+BAA6BnqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxBwoB,EAAW2B,+BAA6B,IAE3CvoB,UAAW,QAGbgsB,sBAAoB5tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfwoB,EAAWoF,sBAAoB,IAElCtuB,QAAS,QAET,MAAO,CACLA,QAAS,aAEZ,EA6CQuuB,EAA6C,SAAC9F,GACzD,IAAA+F,EAAwEJ,EAAyChD,KAAzGjC,EAAaqF,EAAbrF,cAAeoC,EAA6BiD,EAA7BjD,8BAAkCrC,GAAU1gB,EAAAA,EAAAA,GAAAgmB,EAAAlD,GAuBnE,OAtBY5qB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAEhBjpB,MAAO,UAGTqrB,+BAA6B7qB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxB6qB,GAA6B,IAEhCrrB,MAAO,QACPS,aAAc,SAGhB8tB,gBAAc/tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTwoB,EAAWuF,gBAAc,IAE5B3uB,OAAQ,aAId,EC7Fa4uB,EAAgD,SAACjG,GAE5D,IAAMS,EA7BgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GAO5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRqB,QAAS,iBACTlC,OAAQ,kCAGVipB,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBR,MAAO,IACPc,OAAQ,KACLkoB,EAAWE,yBAGhBC,uBAAwB,CACtBnpB,MAAO,IACPc,OAAQ,KAGV2tB,uBAAwB,CACtB3tB,OAAQ,IACRqB,QAAS,cACTuoB,UAAW,cAGbiE,0BAA2B,CACzB7uB,QAAS,OACTW,aAAc,GAGhBoqB,uBAAwB,CACtB/pB,OAAQ,GACRd,MAAO,GACPM,YAAa,EACb,wBAAyB,CACvByC,aAAc,iBACd,QAAS,CACPR,cAAe,SAKrBmsB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,sBAGT2nB,uBAAwB,CACtB3nB,MAAO,qBACPZ,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZxB,aAAc,EACdK,OAAQ,IAGV2oB,qBAAsB,CACpB9nB,MAAO,qBACPZ,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZpB,WAAY,SACZouB,aAAc,WACdvjB,SAAU,UAGZmjB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,WACTrC,QAAS,OACTc,WAAY,UAGdmuB,wBAAyB,CACvBzuB,YAAa,GAGf0uB,2BAA4B,CAC1BpE,SAAU,EACV9pB,OAAQ,IAGVguB,kBAAmB,CACjBhvB,QAAS,eACTyC,cAAe,OAGjBmnB,sBAAuB,CACrBzpB,OAAQ,mCACRkC,QAAS,UACTY,aAAc,MACdpB,MAAO,sBACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZa,gBAAiB,eAGnB8rB,4BAA6B,CAC3B3uB,OAAQ,OACR0B,MAAO,uBACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,QAGlB,EAEaitB,EAAkD,SAAC3G,GAE9D,IAAMS,EAtJgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GAgI5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,iBACdgB,UAAW,4FACX,4BAA6B,CAC3BjE,QAAS,OACTkqB,cAAe,4BAInBd,yBAAuB1oB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACrBkqB,UAAW,aACX1qB,MAAO,IACPc,OAAQ,OACRqB,QAAS,iBACN6mB,EAAWE,yBAAuB,IACrC,wBAAyB,CACvBnmB,aAAc,oBAIlBomB,uBAAwB,CACtByB,SAAU,EACV9pB,OAAQ,QAGV6tB,0BAA2B,CACzBluB,aAAc,GAGhBiuB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,sBAGT8sB,uBAAwB,CACtB3tB,OAAQ,GACRqB,QAAS,YACTuoB,UAAW,cAGbpB,uBAAwB,CACtBvoB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,sBAGTktB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,UACTrC,QAAS,OACTc,WAAY,UAGdouB,2BAA4B,CAC1BpE,SAAU,EACV9pB,OAAQ,IAGVguB,kBAAmB,CACjBhvB,QAAS,eACTyC,cAAe,OAGrB,EAEa4sB,EAAkD,SAAC5G,GAC9D,IAAMS,EApOgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GA8M5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,iBACdgB,UAAW,oBAGbmlB,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBR,MAAO,OACPc,OAAQ,QACLkoB,EAAWE,yBAGhBC,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNrC,MAAO,EACPgC,OAAQ,EACRhE,MAAO,OACPc,OAAQ,QACRM,WAAY,0EAGdqtB,uBAAwB,CACtBjsB,WAAY,OACZ1B,OAAQ,QACR4pB,UAAW,cAGbnB,sBAAuB,CACrBpnB,QAAS,WACTpB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,yBACP7B,QAAS,cACT,qBAAsB,WACtB,qBAAsB,EACtB4L,SAAU,UAGZmjB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,WACTrC,QAAS,OACTc,WAAY,UAGdouB,2BAA4B,CAC1B1uB,YAAa,EACbQ,OAAQ,IAGVguB,kBAAmB,CACjBtrB,YAAa,sCACb7B,MAAO,oBAGT+sB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZ2oB,SAAU,EACVjpB,MAAO,SAGb,EAEaytB,EAA4D,SAAC7G,GAExE,IAAMS,EAjTgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GA2R5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BlmB,aAAc,iBACd/C,MAAO,mBACPc,OAAQ,MAGVqoB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNrC,MAAO,EACPgC,OAAQ,EACRhE,MAAO,OACPc,OAAQ,SAGVuoB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRM,WAAY,8IAGdqtB,uBAAwB,CACtBtsB,QAAS,gBACT4V,UAAW,OACX2S,UAAW,aACXtpB,WAAY,qKAGdutB,0BAA2B,CACzB7uB,QAAS,OACTW,aAAc,GAGhBoqB,uBAAwB,CACtB/pB,OAAQ,GACRd,MAAO,GACPM,YAAa,EACb,wBAAyB,CACvByC,aAAc,iBACd,QAAS,CACPR,cAAe,SAKrBmsB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,SAGT2nB,uBAAwB,CACtB3nB,MAAO,QACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,QAGd4sB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,WACTrC,QAAS,OACTc,WAAY,SACZQ,WAAY,sFAGd2tB,wBAAyB,CACvBzuB,YAAa,GAGf0uB,2BAA4B,CAC1BpE,SAAU,EACV9pB,OAAQ,IAGVguB,kBAAmB,CACjBhvB,QAAS,eACTyC,cAAe,MACfiB,YAAa,sCACb7B,MAAO,oBAGT+nB,sBAAuB,CACrBzpB,OAAQ,YACRovB,kBAAmB,oFACnBltB,QAAS,UACTY,aAAc,MACdpB,MAAO,yBACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZa,gBAAiB,6BAGnB8rB,4BAA6B,CAC3B3uB,OAAQ,OACR0B,MAAO,QACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZa,gBAAiB,eAGvB,EAEawsB,GAAuD,SAAC/G,GAEnE,IAAMS,EAvagD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GAgZ5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,kBACdgB,UAAW,8FAGbmlB,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBM,OAAQ,KACLkoB,EAAWE,yBAGhBuF,uBAAwB,CACtBtsB,QAAS,cACT1B,aAAc,GACdK,OAAQ,GACR4pB,UAAW,cAGbnB,sBAAuB,CACrBxoB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,uBAGTktB,8BAA+B,CAC7B1sB,QAAS,WAGXusB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,uBAGb,EAEa4tB,GAA6C,SAAChH,GAEzD,IAAMS,EArdgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GA+b5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,iBACdgB,UAAW,4FACX,4BAA6B,CAC3BjE,QAAS,OACTkqB,cAAe,oBAInBd,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBR,MAAO,IACPc,OAAQ,KACLkoB,EAAWE,yBAGhBC,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,OACZnB,OAAQ,KAGV2tB,uBAAwB,CACtBtsB,QAAS,YACT1B,aAAc,GACdK,OAAQ,GACR4pB,UAAW,cAGbpB,uBAAwB,CACtBvoB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,sBAGTktB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,UACTrC,QAAS,OACTc,WAAY,UAGdouB,2BAA4B,CAC1B1uB,YAAa,EACbQ,OAAQ,IAGV4tB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,sBAGb,EAEa6tB,GAAsD,SAACjH,GAElE,IAAMS,EAzhBgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GAmgB5B,MAAO,CAELoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRqB,QAAS,OACTf,WAAY,OACZ2B,aAAc,iBACd9C,OAAQ,mEACR8D,UAAW,iDACX,4BAA6B,CAC3BjE,QAAS,OACTkqB,cAAe,4BAInBd,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBR,MAAO,IACPc,OAAQ,IACRT,WAAY,IACT2oB,EAAWE,yBAGhByF,0BAA2B,CACzB7uB,QAAS,OACTW,aAAc,GAGhBoqB,uBAAwB,CACtB/pB,OAAQ,GACRd,MAAO,GACPM,YAAa,EACb,wBAAyB,CACvByC,aAAc,iBACd,QAAS,CACPR,cAAe,SAKrBmsB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,sBAGTwnB,uBAAwB,CACtByB,SAAU,GAGZ6D,uBAAwB,CACtBhuB,aAAc,GACdK,OAAQ,IAGVwoB,uBAAwB,CACtBvoB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,sBAGTktB,8BAA+B,CAC7B/tB,OAAQ,GACR4pB,UAAW,aACXvoB,QAAS,MACTrC,QAAS,OACTc,WAAY,UAGdouB,2BAA4B,CAC1BpE,SAAU,EACV9pB,OAAQ,IAGVguB,kBAAmB,CACjBhvB,QAAS,eACTyC,cAAe,OAGrB,EAEaktB,GAAoD,SAAClH,GAEhE,IAAMS,EAnnBgD,CACtDC,cAAe,CAGb,EAEFC,6BAAyBrY,EACzBsY,4BAAwBtY,EACxB4d,4BAAwB5d,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnBga,4BAAwBha,EACxB6d,oCAAgC7d,EAChCyY,4BAAwBzY,EACxB8d,+BAA2B9d,EAC3B0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB+d,iCAA6B/d,EAC7B8Y,uCAAmC9Y,EACnCge,mCAA+Bhe,EAC/Bie,uBAAmBje,EACnBke,6BAAyBle,EACzBme,gCAA4Bne,GA4lB5B,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,mBAGhBmmB,yBAAuB1oB,EAAAA,EAAAA,GAAA,CACrBM,OAAQ,KACLkoB,EAAWE,yBAGhBC,uBAAwB,CACtBhnB,QAAS,YAGXssB,uBAAwB,CACtBzuB,MAAO,IACPwC,WAAY,MACZ1B,OAAQ,GACR4pB,UAAW,cAGbiE,0BAA2B,CACzB7uB,QAAS,OACTW,aAAc,GAGhBoqB,uBAAwB,CACtB7qB,MAAO,GACPM,YAAa,EACb,wBAAyB,CACvByC,aAAc,iBACd,QAAS,CACPR,cAAe,SAKrBmsB,+BAAgC,CAC9B3tB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,uBAGT2nB,uBAAwB,CACtB3nB,MAAO,sBACPZ,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,QAGdytB,kBAAmB,CACjB9tB,SAAU,QAGZ+tB,eAAgB,CACd9tB,SAAU,WACVG,MAAO,OACPgC,OAAQ,UAGVylB,qBAAsB,CACpBrnB,UAAW,EACXrB,WAAY,WACZZ,WAAY,MACZyvB,SAAU,OACV3tB,WAAY,OACZN,MAAO,uBAGTktB,8BAA+B,CAC7BhtB,SAAU,WACVG,MAAO,EACPD,IAAK,EACL/B,MAAO,OACPc,OAAQ,OACR+uB,uBAAwB,MACxB/vB,QAAS,OACT0sB,eAAgB,SAChB5rB,WAAY,SACZkC,gBAAiB,4BAGvB,EC7sBagtB,GAA2C,WA6HtD,MA5He,CACbnE,mBAAoB,CAClB/rB,OAAQ,OACRI,MAAO,OACPc,OAAQ,OACRhB,QAAS,OACTc,WAAY,SACZ4rB,eAAgB,SAChBuD,UAAW,QAGb9G,cAAe,CACbjpB,MAAO,IACPc,OAAQ,GACRqB,QAAS,qBACTrC,QAAS,OACTc,WAAY,SACZK,OAAQ,UAER,4BAA6B,CAC3BnB,QAAS,OACTkqB,cAAe,MACfppB,WAAY,SACZE,OAAQ,QAGV,UAAW,CACTgC,gBAAiB,2BAIrBktB,gBAAiB,CACfpwB,OAAQ,UACRkB,OAAQ,EACRd,MAAO,GAGTmpB,uBAAwB,CACtBrpB,QAAS,QACT+B,SAAU,WACVf,OAAQ,OACRd,MAAO,KAGT8uB,kBAAmB,CACjBjtB,SAAU,WACVG,MAAO,GACPD,IAAK,EACL/B,MAAO,GACPc,OAAQ,kBACRiC,aAAc,iBACd9C,OAAQ,4CACRkC,QAAS,qBACTuoB,UAAW,wBACXtqB,UAAW,oBACXD,WAAY,iBACZyB,SAAU,kBACVK,WAAY,kBACZN,MAAO,mCAGTsuB,SAAU,CACRpuB,SAAU,WACVG,MAAO,EACPD,IAAK,GAGP4nB,kCAAmC,CACjC5oB,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,QAGdqnB,uBAAwB,CACtBvoB,WAAY,WACZa,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZN,MAAO,yBAGTuuB,sBAAuB,CACrBpwB,QAAS,OACTqwB,SAAU,SACVvvB,WAAY,UAGd8oB,sBAAuB,CACrB0G,WAAY,EACZtvB,OAAQ,OACRiC,aAAc,MACd9C,OAAQ,mCACR6C,gBAAiB,cACjBX,QAAS,UACTpB,WAAY,WACZZ,WAAY,IACZyB,SAAU,GACVK,WAAY,OACZN,MAAO,sBACPtB,WAAY,MACZqqB,UAAW,cAGbjB,qBAAsB,CACpB9nB,MAAO,sBACPC,SAAU,GACVK,WAAY,OACZlB,WAAY,WACZZ,WAAY,IACZU,WAAY,SACZouB,aAAc,WACdvjB,SAAU,SACVkf,SAAU,GAGZC,uBAAwB,CACtB7qB,MAAO,GACPM,YAAa,GACb,wBAAyB,CACvByC,aAAc,mBAKtB,EAEastB,GAAwC,WAyHnD,MAxHe,CACb1E,mBAAoB,CAClB/rB,OAAQ,OACRI,MAAO,OACPc,OAAQ,OACRhB,QAAS,OACTc,WAAY,SACZmvB,UAAW,QAGb9G,cAAe,CACbjpB,MAAO,KACPc,OAAQ,GACRiC,aAAc,EACdjD,QAAS,OACTkqB,cAAe,MACfoG,WAAY,EACZxvB,WAAY,SACZkC,gBAAiB,QACjBwoB,aAAc,uEACdvnB,UAAW,gDACXH,aAAc,GACd8mB,UAAW,aAEX,4BAA6B,CAC3B5qB,QAAS,OACTkqB,cAAe,MACfppB,WAAY,SACZE,OAAQ,OACR8pB,SAAU,IAIdoF,gBAAiB,CACflwB,QAAS,OACTc,WAAY,SACZE,OAAQ,OACRd,MAAO,GACP,iBAAkB,CAChBc,OAAQ,OACRd,MAAO,MACP8C,gBAAiB,wBACjB9B,QAAS,GACTlB,QAAS,SAGX,kBAAmB,CACjBE,MAAO,GACPc,OAAQ,GACRT,WAAY,IAIhB8oB,uBAAwB,CACtBtnB,SAAU,WACV/B,QAAS,OACTc,WAAY,SACZE,OAAQ,OACR8pB,SAAU,EACVzoB,QAAS,kBACTuoB,UAAW,aAEX,qCAAsC,CACpC5qB,QAAS,eACT+B,SAAU,aAIditB,kBAAmB,CACjBjtB,SAAU,WACVwC,KAAM,IACNtC,IAAK,EACL/B,MAAO,GACPc,OAAQ,kBACRb,OAAQ,4CACRkC,QAAS,qBACTuoB,UAAW,wBACXtqB,UAAW,oBACX2C,aAAc,iBACd5C,WAAY,iBACZyB,SAAU,kBACVK,WAAY,kBACZN,MAAO,mCAGTsuB,SAAU,CACRpuB,SAAU,WACVwC,KAAM,IACNtC,IAAK,GAGP4nB,kCAAmC,CACjC3pB,MAAO,IACPM,YAAa,IAGfgpB,uBAAwB,CACtBhpB,YAAa,EACbS,WAAY,WACZZ,WAAY,MACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,yBAGT8nB,qBAAsB,CACpB1oB,WAAY,WACZZ,WAAY,IACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,uBAGTkpB,uBAAwB,CACtB7qB,MAAO,GACP,wBAAyB,CACvB+C,aAAc,mBAKtB,ECnPMutB,GAAuB,SAAH9wB,GASnB,IARL+wB,EAAS/wB,EAAT+wB,UACA3c,EAAGpU,EAAHoU,IACA5T,EAAKR,EAALQ,MACAc,EAAMtB,EAANsB,OACAqG,EAAQ3H,EAAR2H,SACAqpB,EAAyBhxB,EAAzBgxB,0BACAhqB,EAAOhH,EAAPgH,QACAgX,EAAyBhe,EAAzBge,0BAEMjU,GAASuF,EAAAA,EAAAA,UAAQ,kBAAQ9O,GAASc,EAAW,CACjDd,MAAOA,EAAK,GAAAqB,OAAMrB,EAAK,WAAO6Q,EAC9B/P,OAAQA,EAAM,GAAAO,OAAMP,EAAM,WAAO+P,QAC9BA,CAAS,GAAG,CAAC/P,EAAQd,IAE1B,OACEuK,EAAAA,EAAAA,MAAA,OAAKvC,MAAOuB,EAAQxC,UAAW0pB,IAAWjT,EAA4BhX,EAAQkqB,8BAAgClqB,EAAQmqB,sBAAuBJ,GAAa/pB,EAAQoqB,yBAA0BJ,EAA2B,6BAA6BrpB,SAAA,CACjPyM,IACCnN,EAAAA,EAAAA,KAAA,KACEM,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMnd,EAAIzM,SAETA,KAGHyM,IACAnN,EAAAA,EAAAA,KAAA,OACEM,UAAU,yBAAwBI,SAEjCA,MAKX,EAeAmpB,GAAqBlpB,aAAe,CAClCmpB,WAAW,EACX3c,SAAK/C,EACL7Q,WAAO6Q,EACP/P,YAAQ+P,EACR2f,+BAA2B3f,GAGtB,IAAMmgB,GAAmBjJ,EAC9BuI,ICnEoC,WAAC,MAAiB,CACtDI,8BAA+B,CAC7B5wB,QAAS,OACTkqB,cAAe,SAEfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,aACXhf,SAAU,SACV3H,UAAW,2EACXhB,aAAc,EACd3B,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZ6vB,qBAAsB,CACpB7wB,QAAS,OACTkqB,cAAe,SAEfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACV3H,UAAW,+EACXhB,aAAc,KACd3B,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZ8vB,yBAA0B,CACxB9G,QAAS,IAEZ,GD2BC,CAAEzB,cAAe,sBEjEN4I,GAA4B,SAAHzxB,GAM/B,IALL0xB,EAAQ1xB,EAAR0xB,SACAC,EAAU3xB,EAAV2xB,WACAC,EAAe5xB,EAAf4xB,gBACAC,EAAkC7xB,EAAlC6xB,mCACAlqB,EAAQ3H,EAAR2H,SAEA,OAAIiqB,GAEA3qB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWY,EAAoC,0BAA0BlqB,SACtFA,KAKLV,EAAAA,EAAAA,KAAA,KACEM,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMG,GAAYC,EAAWhqB,SAE5BA,GAGP,EAUA8pB,GAA0B7pB,aAAe,CACvC8pB,cAAUrgB,EACVsgB,gBAAYtgB,EACZugB,iBAAiB,EACjBC,wCAAoCxgB,GCnCtC,IAAMygB,GAAc,SAAH9xB,GAAA,IACf2J,EAAI3J,EAAJ2J,KAAM2lB,EAAiBtvB,EAAjBsvB,kBAAmBtoB,EAAOhH,EAAPgH,QAASgX,EAAyBhe,EAAzBge,0BAAyB,OAE3D/W,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjT,EAA4BhX,EAAQ+qB,qBAAuB/qB,EAAQgrB,YAAa1C,GAAmB3nB,SAC3HgC,EAAKQ,UAAU,OACZ,EAaR2nB,GAAYlqB,aAAe,CACzB0nB,uBAAmBje,GAGd,IAAM4gB,GAAU1J,EACrBuJ,IC9B8B,WAAC,MAAiB,CAChDE,YAAa,CACX3vB,SAAU,WACViB,gBAAiB,QACjBnB,MAAO,QACPC,SAAU,GACVmB,aAAc,EACdZ,QAAS,sBACTvC,OAAQ,EACRkqB,QAAS,OAGXyH,qBAAsB,CACpBzxB,QAAS,eACTyC,cAAe,MACfQ,aAAc,MACd9C,OAAQ,oCACRkC,QAAS,UACTrB,OAAQ,GACR4pB,UAAW,aACX3pB,WAAY,WACZZ,WAAY,IACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,yBAEV,GDMC,CAAE0mB,cAAe,YEvBNqJ,GAA+B,SAAHlyB,GAAA,IACvCmyB,EAAYnyB,EAAZmyB,aACAC,EAAYpyB,EAAZoyB,aACAC,EAAWryB,EAAXqyB,YACA1oB,EAAI3J,EAAJ2J,KACA2oB,EAAatyB,EAAbsyB,cACAtrB,EAAOhH,EAAPgH,QACAgX,EAAyBhe,EAAzBge,0BAAyB,OAEzBjT,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjT,EAA4BhX,EAAQurB,uBAAyBvrB,EAAQwrB,6BAA8BF,GAAe3qB,SAAA,CAEzIyqB,IAAgBnrB,EAAAA,EAAAA,KAAA,QAAMM,UAAU,YAAWI,SAAEgC,EAAKQ,UAAUsoB,QAG5DN,IAAgBlrB,EAAAA,EAAAA,KAAA,QAAMM,UAAU,gBAAeI,SAAEwqB,IAGjDE,IAAeprB,EAAAA,EAAAA,KAAA,OAAKM,UAAU,WAAWmrB,IAAI,OAAOhU,IAnBvC,i+BAqBX,EAgBRwT,GAA6BtqB,aAAe,CAC1CuqB,kBAAc9gB,EACdihB,mBAAejhB,EACf+gB,cAAc,EACdC,aAAa,GAGR,IAAMM,GAA2BpK,EACtC2J,ICpD8C,WAAC,MAAiB,CAChEM,6BAA8B,CAC5B7vB,QAAS,CAAC,EAAG,GACbuJ,SAAU,SACVtJ,UAAW,EACXvB,WAAY,SACZouB,aAAc,WACdttB,MAAO,OACPC,SAAU,GACVK,WAAY,OAEZ,eAAgB,CACdJ,SAAU,WACVM,QAAS,WACTvC,OAAQ,YACRwB,WAAY,cACZO,MAAO,UACPM,WAAY,MACZL,SAAU,OACVzB,WAAY,MACZY,WAAY,qCACZd,OAAQ,qBACR8C,aAAc,OAGhB,mBAAoB,CAClB2I,SAAU,SACV7K,WAAY,SACZouB,aAAc,WACdttB,MAAO,OACPC,SAAU,GACVK,WAAY,MACZE,QAAS,QACTC,UAAW,IAIf2vB,uBAAwB,CACtBhxB,WAAY,WACZZ,WAAY,IACZyB,SAAU,OACVK,WAAY,OACZN,MAAO,oBAEV,GDUC,CAAE0mB,cAAe,8BE/Cb+J,GAAe,SAAH5yB,GAAA,IAChB6yB,EAAiB7yB,EAAjB6yB,kBAAmB7rB,EAAOhH,EAAPgH,QAAO,OAE1BC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ8rB,0BAA2BD,IAAsB,EAUtFD,GAAahrB,aAAe,CAC1BirB,uBAAmBxhB,GAGd,IAAM0hB,GAAoBxK,EAC/BqK,ICzBwC,WAAC,MAAiB,CAC1DE,0BAA2B,CACzBxyB,QAAS,QACT+B,SAAU,WACV7B,MAAO,OACPc,OAAQ,QAEX,GDoBC,CAAEunB,cAAe,uB,qCExBNmK,GAAW,SAACxK,GACvB,IAAMyK,EAAMttB,EAAAA,MAAW,SAAAL,GAAK,OAC1B2B,EAAAA,EAAAA,KAAA,KACEM,UAAU,iBACVgqB,KAAMjsB,EAAMosB,SACZJ,IAAI,sBACJD,OAAO,SAAQ1pB,UAEfV,EAAAA,EAAAA,KAACuhB,GAAgBxnB,EAAAA,EAAAA,GAAA,GAAKsE,KACpB,IAON,OAJA2tB,EAAIzjB,UAAY,CACdkiB,SAAUjiB,KAAAA,OAAiBC,YAGtBujB,CACT,ECbaC,GAAgBvtB,EAAAA,YAAiB,SAAA3F,EAI3CsH,GAAG,IAHJqE,EAAI3L,EAAJ2L,KACAwnB,EAAWnzB,EAAXmzB,YACAC,EAAsBpzB,EAAtBozB,uBAAsB,OAEtBD,GACElsB,EAAAA,EAAAA,KAACosB,GAAAA,sBAAqB,CACpB/rB,IAAKA,EACLC,UAAW0pB,IAAWmC,GACtBznB,KAAMA,KAEN1E,EAAAA,EAAAA,KAAA,OAAKM,UAAW6rB,EAAuBzrB,SACpCgE,GAEJ,IAGLunB,GAAc1jB,UAAY,CACxB7D,KAAM8D,KAAAA,OACN0jB,YAAa1jB,KAAAA,KAAeC,WAC5B0jB,uBAAwB3jB,KAAAA,QAG1ByjB,GAActrB,aAAe,CAC3BwrB,4BAAwB/hB,EACxB1F,UAAM0F,GAKD,IAAMiiB,GAAoB3tB,EAAAA,YAAiB,SAAAwO,EAI/C7M,GAAG,IAHJisB,EAAYpf,EAAZof,aACAJ,EAAWhf,EAAXgf,YACAK,EAA0Brf,EAA1Bqf,2BAA0B,OAE1BvsB,EAAAA,EAAAA,KAACisB,GAAa,CACZ5rB,IAAKA,EACL6rB,YAAaA,EACbxnB,KAAM4nB,EACNH,uBAAwBnC,IAAWuC,IACnC,IAGJF,GAAkB9jB,UAAY,CAC5B+jB,aAAc9jB,KAAAA,OACd0jB,YAAa1jB,KAAAA,KACb+jB,2BAA4B/jB,KAAAA,QAG9B6jB,GAAkB1rB,aAAe,CAC/B2rB,kBAAcliB,EACd8hB,aAAa,EACbK,gCAA4BniB,GAGvB,IAAMoiB,GAA4BT,GAASM,IAIrCI,GAAoB/tB,EAAAA,YAAiB,SAAAwP,EAK/C7N,GAAG,IAJJ6rB,EAAWhe,EAAXge,YACAzB,EAAQvc,EAARuc,SACAC,EAAUxc,EAAVwc,WACAgC,EAA0Bxe,EAA1Bwe,2BAA0B,OAE1B1sB,EAAAA,EAAAA,KAACisB,GAAa,CACZ5rB,IAAKA,EACL6rB,YAAaA,EACbxnB,KAAMgmB,GAAcD,EACpB0B,uBAAwBnC,IAAW0C,IACnC,IAGJD,GAAkBlkB,UAAY,CAC5BkiB,SAAUjiB,KAAAA,OACVkiB,WAAYliB,KAAAA,OACZ0jB,YAAa1jB,KAAAA,KACbkkB,2BAA4BlkB,KAAAA,QAG9BikB,GAAkB9rB,aAAe,CAC/B8pB,cAAUrgB,EACVsgB,gBAAYtgB,EACZsiB,gCAA4BtiB,EAC5B8hB,aAAa,GAGR,IAAMS,GAA4BZ,GAASU,IAIrCG,GAAuBluB,EAAAA,YAAiB,SAAAmQ,EAIlDxO,GAAG,IAHJwsB,EAAWhe,EAAXge,YACAX,EAAWrd,EAAXqd,YACAY,EAA6Bje,EAA7Bie,8BAA6B,OAE7B9sB,EAAAA,EAAAA,KAACisB,GAAa,CACZ5rB,IAAKA,EACL6rB,YAAaA,EACbxnB,KAAMmoB,EACNV,uBAAwBnC,IAAW8C,IACnC,IAGJF,GAAqBrkB,UAAY,CAC/BskB,YAAarkB,KAAAA,OACb0jB,YAAa1jB,KAAAA,KACbskB,8BAA+BtkB,KAAAA,QAGjCokB,GAAqBjsB,aAAe,CAClCksB,iBAAaziB,EACb0iB,mCAA+B1iB,EAC/B8hB,aAAa,GCpHR,IAAMa,GAAkB,SAAHh0B,GAAA,IAC1Bi0B,EAAUj0B,EAAVi0B,WACAC,EAAwBl0B,EAAxBk0B,yBAAwB,OACnBD,GACLhtB,EAAAA,EAAAA,KAAA,UAAQM,UAAW0pB,IAAWiD,GAA0BvsB,SACrDssB,IACS,IAAI,EAQlBD,GAAgBpsB,aAAe,CAC7BqsB,gBAAY5iB,EACZ6iB,8BAA0B7iB,G,iBCdf8iB,GAAiB,SAAHn0B,GAOpB,IANL2J,EAAI3J,EAAJ2J,KACAuK,EAAKlU,EAALkU,MACAkgB,EAAUp0B,EAAVo0B,WACAC,EAAuBr0B,EAAvBq0B,wBACAC,EAAkBt0B,EAAlBs0B,mBACAC,EAAuBv0B,EAAvBu0B,wBAEA,OAAIrgB,GAASA,EAAMwK,IACb0V,GAEAntB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWsD,EAAyB,4BAA4B5sB,UAC9EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACf7c,YAAazD,EAAMuC,aAAevC,EAAMuC,aAAakB,YAAc,EACnEI,QAAS7D,EAAMuC,aAAevC,EAAMuC,aAAasB,QAAU,EAC3DE,QAAS/D,EAAMuC,aAAevC,EAAMuC,aAAawB,QAAU,EAC3DhB,YAAaod,EACb9f,eAAgBL,EAAM5S,OACtBgT,cAAeJ,EAAM1T,MACrBi0B,kBAAmBH,EACnB5V,IAAKxK,EAAMwK,SAKXzX,EAAAA,EAAAA,KAACytB,GAAAA,EAAK,CACZntB,UAAW0pB,IAAWsD,EAAyB,4BAC/C7V,IAAKxK,EAAMwK,IACXpd,OAAQgzB,EACR5B,IAAK/oB,EAAKQ,UAAUsoB,oBACpBkC,cAAY,IAGT,IACT,EAyBAR,GAAevsB,aAAe,CAC5BsM,MAAO,CAAC,EACRkgB,YAAY,EACZC,wBAAyB,KACzBC,mBAAoB,IACpBC,wBAAyB,I,iFC7DdK,GAA2BjvB,EAAAA,YAAiB,SAAA3F,EAItDsH,GAAS,IAHVqC,EAAI3J,EAAJ2J,KACAkrB,EAAU70B,EAAV60B,WACA1G,EAAcnuB,EAAdmuB,eAEMnnB,GAAU8tB,EAAAA,GAAAA,kBAAiB5G,EAAoB,CAAEC,eAAAA,KAEvD,OAAQ4G,EAAAA,EAAAA,SAAQF,IAA+C,mBAAhCA,EAAWG,iBAStC,MARF/tB,EAAAA,EAAAA,KAACguB,GAAAA,EAAI,CACH1tB,UAAW0pB,IAAW,iBAAkBjqB,EAAQsnB,0BAChDhnB,IAAKA,EACL+pB,OAAO,SACPE,MAAM2D,EAAAA,EAAAA,OAAML,EAAWM,WAAWxtB,SAEjCgC,EAAKQ,UAAUsoB,cAGtB,IAaAmC,GAAyBhtB,aAAe,CACtCitB,WAAY,CAAC,EACb1G,eAAgB,CAAC,GAGZ,IAAMiH,GAAkB,SAAHjhB,GAIrB,IAHLxK,EAAIwK,EAAJxK,KACAkrB,EAAU1gB,EAAV0gB,WACA1G,EAAcha,EAAdga,eAEMnnB,GAAU8tB,EAAAA,GAAAA,kBAAiB5G,EAAoB,CAAEC,eAAAA,KACvDkH,GAAsCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,GAAAA,GAAAH,EAAA,GAA9CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAC5BjuB,GAAMquB,EAAAA,EAAAA,UAEZ,OAAQZ,EAAAA,EAAAA,SAAQF,IAA+C,UAAhCA,EAAWG,iBAoCtC,MAnCFjqB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAW,mBAAoBjqB,EAAQwnB,iBAAiB7mB,SAAA,EACtEV,EAAAA,EAAAA,KAAA,UACEM,UAAU,mBACVkC,QAAS,WAAF,OAAQisB,GAAgBD,EAAY,EAC3CnuB,IAAKA,EAAIK,SAERktB,EAAWe,QAEbH,IACC1qB,EAAAA,EAAAA,MAACkd,GAAAA,EAAO,CACN1gB,UAAW0pB,IAAW,qBAAsBjqB,EAAQynB,mBACpDoH,gBAAgBC,EAAAA,GAAAA,GAAM,oBACtBC,iBAAiBD,EAAAA,GAAAA,GAAM,0BACvBzE,OAAQ/pB,GAAOA,EAAIrB,QACnB+vB,gBAAiBC,GAAAA,EAAgBC,eACjCC,SAAU,EACVC,eAAe,EACfC,iBAAe,EACfC,UAAW,WAAF,OAAQZ,GAAe,EAAM,EAAC/tB,SAAA,EAEvCV,EAAAA,EAAAA,KAAA,UAAQM,UAAU,QAAQ,aAAYoC,EAAKQ,UAAUsoB,SAAgBhpB,QAAS,WAAF,OAAQisB,GAAe,EAAM,EAAC/tB,UACxGV,EAAAA,EAAAA,KAAA,QAAMM,UAAU,4BAElBN,EAAAA,EAAAA,KAAA,OAAKM,UAAU,QAAQF,IAAIyuB,EAAAA,GAAAA,GAAM,oBAAoBnuB,SAClDgC,EAAKQ,UAAUsoB,iBAElBxrB,EAAAA,EAAAA,KAAA,OAAKM,UAAU,UAAUF,IAAIyuB,EAAAA,GAAAA,GAAM,0BAA0BnuB,SAC1DktB,EAAW0B,aAEdtvB,EAAAA,EAAAA,KAACguB,GAAAA,EAAI,CAAC1tB,UAAU,iBAAiBivB,UAAUzB,EAAAA,EAAAA,SAAQF,EAAWM,WAAY5D,MAAM2D,EAAAA,EAAAA,OAAML,EAAWM,YAAc,GAAI9D,OAAO,SAAQ1pB,SAC/HgC,EAAKQ,UAAU,qBAM5B,EAeAirB,GAAgBxtB,aAAe,CAC7BitB,WAAY,CAAC,EACb1G,eAAgB,CAAC,GCtGZ,IAAMsI,GAAuB,SAAHz2B,GAAA,IAC/BmyB,EAAYnyB,EAAZmyB,aACAuE,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KACAC,EAAU52B,EAAV42B,WACA5vB,EAAOhH,EAAPgH,QAAO,OAEP+D,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQmoB,0BAA2B,2BAA2BxnB,SAAA,CACtF+uB,GAAYC,IACX1vB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmBmC,GAAc,GACjClY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,MAIlBkb,IAAgBlrB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQkoB,+BAAgC,sBAAsBvnB,SAAEwqB,MACxG,EAyBRsE,GAAqB7uB,aAAe,CAClCuqB,kBAAc9gB,EACdulB,WAAY,GACZD,UAAMtlB,GCnDR,IAAMwlB,GAAa,SAAH72B,GAAA,IAAMuvB,EAAuBvvB,EAAvBuvB,wBAAuB,OAC3CtoB,EAAAA,EAAAA,KAAA,OAAKM,UAAWgoB,EAAyB/uB,MAAM,KAAKc,OAAO,KAAKw1B,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAA4BrvB,UAChIV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,mjDAAmjDF,KAAK,UAAUG,YAAY,UACllD,EAGFC,GAAmB,SAAHhjB,GAAA,IAAMob,EAAuBpb,EAAvBob,wBAAuB,OACjDtoB,EAAAA,EAAAA,KAAA,OAAKM,UAAWgoB,EAAyB/uB,MAAM,KAAKc,OAAO,KAAKw1B,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAA4BrvB,UAChIV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,qjDAAqjDF,KAAK,aAC9jD,EAGKK,GAA6B,SAAHjiB,GAWhC,IAVLgd,EAAYhd,EAAZgd,aACAkF,EAAgBliB,EAAhBkiB,iBACAC,EAAUniB,EAAVmiB,WACAC,EAAcpiB,EAAdoiB,eACAC,EAAgBriB,EAAhBqiB,iBACAC,EAAYtiB,EAAZsiB,aACAC,EAAsBviB,EAAtBuiB,uBACA1wB,EAAOmO,EAAPnO,QACA2C,EAAIwL,EAAJxL,KACAguB,EAAyBxiB,EAAzBwiB,0BAEMC,EAAsBJ,GAAoBC,EAEhD,OACE1sB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQqoB,8BAA+B,2BAA2B1nB,SAAA,CAC1FiwB,GAAuBL,IAAmBI,GAA4B1wB,EAAAA,EAAAA,KAACkwB,GAAgB,CAAC5H,wBAAyBvoB,EAAQuoB,2BAA8BtoB,EAAAA,EAAAA,KAAC4vB,GAAU,CAACtH,wBAAyBvoB,EAAQuoB,2BACpM+H,IACCrwB,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQwoB,2BAA2B7nB,UAACV,EAAAA,EAAAA,KAACgrB,GAAO,CAACjU,2BAAyB,EAACsR,kBAAmBtoB,EAAQsoB,kBAAmB3lB,KAAMA,MAE5I0tB,GAAoBlF,IAAgBlrB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQkoB,+BAAgC,sBAAsBvnB,SAAEwqB,KAC9HyF,GAAuBL,IAAmBI,GAA4B1wB,EAAAA,EAAAA,KAACkwB,GAAgB,KAAMlwB,EAAAA,EAAAA,KAAC4vB,GAAU,KACzGW,GAAoBC,IAAgBxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BjD,IAAWjqB,EAAQkjB,sBAAuBwN,GAA0B1wB,EAAQooB,iCAGvN,EAgBAgI,GAA2BxvB,aAAe,CACxCuqB,kBAAc9gB,EACdmmB,kBAAkB,EAClBC,kBAAcpmB,EACdqmB,wBAAwB,GCzD1B,IAQaI,GAAmBvP,GARH,SAAHvoB,GAAA,IAAMgH,EAAOhH,EAAPgH,QAAS+wB,EAAmB/3B,EAAnB+3B,oBAAmB,OAC1D9wB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQgxB,cAAeD,GAAqBpwB,UACrEV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQixB,UAAWz3B,MAAM,IAAIc,OAAO,KAAKw1B,QAAQ,WAAWC,KAAK,OAAOC,MAAM,6BAA4BrvB,UACxHV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,sBAAsBiB,OAAO,QAAQC,YAAY,IAAIC,cAAc,QAAQC,eAAe,aAEhG,ICXkC,WAAC,MAAiB,CAC1DL,cAAe,CACbx3B,MAAO,GACPc,OAAQ,GACRgC,gBAAiB,wBACjBiB,UAAW,sCACXhB,aAAc,QAEhB00B,UAAW,CACT51B,SAAU,WACVE,IAAK,EACLsC,KAAM,EACNrC,MAAO,EACPgC,OAAQ,EACRpE,OAAQ,QAEX,GDCC,CAAEyoB,cAAe,oBEfNyP,GAAW,SAAHt4B,GAAA,IAAMu4B,EAAiBv4B,EAAjBu4B,kBAAiB,OAC1CtxB,EAAAA,EAAAA,KAAA,OAAKM,UAAWgxB,EAAmB/3B,MAAM,KAAKc,OAAO,KAAKw1B,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAA4BrvB,UAC1HV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,qUAAqUF,KAAK,aAC9U,ECHKyB,GAAyB,SAAHx4B,GAAA,IAAMy4B,EAAyBz4B,EAAzBy4B,0BAAyB,OAChE1tB,EAAAA,EAAAA,MAAA,OAAKxD,UAAWkxB,EAA0B9wB,SAAA,EACxCV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,iBACfN,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAe/G,MAAM,KAAKc,OAAO,KAAKw1B,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAA4BrvB,UACrHV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,8TAA8TF,KAAK,gBAEzU,EAGK2B,GAAyB,SAAHvkB,GAAA,IAAMskB,EAAyBtkB,EAAzBskB,0BAAyB,OAChExxB,EAAAA,EAAAA,KAAA,OAAKM,UAAWkxB,EAA2Bj4B,MAAM,IAAIc,OAAO,IAAIw1B,QAAQ,UAAUC,KAAK,OAAOC,MAAM,6BAA4BrvB,UAC9HV,EAAAA,EAAAA,KAAA,QAAMgwB,EAAE,0HAA0HF,KAAK,aACnI,ECTK4B,GAAwB,SAAH34B,GAAA,IAChCmzB,EAAWnzB,EAAXmzB,YACAW,EAAW9zB,EAAX8zB,YACA8E,EAA8B54B,EAA9B44B,+BACA7E,EAA6B/zB,EAA7B+zB,8BACA8E,EAA8B74B,EAA9B64B,+BACAC,EAAoC94B,EAApC84B,qCACApB,EAAsB13B,EAAtB03B,uBACAD,EAAYz3B,EAAZy3B,aAAY,OAEZ1sB,EAAAA,EAAAA,MAAA,OAAKxD,UAAWqxB,EAA+BjxB,SAAA,EAC7CV,EAAAA,EAAAA,KAACisB,GAAa,CACZC,YAAaA,EACbxnB,KAAMmoB,EACNV,uBAAwBnC,IAAW8C,KAEpC0D,IAAgBxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BjD,IAAW4H,EAAgCnB,GAA0BoB,OAClL,E,wCCHKC,GAAqB,SAAH/4B,GAwCxB,IAWDg5B,EAlDJC,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UAEAmI,EAAiBl5B,EAAjBk5B,kBACAC,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBAEAC,EAAgBr5B,EAAhBq5B,iBACAC,EAAYt5B,EAAZs5B,aACAC,EAAuBv5B,EAAvBu5B,wBAEAC,EAAYx5B,EAAZw5B,aACA9H,EAAQ1xB,EAAR0xB,SACA+H,EAAmBz5B,EAAnBy5B,oBACA9H,EAAU3xB,EAAV2xB,WACA+H,EAAqB15B,EAArB05B,sBAEAC,EAAe35B,EAAf25B,gBACA7F,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBAEApC,EAAgBx3B,EAAhBw3B,iBACAC,EAAYz3B,EAAZy3B,aAEAoC,EAAW75B,EAAX65B,YACAC,EAAY95B,EAAZ85B,aAEAzC,EAAgBr3B,EAAhBq3B,iBACAlF,EAAYnyB,EAAZmyB,aACA4H,EAAuB/5B,EAAvB+5B,wBACA1H,EAAWryB,EAAXqyB,YAEAqE,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KAEAqD,EAAQh6B,EAARg6B,SAEArwB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEAmN,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAEIiB,GAAiB,CAAC,EADpBikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YAAa2f,EAAUzhB,EAAVyhB,WAAY0D,EAAiBnlB,EAAjBmlB,kBAIpCC,EAAoBF,EAAgBpjB,EAO1C,GAJIyiB,IAAyBc,EAAAA,EAAAA,YAAW9I,KACtCsH,EAAiB,IAAIyB,IAAI/I,GAAUgJ,SAGhCzB,IAAkBpiB,EACrB,OAAO,KAGT,IAAM7C,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAACymB,GAAgB,CAACpd,IAAKsd,EAAUlxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,EAChIoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAAA,CACzDkyB,IAAe5yB,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,oBAC/DkQ,IAAgB7yB,EAAAA,EAAAA,KAAC8rB,GAAiB,CAACF,kBAAmB7rB,EAAQ6iB,oBAE7DhT,EAAUzC,MACVnN,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,aACnCtU,aAAc+2B,QAIpBvvB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,CACxD+uB,GAAYC,IACX5rB,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,0BAAyBI,SAAA,EACtCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmBmC,GAAc,GACjClY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAGjBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,YAAWI,SAAA,EACxBV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQkoB,+BAAgC,sBAAsBvnB,SAAEwqB,IAC1FqH,IACCvyB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,GAAcqH,EAC1B7F,YAAasG,EACb9F,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,qBAM3EgQ,IACC/yB,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ2zB,kBAAmBjI,IAAI,GAAGhU,IAAKkc,KAExD1B,IACCjyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,oBAG1EuP,IACCpyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,YAAaoG,EACb/F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,qBAGvE2M,IAAaC,IAAS6C,IACvBvyB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,GAAcqH,EAC1B7F,YAAasG,EACb9F,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,eAGrE2P,IACC1yB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,iBAG3EoN,IACCpwB,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvBP,aAAc2H,EACd5H,aAAcA,EACdE,YAAaA,EACb1oB,KAAMA,EACN2oB,cAAerB,IAAWjqB,EAAQmjB,kCAAmC,4BAGxEqN,GAAoBC,IACnBxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BltB,EAAQkjB,6BAKlH,EAuEA6O,GAAmBnxB,aAAe,CAChCmpB,WAAW,EAEXmI,mBAAmB,EACnBG,kBAAkB,EAClBG,cAAc,EACdE,uBAAuB,EACvBC,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdzC,kBAAkB,EAClB0C,yBAAyB,EACzBrD,UAAU,EACVrE,aAAa,EAEb8G,mBAAe9nB,EACf+nB,0BAA0B,EAC1BE,kBAAcjoB,EACdkoB,yBAAyB,EACzB7H,cAAUrgB,EACVsgB,gBAAYtgB,EACZooB,qBAAqB,EACrB3F,iBAAaziB,EACbuoB,wBAAwB,EACxBnC,kBAAcpmB,EACd8gB,kBAAc9gB,EACdslB,UAAMtlB,EACN2oB,UAAU,GC1QL,IAAMa,GAA6BtS,GACxC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,ICoCkC,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA3DG,CAC9CyoB,cAAe,CACbhpB,OAAQ,mBAEVipB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqD,aAAc,GACdhC,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UAMqB,IAGnCgpB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNrC,MAAO,EACPgC,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,QAEdqnB,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAETynB,kBAAmB,CACjBpnB,MAAO,GAETqnB,kBAAmB,CACjBQ,gBAAiB,wDAClB,GD5DD,CAAExB,cAAe,+BAGNiS,GAAsCvS,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAc,EACdzC,kBAAkB,EAClBX,UAAQ,IACR,IC+C2C,SAAA3N,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAzFN,CAC9CyoB,cAAe,CACbhpB,OAAQ,mBAEVipB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqD,aAAc,GACdhC,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UAoCqB,IAGnCgpB,uBAAwB,CACtBhnB,QAAS,qBACTP,SAAU,GACVK,WAAY,IACZ/B,SAAU,yBAEV,6BAA8B,CAC5BJ,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,SACf,wBAAyB,CACvBroB,MAAO,OACPC,SAAU,GACVzB,WAAY,IACZ8B,WAAY,WAKpBqnB,uBAAwB,CACtBznB,SAAU,WACVF,MAAO,QACPC,SAAU,GACVnB,aAAc,EACdN,WAAY,MACZ8C,cAAe,GAEjBumB,kBAAmB,CACjB3nB,SAAU,WACVF,MAAO,QACPC,SAAU,GACVnB,aAAc,GAEhBgpB,qBAAsB,CACpB5nB,SAAU,WACVF,MAAO,QACPC,SAAU,GACV1B,SAAU,IACVq6B,SAAU,aACV32B,aAAc,IAEhB8lB,sBAAuB,CACrB/nB,MAAO,QACPK,MAAO,GACP/B,OAAQ,OACR+D,OAAQ,GACR8lB,QAAS,MACT3nB,QAAS,oBACTN,SAAU,WACVD,SAAU,GACVzB,WAAY,OACZ4C,aAAc,GACdD,gBAAiB,WAEnB+nB,uBAAwB,CACtBroB,WAAY,EACZoB,aAAc,EACd,wBAAyB,CACvBb,aAAc,EACd9C,OAAQ,uBAEX,GDjHD,CAAEooB,cAAe,wCAGNmS,GAA+BzS,GAC1C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,ICqGoC,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAjKC,CAC9CyoB,cAAe,CACbhpB,OAAQ,mBAEVipB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqD,aAAc,GACdhC,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UA4GqB,IAGnCqpB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,QACPmB,gBAAiB,UACjBgnB,QAAS,MACT3pB,WAAY,SACb,GD7HD,CAAEkoB,cAAe,iCAGNoS,GAAiC1S,GAC5C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,ICiHsC,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA/LD,CAC9CyoB,cAAe,CACbhpB,OAAQ,mBAEVipB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqD,aAAc,GACdhC,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UA0IqB,IAGnCqpB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVE,IAAK,EACLJ,MAAO,QACP1B,OAAQ,oBACR6pB,QAAS,MACT3nB,QAAS,oBACTP,SAAU,GACVzB,WAAY,OACZ4C,aAAc,EACdD,gBAAiB,YAClB,GDpID,CAAEulB,cAAe,mCEpENqS,GAAuC3S,GAClD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBvC,kBAAgB,EAChB0C,yBAAuB,IACvB,IlCA4C,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAdD,CACpDyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAKM,IAGzCoY,cAAe,CAEbtnB,MAAO,OACP1B,OAAQ,QACR8J,YAAa,QAGfof,uBAAwB,CACtBhnB,QAAS,GACTR,MAAO,OACPC,SAAU,GACVK,WAAY,OACZ/B,SAAU,0BAGZopB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,IAGZ+nB,kCAAmC,CACjC,eAAgBb,IACjB,GkCpCD,CAAET,cAAe,yCAGNsS,GAAkD5S,GAC7D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IlCoBuD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAxDZ,CACpDyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA+CM,IAEzCoY,cAAe,CACb,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,KAER/B,MAAO,oBAITmpB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT0nB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,IACL8nB,gBAAiB,yDAGnBP,uBAAwB,CACtBnpB,WAAY,MACZyB,SAAU,GACVK,WAAY,UACZN,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRL,aAAc,GAEd,+BAAgC,CAC9BoB,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,gBAAcnpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTsoB,GAAqB,IACxBnnB,MAAO,kBACPmoB,QAAS,iBACT7pB,OAAQ,6CAEV,mBAAoB,CAClB0B,MAAO,wBAEV,GkCxED,CAAE0mB,cAAe,oDAGNuS,GAA0C7S,GACrD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBnC,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IlCwD+C,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAlHJ,CACpDyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAyGM,IAGzCoY,cAAe,CAEbtnB,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACb3I,WAAY,QAGd+nB,uBAAwB,CACtBhnB,QAAS,GAETR,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,IAGZ+nB,kCAAmC,CACjC,eAAgBb,IACjB,GkC7FD,CAAET,cAAe,4CAGNwS,GAA8C9S,GACzD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IlC6EmD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA7JR,CACpDyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAoJM,IAGzCoY,cAAe,CACbjpB,MAAO,mBACPc,OAAQ,GACRa,MAAO,OAEPoI,YAAa,OACb3I,WAAY,OACZ4oB,cAAe,kBAGjBd,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,IACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,gBACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,GAGjB0mB,kCAAmC,CACjC,eAAgBb,IACjB,GkClHD,CAAET,cAAe,gDAGNyS,GAAqC/S,GAChD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IlCkG0C,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAxMC,CACpDyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA+LM,IAGzCoY,cAAe,CACbjpB,MAAO,mBACPc,OAAQ,GACRa,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACb3I,WAAY,OACZ4oB,cAAe,kBAGjBd,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,GACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,gBACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,GAGjB0mB,kCAAmC,CACjC,eAAgBb,IACjB,GkCvID,CAAET,cAAe,uC,aCjHN0S,GAAuB,SAAHv7B,GAsC1B,IArCLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UAEAmI,EAAiBl5B,EAAjBk5B,kBACAC,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBACAoC,EAAqBx7B,EAArBw7B,sBAEAnC,EAAgBr5B,EAAhBq5B,iBACAC,EAAYt5B,EAAZs5B,aACAC,EAAuBv5B,EAAvBu5B,wBAEA7H,EAAQ1xB,EAAR0xB,SAEAiI,EAAe35B,EAAf25B,gBACA7F,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBAEApC,EAAgBx3B,EAAhBw3B,iBACAC,EAAYz3B,EAAZy3B,aAEAtF,EAAYnyB,EAAZmyB,aACAsJ,EAA2Bz7B,EAA3By7B,4BACA/E,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KAEA+E,EAAoB17B,EAApB07B,qBACAC,EAA8B37B,EAA9B27B,+BACArE,EAAUt3B,EAAVs3B,WACAC,EAAcv3B,EAAdu3B,eACAG,EAAsB13B,EAAtB03B,uBACAC,EAAyB33B,EAAzB23B,0BAEAhuB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QACA8yB,EAAY95B,EAAZ85B,aACqB8B,EAAmB57B,EAAxC67B,oBAEA1nB,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAEIiB,GAAiB,CAAC,EADpBikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YAAa2f,EAAUzhB,EAAVyhB,WAAY0D,EAAiBnlB,EAAjBmlB,kBAIpCC,EAAoBF,EAAgBpjB,EAE1C,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAGT,IAAM7C,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAACymB,GAAgB,CAACpd,IAAKsd,EAAUlxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAezL,2BAAyB,EAAArW,SAAA,EAC1JV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAExDkP,EAAUzC,MACVnN,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,aACnCtU,aAAc+2B,OAIpBvvB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,CACxDmyB,IAAgB7yB,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ6iB,qBACzC9e,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQioB,wBAAwBtnB,SAAA,CACxD8zB,IACCx0B,EAAAA,EAAAA,KAACwvB,GAAoB,CACnBtE,aAAcA,EACduE,SAAUA,EACVC,KAAMA,EACNC,WAAYA,EACZ5vB,QAASA,IAGZkyB,IACCjyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB0R,GAAyBx0B,EAAQkpB,kBAAmB,oBAG9HmJ,IACCpyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,YAAaoG,EACb/F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuByR,GAAyBx0B,EAAQkpB,kBAAmB,mBAG7HyJ,IACC1yB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,oBAI7EyR,IACCz0B,EAAAA,EAAAA,KAACmwB,GAA0B,CACzBztB,KAAMA,EACN3C,QAASA,EACTmrB,aAAcA,EACdkF,iBAAkBsE,EAClBrE,WAAYA,EACZC,eAAgBA,EAChBC,iBAAkBA,EAClBC,aAAcA,EACdC,uBAAwBA,EACxBC,0BAA2BA,OAIhCiE,IAAuB30B,EAAAA,EAAAA,KAAC20B,EAAmB,CAAC7D,oBAAqB/wB,EAAQmpB,mBAGhF,ECxGa2L,IAAqDC,EAAAA,GAAAA,kBAAgB,SAACC,GACjF,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAEzBoa,EAD4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBACpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAA0B,EAC1BC,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBiE,6BAA2B,EAC3BC,sBAAoB,EACpBpE,YAAU,EACVC,gBAAc,EACdI,2BAAyB,EACzB7D,iBAAaziB,EACbomB,kBAAcpmB,EACdyoB,cAAY,EACZpD,UAAQ,IACR,GAEJ9G,EACA,CAAE/G,cAAe,uDACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,GAEJxQ,EACA,CAAEV,cAAe,uDAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaE,IAAsCH,EAAAA,GAAAA,kBAAgB,SAACC,GAClE,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBoa,EAF4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAEpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBkE,sBAAoB,EACpBtC,0BAA0B,EAC1BtF,iBAAaziB,EACbomB,kBAAcpmB,EACdsqB,gCAA8B,EAC9BrE,YAAU,EACVC,gBAAgB,IAChB,GAEJxH,GACA,CAAElH,cAAe,wCACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,GAEJxP,EACA,CAAE1B,cAAe,wCAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaG,IAAyCJ,EAAAA,GAAAA,kBAAgB,SAACC,GACrE,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBoa,EAF4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAGrIzT,GACE,SAAA6T,GAAM,OACJn1B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfo7B,GAAM,IACVlD,mBAAiB,EACjBG,kBAAkB,EAClBM,iBAAe,EACfnC,kBAAkB,EAClBoC,wBAAwB,EACxB6B,6BAA2B,EAC3BC,sBAAoB,EACpBC,gCAAgC,EAChCrE,YAAU,EACVC,gBAAc,EACdb,UAAQ,IACR,GAEJ1H,EACA,CAAEnG,cAAe,2CAGnBN,GACE,SAAA6T,GAAM,OACJn1B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbo7B,GAAM,IACVlD,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBvC,kBAAgB,EAChB0C,yBAAuB,EACvB1H,aAAW,IACX,GAEJ5H,EACA,CAAE5B,cAAe,2CAGrB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaK,IAA2CN,EAAAA,GAAAA,kBAAgB,SAACC,GACvE,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAEzBoa,EAD4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAErIzT,GACE,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBM,iBAAiB,EACjBnC,kBAAkB,EAClBiE,6BAA6B,EAC7BC,sBAAoB,EACpBnC,yBAAyB,EACzBzF,iBAAaziB,EACbomB,kBAAcpmB,EACdsqB,gCAA8B,EAC9BrE,YAAU,EACVK,2BAAyB,EACzBJ,gBAAc,IACd,GAEJ5H,EACA,CAAE9G,cAAe,6CAGnBN,GACE,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBG,yBAAuB,EACvBzF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,EACvB1H,aAAW,IACX,GAEJ1H,EACA,CAAE9B,cAAe,6CAGrB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaM,IAAgDP,EAAAA,GAAAA,kBAAgB,SAACC,GAC5E,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBoa,EAF4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAEpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBkE,sBAAoB,EACpBC,gCAA8B,EAC9B7B,cAAc,EACdP,yBAAyB,EACzB9B,kBAAcpmB,EACdimB,YAAY,EACZC,gBAAgB,IAChB,GAEJzH,GACA,CAAEjH,cAAe,kDACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBG,yBAAuB,EACvBK,wBAAsB,EACtBnC,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,GAEJnP,EACA,CAAE/B,cAAe,kDAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaO,IAA2CR,EAAAA,GAAAA,kBAAgB,SAACC,GACvE,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAEzBoa,EAD4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBACpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClB4B,0BAA0B,EAC1BtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChBoE,6BAA2B,EAC3B/E,UAAU,EACVgF,sBAAoB,EACpBC,gCAAgC,EAChCrE,YAAU,EACVC,gBAAc,IACd,GAEJ7H,EACA,CAAE7G,cAAe,6CACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,EACvB1H,aAAW,IACX,GAEJxH,EACA,CAAEhC,cAAe,6CAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaQ,IAA6CT,EAAAA,GAAAA,kBAAgB,SAACC,GACzE,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBoa,EAF4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAEpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClB4B,0BAA0B,EAC1B3B,kBAAcpmB,EACdoqB,6BAA2B,EAC3BI,oBAAqB/D,GACrBpB,UAAQ,EACRgF,sBAAoB,EACpBnE,gBAAc,EACdD,YAAY,IACZ,GAEJrH,GACA,CAAEpH,cAAe,+CACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,GAEJjP,EACA,CAAEjC,cAAe,+CAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,IAEaS,IAA+CV,EAAAA,GAAAA,kBAAgB,SAACC,GAC3E,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBoa,EAF4Bl0B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,sBAAwBjI,IAAAA,IAAMi0B,EAAQ,CAAC,mBAAoB,UAAW,qBAEpFzT,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACs0B,IAAoBv6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClB4B,0BAA0B,EAC1BtF,iBAAaziB,EACbomB,kBAAcpmB,EACdqqB,sBAAoB,EACpBD,6BAA2B,EAC3BnE,YAAU,EACVC,gBAAc,EACdb,UAAQ,IACR,GAEJ1G,GACA,CAAEnH,cAAe,iDACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,GAEJhP,EACA,CAAElC,cAAe,iDAEnB,OAAO5hB,EAAAA,EAAAA,KAACg1B,GAAcj7B,EAAAA,EAAAA,GAAA,GAAKg7B,GAC7B,ICzZaU,GAAoCnU,GAC/C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBnC,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IClByC,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAhBO,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAKW,IAG9CoY,cAAe,CACbnoB,OAAQ,IACRa,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACbhH,aAAc,gBAGhBomB,uBAAwB,CACtBhnB,QAAS,GACTR,MAAO,OACPC,SAAU,GACVK,WAAY,OACZ/B,SAAU,0BAGZopB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,KACX,GDfD,CAAEymB,cAAe,sCAGN8T,GAA+CpU,GAC1D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,ICDoD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAvDJ,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA4CW,IAG9CoY,cAAe,CACb,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,KAERgB,aAAc,eACd/C,MAAO,oBAGTmpB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT0nB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,IACL8nB,gBAAiB,yDAGnBP,uBAAwB,CACtBnpB,WAAY,MACZyB,SAAU,GACVK,WAAY,UACZN,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRL,aAAc,GAEd,+BAAgC,CAC9BoB,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,eAAgB,CACdhoB,MAAO,kBACPmoB,QAAS,GACT7pB,OAAQ,4CAEV,mBAAoB,CAClB0B,MAAO,wBAEV,GDnDD,CAAE0mB,cAAe,iDAGN+T,GAAiDrU,GAC5D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBE,0BAA0B,EAC1BC,kBAAgB,EAChBE,yBAAuB,EACvBC,cAAY,EACZC,qBAAmB,EACnBE,iBAAe,EACfC,wBAAsB,EACtBpC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdzC,kBAAkB,EAClB0C,yBAAyB,IACzB,ICkCsD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAjHN,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAsGW,IAG9CoY,cAAe,CACbjpB,MAAO,mBACPc,OAAQ,IACRb,OAAQ,mBACRkC,QAAS,EACTY,aAAc,gBAGhBmmB,wBAAyB,CACvBpnB,MAAO,QACP9B,MAAO,IACPJ,OAAQ,EACRgsB,UAAW,wBAGbzC,uBAAwB,CACtBvpB,OAAQ,kBACRgC,SAAU,GACVK,WAAY,QAGdsnB,sBAAuB,CACrB5nB,MAAO,UACPb,OAAQ,GACR4K,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,QAGdunB,kBAAmB,CACjB7nB,MAAO,UACPb,OAAQ,GACR4K,SAAU,SACV9J,SAAU,IAGZ6nB,qBAAsB,CACpB9nB,MAAO,OACPC,SAAU,GACVmW,UAAW,KACZ,GD7ED,CAAEsQ,cAAe,mDAGNgU,GAA+CtU,GAC1D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBE,0BAA0B,EAC1BC,kBAAgB,EAChBE,yBAAuB,EACvBC,cAAc,EACdC,qBAAqB,EACrBE,iBAAiB,EACjBC,wBAAwB,EACxBpC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,IC4DoD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAlKJ,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAuJW,IAG9CoY,cAAe,CACbjpB,MAAO,mBACPc,OAAQ,IACRgC,gBAAiB,6BACjBC,aAAc,eACd2I,SAAU,SACV7J,SAAU,WAEV,6BAA8B,CAC5Bf,OAAQ,mBACRiB,KAAM,MAIVonB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,IAGVulB,sBAAuB,CACrB3nB,SAAU,GACVK,WAAY,kBACZN,MAAO,sBAGTgoB,kCAAmC,CACjC,eAAgB,CACd1pB,OAAQ,2CACR0B,MAAO,kBACPmoB,QAAS,IAEX,mBAAoB,CAClBnoB,MAAO,uBAIX0nB,kBAAmB,CACjBxnB,SAAU,WACVf,OAAQ,mBACRsB,WAAY,IACZynB,gBAAiB,oEAClB,GDxGD,CAAExB,cAAe,iDAGNiU,GAA4CvU,GACvD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBE,0BAA0B,EAC1BC,kBAAgB,EAChBE,yBAAuB,EACvBC,cAAc,EACdC,qBAAqB,EACrBE,iBAAiB,EACjBC,wBAAwB,EACxBpC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICuFiD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GApND,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAyMW,IAG9CoY,cAAe,CACb,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,IAGR/B,MAAO,mBACPc,OAAQ,IACRiC,aAAc,gBAGhBomB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT0nB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,IACL8nB,gBAAiB,yDAGnBN,sBAAuB,CACrBppB,WAAY,MACZyB,SAAU,GACVK,WAAY,UACZN,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRL,aAAc,GAEd,+BAAgC,CAC9BoB,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,eAAgB,CACdhoB,MAAO,kBACPmoB,QAAS,GACT7pB,OAAQ,4CAEV,mBAAoB,CAClB0B,MAAO,wBAEV,GD7ID,CAAE0mB,cAAe,8CAGNkU,GAA4CxU,GACvD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBE,0BAA0B,EAC1BC,kBAAgB,EAChBE,yBAAuB,EACvBC,cAAc,EACdC,qBAAqB,EACrBE,iBAAiB,EACjBC,wBAAwB,EACxBpC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,IC4HiD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAhRD,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAqQW,IAG9CoY,cAAe,CACbnpB,QAAS,QACT+B,SAAU,WACV6J,SAAU,SACV1L,MAAO,mBACPc,OAAQ,IACRlB,OAAQ,OACRuC,QAAS,EACTY,aAAc,eACdgH,YAAa,OACbpI,MAAO,OACP1B,OAAQ,SAGVkpB,uBAAwB,CACtBroB,OAAQ,GACRqB,QAAS,YACTR,MAAO,OACPC,SAAU,GACVK,WAAY,oBACb,GDlJD,CAAEomB,cAAe,8CAGNmU,GAAuCzU,GAClD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAAwB,EACxBC,kBAAkB,EAClBE,yBAAyB,EACzBC,cAAc,EACdC,qBAAqB,EACrBE,iBAAe,EACfC,wBAAsB,EACtBpC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICiI4C,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA5SI,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAiSW,IAG9CoY,cAAe,CACblmB,aAAc,eACdjC,OAAQ,IACRa,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACb3I,WAAY,QAGd+nB,uBAAwB,CACtBhnB,QAAS,GACTrB,OAAQ,GACRa,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,KACX,GDnKD,CAAEymB,cAAe,yCAGNoU,GAA2C1U,GACtD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAAwB,EACxBC,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdzC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICqJgD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GApVA,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAyUW,IAG9CoY,cAAe,CACblmB,aAAc,eACd/C,MAAO,mBACPc,OAAQ,GACRa,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACb3I,WAAY,QAGd8nB,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,IACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,gBACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,IAChB,GDtLD,CAAEolB,cAAe,6CAGNqU,GAAkC3U,GAC7C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAAwB,EACxBC,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICmWuC,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAtjBS,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA2iBW,IAG9CoY,cAAe,CACblmB,aAAc,eACd/C,MAAO,mBACPc,OAAQ,GACRa,MAAO,OACP1B,OAAQ,QACR8J,YAAa,OACb3I,WAAY,QAGd8nB,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,GACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,gBACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,IAChB,GDpYD,CAAEolB,cAAe,oCAGNsU,GAA2C5U,GACtD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAAwB,EACxBC,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZzC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICsXgD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA7lBA,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAklBW,IAG9CoY,cAAe,CACb,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,KAGR/B,MAAO,mBACPc,OAAQ,IACRiC,aAAc,gBAGhBsmB,kBAAmB,CACjBvpB,QAAS,QACTgB,OAAQ,mBACRiB,IAAK,GACL8nB,gBAAiB,yDAGnBV,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT2nB,uBAAwB,CACtBtpB,MAAO,IACPc,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,IACZN,MAAO,QACPsB,cAAe,EAEf,+BAAgC,CAC9BpB,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,eAAgB,CACd1pB,OAAQ,2CACR0B,MAAO,kBACPmoB,QAAS,IAEX,mBAAoB,CAClBnoB,MAAO,wBAEV,GD3aD,CAAE0mB,cAAe,6CElJNuU,GAAgD7U,GAvElB,SAAHvoB,GAOjC,IANLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UACAuI,EAAYt5B,EAAZs5B,aACA5H,EAAQ1xB,EAAR0xB,SACAoC,EAAW9zB,EAAX8zB,YACA9sB,EAAOhH,EAAPgH,QAGAmN,EAAuC8kB,GAAiB,CAAC,EAAjD7iB,EAAajC,EAAbiC,cAAainB,EAAAlpB,EAAEgO,OAAAA,OAAM,IAAAkb,EAAG,GAAEA,EAClCloB,EAAuCiB,GAAiB,CAAC,EAAjDikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YAGjBqmB,GAAoBhuB,EAAAA,EAAAA,UACxB,iBAAM,CAAC,EAAG,EAAG,EAAG,GAAG4G,KAAI,SAAA0M,GAAK,OAAKT,GAAUA,EAAOS,IAAW7a,IAAAA,KAAOoa,EAAO,GAAC,GAC5E,CAACA,IAGH,IAAK8W,IAAkB7iB,GAAiBrO,IAAAA,QAAUoa,GAChD,OAAO,KAGT,IAAMoY,EAAoBF,EAAgBpjB,EAE1C,OACElM,EAAAA,EAAAA,MAACymB,GAAgB,CAAChxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,EACjHoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDV,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,aAAW,EACXK,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,oBAExE9iB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVyB,aAAW,EACXQ,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,gBAEpE/iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,aAAW,EACXY,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,qBAG5EhjB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAExD21B,EAAkBpnB,KAAI,SAAAJ,EAEnB+C,GAAS,IADVhC,EAASf,EAATe,UAAWR,EAAiBP,EAAjBO,kBAAmB4jB,EAAiBnkB,EAAjBmkB,kBAAmBC,EAAmBpkB,EAAnBokB,oBAAqBC,EAAoBrkB,EAApBqkB,qBAEhEnmB,EAF+G8B,EAAzBskB,2BAE9C/jB,EAC9C,OAEEpP,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gCAA+BI,UAC5CV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,gBAVagB,EAaxD,QAKV,IDqS2D,SAAAkQ,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA3XL,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAgXW,IAG9CoY,cAAe,CACblmB,aAAc,eACd/C,MAAO,mBACPc,OAAQ,IACRa,MAAO,OACP1B,OAAQ,mBACR8D,UAAW,kBACX5B,QAAS,GACTvB,WAAY,aACZ4rB,eAAgB,iBAGlBrD,uBAAwB,CACtBtnB,SAAU,WACVE,KAAM,EACN/B,MAAO,mBAGTupB,sBAAuB,CACrB5nB,MAAO,UACPC,SAAU,GACVzB,WAAY,OACZ8B,WAAY,QAGdunB,kBAAmB,CACjB3nB,SAAU,WACVE,KAAM,EACNJ,MAAO,UACPC,SAAU,GACVK,WAAY,QAGdwnB,qBAAsB,CACpB5nB,SAAU,WACVE,KAAM,EACNJ,MAAO,OACPC,SAAU,GACVK,WAAY,OACZrC,OAAQ,mBAGVspB,wBAAyB,CACvBppB,QAAS,OACTkqB,cAAe,MACfnoB,SAAU,WACVwC,MAAO,EACPtC,IAAK,EAEL,mCAAoC,CAClC/B,MAAO,IACPc,OAAQ,IACRb,OAAQ,mBACRyL,SAAU,SACVpL,YAAa,EACbyC,aAAc,KAEjB,GC9VD,CAAEslB,cAAe,kD,aCmBN0U,GAA+ChV,GA3FxB,SAAHvoB,GAQ1B,IAPLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UACAuI,EAAYt5B,EAAZs5B,aACA5H,EAAQ1xB,EAAR0xB,SACAoC,EAAW9zB,EAAX8zB,YACAnqB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAGAquB,GAA0CC,EAAAA,EAAAA,UAAS,CAAE1S,MAAO,EAAG4a,UAAW,OAAOjI,GAAAC,EAAAA,GAAAA,GAAAH,EAAA,GAA1EoI,EAAalI,EAAA,GAAEmI,EAAgBnI,EAAA,GAEtCphB,EAAuC8kB,GAAiB,CAAC,EAAjD7iB,EAAajC,EAAbiC,cAAainB,EAAAlpB,EAAEgO,OAAAA,OAAM,IAAAkb,EAAG,GAAEA,EAClCloB,EAAuCiB,GAAiB,CAAC,EAAjDikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YAGjBqmB,GAAoBhuB,EAAAA,EAAAA,UACxB,iBAAM,CAAC,EAAG,EAAG,EAAG,GAAG4G,KAAI,SAAA0M,GAAK,OAAKT,GAAUA,EAAOS,IAAW7a,IAAAA,KAAOoa,EAAO,GAAC,GAC5E,CAACA,IAIGoY,EAAoBF,EAAgBpjB,EAEpC0mB,GAAehoB,EAAAA,EAAAA,cAAY,SAACioB,EAAexP,GAC/CsP,EAAiB,CACf9a,MAAOgb,EACPJ,UAAWpP,EAAEoP,WAEjB,GAAG,IAEH,OAAKvE,GAAkB7iB,IAAiBrO,IAAAA,QAAUoa,IAKhDpX,EAAAA,EAAAA,MAACymB,GAAgB,CAAChxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,EACjHV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,UAC1DV,EAAAA,EAAAA,KAAC42B,GAAAA,SAAQ,CACPC,YAAaL,EAAc7a,MAC3B4a,UAAWC,EAAcD,UACzBO,SAAUJ,EACVK,UAAU,EACVC,MAAM,EACN12B,UAAU,iCAAgCI,SAGxC21B,EAAkBpnB,KAAI,SAAAJ,EAEnB+C,GAAS,IADVhC,EAASf,EAATe,UAAWR,EAAiBP,EAAjBO,kBAAmB4jB,EAAiBnkB,EAAjBmkB,kBAAmBC,EAAmBpkB,EAAnBokB,oBAAqBC,EAAoBrkB,EAApBqkB,qBAEhEnmB,EAF+G8B,EAAzBskB,2BAE9C/jB,EAC9C,OACEtL,EAAAA,EAAAA,MAAC8yB,GAAAA,SAASK,KAAI,CAAAv2B,SAAA,EACZV,EAAAA,EAAAA,KAACgrB,GAAO,CAAC3C,kBAAmBtoB,EAAQ4iB,kBAAmBjgB,KAAMA,KAC7D1C,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,iBACnC,GAAAhW,OAZmBgV,EAAUxP,IAAMwR,GAc3C,SAIN9N,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDV,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,aAAW,EACXK,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,oBAExE9iB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVyB,aAAW,EACXQ,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,gBAEpE/iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,aAAW,EACXY,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,uBApDvE,IAyDX,IFgV0D,SAAAlB,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA5bJ,CACzDyoB,cAAe,CACblmB,aAAc,gBAEhBmmB,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAibW,IAG9CoY,cAAe,CACbnpB,QAAS,mBACTiD,aAAc,iBACdpB,MAAO,OACP1B,OAAQ,mBACR8D,UAAW,mBAGbqlB,kBAAmB,CAEjBrnB,IAAK,GACLsC,KAAM,EACN1C,MAAO,kBACP1B,OAAQ,4BACRkC,QAAS,6BACTF,WAAY,QACZc,aAAc,iBACdD,gBAAiB,kBACjBlD,OAAQ,eACRgC,SAAU,kBACVkoB,QAAS,gBAGXX,uBAAwB,CACtBtnB,SAAU,WACV7B,MAAO,mBACPc,OAAQ,IACRqB,QAAS,GACTF,WAAY,QAGdsnB,sBAAuB,CACrB5nB,MAAO,UACPb,OAAQ,GACRc,SAAU,GACVzB,WAAY,KAGdqpB,kBAAmB,CACjB7nB,MAAO,UACPb,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZmrB,aAAc,iBACd7qB,aAAc,EACdwC,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZrC,OAAQ,mBAGVspB,wBAAyB,CACvB,oCAAqC,CACnC,oBAAqB,CACnBjmB,cAAe,kBAEjB,yBAA0B,CACxBpB,SAAU,WACVwC,KAAM,EACNrE,MAAO,OACPgE,OAAQ,EACRpE,OAAQ,YAER,OAAQ,CACNI,MAAO,GACPc,OAAQ,GACRb,OAAQ,oBACRL,OAAQ,aACRwB,WAAY,2BACZ2B,aAAc,GAEd,WAAY,CACV9C,OAAQ,oBACRmB,WAAY,aAKlB,sBAAuB,CACrBS,SAAU,WACVE,IAAK,OACLsC,KAAM,OACNrC,MAAO,EACPgC,OAAQ,EACRhE,MAAO,GACPc,OAAQ,GACRlB,OAAQ,YACRgE,aAAc,EACdjC,MAAO,UACPP,WAAY,2BACZu8B,WAAY,OAEZ,SAAU,CACRr9B,YAAa,IAGf,4EAA6E,CAC3EsB,SAAU,GACVG,IAAK,OACLsC,KAAM,OACNrC,MAAO,OACPgC,OAAQ,OACRpE,OAAQ,EACRiC,SAAU,WACVI,WAAY,EACZM,cAAe,OAItB,GElcD,CAAE8lB,cAAe,iDCjHNuV,GAAyB,yrU,sBCqBhCC,GAA0B,SAAHr+B,GAAA,IAC3Bi5B,EAAaj5B,EAAbi5B,cACAK,EAAYt5B,EAAZs5B,aACA5H,EAAQ1xB,EAAR0xB,SACAC,EAAU3xB,EAAV2xB,WACAmC,EAAW9zB,EAAX8zB,YACA3B,EAAYnyB,EAAZmyB,aACAP,EAAe5xB,EAAf4xB,gBACA8E,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KACAhtB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QACAW,EAAQ3H,EAAR2H,SACA22B,EAA6Bt+B,EAA7Bs+B,8BAA6B,OAE7Br3B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,6BAA6B9hB,UAC7EoD,EAAAA,EAAAA,MAAC0mB,GAAyB,CAACG,gBAAiBA,EAAiBF,SAAUA,EAAUC,WAAYA,EAAWhqB,SAAA,EACtGoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,CACxD+uB,GAAYC,IACX5rB,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,0BAAyBI,SAAA,EACtCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAoBwE,GAAiBA,EAAc7iB,eAAiB6iB,EAAc7iB,cAAcwgB,YAAe,GAC/GlY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAGjBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,YAAWI,SAAA,EACxBV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,qBAAoBI,SAAEwqB,KACrClrB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,aAAW,EACXQ,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,sBAK1E/iB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,aAAW,EACXK,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,qBAErE2M,IAAaC,KACd1vB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,aAAW,EACXQ,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,gBAGtEjf,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQmkB,8BAA+B,0BAA0BxjB,SAAA,EAC1FV,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,qBAChD3iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,aAAW,EACXY,8BAA+B/sB,EAAQijB,6BAI5CtiB,IACCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWqN,EAA+Bt3B,EAAQu3B,sBAAsB52B,SACrFA,QAIH,EAuCR02B,GAAwBz2B,aAAe,CACrC0xB,kBAAcjoB,EACdqgB,cAAUrgB,EACVsgB,gBAAYtgB,EACZyiB,iBAAaziB,EACb8gB,kBAAc9gB,EACdugB,iBAAiB,EACjB8E,UAAU,EACVC,UAAMtlB,EACNitB,mCAA+BjtB,GAG1B,IAAMmtB,GAA4BjW,GACvC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACo3B,IAAuBr9B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAEoxB,UAAQ,IAAG,GAEjD1L,EACA,CAAEnC,cAAe,8BAGN4V,GAAmClW,GAC9C,SAAApU,GAAA,IAAGnN,EAAOmN,EAAPnN,QAAS2C,EAAIwK,EAAJxK,KAASrE,GAAKwD,EAAAA,EAAAA,GAAAqL,EAAApL,IAAA,OACxBgC,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQykB,+BAA+B9jB,SAAA,EACrDV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAcI,UAC3BV,EAAAA,EAAAA,KAAA,OAAKyX,IAAK0f,GAAwB1L,IAAK/oB,EAAKQ,UAAUsoB,qBAExDxrB,EAAAA,EAAAA,KAACo3B,IAAuBr9B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAE0B,QAASA,EAAS2C,KAAMA,OACxD,GAER2hB,EACA,CAAEzC,cAAe,qCAGN6V,GAAkCnW,GAC7C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQ6kB,8BAA8BlkB,UAC1DV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,sCAAqCI,UAClDV,EAAAA,EAAAA,KAACo3B,IAAuBr9B,EAAAA,EAAAA,GAAA,GAAKsE,OAE3B,GAERomB,EACA,CAAE7C,cAAe,oCCzJb8V,GAAuB,SAAH3+B,GAAA,IACxBi5B,EAAaj5B,EAAbi5B,cACA9G,EAAYnyB,EAAZmyB,aACAgH,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBACA1H,EAAQ1xB,EAAR0xB,SACAC,EAAU3xB,EAAV2xB,WACAmC,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBACAlD,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KACAhtB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAAO,OAEPC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,6BAA6B9hB,UAC7EoD,EAAAA,EAAAA,MAAA,KACExD,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMG,GAAYC,EAAWhqB,SAAA,CAE5B+uB,GAAYC,IACX1vB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAoBwE,GAAiBA,EAAc7iB,eAAiB6iB,EAAc7iB,cAAcwgB,YAAe,GAC/GlY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAInBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDV,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvBP,cAAY,EACZD,aAAcA,EACdxoB,KAAMA,EACN2oB,cAAerB,IAAWjqB,EAAQmjB,kCAAmC,6BAEvEljB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,qBAEzE7iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,wBAI1E,EAuCR0U,GAAqB/2B,aAAe,CAClCuqB,kBAAc9gB,EACd8nB,mBAAe9nB,EACf+nB,0BAA0B,EAC1B1H,cAAUrgB,EACVsgB,gBAAYtgB,EACZyiB,iBAAaziB,EACbuoB,wBAAwB,EACxBlD,UAAU,EACVC,UAAMtlB,GAGR,IAAMutB,GAAgC,SAAHzqB,GAAA,IACjC8kB,EAAa9kB,EAAb8kB,cACA9G,EAAYhe,EAAZge,aACAgH,EAAahlB,EAAbglB,cACAC,EAAwBjlB,EAAxBilB,yBACA1H,EAAQvd,EAARud,SACAC,EAAUxd,EAAVwd,WACAmC,EAAW3f,EAAX2f,YACA8F,EAAsBzlB,EAAtBylB,uBACAlD,EAAQviB,EAARuiB,SACAmI,EAAY1qB,EAAZ0qB,aACAlI,EAAIxiB,EAAJwiB,KACAhtB,EAAIwK,EAAJxK,KACA3C,EAAOmN,EAAPnN,QACA83B,EAAyB3qB,EAAzB2qB,0BACArH,EAAYtjB,EAAZsjB,aACAC,EAAsBvjB,EAAtBujB,uBAC2BqH,EAAyB5qB,EAApD6qB,0BAAyB,OAEzBj0B,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,6BAA6B9hB,SAAA,CAC5Eo3B,IAA6B93B,EAAAA,EAAAA,KAAC83B,EAAyB,CAACtG,0BAA2BzxB,EAAQwpB,mBAC5FzlB,EAAAA,EAAAA,MAAA,KACExD,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMG,GAAYC,EAAWhqB,SAAA,CAE5B+uB,GAAYC,IACX1vB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAoBwE,GAAiBA,EAAc7iB,eAAiB6iB,EAAc7iB,cAAcwgB,YAAe,GAC/GlY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAInBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDV,EAAAA,EAAAA,KAACgrB,GAAO,CAACjU,2BAAyB,EAACsR,kBAAmBtoB,EAAQsoB,kBAAmB3lB,KAAMA,IACtFk1B,IAAgB53B,EAAAA,EAAAA,KAACqxB,GAAQ,CAACC,kBAAmBvxB,EAAQypB,YACtDxpB,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvB3U,2BAAyB,EACzBoU,cAAc,EACdD,aAAcA,EACdxoB,KAAMA,EACN2oB,cAAerB,IAAWjqB,EAAQmjB,kCAAmC,6BAEvEljB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,oBAExEgV,GAA4B73B,EAAAA,EAAAA,KAAC0xB,GAAqB,CACjDxF,YAAayG,EACb9F,YAAaA,EACb8E,+BAAgC5xB,EAAQ0pB,sBACxCmI,+BAAgC7xB,EAAQkjB,sBACxC4O,qCAAsC9xB,EAAQooB,4BAC9CsI,uBAAwBA,EACxBD,aAAcA,EACd1D,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,kBACrEhjB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACxBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,yBAI1E,EAGKgV,IAA2BlD,EAAAA,GAAAA,kBAAgB,SAACC,GACvD,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBqd,EAF4Bn3B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,qBAElBuY,GAC7C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQmlB,mBAAmBxkB,UAC/CV,EAAAA,EAAAA,KAAC23B,IAA6B59B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxBsE,GAAK,IACT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,EACRmI,cAAY,EACZG,0BAA2BtG,OAEzB,GAERpI,GACA,CAAEzH,cAAe,6BACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC03B,IAAoB39B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,IACR,GAEJ3K,EACA,CAAElD,cAAe,6BAGnB,OAAO5hB,EAAAA,EAAAA,KAACi4B,GAAUl+B,EAAAA,EAAAA,GAAA,GAAKg7B,GACzB,IAEamD,IAAwBpD,EAAAA,GAAAA,kBAAgB,SAACC,GACpD,IAAMhsB,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBAGzBqd,EAF4Bn3B,IAAAA,IAAMiI,EAAa,CAAC,UAAW,qBAElBuY,GAC7C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQmlB,mBAAmBxkB,UAC/CV,EAAAA,EAAAA,KAAC23B,IAA6B59B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxBsE,GAAK,IACT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,EACRsI,0BAA2BxG,GAC3BqG,cAAY,MAEV,GAERhO,GACA,CAAEhI,cAAe,0BACfN,GACF,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQmlB,mBAAmBxkB,UAC/CV,EAAAA,EAAAA,KAAC03B,IAAoB39B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,MAEN,GAERzK,EACA,CAAEpD,cAAe,0BAGnB,OAAO5hB,EAAAA,EAAAA,KAACi4B,GAAUl+B,EAAAA,EAAAA,GAAA,GAAKg7B,GACzB,I,qHCxQaoD,GAAqC,SAAHp/B,GA4BxC,IA3BL2J,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEAiyB,EAAaj5B,EAAbi5B,cAGAoG,EAAer/B,EAAfq/B,gBACAC,EAAmBt/B,EAAnBs/B,oBACA5N,EAAQ1xB,EAAR0xB,SACA6N,EAAgBv/B,EAAhBu/B,iBACAC,EAAQx/B,EAARw/B,SACA/H,EAAYz3B,EAAZy3B,aAMAgI,EAAUz/B,EAAVy/B,WACAC,EAAoB1/B,EAApB0/B,qBACAC,EAAY3/B,EAAZ2/B,aACAC,EAAU5/B,EAAV4/B,WACAC,EAAmB7/B,EAAnB6/B,oBACAC,EAA4B9/B,EAA5B8/B,6BAMA3rB,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAAuCiB,GAAiB,CAAC,EAAjDikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YACvB,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAGT,IAAM0jB,EAAoBF,EAAgBpjB,EAEpCjD,EAAWomB,GAA6B/jB,EA+BxC0pB,EAAqB,WAAH,OACtB94B,EAAAA,EAAAA,KAAC+4B,GAAAA,EAAM,CAAC78B,WAAW,YAAYoE,UAAW0pB,IAAWjqB,EAAQkjB,uBAAuBviB,SACjF8vB,GACM,EA2BX,OACExwB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAW,6BAA8BzoB,MAAO,CAAEhI,MAAM,GAADqB,OAAK04B,EAAiB,OAAO5yB,UAClGV,EAAAA,EAAAA,KAACg5B,GAAAA,EAAc,CAAClX,MAAOmX,GAAAA,EAAcv4B,UACnCoD,EAAAA,EAAAA,MAACo1B,GAAAA,EAAI,CAAC54B,UAAW0pB,IAAWjqB,EAAQyiB,eAAe9hB,SAAA,CAEhD83B,IA/DPx4B,EAAAA,EAAAA,KAACm5B,GAAAA,EAAU,CACT74B,UAAW0pB,IAAWjqB,EAAQslB,qBAC9BpY,OAAOjN,EAAAA,EAAAA,KAACytB,GAAAA,EAAK,CAACntB,UAAW0pB,IAAWjqB,EAAQylB,eAAgB/N,IAAK4gB,EAAqB5M,IAAK/oB,EAAKQ,UAAUsoB,wBAC1GjnB,QAAQvE,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0lB,sBAAsB/kB,UAACV,EAAAA,EAAAA,KAAA,KAAAU,SAAI03B,MACtEvL,aAAa7sB,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQ2lB,sBAAsBhlB,SAAEgC,EAAKQ,UAAUsoB,gBA6DnFiN,IAAwBz4B,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQ4lB,2BAA2BjlB,SAAE43B,KAE1Fx0B,EAAAA,EAAAA,MAAA,OAAApD,SAAA,EA1DNV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SACzDkP,GAAaA,EAAUzC,MACxBnN,EAAAA,EAAAA,KAACo5B,GAAAA,EAAW,CAAC94B,UAAW0pB,IAAWjqB,EAAQulB,sBAAsB5kB,UAC/DV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,mBAiDhC+nB,IAAeC,IAnCxB90B,EAAAA,EAAAA,MAACu1B,GAAAA,EAAU,CAAC/4B,UAAW0pB,IAAWjqB,EAAQwlB,qBAAqB7kB,SAAA,EAC7DoD,EAAAA,EAAAA,MAAA,OAAApD,SAAA,EACEV,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQ6lB,mBAAmBllB,SAAE63B,IACxDG,IAAgB14B,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQgjB,mBAAmBriB,SAAE+pB,OAE3E+F,GAAgBsI,OA+BVH,GAAcC,IA1BvB90B,EAAAA,EAAAA,MAACu1B,GAAAA,EAAU,CAAC/4B,UAAW0pB,IAAWjqB,EAAQwlB,qBAAqB7kB,SAAA,EAC7DV,EAAAA,EAAAA,KAAA,OAAAU,UAAKV,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQ6lB,mBAAmBllB,SAAE63B,MAC7DM,IAAgC74B,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAC5D,UAAW0pB,IAAWjqB,EAAQ4lB,2BAA2BjlB,SAAE43B,KAClGx0B,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQsmB,iBAAiB3lB,SAAA,EAClDoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQqmB,sBAAsB1lB,SAAA,EACvDV,EAAAA,EAAAA,KAACytB,GAAAA,EAAK,CAACntB,UAAW0pB,IAAWjqB,EAAQylB,eAAgB/N,IAAK4gB,EAAqB5M,IAAK/oB,EAAKQ,UAAUsoB,yBACnGxrB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0lB,sBAAsB/kB,SAAE03B,OAE5D5H,GAAgBsI,mBAwBzB,EAsBAX,GAAmCx3B,aAAe,CAChDqxB,cAAe,CAAC,EAChBoG,qBAAiBhuB,EACjBiuB,yBAAqBjuB,EACrBqgB,cAAUrgB,EACVkuB,sBAAkBluB,EAClBmuB,cAAUnuB,EACVomB,kBAAcpmB,EACdouB,YAAY,EACZC,sBAAsB,EACtBE,YAAY,EACZC,qBAAqB,EACrBC,8BAA8B,EAC9BH,cAAc,GCrJT,IAAMY,GAAwChY,GACnD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm4B,IAAkCp+B,EAAAA,EAAAA,GAAA,CACjCy+B,YAAU,EACVC,sBAAoB,EACpBE,YAAU,EACVC,qBAAqB,EACrBF,cAAY,GACRr6B,GACJ,GACJ+mB,EACA,CAAExD,cAAe,0CAGN2X,GAAuCjY,GAClD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm4B,IAAkCp+B,EAAAA,EAAAA,GAAA,CACjCy+B,YAAU,EACVC,sBAAoB,EACpBE,YAAU,EACVC,qBAAqB,EACrBF,cAAY,GACRr6B,GACJ,IzCoF4C,SAAAyjB,GAAK,OAAA/nB,EAAAA,EAAAA,GAAA,GAClDqrB,IAA0C,GyClF7C,CAAExD,cAAe,yCAGN4X,GAAgDlY,GAC3D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm4B,IAAkCp+B,EAAAA,EAAAA,GAAA,CACjCy+B,YAAY,EACZC,sBAAsB,EACtBE,YAAU,EACVC,qBAAmB,EACnBF,cAAc,GACVr6B,GACJ,GAEJ8nB,EACA,CAAEvE,cAAe,kDAGN6X,GAAmDnY,GAC9D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm4B,IAAkCp+B,EAAAA,EAAAA,GAAA,CACjCy+B,YAAY,EACZC,sBAAsB,EACtBE,YAAU,EACVE,8BAA4B,EAC5BD,qBAAmB,EACnBF,cAAc,GACVr6B,GACJ,IzC8HwD,SAAAyjB,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9DosB,KAAkD,IAErDR,0BAA2B,CACzBtrB,OAAQ,sBACRsvB,WAAY,eACZ+P,UAAW,qBACXx+B,MAAO,qBACPZ,WAAY,sBACZa,SAAU,qBACVyB,UAAW,oBACXlD,WAAY,iBACZ8B,WAAY,sBACZsqB,cAAe,uBAEjBM,qBAAsB,CACpB/sB,QAAS,2BAEXgtB,gBAAiB,CACfhtB,QAAS,0BACT0sB,eAAgB,gBAChBxC,cAAe,SACfsC,IAAK,WACN,GyClJD,CAAEjE,cAAe,qDAGN+X,GAAuCrY,GAClD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm4B,IAAkCp+B,EAAAA,EAAAA,GAAA,CACjCy+B,YAAU,EACVC,sBAAoB,EACpBE,YAAU,EACVC,qBAAqB,EACrBgB,sBAAsB,EACtBf,8BAA8B,EAC9BH,cAAc,GACVr6B,GACJ,IzCuI4C,SAAAyjB,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClDosB,KAAkD,IAErDd,oBAAqB,CACnBlrB,WAAY,oBACZopB,cAAe,oBACf,wBAAyB,qBAE3BiC,cAAe,CACbjsB,MAAO,OACPc,OAAQ,QAEVorB,qBAAsB,CACpBvqB,MAAO,UACPZ,WAAY,WACZa,SAAU,MACVyB,UAAW,SACXlD,WAAY,IACZ8B,WAAY,WACZsqB,cAAe,YAEjBO,gBAAiB,CACfhtB,QAAS,0BACT0sB,eAAgB,gBAChBxC,cAAe,SACfsC,IAAK,UAEPH,qBAAsB,CACpBvqB,SAAU,qBACVD,MAAO,UACPM,WAAY,uBAEdmqB,0BAA2B,CACzBxqB,SAAU,uBAEZoqB,oBAAqB,CACnBxpB,WAAY,SACZgqB,eAAgB,gBAChBxC,cAAe,oBAChB,GyC3KD,CAAE3B,cAAe,yCCpFNiY,GAAsB,SAAH9gC,GAAA,IAC9BgH,EAAOhH,EAAPgH,QACAW,EAAQ3H,EAAR2H,SAAQ,OAERV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAW,4BAA6BjqB,EAAQ+5B,iBAAkB,mBAAmBp5B,UACnGV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,mCAAmC9hB,UACnFV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQg6B,mBAAmBr5B,SACnDA,OAGD,EAYRm5B,GAAoBl5B,aAAe,CACjCZ,QAAS,CAAC,EACVW,SAAU,M,kKC1BCs5B,GAA+B,WAAH,MAAU,CACjDxX,cAAe,CACbjpB,MAAO,IACPc,OAAQ,IACRb,OAAQ,oCACRygC,qBAAsB,OACtBC,oBAAqB,OACrBrV,aAAc,QAEhBiV,iBAAkB,CAChBzgC,QAAS,OACT0sB,eAAgB,UAElBgU,kBAAmB,CACjBp+B,UAAW,GACX3B,aAAc,GACdK,OAAQ,MACRT,WAAY,GACZC,YAAa,GACbyC,aAAc,IAEhB69B,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACP8C,gBAAiB,QACjBC,aAAc,IAEjB,EAEY89B,GAAwB,WACnC,IAAAC,EAKIzS,IAJFpF,EAAa6X,EAAb7X,cACAE,EAAsB2X,EAAtB3X,uBACAgF,EAAyB2S,EAAzB3S,0BACGjlB,GAAIZ,EAAAA,EAAAA,GAAAw4B,EAAAv4B,IAETw4B,EApCiD,CACjD9X,cAAe,CACbjpB,MAAO,IACPc,OAAQ,IACRb,OAAQ,oCACRygC,qBAAsB,OACtBC,oBAAqB,OACrBrV,aAAc,QAEhBiV,iBAAkB,CAChBzgC,QAAS,OACT0sB,eAAgB,UAElBgU,kBAAmB,CACjBp+B,UAAW,GACX3B,aAAc,GACdK,OAAQ,MACRT,WAAY,GACZC,YAAa,GACbyC,aAAc,IAEhB69B,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACP8C,gBAAiB,QACjBC,aAAc,KAWOi+B,EAAmBD,EAAlC9X,cAAuCgY,GAAY34B,EAAAA,EAAAA,GAAAy4B,EAAA/V,IAE3D,OAAAxqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACK0I,GACA+3B,GAAY,IACfhY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GACA+X,GAAmB,IACtBhhC,MAAO,QACPc,OAAQ,UAEVqoB,wBAAsB3oB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjB2oB,GAAsB,IACzB+X,KAAM,MAER/S,2BAAyB3tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACpB2tB,GAAyB,IAC5B/rB,UAAW,GACX2B,UAAW,+EACXhB,aAAc,SACd9C,OAAQ,mBACRmB,WAAY,OACZ,2BAA4B,CAC1BN,OAAQ,OACRqB,QAAS,WAIjB,EC1Dag/B,GAA4BpZ,GACvC,SAACjjB,GACC,IACE0B,EAKE1B,EALF0B,QACAiyB,EAIE3zB,EAJF2zB,cACA9G,EAGE7sB,EAHF6sB,aACA2B,EAEExuB,EAFFwuB,YACAnqB,EACErE,EADFqE,KAGF3J,EAEIi5B,GAAiB,CAAC,EADpB7iB,EAAapW,EAAboW,cAAeC,EAAiBrW,EAAjBqW,kBAAmBQ,EAAS7W,EAAT6W,UAAWojB,EAAiBj6B,EAAjBi6B,kBAAmBC,EAAmBl6B,EAAnBk6B,oBAAqBC,EAAoBn6B,EAApBm6B,qBAAsBC,EAAyBp6B,EAAzBo6B,0BAE7GjmB,EAAuCiC,GAAiB,CAAC,EAAjDikB,EAAalmB,EAAbkmB,cAAepjB,EAAW9C,EAAX8C,YACvB,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAGT,IAAM7C,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAAC+1B,GAAmB,CAClB95B,QAASA,EAAQW,SAAA,EAEjBV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ46B,kBAAkBj6B,UACxCV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,kBAGvC5Q,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ66B,0BAA0Bl6B,UAChDV,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbnqB,KAAMA,EACNoqB,8BAA+B/sB,EAAQ86B,oBAG3C76B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ+6B,gBAAgBp6B,UACtCV,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvBP,cAAY,EACZD,aAAcA,EACdxoB,KAAMA,EACN2oB,cAAetrB,EAAQg7B,kCAKjC,IDqFsC,WACtC,IAAAC,EAlJiD,CACjDxY,cAAe,CACbjpB,MAAO,IACPc,OAAQ,IACRb,OAAQ,oCACRygC,qBAAsB,OACtBC,oBAAqB,OACrBrV,aAAc,QAEhBiV,iBAAkB,CAChBzgC,QAAS,OACT0sB,eAAgB,UAElBgU,kBAAmB,CACjBp+B,UAAW,GACX3B,aAAc,GACdK,OAAQ,MACRT,WAAY,GACZC,YAAa,GACbyC,aAAc,IAEhB69B,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACP8C,gBAAiB,QACjBC,aAAc,KAyHOi+B,EAAmBS,EAAlCxY,cAAuCgY,GAAY34B,EAAAA,EAAAA,GAAAm5B,EAAAC,IAE3D,OAAAlhC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKygC,GAAY,IACfhY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwgC,GAAmB,IACtBlgC,OAAQ,QACRd,MAAO,UAETshC,eAAgB,CACd9+B,WAAY,MACZrC,WAAY,MACZyB,SAAU,QAEZw/B,kBAAmB,CACjB,wBAAyB,CACvBr+B,aAAc,SAItB,GCxGE,CAAEslB,cAAe,8BC/CN8V,GAAuB,SAAH3+B,GAAA,IAC/Bi5B,EAAaj5B,EAAbi5B,cACA9G,EAAYnyB,EAAZmyB,aACAgH,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBACA1H,EAAQ1xB,EAAR0xB,SACAC,EAAU3xB,EAAV2xB,WACAmC,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBACAlD,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KACAhtB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QACAm7B,EAAeniC,EAAfmiC,gBAAe,OAEfl7B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,4BAA6B0Y,GAAiBx6B,UAC9FoD,EAAAA,EAAAA,MAAA,KACExD,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMG,GAAYC,EAAWhqB,SAAA,CAC9B,SAAO+uB,GAAYC,IAClB1vB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAoBwE,GAAiBA,EAAc7iB,eAAiB6iB,EAAc7iB,cAAcwgB,YAAe,GAC/GlY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAIjBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,uBAAwB,kBAAkBhiB,SAAA,EAC3EV,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvBP,cAAY,EACZD,aAAcA,EACdxoB,KAAMA,EACN2oB,cAAerB,IAAWjqB,EAAQmjB,kCAAmC,6BAEvEljB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,qBAEzE7iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,wBAI1E,EAuCR0U,GAAqB/2B,aAAe,CAClCuqB,kBAAc9gB,EACd8nB,mBAAe9nB,EACf+nB,0BAA0B,EAC1B1H,cAAUrgB,EACVsgB,gBAAYtgB,EACZyiB,iBAAaziB,EACbuoB,wBAAwB,EACxBuI,qBAAiB9wB,EACjBqlB,UAAU,EACVC,UAAMtlB,GAGD,IAAM+wB,GAAqC7Z,GAChD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC03B,IAAoB39B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IAGT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,IACR,IC9GmD,SAAC3N,GACxD,IAAAiD,EAxB2C,CAC3CvC,cAAe,CACbnpB,QAAS,QACTG,OAAQ,oBACRL,OAAQ,OACR8L,SAAU,SACV7J,SAAU,sBACVT,WAAY,OACZspB,UAAW,cACX3mB,UAAW,OAEX,4BAA6B,CAC3B/D,MAAO,OACPc,OAAQ,SAGZqoB,4BAAwBtY,EACxB8Y,uCAAmC9Y,EACnCyY,4BAAwBzY,EACxB4Y,0BAAsB5Y,EACtBga,4BAAwBha,GAIhBoY,EAAauC,EAAbvC,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAkjB,EAAAjjB,GAoFpC,OAnFY/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBnoB,OAAQ,GACRiC,aAAc,SACdZ,QAAS,oBACT,4BAA6B,CAC3BrC,QAAS,OACTkqB,cAAe,SAInBb,uBAAwB,CACtBrpB,QAAS,QACT8B,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,YAIXgoB,kCAAmC,CACjChoB,MAAO,mBACPC,SAAU,kBACV1B,SAAU,IACVkC,UAAW,iBACXH,WAAY,kBACZM,cAAe,SAEf,eAAgB,CACdZ,MAAO,mBACP3B,MAAO,OACPc,OAAQ,GACRlB,OAAQ,uBACRE,QAAS,eACTqC,QAAS,mBACTF,WAAY,kBACZM,cAAe,SACfO,gBAAiB,kBACjB7C,OAAQ,mBACR8C,aAAc,kBAGhB,mBAAoB,CAClBpB,MAAO,mBACPQ,QAAS,mBACTP,SAAU,mBACVQ,UAAW,mBACXH,WAAY,qBAIhBqnB,uBAAwB,CACtB1nB,SAAU,GACVQ,UAAW,EACXjC,WAAY,IACZ8B,WAAY,SACZgB,cAAe,GAGjBwmB,qBAAsB,CACpB9nB,MAAO,QACPC,SAAU,GACVQ,UAAW,EACXH,WAAY,SACZyJ,SAAU,SACVujB,aAAc,WACdjvB,MAAO,OACPa,WAAY,UAEdgqB,uBAAwB,CACtBroB,WAAY,EACZoB,aAAc,GACd,wBAAyB,CACvBb,aAAc,SAKtB,GD2BE,CAAEslB,cAAe,6BAGNwZ,GAAkC9Z,GAC7C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQmlB,mBAAmBxkB,UAC/CV,EAAAA,EAAAA,KAAC03B,IAAoB39B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfsE,GAAK,IACT8zB,0BAA0B,EAC1BQ,wBAAwB,EACxBlD,UAAQ,MAEN,ICrC4C,SAAC3N,GACrD,IAAAmD,EAhH2C,CAC3CzC,cAAe,CACbnpB,QAAS,QACTG,OAAQ,oBACRL,OAAQ,OACR8L,SAAU,SACV7J,SAAU,sBACVT,WAAY,OACZspB,UAAW,cACX3mB,UAAW,OAEX,4BAA6B,CAC3B/D,MAAO,OACPc,OAAQ,SAGZqoB,4BAAwBtY,EACxB8Y,uCAAmC9Y,EACnCyY,4BAAwBzY,EACxB4Y,0BAAsB5Y,EACtBga,4BAAwBha,GA4FhBoY,EAAayC,EAAbzC,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAojB,EAAAV,GAoHpC,OAnHYxqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEb2C,mBAAoB,CAClB7rB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,UAGdqoB,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBlmB,aAAc,EACd/C,MAAO,OACP0qB,UAAW,aACXzqB,OAAQ,OACR,4BAA6B,CAC3BH,QAAS,OACTkqB,cAAe,MACfjqB,SAAU,EACVE,OAAQ,uBAIZkpB,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV5L,QAAS,OACTkqB,cAAe,MACfppB,WAAY,SACZC,WAAY,SACZd,SAAU,EACV,qCAAsC,CACpCD,QAAS,eACT+B,SAAU,aAId8nB,kCAAmC,CACjC7pB,QAAS,0BACTF,OAAQ,8BACR2C,cAAe,SAEf,eAAgB,CACdZ,MAAO,mBACP3B,MAAO,OACPc,OAAQ,GACRlB,OAAQ,uBACRE,QAAS,eACTqC,QAAS,mBACTF,WAAY,kBACZM,cAAe,SACfO,gBAAiB,kBACjB7C,OAAQ,mBACR8C,aAAc,iBACd+mB,QAAS,MACTjoB,SAAU,WACVE,KAAM,KAGR,mBAAoB,CAClBJ,MAAO,mBACPC,SAAU,kBACVK,WAAY,kBACZE,QAAS,uBAIbmnB,uBAAwB,CACtBxpB,QAAS,eACT6B,MAAO,OACPQ,QAAS,EACThC,WAAY,IACZ8C,cAAe,EACf,WAAY,CACVjC,QAAS,MACTf,OAAQ,aACRH,QAAS,eACTqC,QAAS,MACTypB,UAAW,iCACX7hB,YAAa,kBACbzJ,YAAa,GACbuB,SAAU,WACVwC,MAAO,GAET,WAAY,CACVrD,QAAS,MACTlB,QAAS,SACTqC,QAAS,EACTR,MAAO,OACPE,SAAU,WACVwC,KAAM,IAIVolB,qBAAsB,CACpB3pB,QAAS,eACT6B,MAAO,QACPQ,QAAS,EACT++B,KAAM,UACNx1B,SAAU,SACVujB,aAAc,WACdjvB,MAAO,OACPiD,cAAe,GAGjB4nB,uBAAwB,CACtB1oB,QAAS,CAAC,EAAG,EAAG,EAAG,GACnB,wBAAyB,CACvBY,aAAc,SAKtB,GD9EE,CAAEslB,cAAe,0B,sKEjJNyZ,GAA6B/Z,GAAqB,SAACjjB,GAC9D,IACE2zB,EAYE3zB,EAZF2zB,cACA9G,EAWE7sB,EAXF6sB,aACAgH,EAUE7zB,EAVF6zB,cACAC,EASE9zB,EATF8zB,yBACAtF,EAQExuB,EARFwuB,YACA8F,EAOEt0B,EAPFs0B,uBACAjD,EAMErxB,EANFqxB,KACAjF,EAKEpsB,EALFosB,SACAC,EAIErsB,EAJFqsB,WACAhoB,EAGErE,EAHFqE,KACA3C,EAEE1B,EAFF0B,QACG0C,GAAIZ,EAAAA,EAAAA,GACLxD,EAAKyD,IAET,OACE9B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQu7B,QAAQ56B,UAC9BV,EAAAA,EAAAA,KAAC03B,IAAoB39B,EAAAA,EAAAA,GAAA,CACnB21B,KAAMA,EACNxE,aAAcA,EACdgH,cAAeA,EACfC,yBAA0BA,EAC1BtF,YAAaA,EACb8F,uBAAwBA,EACxBjwB,KAAMA,EACN3C,QAASA,EACTiyB,cAAeA,EACfvH,SAAUA,EACVC,WAAYA,GACRjoB,KAKZ,IJ2ByC,WACvC,IAAA84B,EAnEiD,CACjD/Y,cAAe,CACbjpB,MAAO,IACPc,OAAQ,IACRb,OAAQ,oCACRygC,qBAAsB,OACtBC,oBAAqB,OACrBrV,aAAc,QAEhBiV,iBAAkB,CAChBzgC,QAAS,OACT0sB,eAAgB,UAElBgU,kBAAmB,CACjBp+B,UAAW,GACX3B,aAAc,GACdK,OAAQ,MACRT,WAAY,GACZC,YAAa,GACbyC,aAAc,IAEhB69B,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACP8C,gBAAiB,QACjBC,aAAc,KA0COi+B,EAAmBgB,EAAlC/Y,cAAuCgY,GAAY34B,EAAAA,EAAAA,GAAA05B,EAAA5W,IAE3D,OAAA5qB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKygC,GAAY,IACfhY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwgC,GAAmB,IACtBlhC,QAAS,OACTE,MAAO,QACPc,OAAQ,QACR,4BAA6B,CAC3BA,OAAQ,QACRqB,QAAS,OACT4B,UAAW,+EACX3B,UAAW,GACXnC,OAAQ,mBACRmB,WAAY,OACZpB,MAAO,UAGX+hC,QAAS,CACPjiC,QAAS,OACT0sB,eAAgB,UAElByV,eAAgB,CACdhiC,OAAQ,oBACR8D,UAAW,OACX/D,MAAO,IACPc,OAAQ,GACRqB,QAAS,oBACTC,UAAW,KAEbunB,kCAAmC,CACjC7pB,QAAS,QACT6B,MAAO,QACPioB,eAAgB,OAChBhoB,SAAU,kBACV1B,SAAU,IACVqC,cAAe,SACfN,WAAY,OACZG,UAAW,EACX,eAAgB,CACdU,gBAAiB,kBACjBC,aAAc,EACdjC,OAAQ,GACRyB,cAAe,SACfJ,QAAS,mBACTnC,MAAO,OACPF,QAAS,eACT+B,SAAU,SACVjC,OAAQ,YACRgC,SAAU,GACVD,MAAO,mBACPM,WAAY,QAEd,mBAAoB,CAClBL,SAAU,oBAGd0nB,uBAAwB,CACtBxpB,QAAS,QACT8B,SAAU,GACVQ,UAAW,EACXH,WAAY,UAEdwnB,qBAAsB,CACpB3pB,QAAS,QACT6B,MAAO,QACPioB,eAAgB,OAChBhoB,SAAU,GACVQ,UAAW,EACXH,WAAY,UAEdqxB,YAAa,CACXxzB,QAAS,iBAGf,GIxG8B,CAAEuoB,cAAe,+BC1BlC6Z,GAAuC,CAClDlzB,UAAW,CACT7F,KAAM8F,KAAAA,MAAgB,CACpBtF,UAAWsF,KAAAA,OACVC,WACH1I,QAASyI,KAAAA,MAAgB,CACvBkf,0BAA2Blf,KAAAA,OAC3Bga,cAAeha,KAAAA,OACfka,uBAAwBla,KAAAA,OACxBma,kBAAmBna,KAAAA,OACnBsa,sBAAuBta,KAAAA,OACvBua,kBAAmBva,KAAAA,OACnB0b,8BAA+B1b,KAAAA,OAC/Bwa,qBAAsBxa,KAAAA,OACtBsf,eAAgBtf,KAAAA,OAChBmf,qBAAsBnf,KAAAA,SACrBC,WACHizB,eAAgBlzB,KAAAA,MAAgB,CAC9BolB,WAAYplB,KAAAA,MAAgB,CAC1BulB,iBAAkBvlB,KAAAA,SAEpBmzB,eAAgBnzB,KAAAA,MAAgB,CAC9ByE,MAAOzE,KAAAA,MAAgB,CAAC,GACxB2kB,WAAY3kB,KAAAA,SAGhBozB,iBAAkBpzB,KAAAA,KAClBqzB,mBAAoBrzB,KAAAA,KACpB4kB,wBAAyB5kB,KAAAA,OACzB6kB,mBAAoB7kB,KAAAA,OACpBszB,aAActzB,KAAAA,MAAgB,CAC5B6pB,aAAc7pB,KAAAA,OACdqkB,YAAarkB,KAAAA,OACbkiB,WAAYliB,KAAAA,OACZ2E,IAAK3E,KAAAA,SACJC,YAGL9H,aAAc,CACZi7B,kBAAkB,EAClBC,oBAAoB,EACpBzO,wBAAyB,KACzBC,mBAAoB,IACpBqO,eAAgB,CAAC,IAIRK,GAAkC,SAAC19B,GAC9C,IACEqE,EAaErE,EAbFqE,KACA3C,EAYE1B,EAZF0B,QACA67B,EAWEv9B,EAXFu9B,iBACAC,EAUEx9B,EAVFw9B,mBACAzO,EASE/uB,EATF+uB,wBACAC,EAQEhvB,EARFgvB,mBACAqO,EAOEr9B,EAPFq9B,eAAcM,EAOZ39B,EANFy9B,aACEzJ,EAAY2J,EAAZ3J,aACAxF,EAAWmP,EAAXnP,YACAnC,EAAUsR,EAAVtR,WACAvd,EAAG6uB,EAAH7uB,IAIJ,OACEnN,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,6BAA6B9hB,UAC7EoD,EAAAA,EAAAA,MAAC0mB,GAAyB,CACxBI,mCAAoC7qB,EAAQ2nB,0BAC5CiD,iBAAe,EAAAjqB,SAAA,EAEfoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ2iB,uBAAuBhiB,SAAA,EAC7CV,EAAAA,EAAAA,KAACwsB,GAAyB,CACxB/B,SAAUtd,EACVmf,aAAc+F,EACd9F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,oBAExEhf,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ4nB,qBAAqBjnB,SAAA,EAC3CV,EAAAA,EAAAA,KAAC2sB,GAAyB,CACxBlC,SAAUtd,EACVud,WAAYA,EACZgC,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,eAGlE6Y,GAAoBF,EAAe9N,YAA6D,UAA/C8N,EAAe9N,WAAWG,mBAC3E/tB,EAAAA,EAAAA,KAACmuB,GAAe,CACdzrB,KAAMA,EACNkrB,WAAY8N,EAAe9N,iBAIjC9pB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQmkB,8BAA+BnkB,EAAQ4nB,qBAAsB,gBAAgBjnB,SAAA,EAC9GV,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,qBAChD3iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbC,8BAA+B/sB,EAAQijB,uBAGvC4Y,GAAoBF,EAAe9N,YAA6D,mBAA/C8N,EAAe9N,WAAWG,mBAC3E/tB,EAAAA,EAAAA,KAAC2tB,GAAwB,CACvBjrB,KAAMA,EACNkrB,WAAY8N,EAAe9N,mBAMjCiO,GAAsBH,EAAeC,gBAAkBD,EAAeC,eAAe1uB,QACrFjN,EAAAA,EAAAA,KAACktB,GAAc,CACbxqB,KAAMA,EACNuK,MAAOyuB,EAAeC,eAAe1uB,MACrCkgB,WAAYuO,EAAeC,eAAexO,WAC1CC,wBAAyBA,EACzBC,mBAAoBA,EACpBC,wBAAyBvtB,EAAQ+nB,qBAM7C,EAIAiU,GAAgCp7B,aAAe86B,GAAqC96B,a,yGCnIvEs7B,GAAgC,SAAC59B,GAC5C,IACE6zB,EAQE7zB,EARF6zB,cACArF,EAOExuB,EAPFwuB,YACAnC,EAMErsB,EANFqsB,WACAvd,EAKE9O,EALF8O,IACA6kB,EAIE3zB,EAJF2zB,cACAjyB,EAGE1B,EAHF0B,QACA87B,EAEEx9B,EAFFw9B,mBACGp5B,GAAIZ,EAAAA,EAAAA,GACLxD,EAAKyD,IAET/I,EASIi5B,GAAiB,CAAC,EARpB7iB,EAAapW,EAAboW,cACAC,EAAiBrW,EAAjBqW,kBACAQ,EAAS7W,EAAT6W,UACAojB,EAAiBj6B,EAAjBi6B,kBACAC,EAAmBl6B,EAAnBk6B,oBACAC,EAAoBn6B,EAApBm6B,qBACAC,EAAyBp6B,EAAzBo6B,0BACAxlB,EAAa5U,EAAb4U,cAGIZ,EAAWomB,GAA6B/jB,EAC9ClC,EAAuCiC,GAAiB,CAAC,EAAjDikB,EAAalmB,EAAbkmB,cAAepjB,EAAW9C,EAAX8C,YAEjB0rB,EAAiBG,GAAsB,CAC3CF,eAAgB,CACd1uB,MAAO,CACLwK,IAAKub,GAAqBpjB,EAAUzC,IACpC5T,MAAO05B,GAAuBrjB,EAAUrW,MACxCc,OAAQ64B,GAAwBtjB,EAAUvV,OAC1CmV,aAAc,CACZkB,YAAa3D,EAAS2D,YACtBI,QAAS/D,EAAS+D,QAClBE,QAASjE,EAASiE,UAGtBmc,YAAY,GAEdA,WAAYxf,GAGd,OACE3N,EAAAA,EAAAA,KAAC+7B,IAA+BhiC,EAAAA,EAAAA,GAAA,CAC9BqzB,wBAAyBpd,EACzBqd,mBAAoB+F,EACpB0I,aAAc,CACVzJ,aAAcH,EACdrF,YAAAA,EACAnC,WAAAA,EACAvd,IAAAA,GAEJ0uB,oBAAkB,EAClBH,eAAgBA,EAChB37B,QAASA,GACL0C,GAGV,EAEay5B,GAA4B5a,GACvC,SAAAjjB,GAAK,OAAI2B,EAAAA,EAAAA,KAACi8B,IAA6BliC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAEw9B,oBAAkB,IAAG,GACxEzB,GACA,CAAExY,cAAe,8BAGNua,GAAgC7a,GAC3C,SAAAjjB,GAAK,OAAI2B,EAAAA,EAAAA,KAACi8B,IAA6BliC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAEw9B,oBAAoB,IAAS,GAChFzB,GACA,CAAExY,cAAe,kCCpENwa,GAAuC9a,GAClD,SAACjjB,GACC,IACE0B,EAIE1B,EAJF0B,QACAiyB,EAGE3zB,EAHF2zB,cACAE,EAEE7zB,EAFF6zB,cACAxvB,EACErE,EADFqE,KAGF3J,EAEIi5B,GAAiB,CAAC,EADpB7iB,EAAapW,EAAboW,cAAeC,EAAiBrW,EAAjBqW,kBAAmBQ,EAAS7W,EAAT6W,UAAWojB,EAAiBj6B,EAAjBi6B,kBAAmBC,EAAmBl6B,EAAnBk6B,oBAAqBC,EAAoBn6B,EAApBm6B,qBAAsBC,EAAyBp6B,EAAzBo6B,0BAE7GjmB,EAAuCiC,GAAiB,CAAC,EAAjDikB,EAAalmB,EAAbkmB,cAAepjB,EAAW9C,EAAX8C,YACvB,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAGT,IAAM7C,EAAWomB,GAA6B/jB,EAE9C,OACEpP,EAAAA,EAAAA,KAAC65B,GAAmB,CAAC95B,QAASA,EAAQW,UACpCoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQs8B,gBAAgB37B,SAAA,EACtCV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,gBAErC5Q,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ66B,0BAA0Bl6B,UAChDV,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACd3F,2BAA4BxsB,EAAQu8B,oBACpC55B,KAAMA,UAMlB,IPsHwC,WACxC,IAAA65B,EAzKiD,CACjD/Z,cAAe,CACbjpB,MAAO,IACPc,OAAQ,IACRb,OAAQ,oCACRygC,qBAAsB,OACtBC,oBAAqB,OACrBrV,aAAc,QAEhBiV,iBAAkB,CAChBzgC,QAAS,OACT0sB,eAAgB,UAElBgU,kBAAmB,CACjBp+B,UAAW,GACX3B,aAAc,GACdK,OAAQ,MACRT,WAAY,GACZC,YAAa,GACbyC,aAAc,IAEhB69B,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACP8C,gBAAiB,QACjBC,aAAc,KAgJOi+B,EAAmBgC,EAAlC/Z,cAAuCgY,GAAY34B,EAAAA,EAAAA,GAAA06B,EAAAC,IAE3D,OAAAziC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKygC,GAAY,IACfhY,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwgC,GAAmB,IACtBlgC,OAAQ,QACRd,MAAO,UAET8iC,gBAAiB,CACfhjC,QAAS,OACTkqB,cAAe,SACfwC,eAAgB,SAChB5rB,WAAY,WAGlB,GOrIE,CAAEynB,cAAe,yCC7CN6a,GAAsC,SAAH1jC,GAGzC,IAFLgH,EAAOhH,EAAPgH,QACA28B,EAAM3jC,EAAN2jC,OAEQjlB,GAAQilB,GAAUA,EAAOn9B,OAAS,EAAIm9B,EAAO,GAAK,CAAC,GAAnDjlB,IAEFklB,GAAWjO,EAAAA,EAAAA,UAQjB,OANAkO,EAAAA,EAAAA,YAAU,WACJD,EAAS39B,SACX29B,EAAS39B,QAAQ69B,MAErB,GAAG,CAACplB,KAGFzX,EAAAA,EAAAA,KAAC65B,GAAmB,CAClB95B,QAASA,EAAQW,UAEjBV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQo6B,gBAAgBz5B,UACtCoD,EAAAA,EAAAA,MAAA,SAAOizB,UAAQ,EAACx1B,MAAO,CAAElH,OAAQ,OAAQd,MAAO,OAAQ+C,aAAc,QAAU+D,IAAKs8B,EAASj8B,SAAA,EAC5FV,EAAAA,EAAAA,KAAA,UAAQyX,IAAKA,KACbzX,EAAAA,EAAAA,KAAA,SACE88B,KAAK,WACLrlB,IAAI,GACJslB,QAAQ,KACR36B,MAAM,UACN46B,SAAO,UAMnB,EAWAP,GAAoC97B,aAAe,CACjDZ,QAAS,CAAC,EACV28B,OAAQ,MAGH,IAAMO,GAAiC3b,GAC5C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACy8B,IAAmC1iC,EAAAA,EAAAA,GAAA,GAAKsE,GAAS,GAEpD27B,GACA,CAAEpY,cAAe,6BCvDbiI,GAAuB,SAAH9wB,GAAA,IACxB+wB,EAAS/wB,EAAT+wB,UACA3c,EAAGpU,EAAHoU,IACAzM,EAAQ3H,EAAR2H,SACAqpB,EAAyBhxB,EAAzBgxB,0BACAhqB,EAAOhH,EAAPgH,QAAO,OAILC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQmqB,sBAAuBJ,GAAa/pB,EAAQoqB,yBAA0BJ,EAA2B,6BAA6BrpB,UAC/JoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,cAAaI,SAAA,CACzByM,IACDnN,EAAAA,EAAAA,KAAA,KACEM,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMnd,EAAIzM,SAETA,KAGDyM,IACFnN,EAAAA,EAAAA,KAAA,OACEM,UAAU,yBAAwBI,SAEjCA,QAID,EAaVmpB,GAAqBlpB,aAAe,CAClCmpB,WAAW,EACX3c,SAAK/C,EACL2f,+BAA2B3f,GAGtB,IAAM8yB,GAA6B5b,EACxCuI,ICxD8C,WAAH,MAAU,CACrDK,qBAAsB,CACpB7wB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACVtK,WAAY,cACZxB,OAAQ,OAER,iBAAkB,CAChBI,MAAO,OACP,4BAA6B,CAC3B+D,UAAW,+EACX9D,OAAQ,kBACR8C,aAAc,KACdjD,QAAS,OACTkqB,cAAe,SACfte,SAAU,SACV9L,OAAQ,OACRiC,SAAU,cAIhB+uB,yBAA0B,CACxB9G,QAAS,IAEZ,GD6BC,CAAEzB,cAAe,sBExCNub,GAA+B,SAAHpkC,GAsClC,IArCLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UACAoR,EAAeniC,EAAfmiC,gBACAkC,EAAkBrkC,EAAlBqkC,mBAEAnL,EAAiBl5B,EAAjBk5B,kBACAC,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBAEAC,EAAgBr5B,EAAhBq5B,iBACAC,EAAYt5B,EAAZs5B,aACAC,EAAuBv5B,EAAvBu5B,wBAEAC,EAAYx5B,EAAZw5B,aACA9H,EAAQ1xB,EAAR0xB,SACA+H,EAAmBz5B,EAAnBy5B,oBACA9H,EAAU3xB,EAAV2xB,WAEAgI,EAAe35B,EAAf25B,gBACA7F,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBAEApC,EAAgBx3B,EAAhBw3B,iBACAC,EAAYz3B,EAAZy3B,aAEAoC,EAAW75B,EAAX65B,YACAC,EAAY95B,EAAZ85B,aAEAzC,EAAgBr3B,EAAhBq3B,iBACAlF,EAAYnyB,EAAZmyB,aACA4H,EAAuB/5B,EAAvB+5B,wBAEArD,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KAEAhtB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEAmN,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAAmDiB,GAAiB,CAAC,EAA7DikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YAAa2f,EAAUzhB,EAAVyhB,WACpC,IAAKqC,IAAkBpiB,EACrB,OAAO,KAGT,IAAMytB,EAA0BD,EAAqB,EAAIA,EAAqBhK,EAExErmB,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAACo5B,GAA0B,CAAC/vB,IAAKsd,EAAUX,UAAWA,EAAWC,0BAA2BC,IAAWjqB,EAAQyiB,cAAe0Y,GAAiBx6B,SAAA,EAC7IoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAAA,CACzDkyB,IAAe5yB,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,oBAC/DkQ,IAAgB7yB,EAAAA,EAAAA,KAAC8rB,GAAiB,CAACF,kBAAmB7rB,EAAQ6iB,oBAE7DhT,EAAUzC,MACRnN,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB6P,EACnBrtB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,mBAI3C9M,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,uBAAwB,kBAAkBhiB,SAAA,CAC1E+uB,GAAYC,IACb5rB,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,0BAAyBI,SAAA,EACtCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmBmC,GAAc,GACjClY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAGjBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,YAAWI,SAAA,EACxBV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,qBAAoBI,SAAEwqB,IACpCqH,IACDvyB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,YAAasG,EACb9F,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,qBAMvEkP,IACDjyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,oBAGxEuP,IACDpyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,YAAaoG,EACb/F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,qBAGrE2M,IAAaC,IAAS6C,IACzBvyB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,YAAasG,EACb9F,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,eAGnE2P,IACD1yB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,iBAGzEoN,IACDpwB,EAAAA,EAAAA,KAAC0rB,GAAwB,CACvBP,aAAc2H,EACd5H,aAAcA,EACdxoB,KAAMA,EACN2oB,cAAerB,IAAWjqB,EAAQmjB,kCAAmC,4BAGtEqN,GAAoBC,IACrBxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BltB,EAAQkjB,6BAKhH,EAwDAka,GAA6Bx8B,aAAe,CAC1CmpB,WAAW,EACXoR,gBAAiB,GACjBkC,oBAAqB,EAErBnL,mBAAmB,EACnBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAiB,EACjBnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdzC,kBAAkB,EAClB0C,yBAAyB,EACzBrD,UAAU,EAEVyC,mBAAe9nB,EACf+nB,0BAA0B,EAC1BE,kBAAcjoB,EACdkoB,yBAAyB,EACzB7H,cAAUrgB,EACVsgB,gBAAYtgB,EACZooB,qBAAqB,EACrB3F,iBAAaziB,EACbuoB,wBAAwB,EACxBnC,kBAAcpmB,EACd8gB,kBAAc9gB,EACdslB,UAAMtlB,GCzOD,IAAMkzB,GAAuChc,GAClD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,ICmC4C,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA1Dd,CACvC0oB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,GACVf,WAAY,SACZ6K,SAAU,SACVujB,aAAc,YAEhBxF,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UAMqB,IAGnCgpB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,QAEdqnB,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAETynB,kBAAmB,CACjBpnB,MAAO,GAETqnB,kBAAmB,CACjBQ,gBAAiB,wDAClB,GD1DD,CAAExB,cAAe,+BAGN2b,GAAgDjc,GAC3D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAc,EACdzC,kBAAkB,EAClBX,UAAQ,IACR,IC6CqD,SAAA3N,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAvFvB,CACvC0oB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,GACVf,WAAY,SACZ6K,SAAU,SACVujB,aAAc,YAEhBxF,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UAmCqB,IAGnCgpB,uBAAwB,CACtBhnB,QAAS,qBACTP,SAAU,GACVK,WAAY,IACZ/B,SAAU,yBACV,6BAA8B,CAC5BJ,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,SACf,wBAAyB,CACvBroB,MAAO,OACPC,SAAU,GACVzB,WAAY,IACZ8B,WAAY,WAKpBqnB,uBAAwB,CACtBznB,SAAU,WACVF,MAAO,QACPC,SAAU,GACVnB,aAAc,EACdN,WAAY,MACZ8C,cAAe,GAEjBumB,kBAAmB,CACjB3nB,SAAU,WACVF,MAAO,QACPC,SAAU,GACVnB,aAAc,GAEhBgpB,qBAAsB,CACpB5nB,SAAU,WACVF,MAAO,QACPC,SAAU,GACV1B,SAAU,IACVq6B,SAAU,aACV32B,aAAc,IAEhB8lB,sBAAuB,CACrB/nB,MAAO,QACPK,MAAO,GACP/B,OAAQ,OACR+D,OAAQ,GACR8lB,QAAS,MACT3nB,QAAS,oBACTN,SAAU,WACVD,SAAU,GACVzB,WAAY,OACZ4C,aAAc,GACdD,gBAAiB,WAEnB+nB,uBAAwB,CACtBroB,WAAY,EACZoB,aAAc,EACd,wBAAyB,CACvBb,aAAc,EACd9C,OAAQ,uBAEX,GD9GD,CAAEooB,cAAe,wCAGN4b,GAAyClc,GACpD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,ICkG8C,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA9JhB,CACvC0oB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,GACVf,WAAY,SACZ6K,SAAU,SACVujB,aAAc,YAEhBxF,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UA0GqB,IAGnCqpB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ6nB,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,QACPmB,gBAAiB,UACjBgnB,QAAS,MACT3pB,WAAY,SACb,GD1HD,CAAEkoB,cAAe,iCAGN6b,GAA2Cnc,GACtD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAY,EACZG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAW,EACXC,cAAY,EACZzC,kBAAkB,IAClB,IC8GgD,SAAAtO,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA5LlB,CACvC0oB,6BAAyBrY,EACzBsY,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,EACNL,OAAQ,GACRzD,YAAa,GACbqB,SAAU,GACVK,WAAY,KAEdmnB,uBAAmBvY,EACnBwY,kBAAmB,CACjBQ,gBAAiB,yDAEnBP,uBAAwB,CACtBznB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVmC,OAAQ,GACRf,cAAe,EACf9C,WAAY,MACZyB,SAAU,GACVD,MAAO,SAET6nB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,GACVf,WAAY,SACZ6K,SAAU,SACVujB,aAAc,YAEhBxF,qBAAsB,CACpB9nB,MAAO,QACPqC,OAAQ,EACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVkB,aAAc,GACd9C,OAAQ,OACRkC,QAAS,oBACTP,SAAU,GACVD,MAAO,OACPmB,gBAAiB,OACjBgnB,QAAS,MACT3pB,WAAY,UAwIqB,IAGnCqpB,kBAAmB,CACjB7nB,MAAO,QACPqC,OAAQ,GACRnC,SAAU,WACVD,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVE,IAAK,EACLJ,MAAO,QACP1B,OAAQ,oBACR6pB,QAAS,MACT3nB,QAAS,oBACTP,SAAU,GACVzB,WAAY,OACZ4C,aAAc,EACdD,gBAAiB,YAClB,GDjID,CAAEulB,cAAe,mCEpEN8b,GAAiDpc,GAC5D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBvC,kBAAgB,EAChB0C,yBAAuB,IACvB,ICdsD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAdlB,CAC7CyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAKM,IAEzCsY,uBAAwB,CACtBhnB,QAAS,GACTR,MAAO,OACPC,SAAU,GACVK,WAAY,OACZ/B,SAAU,0BAGZopB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,KACX,GDVD,CAAEymB,cAAe,yCAGN+b,GAA4Drc,GACvE,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAY,EACZV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,ICNiE,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA5C7B,CAC7CyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAmCM,IAEzCqY,wBAAyB,CACvBrnB,SAAU,YAGZonB,cAAe,CACb,6BAA8B,CAC5BnoB,OAAQ,mBACRiB,KAAM,MAKVonB,uBAAwB,CACtBtnB,SAAU,WACVwC,KAAM,GACNL,OAAQ,GACRpC,SAAU,GACVK,WAAY,OACZN,MAAO,WAGT0nB,kBAAmB,CACjBvpB,QAAS,QACTE,MAAO,OACPc,OAAQ,mBACRiB,IAAK,GACL8nB,gBAAiB,yDAGnBP,uBAAwB,CACtBnpB,WAAY,MACZyB,SAAU,GACVK,WAAY,UACZN,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRL,aAAc,GAEd,+BAAgC,CAC9BoB,SAAU,WACVmC,OAAQ,KAIZ2lB,kCAAmC,CACjC,eAAgB,CACdhoB,MAAO,kBACPmoB,QAAS,GACT7pB,OAAQ,4CAEV,mBAAoB,CAClB0B,MAAO,wBAEV,GDhDD,CAAE0mB,cAAe,oDAGNgc,GAAoDtc,GAC/D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBQ,wBAAsB,EACtBnC,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,ICgCyD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAxGrB,CAC7CyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA+FM,IAGzCoY,cAAe,CACb7nB,WAAY,QAGd+nB,uBAAwB,CACtBhnB,QAAS,GAETR,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBvnB,KAAM,EACNJ,MAAO,UACPb,OAAQ,GACRe,SAAU,WACVD,SAAU,GACVK,WAAY,IACZ9B,WAAY,IACZ8C,cAAe,GAGjBwmB,qBAAsB,CACpB3oB,OAAQ,GACRlB,OAAQ,eACRgC,SAAU,KACX,GD7DD,CAAEymB,cAAe,4CAGNic,GAAwDvc,GACnE,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,IC6C6D,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GA3IzB,CAC7CyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IAkIM,IAGzCoY,cAAe,CACbnoB,OAAQ,GACRM,WAAY,OACZsK,SAAU,mBACV,iBAAkB,CAChB,4BAA6B,CAC3Bse,cAAe,iBACf/pB,OAAQ,kBACRa,OAAQ,MAKdooB,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,IACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,cACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,IAChB,GDjFD,CAAEolB,cAAe,gDAGNkc,GAA+Cxc,GAC1D,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACm9B,IAA4BpjC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAkB,EAClBG,cAAc,EACdG,iBAAe,EACfnC,kBAAkB,EAClBqC,aAAa,EACbC,cAAc,EACdV,0BAAwB,EACxBtF,iBAAaziB,EACbomB,kBAAcpmB,EACdgmB,kBAAgB,EAChB0C,yBAAuB,IACvB,ICiEoD,SAAAhR,GAAK,OAAA/nB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GArLhB,CAC7CyoB,mBAAepY,EACfqY,6BAAyBrY,EACzBsY,4BAAwBtY,EACxBuY,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,IA4KM,IAGzCoY,cAAe,CACbnoB,OAAQ,GACRM,WAAY,OACZ,iBAAkB,CAChB,4BAA6B,CAC3B4oB,cAAe,iBACflpB,OAAQ,MAKdooB,wBAAyB,CACvBpnB,MAAO,OACP9B,MAAO,GACPc,OAAQ,GACRlB,OAAQ,GAGVupB,uBAAwB,CACtBxnB,MAAO,OACPC,SAAU,GACVK,WAAY,QAGdqnB,uBAAwB,CACtBxoB,OAAQ,GACRlB,OAAQ,cACR8L,SAAU,SACV9J,SAAU,GACVzB,WAAY,IACZ8B,WAAY,MACZgB,cAAe,IAChB,GDnGD,CAAEolB,cAAe,uCEtGbwV,GAA0B,SAAHr+B,GAAA,IAC3Bi5B,EAAaj5B,EAAbi5B,cACAC,EAAiBl5B,EAAjBk5B,kBACAC,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBAEAC,EAAgBr5B,EAAhBq5B,iBACAC,EAAYt5B,EAAZs5B,aACAC,EAAuBv5B,EAAvBu5B,wBAEAC,EAAYx5B,EAAZw5B,aACA9C,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KACAjF,EAAQ1xB,EAAR0xB,SACA+H,EAAmBz5B,EAAnBy5B,oBACA9H,EAAU3xB,EAAV2xB,WAEAmC,EAAW9zB,EAAX8zB,YACA3B,EAAYnyB,EAAZmyB,aACAyH,EAAsB55B,EAAtB45B,uBAEAjwB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QACAm7B,EAAeniC,EAAfmiC,gBACAx6B,EAAQ3H,EAAR2H,SACA22B,EAA6Bt+B,EAA7Bs+B,8BAA6B,OAE7Br3B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,4BAA6B0Y,GAAiBx6B,UAC9FV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,cAAaI,UAC1BoD,EAAAA,EAAAA,MAAA,KACExD,UAAU,yBACV8pB,OAAO,SACPC,IAAI,sBACJC,KAAMG,GAAYC,EAAWhqB,SAAA,EAE7BoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,uBAAwB,kBAAkBhiB,SAAA,CAC1E+uB,GAAYC,IACb5rB,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,0BAAyBI,SAAA,EACtCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAoBwE,GAAiBA,EAAc7iB,eAAiB6iB,EAAc7iB,cAAcwgB,YAAe,GAC/GlY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAGjBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,YAAWI,SAAA,EACxBV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,qBAAoBI,SAAEwqB,KACrClrB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,aAAW,EACXQ,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,qBAKvEkP,IACCjyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,oBAG1EuP,IACCpyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,YAAaoG,EACb/F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,qBAGvE2M,IAAaC,IAAS6C,IACvBvyB,EAAAA,EAAAA,KAACysB,GAAiB,CAChBhC,SAAUA,EACVC,WAAYA,EACZwB,YAAasG,EACb9F,2BAA4B1C,IAAWjqB,EAAQgjB,kBAAmB,gBAGtEjf,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQmkB,8BAA+B,0BAA0BxjB,SAAA,EAC1FV,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,qBAChD3iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B/sB,EAAQijB,6BAI5CtiB,IACDV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWqN,EAA+Bt3B,EAAQu3B,sBAAsB52B,SACrFA,UAKH,EAqDR02B,GAAwBz2B,aAAe,CACrCsxB,mBAAmB,EACnBG,kBAAkB,EAClBG,cAAc,EAEdL,mBAAe9nB,EACf+nB,0BAA0B,EAC1BE,kBAAcjoB,EACdkoB,yBAAyB,EACzB7H,cAAUrgB,EACVsgB,gBAAYtgB,EACZooB,qBAAqB,EACrB3F,iBAAaziB,EACbuoB,wBAAwB,EACxBuI,qBAAiB9wB,EACjB8gB,kBAAc9gB,EACdqlB,UAAU,EACVC,UAAMtlB,EACN4nB,cAAe,CAAC,GAGX,IAAM+L,GAAsCzc,GACjD,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACo3B,IAAuBr9B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClBsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBG,cAAY,EACZJ,0BAAwB,EACxBG,yBAAuB,EACvBK,wBAAsB,EACtBH,qBAAmB,IACnB,IC9HoD,SAAC1Q,GACzD,IAAAkC,EA7E8C,CAC9CxB,cAAe,CACbnpB,QAAS,OACTkqB,cAAe,SACfppB,WAAY,SAEZiB,SAAU,WACV6oB,UAAW,cACXhf,SAAU,SACVtK,WAAY,OACZxB,OAAQ,OAER,4BAA6B,CAC3BI,MAAO,OACPc,OAAQ,SAGZqoB,uBAAwB,CACtBvpB,OAAQ,gBACRgC,SAAU,GACVK,WAAY,OACZN,MAAO,UACPV,OAAQ,UACRyK,SAAU,SACV,UAAW,CACT/J,MAAO,WAET,6BAA8B,CAC5B7B,QAAS,OACTkqB,cAAe,MACf/mB,cAAe,EACf,eAAgB,CACdnD,QAAS,OACTkqB,cAAe,YAIrBV,4BAAwBzY,EACxB0Y,sBAAuB,CACrBzoB,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZyJ,SAAU,SACV1L,MAAO,QAETwpB,kBAAmB,CACjB1oB,OAAQ,GACRc,SAAU,GACVD,MAAO,WAETgpB,8BAA+B,CAC7B7qB,QAAS,QAEXspB,kBAAmB,CACjBvnB,SAAU,oBACVF,MAAO,qBACP1B,OAAQ,4BACRL,OAAQ,uBACRE,QAAS,SACTgqB,QAAS,kBACT3nB,QAAS,mBACTtC,UAAW,GACXM,WAAY,IACZ8B,WAAY,EACZc,aAAc,kBAEhB0mB,qBAAsB,CACpB9nB,MAAO,OACP7B,QAAS,eACT8B,SAAU,GACVgpB,SAAU,EACVlf,SAAU,WAKJud,EAAawB,EAAbxB,cAAeO,EAAiBiB,EAAjBjB,kBAAsBR,GAAU1gB,EAAAA,EAAAA,GAAAmiB,EAAAliB,GAkCvD,OAjCY/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAChBnoB,OAAQ,IACRqB,QAAS,WACTvB,WAAY,aACZQ,WAAY,cACZ,iBAAkB,CAChBpB,MAAO,QAET,4BAA6B,CAC3BA,MAAO,OACPF,QAAS,QACT4L,SAAU,SACVgf,UAAW,gBAIflB,mBAAiBhpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACZgpB,GAAiB,IACpB3oB,WAAY,SACZ6K,SAAU,SACVujB,aAAc,aAEhBpE,uBAAwB,CACtBjnB,aAAc,EACd,wBAAyB,CACvBb,aAAc,KAKtB,GD6FE,CAAEslB,cAAe,8B,uKE3Lboc,GAA0B,SAAHjlC,GAStB,IARLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UACAW,EAAQ1xB,EAAR0xB,SACA4H,EAAYt5B,EAAZs5B,aACAxF,EAAW9zB,EAAX8zB,YACAoR,EAAQllC,EAARklC,SACAv7B,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEAmN,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAAuCiB,GAAiB,CAAC,EAAjDikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YACvB,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAIT,IAAM0jB,EAAoBF,EAAgBpjB,EAEpCjD,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAACymB,GAAgB,CAACpd,IAAKsd,EAAUlxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,EAChIV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAExDkP,EAAUzC,MACVnN,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,kBAIzC9M,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,gBAAeI,SAAA,EAC5BV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,OAAMI,SAAGgC,EAAKQ,UAAUsoB,YACvCxrB,EAAAA,EAAAA,KAAA,OAAKM,UAAU,OAAMI,SAAGgC,EAAKQ,UAAUsoB,6BAEzC1nB,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQwmB,uBAAuB7lB,SAAA,EAC7CV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQymB,0BAA2BiF,IAAI,GAAGhU,IAAKymB,MAC/Dl+B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ0mB,+BAA+B/lB,SAEjDu9B,GAAYA,EAAS,IAAgC,WAA1BA,EAAS,GAAG7lB,YAGrCtU,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,WAAUI,SAAA,EACvBV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAGu9B,EAAS,GAAGv6B,SAC7C1D,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAcI,SAAGu9B,EAAS,GAAGE,QAC5Cn+B,EAAAA,EAAAA,KAAA,OAAKM,UAAU,iBAAgBI,SAAGu9B,EAAS,GAAGjR,cAC9ChtB,EAAAA,EAAAA,KAAA,OAAKM,UAAU,cAAaI,SAAGu9B,EAAS,GAAGG,QAAU,GAAAxjC,OAJrBqjC,EAAS,GAAGv6B,MAAK,YAU7DI,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ2mB,yBAAyBhmB,SAAA,EAC/CV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ4mB,oBAAqB8E,IAAI,GAAGhU,IAAK4mB,MACzDr+B,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACd9F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,oBAExE9iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbC,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,qBAG5Elf,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ6mB,wBAAwBlmB,SAAA,EAC9CV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ8mB,2BAA4B4E,IAAI,GAAGhU,IAAKymB,MAChEl+B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ+mB,6BAA6BpmB,SAEjDu9B,GAAYA,EAAS,IAAgC,YAA1BA,EAAS,GAAG7lB,YAGrCtU,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,WAAUI,SAAA,EACvBV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAGu9B,EAAS,GAAGv6B,SAC7C1D,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAcI,SAAGu9B,EAAS,GAAGE,QAC5Cn+B,EAAAA,EAAAA,KAAA,OAAKM,UAAU,iBAAgBI,SAAGu9B,EAAS,GAAGjR,eAAiB,GAAApyB,OAH/BqjC,EAAS,GAAGv6B,MAAK,eAU7D1D,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQgnB,kBAAmB0E,IAAI,GAAGhU,IAAK6mB,MACvDt+B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQinB,qBAAsByE,IAAI,GAAGhU,IAAK8mB,OAGhE,EAkCAP,GAAwBr9B,aAAe,CACrCmpB,WAAW,EACXuI,kBAAcjoB,EACdqgB,cAAUrgB,EACVyiB,iBAAaziB,EACb6zB,SAAU,IAGL,IAAMO,GAA0Cld,EACrD0c,GACA1X,EACA,CAAE1E,cAAe,4C,iKCxFbrE,GAA+B+D,ED2FU0c,I5DsbgB,SAAClc,GAI9D,OAFmBwE,GAGrB,G6DnhBE,CAAE1E,cAAe,sDC9DN6c,GAAoCnd,GAC/C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAmB,EACnBG,kBAAgB,EAChBG,cAAc,EACdG,iBAAe,EACfnC,kBAAgB,EAChBqC,aAAa,EACbC,cAAc,EACdV,0BAA0B,EAC1BG,yBAAuB,EACvBlC,kBAAkB,EAClB0C,yBAAyB,EACzB1H,aAAa,IACb,I9DNyC,SAACtJ,GAE9C,IAAMS,EAvB0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAOnC,MAAO,CACLoY,eAAazoB,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAGhBE,uBAAwB,CACtBtnB,SAAU,WACV3B,SAAU,MACVH,SAAU,IACVgC,IAAK,MACLsC,KAAM,MACNlC,QAAS,GACTY,aAAc,EACdpB,MAAO,OACPmB,gBAAiB,4BACjBlB,SAAU,GACVK,WAAY,QAGdsnB,sBAAuB,CACrB3nB,SAAU,GACVnB,aAAc,EACdN,WAAY,QAGdspB,qBAAsB,CACtB,EAEAC,sBAAuB,CACrB/nB,MAAO,QACPmB,gBAAiB,UACjB7C,OAAQ,OACRmC,UAAW,GAGjB,G8D9BE,CAAEimB,cAAe,sCAGN8c,GAAmCpd,GAC9C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACToxB,UAAQ,EACR2C,kBAAgB,EAChB7B,kBAAgB,EAChBwC,UAAQ,IACR,I9D0bwC,SAACjR,GAE7C,IAAMS,EAre0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAqdnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRM,WAAY,uEACZ2B,aAAc,iBACd9C,OAAQ,kCACR8D,UAAW,wCAEbmlB,wBAAyB,CACvBrnB,SAAU,WACVE,IAAK,GACLsC,KAAM,GACNrE,MAAO,IACPc,OAAQ,KAEV+pB,uBAAwB,CACtBhpB,SAAU,WACVE,IAAK,GACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,IAEV4tB,+BAAgC,CAC9B7sB,SAAU,WACVE,IAAK,GACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,GACRa,MAAO,iCACPQ,QAAS,gBAEXonB,sBAAuB,CACrB1nB,SAAU,WACV7B,MAAO,mBACP+B,IAAK,IACLsC,KAAM,GACNvD,OAAQ,GACRa,MAAO,sBACPC,SAAU,GACVzB,WAAY,IACZ8B,WAAY,WAEdynB,sBAAuB,CACrB7nB,SAAU,WACVE,IAAK,IACLsC,KAAM,IACNrE,MAAO,GACPc,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZwB,MAAO,sBACPP,WAAY,4BACZnB,OAAQ,YACRovB,kBAAmB,oFACnBtsB,aAAc,QACdX,UAAW,GAEb+3B,kBAAmB,CACjBt4B,SAAU,WACVE,IAAK,GACLC,MAAO,GACPhC,MAAO,GACPc,OAAQ,KAGd,G8D/fE,CAAEunB,cAAe,qCAGN+c,GAAmCrd,GAC9C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC8xB,IAAkB/3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACbsE,GAAK,IACT4zB,mBAAiB,EACjBE,0BAAwB,EACxBO,iBAAe,EACfnC,kBAAgB,IAChB,I9DsfwC,SAACzO,GAE7C,IAAMS,EA/iB0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GA+hBnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,MAEVwoB,uBAAwB,CACtBznB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACNrC,MAAO,GACPL,MAAO,QACPxB,WAAY,OACZyB,SAAU,GACVqB,cAAe,GAEjBwmB,qBAAsB,CACpB5nB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACN1C,MAAO,QACPC,SAAU,IAEZ8nB,sBAAuB,CACrB7nB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACNzC,SAAU,GACVD,MAAO,QACP1B,OAAQ,OACRkC,QAAS,MACTY,aAAc,EACdD,gBAAiB,YAGvB,G8D3hBE,CAAEulB,cAAe,qC,0CCzCbgd,GAA2B,SAAH7lC,GA6BvB,IA5BLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UAEA+U,EAAa9lC,EAAb8lC,cAEA5M,EAAiBl5B,EAAjBk5B,kBACAC,EAAan5B,EAAbm5B,cACAC,EAAwBp5B,EAAxBo5B,yBAEAC,EAAgBr5B,EAAhBq5B,iBACAC,EAAYt5B,EAAZs5B,aACAC,EAAuBv5B,EAAvBu5B,wBAEA7H,EAAQ1xB,EAAR0xB,SAEAiI,EAAe35B,EAAf25B,gBACA7F,EAAW9zB,EAAX8zB,YACA8F,EAAsB55B,EAAtB45B,uBAEApC,EAAgBx3B,EAAhBw3B,iBACAC,EAAYz3B,EAAZy3B,aACAsO,EAAiB/lC,EAAjB+lC,kBAEArP,EAAQ12B,EAAR02B,SACAC,EAAI32B,EAAJ22B,KAEAhtB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEA,IAAKiyB,IAAkBA,EAAc7iB,cACnC,OAAO,KAET,IAAQwgB,EAAeqC,EAAc7iB,cAA7BwgB,WAER,OACE7rB,EAAAA,EAAAA,MAACymB,GAAgB,CAACpd,IAAKsd,EAAUX,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,CACpG+uB,GAAYC,IACZ1vB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQqkB,uBAAwB,kBAAkB1jB,UAC3EV,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmBmC,GAAc,GACjClY,IAAKiY,EAAKre,IACVhE,cAAeqiB,EAAK/e,MACpBrD,eAAgBoiB,EAAK7e,OACrBC,QAAS4e,EAAKxW,aAAapI,QAC3BE,QAAS0e,EAAKxW,aAAalI,QAC3BN,YAAagf,EAAKxW,aAAaxI,YAC/BE,aAAc8e,EAAKxW,aAAatI,aAChCZ,YAAa,OAInBlM,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,CACxDm+B,IACC/6B,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQg/B,4BAA4Br+B,SAAA,EAClDV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQi/B,oBAAqBvT,IAAI,GAAGhU,IAAKwnB,MACzDj/B,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQm/B,uBAAuBx+B,SAAEgC,EAAKQ,UAAUsoB,mBAGpE1nB,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQo/B,0BAA0Bz+B,SAAA,CAC/CuxB,IACCjyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,YAAaiG,EACb5F,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,oBAG1EuP,IACCpyB,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc+F,EACdnG,YAAaoG,EACb/F,2BAA4BvC,IAAWjqB,EAAQ+iB,sBAAuB,mBAGzE4P,IACC1yB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbX,YAAayG,EACb7F,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,qBAI9Elf,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQq/B,yBAAyB1+B,SAAA,CAC9C6vB,GAAoBC,IACnBxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BltB,EAAQkjB,wBAEzGsN,GAAoBC,GAAgBsO,IACnC9+B,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYtqB,EAAKQ,UAAUsoB,aAAoByB,yBAA0BltB,EAAQs/B,iCAM9G,EA6CAT,GAAyBj+B,aAAe,CACtCmpB,WAAW,EACX+U,eAAe,EACf5M,mBAAmB,EACnBG,kBAAkB,EAClBM,iBAAiB,EACjBoM,mBAAmB,EACnBvO,kBAAkB,EAClBd,UAAU,EACVyC,eAAe,EACfC,0BAA0B,EAC1BE,kBAAcjoB,EACdkoB,yBAAyB,EACzB7H,cAAUrgB,EACVyiB,iBAAaziB,EACbuoB,wBAAwB,EACxBnC,kBAAcpmB,EACdslB,UAAMtlB,GAGD,IAAMk1B,GAA4Bhe,GACvC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC4+B,IAAwB7kC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBsE,GAAK,IACT4zB,mBAAiB,EACjBG,kBAAgB,EAChB3C,UAAQ,EACR0C,0BAAwB,IACxB,I/D2FiC,SAACrQ,GAEtC,IAAMS,EApR0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAoQnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,GACRgC,gBAAiB,uBAEnB+nB,uBAAwB,CACtBhpB,SAAU,WACVE,IAAK,GACLsC,KAAM,GAERilB,uBAAwB,CACtBznB,SAAU,WACVwC,KAAM,EACNtC,IAAK,EACL/B,MAAO,IACPc,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZwB,MAAO,SAET4nB,sBAAuB,CACrB1nB,SAAU,WACVwC,KAAM,GACNtC,IAAK,GACLJ,MAAO,QACPC,SAAU,GACV5B,MAAO,IACPc,OAAQ,KAGd,G+D7HE,CAAEunB,cAAe,8BAEN2d,GAA+Bje,GAC1C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC4+B,IAAwB7kC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBsE,GAAK,IACTwgC,eAAa,EACb5M,mBAAiB,EACjBS,iBAAe,EACfjD,UAAQ,EACR0C,0BAAwB,EACxB5B,kBAAgB,EAChBuO,mBAAiB,IACjB,I/DkH8B,SAAChd,GAEnC,IAAMS,EA3T0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GA2SnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRgC,gBAAiB,qBACjB+E,OAAQ,IAEVgjB,uBAAwB,CACtBhpB,SAAU,WACVE,IAAK,GACLsC,KAAM,GACNrE,MAAO,GACPc,OAAQ,GACR+G,OAAQ,GAEV29B,4BAA6B,CAC3B3jC,SAAU,WACVE,IAAK,EACLsC,KAAM,EACNrC,MAAO,EACPhC,MAAO,IACPc,OAAQ,IAEV2kC,oBAAqB,CACnB5jC,SAAU,WACVF,MAAO,QACP3B,MAAO,GACPc,OAAQ,GACRiB,IAAK,GACLsC,KAAM,KAERshC,uBAAwB,CACtB9jC,SAAU,WACVF,MAAO,QACPC,SAAU,GACVK,WAAY,OACZ9B,WAAY,IACZH,MAAO,GACPc,OAAQ,GACRiB,IAAK,GACLsC,KAAM,IACNjE,UAAW,UAEbwlC,0BAA2B,CACzB/jC,SAAU,WACVwC,KAAM,GACNtC,IAAK,GACL/B,MAAO,IACPc,OAAQ,IACRgC,gBAAiB,QACjB+E,OAAQ,GAEVyhB,uBAAwB,CACtBznB,SAAU,WACVwC,KAAM,GACNtC,IAAK,GACLJ,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRc,SAAU,GACVzB,WAAY,IACZ8B,WAAY,OACZgB,cAAe,EACf4E,OAAQ,GAEV4hB,qBAAsB,CACpB5nB,SAAU,WACVwC,KAAM,GACNtC,IAAK,GACLJ,MAAO,QACPC,SAAU,GACV5B,MAAO,IACPc,OAAQ,GACRX,WAAY,IACZ8B,WAAY,OACZ4F,OAAQ,GAEVg+B,yBAA0B,CACxB/lC,QAAS,OACT0sB,eAAgB,gBAChB3qB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACNrE,MAAO,IACPc,OAAQ,GAERwrB,IAAK,EACLzkB,OAAQ,GAEV6hB,sBAAuB,CACrB/nB,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRb,OAAQ,sCACR8C,aAAc,SACdgB,UAAW,iDACX5B,QAAS,SACTW,gBAAiB,SAEnBgjC,uBAAwB,CACtBnkC,MAAO,QACP3B,MAAO,IACPc,OAAQ,GACRb,OAAQ,sCACR8C,aAAc,SACdgB,UAAW,iDACX5B,QAAS,SACTW,gBAAiB,UAGvB,G+DnOE,CAAEulB,cAAe,iCAEN4d,GAAyBle,GACpC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC4+B,IAAwB7kC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBsE,GAAK,IACToxB,UAAQ,EACRwC,mBAAiB,EACjBE,0BAAwB,EACxB5B,kBAAgB,EAChBuO,mBAAiB,IACjB,I/D0N8B,SAAChd,GAEnC,IAAMS,EAjb0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAianC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,KAEV+pB,uBAAwB,CACtBhpB,SAAU,WACVE,IAAK,MACLsC,KAAM,GACNunB,UAAW,oBAEbtC,uBAAwB,CACtBznB,SAAU,WACVE,IAAK,MACLsC,KAAM,GACN1C,MAAO,QACP3B,MAAO,IACP4B,SAAU,GACVgqB,UAAW,mBACX3oB,cAAe,GAEjB4iC,yBAA0B,CACxB/lC,QAAS,OACTc,WAAY,SACZiB,SAAU,WACVE,IAAK,EACLiC,OAAQ,EACRhC,MAAO,IAET0nB,sBAAuB,CACrB/nB,MAAO,QACP1B,OAAQ,OACRkC,QAAS,WACTY,aAAc,GACdD,gBAAiB,UACjBxC,YAAa,IAEfwlC,uBAAwB,CACtBnkC,MAAO,QACP1B,OAAQ,OACRkC,QAAS,WACTY,aAAc,KAGpB,G+DzQE,CAAEslB,cAAe,2BCzMbpE,GAAuB,SAAHzkB,GASnB,IARLi5B,EAAaj5B,EAAbi5B,cACAlI,EAAS/wB,EAAT+wB,UACAW,EAAQ1xB,EAAR0xB,SACAyH,EAAan5B,EAAbm5B,cACArF,EAAW9zB,EAAX8zB,YACA2D,EAAYz3B,EAAZy3B,aACA9tB,EAAI3J,EAAJ2J,KACA3C,EAAOhH,EAAPgH,QAEAmN,EAEI8kB,GAAiB,CAAC,EADpB7iB,EAAajC,EAAbiC,cAAeC,EAAiBlC,EAAjBkC,kBAAmBQ,EAAS1C,EAAT0C,UAAWojB,EAAiB9lB,EAAjB8lB,kBAAmBC,EAAmB/lB,EAAnB+lB,oBAAqBC,EAAoBhmB,EAApBgmB,qBAAsBC,EAAyBjmB,EAAzBimB,0BAE7GjlB,EAAuCiB,GAAiB,CAAC,EAAjDikB,EAAallB,EAAbklB,cAAepjB,EAAW9B,EAAX8B,YACvB,IAAKgiB,IAAkBpiB,EACrB,OAAO,KAIT,IAAM0jB,EAAoBF,EAAgBpjB,EAEpCjD,EAAWomB,GAA6B/jB,EAE9C,OACEtL,EAAAA,EAAAA,MAACymB,GAAgB,CAACpd,IAAKsd,EAAUlxB,MAAO+5B,EAAmBxJ,UAAWA,EAAWC,0BAA2BhqB,EAAQyiB,cAAc9hB,SAAA,EAChIV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0iB,yBAAyB/hB,SAExDkP,EAAUzC,MACVnN,EAAAA,EAAAA,KAACutB,EAAAA,EAAgB,CACfC,kBAAmB4F,EACnBpjB,YAAaA,EACbyH,IAAKub,GAAqBpjB,EAAUzC,IACpCE,cAAe4lB,GAAuBrjB,EAAUvC,cAChDC,eAAgB4lB,GAAwBtjB,EAAUtC,eAClDwD,QAAS/D,GAAYA,EAAS+D,QAC9BE,QAASjE,GAAYA,EAASiE,QAC9BN,YAAa3D,GAAYA,EAAS2D,YAClCE,aAAc7D,GAAYA,EAAS6D,kBAIzC5Q,EAAAA,EAAAA,KAAA,OAAKM,UAAU,oBAAmBI,SAAEgC,EAAKQ,UAAUsoB,eACnD1nB,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ2iB,wBAAwBhiB,SAAA,EACzDV,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAc4F,EACdhG,aAAW,EACXK,2BAA4BvC,IAAWjqB,EAAQ8iB,uBAAwB,qBAEzE7iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbC,8BAA+B9C,IAAWjqB,EAAQijB,qBAAsB,iBAEzEwN,IACCxwB,EAAAA,EAAAA,KAAC+sB,GAAe,CAACC,WAAYwD,EAAaI,QAAQ,WAAY,OAAQ3D,yBAA0BltB,EAAQkjB,6BAKlH,EAaAzF,GAAqB7c,aAAe,CAClCmpB,WAAW,EACXoI,mBAAe9nB,EACfqgB,cAAUrgB,EACVyiB,iBAAaziB,EACbomB,kBAAcpmB,GAGT,IAAMq1B,GAAkCne,EAC7C9D,IhEiH2C,SAACsE,GAE5C,IAAMS,EAlN0C,CAChDC,cAAe,CACbhpB,OAAQ,oBACR8D,UAAW,mBACXhB,aAAc,kBAEhBmmB,6BAAyBrY,EACzBsY,uBAAwB,CACtBvnB,SAAU,GACVK,WAAY,QAEdmnB,uBAAmBvY,EACnBwY,uBAAmBxY,EACnByY,4BAAwBzY,EACxB0Y,2BAAuB1Y,EACvB2Y,uBAAmB3Y,EACnB4Y,0BAAsB5Y,EACtB6Y,2BAAuB7Y,EACvB8Y,uCAAmC9Y,GAkMnC,OAAArQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKwoB,GAAU,IACbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRwoB,EAAWC,eAAa,IAC3BjpB,MAAO,mBACPc,OAAQ,IACRiC,aAAc,iBAEd,uBAAwB,CACtBlB,SAAU,WACVE,IAAK,EACLsC,KAAM,EACN1C,MAAO,kBACP3B,MAAO,OACP4B,SAAU,GACVzB,WAAY,IACZI,YAAa,GACb+qB,aAAc,+BACdnpB,QAAS,qBACTF,WAAY,OAGhBinB,wBAAyB,CACvBrnB,SAAU,WACVE,IAAK,GACL/B,MAAO,IACPc,OAAQ,IACRqB,QAAS,WACTvC,OAAQ,iBAEV0pB,uBAAwB,CACtBznB,SAAU,WACV7B,MAAO,IACP+B,IAAK,IACLsC,KAAM,GACN1C,MAAO,QACPC,SAAU,GACVzB,WAAY,IACZ8C,cAAe,IAEjBwmB,qBAAsB,CACpB5nB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACN1C,MAAO,QACPC,SAAU,GACV5B,MAAO,KAET0pB,sBAAuB,CACrB7nB,SAAU,WACVE,IAAK,IACLsC,KAAM,GACNpE,OAAQ,OACRkC,QAAS,EACTP,SAAU,GACVmB,aAAc,EACdD,gBAAiB,cACjBhC,OAAQ,KAGd,GgE/KE,CAAEunB,cAAe,oC,sBCtFN8d,GAA8Bpe,GACzC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAC+7B,IAA+BhiC,EAAAA,EAAAA,GAAA,GAAKsE,GAAS,I/D0CE,SAACyjB,GACnD,IAAAuY,EAAyC5S,EAAyC1D,KAA1EvB,EAAa6X,EAAb7X,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAAw4B,EAAAv4B,GAiBpC,OAhBY/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAEhBjpB,MAAO,QACPS,aAAc,SAGhB8tB,gBAAc/tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTwoB,EAAWuF,gBAAc,IAE5B3uB,OAAQ,aAId,G+D1DE,CAAEyoB,cAAe,gCAGN+d,GAAqCre,GAChD,SAAAvoB,GAAA,IAAGgH,EAAOhH,EAAPgH,QAAS2C,EAAI3J,EAAJ2J,KAASrE,GAAKwD,EAAAA,EAAAA,GAAA9I,EAAA+I,IAAA,OACxBgC,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQykB,+BAA+B9jB,SAAA,EACrDV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAcI,UAC3BV,EAAAA,EAAAA,KAAA,OAAKyX,IAAK0f,GAAwB1L,IAAK/oB,EAAKQ,UAAUsoB,qBAExDxrB,EAAAA,EAAAA,KAAC+7B,IAA+BhiC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKsE,GAAK,IAAE0B,QAASA,EAAS2C,KAAMA,OAChE,I/DkDiD,SAACof,GAC1D,IAAA8d,EAAyCnY,EAAyCpD,KAA1E7B,EAAaod,EAAbpd,cAAkBD,GAAU1gB,EAAAA,EAAAA,GAAA+9B,EAAArb,GAgBpC,OAfYxqB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,GAAU,IAEbC,eAAazoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRyoB,GAAa,IAEhBjpB,MAAO,UAGTuuB,gBAAc/tB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTwoB,EAAWuF,gBAAc,IAE5B3uB,OAAQ,sBAId,G+DjEE,CAAEyoB,cAAe,uCAGNie,GAAoCve,GAC/C,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAAA,OAAKM,UAAWjC,EAAM0B,QAAQ6kB,8BAA8BlkB,UAC1DV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,sCAAqCI,UAClDV,EAAAA,EAAAA,KAAC+7B,IAA+BhiC,EAAAA,EAAAA,GAAA,GAAKsE,OAEnC,GAERupB,EACA,CAAEhG,cAAe,sCC3BNke,GAAoC,CAC/Cv3B,UAAW,CACT7F,KAAM8F,KAAAA,MAAgB,CACpBtF,UAAWsF,KAAAA,OACVC,WACH1I,QAASyI,KAAAA,MAAgB,CACvBkf,0BAA2Blf,KAAAA,OAC3Bga,cAAeha,KAAAA,OACfka,uBAAwBla,KAAAA,OACxBma,kBAAmBna,KAAAA,OACnBu3B,oBAAqBv3B,KAAAA,OACrB0b,8BAA+B1b,KAAAA,OAC/Bwa,qBAAsBxa,KAAAA,SACrBC,WACHqzB,aAActzB,KAAAA,MAAgB,CAC5B6pB,aAAc7pB,KAAAA,OACdqkB,YAAarkB,KAAAA,OACbkiB,WAAYliB,KAAAA,OACZ2E,IAAK3E,KAAAA,SACJC,YAEL9H,aAAc,CACd,GAGWq/B,GAA+B,SAAC3hC,GAC3C,IACEqE,EAQErE,EARFqE,KACA3C,EAOE1B,EAPF0B,QAAOi8B,EAOL39B,EANFy9B,aACEvD,EAAQyD,EAARzD,SACA1L,EAAWmP,EAAXnP,YACApC,EAAQuR,EAARvR,SACAC,EAAUsR,EAAVtR,WAIJ,OACE1qB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyiB,cAAe,6BAA6B9hB,UAC7EoD,EAAAA,EAAAA,MAAC0mB,GAAyB,CACxBI,mCAAoC7qB,EAAQ2nB,0BAA0BhnB,SAAA,EAEtEV,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQkgC,2BAA2Bv/B,UACjDoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ2iB,uBAAuBhiB,SAAA,EAC7CV,EAAAA,EAAAA,KAACqsB,GAAiB,CAChBC,aAAciM,EACdhM,2BAA4BvC,IAAWjqB,EAAQ6lB,kBAAmB,eAEpE5lB,EAAAA,EAAAA,KAAC2sB,GAAyB,CACxBlC,SAAUA,EACVC,WAAYA,EACZgC,2BAA4B1C,IAAWjqB,EAAQmgC,aAAc,gBAE/Dp8B,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQmkB,8BAA+B,gBAAgBxjB,SAAA,EAChFV,EAAAA,EAAAA,KAACgrB,GAAO,CAACtoB,KAAMA,EAAM2lB,kBAAmBtoB,EAAQ4iB,qBAChD3iB,EAAAA,EAAAA,KAAC4sB,GAAoB,CACnBC,YAAaA,EACbC,8BAA+B/sB,EAAQijB,gCAK/ChjB,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQogC,oBAAoBz/B,SACzCgC,EAAKQ,UAAUsoB,kCAK1B,EAIAwU,GAA6Br/B,aAAem/B,GAAkCn/B,aAEvE,IAAMy/B,GAA2B9e,GACtC,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACggC,IAA4BjmC,EAAAA,EAAAA,GAAA,GAAKsE,GAAS,IC1FE,WAAH,MAAU,CACtDmkB,cAAe,CACb7nB,WAAY,QACZ2B,aAAc,MACdgB,UAAW,mFACX5B,QAAS,YACTnC,MAAO,SAET0mC,2BAA4B,CAC1BtlC,WAAY,UACZ2W,UAAW,QACX5V,QAAS,OACTrC,QAAS,OACTc,WAAY,SACZ4rB,eAAgB,UAElBrD,uBAAwB,CACtBhnB,QAAS,sBACTY,aAAc,MACd9C,OAAQ,oBACRmB,WAAY,QACZ2C,UAAW,sCACX5D,WAAY,MACZH,MAAO,SAETouB,qBAAsB,CACpBtuB,QAAS,eAEXusB,kBAAmB,CACjB1qB,MAAO,UACPC,SAAU,OACVK,WAAY,QAEd0oB,8BAA+B,CAC7B7qB,QAAS,cACTc,WAAY,YAEd6oB,qBAAsB,CACpB9nB,MAAO,OACPC,SAAU,OACVK,WAAY,OACZ4B,UAAW,cAEb8iC,aAAc,CACZhlC,MAAO,UACPC,SAAU,OACVK,WAAY,OACZyJ,SAAU,SACVujB,aAAc,YAEhB7F,kBAAmB,CACjBvnB,SAAU,oBACVF,MAAO,kBACP1B,OAAQ,4BACR8C,aAAc,iBACdnB,SAAU,kBACVhC,OAAQ,uBACRuC,QAAS,oBAEXykC,oBAAqB,CACnBjlC,MAAO,UACPC,SAAU,OACVzB,WAAY,MACZ8B,WAAY,OACZG,UAAW,OACXhC,UAAW,UAEd,GD0BC,CAAEioB,cAAe,6BEpFNye,GAAsB,SAAHtnC,GAGzB,IAFLgH,EAAOhH,EAAPgH,QACA28B,EAAM3jC,EAAN2jC,OAEAxvB,EAA+BwvB,GAAUA,EAAOn9B,OAAS,EAAIm9B,EAAO,GAAK,CAAC,EAAlEjlB,EAAGvK,EAAHuK,IAAKpd,EAAM6S,EAAN7S,OAAQd,EAAK2T,EAAL3T,MAEfojC,GAAWjO,EAAAA,EAAAA,UAIX4R,GADkBj4B,EAAAA,EAAAA,UAAQ,kBAAMhO,EAASd,CAAK,GAAE,CAACc,EAAQd,IAChBwG,EAAQwgC,oBAAsBxgC,EAAQo6B,gBAQrF,OANAyC,EAAAA,EAAAA,YAAU,WACJD,EAAS39B,SACX29B,EAAS39B,QAAQ69B,MAErB,GAAG,CAACplB,KAGFzX,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAWR,EAAQyiB,cAAe,6BAA6B9hB,UAC7EV,EAAAA,EAAAA,KAAA,OAAKM,UAAWggC,EAAqB5/B,UACnCoD,EAAAA,EAAAA,MAAA,SAAOizB,UAAQ,EAACx1B,MAAO,CAAElH,OAAQ,OAAQd,MAAO,OAAQ+C,aAAc,QAAU+D,IAAKs8B,EAASj8B,SAAA,EAC5FV,EAAAA,EAAAA,KAAA,UAAQyX,IAAKA,KACbzX,EAAAA,EAAAA,KAAA,SACE88B,KAAK,WACLrlB,IAAI,GACJslB,QAAQ,KACR36B,MAAM,UACN46B,SAAO,UAMnB,EAWAqD,GAAoB1/B,aAAe,CACjCZ,QAAS,CAAC,EACV28B,OAAQ,MAGH,IAAM8D,GAAiBlf,GAC5B,SAAAjjB,GAAK,OACH2B,EAAAA,EAAAA,KAACqgC,IAAmBtmC,EAAAA,EAAAA,GAAA,GAAKsE,GAAS,IC7DC,WAAH,MAAU,CAC5CmkB,cAAe,CACbjpB,MAAO,OACPc,OAAQ,OACRhB,QAAS,OACT0sB,eAAgB,SAChB5rB,WAAY,UAEdomC,oBAAqB,CACnBlmC,OAAQ,QACRd,MAAO,QACPmC,QAAS,OACTY,aAAc,GACdjD,QAAS,OACT0sB,eAAgB,SAChB5rB,WAAY,UAEdggC,gBAAiB,CACf9/B,OAAQ,OACRd,MAAO,OACPF,QAAS,OACTqC,QAAS,OACTqqB,eAAgB,SAChB5rB,WAAY,UAEf,GDuCC,CAAEynB,cAAe,mBEzDb6e,GAAgB,SAACpiC,GACrB,IACEqiC,EAYEriC,EAZFqiC,UACAC,EAWEtiC,EAXFsiC,QACAC,EAUEviC,EAVFuiC,eACAC,EASExiC,EATFwiC,kBACAC,EAQEziC,EARFyiC,eACApgC,EAOErC,EAPFqC,SACAX,EAME1B,EANF0B,QACAghC,EAKE1iC,EALF0iC,0BACAC,EAIE3iC,EAJF2iC,yBACAC,EAGE5iC,EAHF4iC,wBACAC,EAEE7iC,EAFF6iC,yBACAC,EACE9iC,EADF8iC,4BAGF,OACEr9B,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQqhC,oBAAqBT,GAAW5gC,EAAQshC,wBAAyBN,GAA2BrgC,SAAA,EAC7HV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQuhC,yBAA0BN,EAA0B,oBAAoBtgC,SACxGkgC,EAAiBA,EAAeviC,GAC/BqiC,IAAa1gC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQwhC,wBAAyBN,GAAyBvgC,SAAEggC,OAGxG1gC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQyhC,4BAA6BL,EAA6B,wBAAwBzgC,SAClHmgC,EAAoBA,EAAkBxiC,GAASqC,KAElDV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ0hC,yBAA0BP,GAA0BxgC,SACpFogC,EAAiBA,IAAmB,SAI7C,EAwBAL,GAAc9/B,aAAe,CAC3B+/B,eAAWt2B,EACXw2B,oBAAgBx2B,EAChB02B,oBAAgB12B,EAChBy2B,uBAAmBz2B,EACnBu2B,SAAS,EACTI,+BAA2B32B,EAC3B42B,8BAA0B52B,EAC1B62B,6BAAyB72B,EACzB82B,8BAA0B92B,EAC1B+2B,iCAA6B/2B,GAGxB,IAAM8R,GAAkCoF,EAC7Cmf,IC5E6C,SAACj5B,GAAU,IAAuBxO,GAAvB0oC,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAqB,CAAC,GAAlBzoC,QAAY,MAAa,CACrFmoC,mBAAoB,CAClB/nC,QAAS,OACTkqB,cAAe,SACf5oB,WAAY,QACZ2C,UAAW,0EACXhB,aAAc,GAEhB+kC,wBAAyB,CACvB7nC,OAAO,aAADoB,aAT2D,IAAA5B,EAAG,CAAC,EAACA,GASzC2oC,SAE/BL,yBAA0B,CACxBjoC,QAAS,OACTqC,QAAS,CAAC,GAAI,GAAI,EAAG,IACrBvB,WAAY,SACZ4rB,eAAgB,iBAElBwb,wBAAyB,CACzB,EACAC,4BAA6B,CAC3BroC,OAAQ,QAEVsoC,yBAA0B,CACxBpoC,QAAS,OACT0sB,eAAgB,iBAEnB,GDoDC,CAAEnE,cAAe,oC,8DE3EZ,I,GAAMggB,GAAe,CAC1BC,SAAU,WACVC,SAAU,WACVC,SAAU,WACVC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,YAAa,cACbC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,aAAc,eACdC,YAAa,eAGFC,GACK,iBCzBLC,GAAmB,CAE9Bv5B,kBAAmB,oBACnBC,2BAA4B,6BAC5BC,oBAAqB,sBACrBC,sBAAuB,wBAGvBC,mCAAoC,qCACpCQ,iCAAkC,mCAClCN,uCAAwC,yCACxCI,yBAA0B,2BAC1BC,2BAA4B,6BAG5BG,uCAAwC,yCACxCD,iCAAkC,mCAClCG,uBAAwB,yBACxBX,0BAA2B,4BAC3BgB,8BAA+B,gCAC/Bb,4BAA6B,8BAC7BS,kCAAmC,oCACnCE,4BAA6B,8BAG7BsB,uBAAwB,yBACxBN,gCAAiC,kCACjCK,2BAA4B,6BAC5BN,wCAAyC,0CACzCE,sCAAuC,wCACvCG,4CAA6C,8CAC7CF,8BAA+B,gCAC/BC,gCAAiC,kCAEjCvB,kDAAmD,oDACnDN,uCAAwC,yCACxCW,gCAAiC,kCACjCF,sCAAuC,wCACvCiK,6BAA8B,+BAC9BquB,WAAY,aAGZrxB,kCAAmC,oCACnCC,kCAAmC,oCACnCC,kCAAmC,oCACnCC,kCAAmC,oCACnCC,kCAAmC,oCACnCC,kCAAmC,oCACnCC,iCAAkC,mCAClCC,gCAAiC,kCACjCC,wBAAyB,0BACzB8wB,iBAAkB,mBAClBC,oBAAqB,sBACrBC,aAAc,eACd/wB,iCAAkC,mCAClCC,wBAAyB,0BAGzBC,+BAAgC,iCAChCC,yCAA0C,2CAC1CzH,0CAA2C,4CAC3CU,wCAAyC,0CACzCT,8CAA+C,gDAC/CC,kDAAmD,oDACnDC,8CAA+C,gDAC/CC,mCAAoC,qCACpCC,mCAAoC,qCACpCC,gCAAiC,kCACjCC,kCAAmC,oCACnCC,iDAAkD,mDAClDC,gDAAiD,kDACjDE,kCAAmC,oCAGnC23B,oBAAqB,oBACrBC,iBAAkB,iBAClBC,mBAAoB,iBACpBC,oBAAqB,kBACrBC,iBAAkB,WAGlBhxB,6BAA8B,+BAC9BC,sCAAuC,wCACvCC,+BAAgC,iCAChCC,iCAAkC,mCAGlCC,8CAA+C,gDAC/CC,4CAA6C,8CAC7CC,kDAAmD,oDACnDC,oCAAqC,sCACrCC,sCAAuC,wCAGvCK,kDAAmD,oDACnDC,4CAA6C,8CAC7CC,kCAAmC,oCACnCC,qCAAsC,uCACtCC,yCAA0C,2CAC1CC,uCAAwC,yCACxCC,6CAA8C,+CAC9CC,uCAAwC,yCAGxC6vB,+BAAgC,8BAChCC,4BAA6B,2BAC7BC,4BAA6B,qBAG7B1wB,2CAA4C,6CAC5CC,mCAAoC,qCACpC0wB,4BAA6B,8BAC7BC,+BAAgC,iCAChCC,wBAAyB,0BACzB3wB,4CAA6C,8CAC7CC,mCAAoC,qCAGpC2wB,kBAAmB,mBACnBC,0BAA2B,0BAC3BC,yBAA0B,yBAG1BrvB,kCAAmC,oCACnCC,2CAA4C,6CAC5CC,sCAAuC,wCACvCC,mDAAoD,qDACpDC,iDAAkD,mDAClDC,uDAAwD,yDACxDC,yCAA0C,2CAC1CC,2CAA4C,6CAE5CK,6DAA8D,+DAC9DC,kDAAmD,oDACnDC,2CAA4C,6CAC5CC,iDAAkD,mDAClDC,wCAAyC,0CAGzCsuB,eAAgB,gBAGhBrwB,wCAAyC,0CACzCC,uCAAwC,yCACxCC,iDAAkD,mDAClDC,oDAAqD,sDACrDC,uCAAwC,yCAExCC,qCAAsC,uCACtCC,oCAAqC,sCACrCC,8CAA+C,gDAC/CC,iDAAkD,mDAClDC,oCAAqC,sCAErCC,sCAAuC,wCACvCC,gDAAiD,kDACjDC,mDAAoD,qDACpDC,sCAAuC,wCAEvCU,iCAAkC,mCAClCC,4BAA6B,8BAC7B8uB,iCAAkC,mCAClC7uB,wCAAyC,0CACzC8uB,6BAA8B,+BAC9B7uB,4BAA6B,+BCvKlBkL,GAAqB,CAChCC,SAAU,WACVC,QAAS,UACTC,UAAW,YACXC,kBAAmB,oBACnBC,MAAO,SCEIrJ,IAAsB4sB,GAAA,IAAA/6B,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GAChCC,GAAG96B,kBAAoB,CACtBiD,cAAe63B,GAAG96B,kBAClB+6B,UAAWhD,GAAaE,SACxB9xB,YAAa,EAEbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG76B,2BAA6B,CAC/BgD,cAAe63B,GAAG76B,2BAClB86B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG56B,oBAAsB,CACxB+C,cAAe63B,GAAG56B,oBAClB66B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG36B,sBAAwB,CAC1B8C,cAAe63B,GAAG36B,sBAClB46B,UAAWhD,GAAaG,SACxB/xB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAIhB00B,GAAG16B,mCAAqC,CACvC6C,cAAe63B,GAAG16B,mCAClB26B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGx6B,uCAAyC,CAC3C2C,cAAe63B,GAAGx6B,uCAClBy6B,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGp6B,yBAA2B,CAC7BuC,cAAe63B,GAAGp6B,yBAClBq6B,UAAWhD,GAAaS,aACxBryB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGn6B,2BAA6B,CAC/BsC,cAAe63B,GAAGn6B,2BAClBo6B,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGl6B,iCAAmC,CACrCqC,cAAe63B,GAAGl6B,iCAClBm6B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAIhB00B,GAAG34B,gCAAkC,CACpCc,cAAe63B,GAAG34B,gCAClB44B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGr4B,uBAAyB,CAC3BQ,cAAe63B,GAAGr4B,uBAClBs4B,UAAWhD,GAAaE,SACxB9xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGt4B,2BAA6B,CAC/BS,cAAe63B,GAAGt4B,2BAClBu4B,UAAWhD,GAAaG,SACxB/xB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG14B,sCAAwC,CAC1Ca,cAAe63B,GAAG14B,sCAClB24B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG54B,wCAA0C,CAC5Ce,cAAe63B,GAAG54B,wCAClB64B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGz4B,8BAAgC,CAClCY,cAAe63B,GAAGz4B,8BAClB04B,UAAWhD,GAAaS,aACxBryB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGx4B,gCAAkC,CACpCW,cAAe63B,GAAGx4B,gCAClBy4B,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGv4B,4CAA8C,CAChDU,cAAe63B,GAAGv4B,4CAClBw4B,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG/5B,kDAAoD,CACtDkC,cAAe63B,GAAG/5B,kDAClBg6B,UAAWhD,GAAaY,aACxBxyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGr6B,uCAAyC,CAC3CwC,cAAe63B,GAAGr6B,uCAClBs6B,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG15B,gCAAkC,CACpC6B,cAAe63B,GAAG15B,gCAClB25B,UAAWhD,GAAae,aACxB3yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAG55B,sCAAwC,CAC1C+B,cAAe63B,GAAG55B,sCAClB65B,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG3vB,6BAA+B,CACjClI,cAAe63B,GAAG3vB,6BAClB4vB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAKhB00B,GAAGh6B,uCAAyC,CAC3CmC,cAAe63B,GAAGh6B,uCAClBi6B,UAAWhD,GAAaY,aACxBxyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG95B,uBAAyB,CAC3BiC,cAAe63B,GAAG95B,uBAClB+5B,UAAWhD,GAAaa,aACxBzyB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGz6B,0BAA4B,CAC9B4C,cAAe63B,GAAGz6B,0BAClB06B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGt6B,4BAA8B,CAChCyC,cAAe63B,GAAGt6B,4BAClBu6B,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG75B,kCAAoC,CACtCgC,cAAe63B,GAAG75B,kCAClB85B,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG35B,4BAA8B,CAChC8B,cAAe63B,GAAG35B,4BAClB45B,UAAWhD,GAAae,aACxB3yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGz5B,8BAAgC,CAClC4B,cAAe63B,GAAGz5B,8BAClB05B,UAAWhD,GAAagB,aACxB5yB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGj6B,iCAAmC,CACrCoC,cAAe63B,GAAGj6B,iCAClBk6B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGtB,WAAa,CACfv2B,cAAe63B,GAAGtB,WAClBuB,UAAWzB,GACXnzB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAKhB00B,GAAG3yB,kCAAoC,CACtClF,cAAe63B,GAAG3yB,kCAClB4yB,UAAWhD,GAAaa,aACxBzyB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG1yB,kCAAoC,CACtCnF,cAAe63B,GAAG1yB,kCAClB2yB,UAAWhD,GAAaiB,aACxB7yB,YAAa,MACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGzyB,kCAAoC,CACtCpF,cAAe63B,GAAGzyB,kCAClB0yB,UAAWhD,GAAakB,aACxB9yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGxyB,kCAAoC,CACtCrF,cAAe63B,GAAGxyB,kCAClByyB,UAAWhD,GAAamB,aACxB/yB,YAAa,MACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGvyB,kCAAoC,CACtCtF,cAAe63B,GAAGvyB,kCAClBwyB,UAAWhD,GAAaoB,aACxBhzB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGtyB,kCAAoC,CACtCvF,cAAe63B,GAAGtyB,kCAClBuyB,UAAWhD,GAAaqB,aACxBjzB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGryB,iCAAmC,CACrCxF,cAAe63B,GAAGryB,iCAClBsyB,UAAWhD,GAAasB,YACxBlzB,YAAa,IACbQ,eAAgB,SAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGpyB,gCAAkC,CACpCzF,cAAe63B,GAAGpyB,gCAClBqyB,UAAWhD,GAAaI,aACxBhyB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGnyB,wBAA0B,CAC5B1F,cAAe63B,GAAGnyB,wBAClBoyB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGrB,iBAAmB,CACrBx2B,cAAe63B,GAAGrB,mBAEnBqB,GAAGpB,oBAAsB,CACxBz2B,cAAe63B,GAAGpB,oBAClB5T,WAAY,KAEbgV,GAAGnB,aAAe,CACjB12B,cAAe63B,GAAGnB,aAClB7T,WAAY,KAEbgV,GAAGlyB,iCAAmC,CACrC3F,cAAe63B,GAAGlyB,iCAClBmyB,UAAWhD,GAAaI,aACxBhyB,YAAa,MACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGjyB,wBAA0B,CAC5B5F,cAAe63B,GAAGjyB,wBAClBkyB,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAKhB00B,GAAGx5B,0CAA4C,CAC9C2B,cAAe63B,GAAGx5B,0CAClBy5B,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGv5B,8CAAgD,CAClD0B,cAAe63B,GAAGv5B,8CAClBw5B,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGt5B,kDAAoD,CACtDyB,cAAe63B,GAAGt5B,kDAClBu5B,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,KACfoK,oBAAoB,IAErBsqB,GAAGr5B,8CAAgD,CAClDwB,cAAe63B,GAAGr5B,8CAClBs5B,UAAWhD,GAAaM,aACxBlyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGp5B,mCAAqC,CACvCuB,cAAe63B,GAAGp5B,mCAClBq5B,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGn5B,mCAAqC,CACvCsB,cAAe63B,GAAGn5B,mCAClBo5B,UAAWhD,GAAaQ,aACxBpyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGl5B,gCAAkC,CACpCqB,cAAe63B,GAAGl5B,gCAClBm5B,UAAWhD,GAAaS,aACxBryB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGj5B,kCAAoC,CACtCoB,cAAe63B,GAAGj5B,kCAClBk5B,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGh5B,iDAAmD,CACrDmB,cAAe63B,GAAGh5B,iDAClBi5B,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,IACf40B,gBAAgB,EAChBxqB,oBAAoB,IAErBsqB,GAAG/4B,gDAAkD,CACpDkB,cAAe63B,GAAG/4B,gDAClBg5B,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,IACf40B,gBAAgB,EAChBxqB,oBAAoB,IAErBsqB,GAAG94B,wCAA0C,CAC5CiB,cAAe63B,GAAG94B,wCAClB+4B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG74B,kCAAoC,CACtCgB,cAAe63B,GAAG74B,kCAClB84B,UAAWhD,GAAaW,YACxBvyB,YAAa,IACbQ,eAAgB,SAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,KACfoK,oBAAoB,IAErBsqB,GAAGhyB,+BAAiC,CACnC7F,cAAe63B,GAAGhyB,+BAClBiyB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,KACfoK,oBAAoB,IAErBsqB,GAAG/xB,yCAA2C,CAC7C9F,cAAe63B,GAAG/xB,yCAClBgyB,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,KACfoK,oBAAoB,IAIrBsqB,GAAGlB,oBAAsB,CACxB32B,cAAe63B,GAAGlB,oBAClB9T,WAAY,MACbhmB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGjB,iBAAmB,CACrB52B,cAAe63B,GAAGjB,iBAClB/T,WAAY,KAEbgV,GAAGhB,mBAAqB,CACvB72B,cAAe63B,GAAGhB,qBAEnBgB,GAAGf,oBAAsB,CACxB92B,cAAe63B,GAAGf,sBAEnBe,GAAGd,iBAAmB,CACrB/2B,cAAe63B,GAAGd,iBAClBlU,WAAY,KAGbgV,GAAG9xB,6BAA+B,CACjC/F,cAAe63B,GAAG9xB,6BAClB+xB,UAAWhD,GAAaE,SACxB9xB,YAAa,EAEbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG7xB,sCAAwC,CAC1ChG,cAAe63B,GAAG7xB,sCAClB8xB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG5xB,+BAAiC,CACnCjG,cAAe63B,GAAG5xB,+BAClB6xB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG3xB,iCAAmC,CACrClG,cAAe63B,GAAG3xB,iCAClB4xB,UAAWhD,GAAaG,SACxB/xB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAIhB00B,GAAG1xB,8CAAgD,CAClDnG,cAAe63B,GAAG1xB,8CAClB2xB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGxxB,kDAAoD,CACtDrG,cAAe63B,GAAGxxB,kDAClByxB,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGvxB,oCAAsC,CACxCtG,cAAe63B,GAAGvxB,oCAClBwxB,UAAWhD,GAAaS,aACxBryB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGtxB,sCAAwC,CAC1CvG,cAAe63B,GAAGtxB,sCAClBuxB,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGzxB,4CAA8C,CAChDpG,cAAe63B,GAAGzxB,4CAClB0xB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAIhB00B,GAAGjxB,kDAAoD,CACtD5G,cAAe63B,GAAGjxB,kDAClBkxB,UAAWhD,GAAaY,aACxBxyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG/wB,kCAAoC,CACtC9G,cAAe63B,GAAG/wB,kCAClBgxB,UAAWhD,GAAaa,aACxBzyB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG9wB,qCAAuC,CACzC/G,cAAe63B,GAAG9wB,qCAClB+wB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG5wB,uCAAyC,CAC3CjH,cAAe63B,GAAG5wB,uCAClB6wB,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG3wB,6CAA+C,CACjDlH,cAAe63B,GAAG3wB,6CAClB4wB,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG1wB,uCAAyC,CAC3CnH,cAAe63B,GAAG1wB,uCAClB2wB,UAAWhD,GAAae,aACxB3yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAG7wB,yCAA2C,CAC7ChH,cAAe63B,GAAG7wB,yCAClB8wB,UAAWhD,GAAagB,aACxB5yB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGhxB,4CAA8C,CAChD7G,cAAe63B,GAAGhxB,4CAClBixB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAGhB00B,GAAGzvB,2CAA6C,CAC/CpI,cAAe63B,GAAGzvB,2CAClB0vB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG1vB,kCAAoC,CACtCnI,cAAe63B,GAAG1vB,kCAClB2vB,UAAWhD,GAAaE,SACxB9xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGxvB,sCAAwC,CAC1CrI,cAAe63B,GAAGxvB,sCAClByvB,UAAWhD,GAAaG,SACxB/xB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGtvB,iDAAmD,CACrDvI,cAAe63B,GAAGtvB,iDAClBuvB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGvvB,mDAAqD,CACvDtI,cAAe63B,GAAGvvB,mDAClBwvB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGpvB,yCAA2C,CAC7CzI,cAAe63B,GAAGpvB,yCAClBqvB,UAAWhD,GAAaS,aACxBryB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGnvB,2CAA6C,CAC/C1I,cAAe63B,GAAGnvB,2CAClBovB,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAGrvB,uDAAyD,CAC3DxI,cAAe63B,GAAGrvB,uDAClBsvB,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAGhB00B,GAAGb,+BAAiC,CACnCh3B,cAAe63B,GAAGb,+BAClBnU,WAAY,MACbhmB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGZ,4BAA8B,CAChCj3B,cAAe63B,GAAGZ,4BAClBpU,WAAY,KAEbgV,GAAGX,4BAA8B,CAChCl3B,cAAe63B,GAAGX,8BAGnBW,GAAG9uB,6DAA+D,CACjE/I,cAAe63B,GAAG9uB,6DAClB+uB,UAAWhD,GAAaY,aACxBxyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG7uB,kDAAoD,CACtDhJ,cAAe63B,GAAG7uB,kDAClB8uB,UAAWhD,GAAaO,aACxBnyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG5uB,2CAA6C,CAC/CjJ,cAAe63B,GAAG5uB,2CAClB6uB,UAAWhD,GAAae,aACxB3yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,MAEhB00B,GAAG3uB,iDAAmD,CACrDlJ,cAAe63B,GAAG3uB,iDAClB4uB,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG1uB,wCAA0C,CAC5CnJ,cAAe63B,GAAG1uB,wCAClB2uB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAIhB00B,GAAGrxB,2CAA6C,CAC/CxG,cAAe63B,GAAGrxB,2CAClBsxB,UAAWhD,GAAaI,aACxBhyB,YAAa,IACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGpxB,mCAAqC,CACvCzG,cAAe63B,GAAGpxB,mCAClBqxB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGV,4BAA8B,CAChCn3B,cAAe63B,GAAGV,+BACnBt6B,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGT,+BAAiC,CACnCp3B,cAAe63B,GAAGT,+BAClBvU,WAAY,KAEbgV,GAAGR,wBAA0B,CAC5Br3B,cAAe63B,GAAGR,wBAClBxU,WAAY,KAEbgV,GAAGnxB,4CAA8C,CAChD1G,cAAe63B,GAAGnxB,4CAClBoxB,UAAWhD,GAAaI,aACxBhyB,YAAa,MACbQ,eAAgB,UAChB4iB,cAAe,IACfzD,WAAY,GACZ0D,kBAAmB,EACnBpjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGlxB,mCAAqC,CACvC3G,cAAe63B,GAAGlxB,mCAClBmxB,UAAWhD,GAAaK,aACxBjyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAGhB00B,GAAGzwB,wCAA0C,CAC5CpH,cAAe63B,GAAGzwB,wCAClB0wB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGxwB,uCAAyC,CAC3CrH,cAAe63B,GAAGxwB,uCAClBywB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGvwB,iDAAmD,CACrDtH,cAAe63B,GAAGvwB,iDAClBwwB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGtwB,oDAAsD,CACxDvH,cAAe63B,GAAGtwB,oDAClBuwB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,GACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGrwB,uCAAyC,CAC3CxH,cAAe63B,GAAGrwB,uCAClBswB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAGhB00B,GAAGpwB,qCAAuC,CACzCzH,cAAe63B,GAAGpwB,qCAClBqwB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGnwB,oCAAsC,CACxC1H,cAAe63B,GAAGnwB,oCAClBowB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGlwB,8CAAgD,CAClD3H,cAAe63B,GAAGlwB,8CAClBmwB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGjwB,iDAAmD,CACrD5H,cAAe63B,GAAGjwB,iDAClBkwB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGhwB,oCAAsC,CACxC7H,cAAe63B,GAAGhwB,oCAClBiwB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAGhB00B,GAAG/vB,sCAAwC,CAC1C9H,cAAe63B,GAAG/vB,sCAClBgwB,UAAWhD,GAAakD,SACxB90B,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG9vB,gDAAkD,CACpD/H,cAAe63B,GAAG9vB,gDAClB+vB,UAAWhD,GAAakD,SACxB90B,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG7vB,mDAAqD,CACvDhI,cAAe63B,GAAG7vB,mDAClB8vB,UAAWhD,GAAakD,SACxB90B,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG5vB,sCAAwC,CAC1CjI,cAAe63B,GAAG5vB,sCAClB6vB,UAAWhD,GAAakD,SACxB90B,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGlvB,iCAAmC,CACrC3I,cAAe63B,GAAGlvB,iCAClBmvB,UAAWzB,GACXnzB,YAAa,GACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGjvB,4BAA8B,CAChC5I,cAAe63B,GAAGjvB,4BAClBkvB,UAAWhD,GAAaU,aACxBtyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAChBtG,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA+6B,GACAC,GAAGH,iCAAmC,CACrC13B,cAAe63B,GAAGH,mCAEnBG,GAAGhvB,wCAA0C,CAC5C7I,cAAe63B,GAAGhvB,wCAClBivB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGF,6BAA+B,CACjC33B,cAAe63B,GAAGF,+BAEnBE,GAAG/uB,4BAA8B,CAChC9I,cAAe63B,GAAG/uB,4BAClBgvB,UAAWhD,GAAaI,aACxBhyB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAKN4H,IAAwB9d,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAChC+d,IAAqB,IAAAnO,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA,GACvBg7B,GAAGj6B,iCAAmC,CACrCoC,cAAe63B,GAAGj6B,iCAClBk6B,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGz5B,8BAAgC,CAClC4B,cAAe63B,GAAGz5B,8BAClB05B,UAAWhD,GAAagB,aACxB5yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG75B,kCAAoC,CACtCgC,cAAe63B,GAAG75B,kCAClB85B,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG95B,uBAAyB,CAC3BiC,cAAe63B,GAAG95B,uBAClB+5B,UAAWhD,GAAaa,aACxBzyB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG55B,sCAAwC,CAC1C+B,cAAe63B,GAAG55B,sCAClB65B,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAGhxB,4CAA8C,CAChD7G,cAAe63B,GAAGhxB,4CAClBixB,UAAWhD,GAAaC,SACxB7xB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG7wB,yCAA2C,CAC7ChH,cAAe63B,GAAG7wB,yCAClB8wB,UAAWhD,GAAagB,aACxB5yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG3wB,6CAA+C,CACjDlH,cAAe63B,GAAG3wB,6CAClB4wB,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG/wB,kCAAoC,CACtC9G,cAAe63B,GAAG/wB,kCAClBgxB,UAAWhD,GAAaa,aACxBzyB,YAAa,EACbQ,eAAgB,MAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,OAEhB00B,GAAG3uB,iDAAmD,CACrDlJ,cAAe63B,GAAG3uB,iDAClB4uB,UAAWhD,GAAac,aACxB1yB,YAAa,KACbQ,eAAgB,UAChB4iB,cAAe,IACfnjB,QAAS,CAAC,IAAK,QAkBN80B,GAAsC,SAACC,GAClD,IAAMC,EAAQnkC,IAAAA,QAAUkkC,GACxB,GAAIlkC,IAAAA,QAAUmkC,GACZ,MAAO,GAET,IAAMp1B,EAAoB3O,OAAOgkC,OAAOptB,IAOxC,OANYhX,IAAAA,MAAQmkC,GACjBh2B,KAAI,SAAAk2B,GAAO,OAAIrkC,IAAAA,OAAS+O,GAAmB,SAAA9W,GAAA,IAAG6rC,EAAS7rC,EAAT6rC,UAAS,OAAOO,GAAWP,GAAcA,EAAUrsB,gBAAkB4sB,EAAQ5sB,aAAc,GAAC,IAC1I6sB,UACA/1B,UACAg2B,OACAvmC,OAEL,EC5hCA,SAASwmC,GAAmBC,EAAmBC,GAC7C,IAAKD,IAAsBC,EACzB,MAAO,EAAC,EAAOD,GAEjB,IAAKA,IAAsBC,EACzB,MAAO,EAAC,EAAMA,GAKhB,IAFA,IAAIruB,EAAUouB,EAAkBhmC,SAAWimC,EAAiBjmC,OACtDkmC,EAAmB,GAAGC,EAAA,WAE1B,IAAMC,EAAkBH,EAAiBI,GACnCC,EAAmB/kC,IAAAA,KAAOykC,GAAmB,SAAAr4B,GAAO,OAAAA,EAAJgL,OAAoBytB,EAAgBztB,IAAI,IAC9F,GAAI2tB,EAAkB,CACpB,IAAAC,EA5CN,SAA4BC,EAAmBC,GAC7C,IAAKD,IAAsBC,EACzB,MAAO,EAAC,EAAOD,GAEjB,IAAKA,IAAsBC,EACzB,MAAO,EAAC,EAAMA,GAKhB,IAFA,IAAI7uB,EAAU4uB,EAAkBxmC,SAAWymC,EAAiBzmC,OACtD0mC,EAAmB,GAAGC,EAAA,WAE1B,IAAMC,EAAeH,EAAiBJ,GACtC,GAAIO,EAAc,CAChB,IAAMC,EAAgBtlC,IAAAA,KAAOilC,GAAmB,SAAAhtC,GAAgB,OAAAA,EAAboW,cAAkCrC,gBAAkBq5B,EAAah3B,cAAcrC,aAAa,IAC3Is5B,GAAiBtlC,IAAAA,QAAUslC,EAAeD,GAE5CF,EAAiBvuB,KAAK0uB,IAEtBH,EAAiBvuB,KAAKyuB,GACtBhvB,GAAU,EAEd,CACF,EAZSyuB,EAAI,EAAGA,EAAII,EAAiBzmC,OAAQqmC,GAAK,EAACM,IAcnD,MAAO,CACL/uB,EACAA,EAAU8uB,EAAmBF,EAEjC,CAgBgDM,CAAmBR,EAAiBxuB,cAAesuB,EAAgBtuB,eAAcivB,GAAA/X,EAAAA,GAAAA,GAAAuX,EAAA,GAApHS,EAAaD,EAAA,GAAEL,EAAgBK,EAAA,GACtCb,EAAiB/tB,KAAK6uB,GAAaxsC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAQ4rC,GAAe,IAAEtuB,cAAe4uB,IAAqBJ,GAChG1uB,EAAUA,GAAWovB,CACvB,MACEd,EAAiB/tB,KAAKiuB,GACtBxuB,GAAU,CAEd,EAXSyuB,EAAI,EAAGA,EAAIJ,EAAiBjmC,OAAQqmC,GAAK,EAACF,IAanD,MAAO,CAACvuB,EAASA,EAAUsuB,EAAmBF,EAChD,CA8CO,SAASiB,GAAmBC,EAAWC,GAC5C,IAAKD,IAAcC,EACjB,MAAO,EAAC,EAAOD,GAGjB,IAAKA,IAAcC,EACjB,MAAO,EAAC,EAAMA,GAGhB,IACyBC,EAGrBF,EAHFjrB,sBACgBorB,EAEdH,EAFFlrB,eACoBsrB,EAClBJ,EADFnrB,mBAIuBwrB,EAGrBJ,EAHFlrB,sBACgBurB,EAEdL,EAFFnrB,eACoByrB,EAClBN,EADFprB,mBAGF2rB,EAjEF,SAA2CC,EAA2BC,GACpE,IAAKD,IAA8BC,EACjC,MAAO,EAAC,EAAOD,GAEjB,IAAKA,IAA8BC,EACjC,MAAO,EAAC,EAAMA,GAEhB,GAAID,IAA8BC,EAChC,MAAO,EAAC,EAAOD,GAMjB,IAHA,IAAI/vB,EAAU+vB,EAA0B3nC,SAAW4nC,EAAyB5nC,OACtE6nC,GAA6B1gC,EAAAA,GAAAA,GAAOwgC,GACpCG,EAA2B,GAAGC,EAAA,WAElC,IAAMC,EAA0BJ,EAAyBvB,GACnDh0B,EAAM9Q,IAAAA,UAAYsmC,GAA+B,SAAAl5B,GAAA,IAAGqM,EAAYrM,EAAZqM,aAAY,OACpEA,EAAa3K,WAAa23B,EAAwBhtB,aAAa3K,WAC3D2K,EAAa3K,UAAUzC,MAAQo6B,EAAwBhtB,aAAa3K,UAAUzC,GAAI,IACxF,GAAIyE,GAAO,EAAG,CACZ,IAAM41B,EAA2BJ,EAA8Bx1B,GACzC61B,EAAuDD,EAArEjtB,aAA+CgrB,EAAsBiC,EAArCr5B,cAClBu5B,EAAqDH,EAAnEhtB,aAA8CirB,EAAqB+B,EAApCp5B,cAEjCw5B,GAAyB7mC,IAAAA,QAAU2mC,EAAkBC,GAC3DE,EAAmDtC,GAAmBC,EAAmBC,GAAiBqC,GAAAtZ,EAAAA,GAAAA,GAAAqZ,EAAA,GAAnGE,EAAsBD,EAAA,GAAEpC,EAAgBoC,EAAA,GAC/CR,EAAyB3vB,KAAKiwB,GAAyBG,EAAyB,CAAEvtB,aAAcmtB,EAAiBv5B,cAAes3B,GAAqB+B,GACrJrwB,EAAUA,GAAW2wB,GAA0BH,EAG/CP,EAA8BW,OAAOn2B,EAAK,EAC5C,MACEy1B,EAAyB3vB,KAAK6vB,GAC9BpwB,GAAU,CAEd,EArBSyuB,EAAI,EAAGA,EAAIuB,EAAyB5nC,OAAQqmC,GAAK,EAAC0B,IA0B3D,MAAO,CAFPnwB,EAAUA,GAAWiwB,EAA8B7nC,OAAS,EAE3C4X,EAAUkwB,EAA2BH,EACxD,CAwBmDc,CAAkCrB,EAAkBG,GAAgBmB,GAAA1Z,EAAAA,GAAAA,GAAA0Y,EAAA,GAA9GiB,EAAqBD,EAAA,GAAEE,EAAeF,EAAA,GACvCG,GAA+BtnC,IAAAA,QAAU+lC,EAAwBG,GACjE7vB,EAAUyvB,IAAuBG,GAAqBqB,GAA+BF,EAE3F,MAAO,CACL/wB,EACAA,EAAU,CACRqE,sBAAuB0sB,EAAwBC,EAAkBxB,EACjEprB,eAAgBwrB,EAChBzrB,mBAAoB8sB,EAA8BpB,EAAwBH,GACxEJ,EAER,C,gBClIM4B,GACqB,0BADrBA,GAE+B,oCAF/BA,GAGmC,wCAHnCA,GAIiD,sDAJjDA,GAK2B,gCAgB3BC,GAAsD,CAC1D9sB,sBAAuB,KACvBD,gBAAgB,EAChBD,mBAAoB,MAwEtB,SAASitB,GAAiBC,EAAOC,GAC/B,IAAcC,EAA8BD,EAApCvhC,KAAqByhC,GAAU9mC,EAAAA,EAAAA,GAAK4mC,EAAM3mC,IAClD,OAAQ4mC,GACN,KAAKL,GACH,IAAQO,EAA2BD,EAA3BC,SACR,GADmCD,EAAjBE,aACA,CAChB,IAAA/5B,EAAsE85B,GAAY,CAAC,EAA3EptB,EAAqB1M,EAArB0M,sBAAuBF,EAAkBxM,EAAlBwM,mBAM/B,MALmB,CACjBE,sBAAAA,EACAD,eAH+DzM,EAAdyM,iBAGf,EAClCD,mBAAAA,EAGJ,CAEA,IAAAwtB,EAA+BtC,GAAmBgC,EAAOI,GAASG,GAAAxa,EAAAA,GAAAA,GAAAua,EAAA,GAA3D3xB,EAAO4xB,EAAA,GAAEC,EAAWD,EAAA,GAC3B,OAAQ5xB,GAAepd,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClBivC,GAAW,IACdztB,eAAgBytB,EAAYztB,iBAAkB,IAF9BitB,EAMpB,KAAKH,GACH,IAAQhB,EAAyCsB,EAAzCtB,yBAA0B4B,EAAeN,EAAfM,WAC1BztB,GAA0BgtB,GAAS,CAAC,GAApChtB,sBACR,GAAIA,GAAyBA,EAAsBytB,GAAa,CAC9D,IAAML,GAAQliC,EAAAA,GAAAA,GAAO8U,GAMrB,OALAotB,EAASK,GAAc5B,EAEnBuB,EAASK,IAAeL,EAASK,GAAY1uB,eAC/CquB,EAASK,GAAY1uB,aAAavL,oBAAqB,GAElD,CACLwM,sBAAuBotB,EACvBrtB,gBAAgB,EAEpB,CACA,OAAOitB,EAGT,KAAKH,GACH,IACEv7B,EACE67B,EADF77B,cAAeC,EACb47B,EADa57B,SAAUk8B,EACvBN,EADuBM,WAAYhxB,EACnC0wB,EADmC1wB,iBAERyuB,GAAa8B,GAAS,CAAC,GAA9ChtB,sBACR,GAAIkrB,GAAYA,EAASuC,GAAa,CACpC,IAAMC,EAAwBxC,EAASuC,GACjC5B,EAnHsB,SAClC6B,EACAjxB,EACAnL,EACAC,GAEA,IAAAhU,EAAwCmwC,GAAyB,CAAC,EAA1D3uB,EAAYxhB,EAAZwhB,aAAcpM,EAAapV,EAAboV,cAClBgJ,GAAU,EAERsuB,EAAmB3kC,IAAAA,IAAMqN,GAAe,SAACg7B,GAC7C,IAAAj8B,EAAgCi8B,GAAgB,CAAC,EAAzCjxB,EAAIhL,EAAJgL,KAAMb,EAAanK,EAAbmK,cACd,GAAIa,IAASD,EAAkB,CAE7B,IAAMguB,EAAmBnlC,IAAAA,IAAMuW,GAAe,SAACe,GAC7C,OAAIA,EAAUjJ,cAAcrC,gBAAkBA,GAEvChM,IAAAA,QAAUsX,EAAUhJ,kBAAmBrC,GAOvCqL,GANHjB,GAAU,GACVpd,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKqe,GAAS,IAAEhJ,kBAAmBrC,EAAUiC,oBAAoB,EAAMmkB,+BAA2B/oB,EAAW4oB,uBAAmB5oB,EAAW6oB,yBAAqB7oB,EAAW8oB,0BAAsB9oB,IAKvM,IAEA,OAAO+M,EAAU,CAAEe,KAAAA,EAAMb,cAAe4uB,GAAqBkD,CAC/D,CACA,OAAOA,CACT,IAEA,OAAOhyB,EAAU,CAAEoD,aAAAA,EAAcpM,cAAes3B,GAAqByD,CACvE,CAmFyCE,CAA4BF,EAAuBjxB,EAAkBnL,EAAeC,GAErH,GAAIm8B,IAA0B7B,EAA0B,CACtD,IAAMuB,GAAQliC,EAAAA,GAAAA,GAAOggC,GAErB,OADAkC,EAASb,OAAOkB,EAAY,EAAG5B,GACxB,CAAE7rB,sBAAuBotB,EAAUrtB,gBAAgB,EAC5D,CACF,CACA,OAAOitB,EAGT,KAAKH,GACH,IACEzD,EACE+D,EADF/D,UAAW73B,EACT47B,EADS57B,SAAUk8B,EACnBN,EADmBM,WAAYhxB,EAC/B0wB,EAD+B1wB,iBAEJyuB,GAAa8B,GAAS,CAAC,GAA9ChtB,sBACR,GAAIkrB,GAAYA,EAASuC,GAAa,CACpC,IAAMC,EAAwBxC,EAASuC,GACjC5B,EAlGiC,SAC7C6B,EACAjxB,EACA2sB,EACA73B,GAEA,IAAAmB,EAAwCg7B,GAAyB,CAAC,EAA1D3uB,EAAYrM,EAAZqM,aAAcpM,EAAaD,EAAbC,cAClBgJ,GAAU,EAERsuB,EAAmB3kC,IAAAA,IAAMqN,GAAe,SAACg7B,GAC7C,IAAAt6B,EAAgCs6B,GAAgB,CAAC,EAAzCjxB,EAAIrJ,EAAJqJ,KAAMb,EAAaxI,EAAbwI,cACd,GAAIa,IAASD,EAAkB,CAE7B,IAAMguB,EAAmBnlC,IAAAA,IAAMuW,GAAe,SAACe,GAC7C,OAAIA,EAAUjJ,cAAcy1B,YAAcA,GAEnC9jC,IAAAA,QAAUsX,EAAUhJ,kBAAmBrC,GAOvCqL,GANHjB,GAAU,GACVpd,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKqe,GAAS,IAAEhJ,kBAAmBrC,EAAUiC,oBAAoB,EAAMmkB,+BAA2B/oB,EAAW4oB,uBAAmB5oB,EAAW6oB,yBAAqB7oB,EAAW8oB,0BAAsB9oB,IAKvM,IAEA,OAAO+M,EAAU,CAAEe,KAAAA,EAAMb,cAAe4uB,GAAqBkD,CAC/D,CACA,OAAOA,CACT,IACA,OAAOhyB,EAAU,CAAEoD,aAAAA,EAAcpM,cAAes3B,GAAqByD,CACvE,CAmEyCG,CAAuCH,EAAuBjxB,EAAkB2sB,EAAW73B,GAE5H,GAAIm8B,IAA0B7B,EAA0B,CACtD,IAAMiC,GAAgB5iC,EAAAA,GAAAA,GAAOggC,GAE7B,OADA4C,EAAiBL,GAAc5B,EACxB,CAAE7rB,sBAAuB8tB,EAAkB/tB,gBAAgB,EACpE,CACF,CACA,OAAOitB,EAGT,KAAKH,GACH,IAAQ/sB,EAAuBqtB,EAAvBrtB,mBACRL,EAA6EutB,GAAS,CAAC,EAA/EhtB,EAAqBP,EAArBO,sBAA2CwrB,EAAqB/rB,EAAzCK,mBACzBiuB,EAAazoC,IAAAA,QAAU0a,GAAyB,GAAK1a,IAAAA,MAAQwa,GAChE+pB,OACAmE,SACAtqC,QAAO,SAAA0mC,GAAC,OAAI9kC,IAAAA,SAAW8kC,IAAMA,GAAK,GAAKA,EAAIpqB,EAAsBjc,MAAM,IACvET,QACH,OAAKgC,IAAAA,QAAUyoC,EAAYvC,GAGpBwB,GAFLzuC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAYyuC,GAAK,IAAEltB,mBAAoBiuB,IAI3C,QACE,OAAOf,EAEb,CAEO,IC3LMiB,GAA2B,SAACC,EAAmB15B,GAC1D,IAIM25B,EADFD,EAFFh5B,YAEEg5B,EADF94B,aAGIpB,EAAe1O,IAAAA,SAAW,CAAC,EAAG4oC,GAEpC,GAAIE,KAAKC,IAAIF,EAAgB35B,GAbF,IAezB,GAAIA,GAAe25B,EAAe,CAEhC,IAAMG,EAAoBF,KAAKG,MAAMv6B,EAAaoB,aAAeZ,GAI3Dg6B,EACJJ,KAAKG,OAAOv6B,EAAakB,YAAco5B,GAAqB,GAAKt6B,EAAasB,QAEhFtB,EAAakB,YAAco5B,EAC3Bt6B,EAAasB,QAAUk5B,CACzB,KAAO,CAEL,IAAMC,EAAqBL,KAAKG,MAAMv6B,EAAakB,YAAcV,GAI3Dk6B,EAAUN,KAAKG,OACnBv6B,EAAaoB,aAAeq5B,GAAsB,GAAKz6B,EAAawB,QAEtExB,EAAaoB,aAAeq5B,EAC5Bz6B,EAAawB,QAAUk5B,CACzB,CAGF,OAAO16B,CACT,EAGaM,GAA8B,SAAH/W,GAKjC,IAJL6W,EAAS7W,EAAT6W,UACAjC,EAAa5U,EAAb4U,cACAkC,EAAiB9W,EAAjB8W,kBAAiBs6B,EAAApxC,EACjBqxC,qBAAAA,OAAoB,IAAAD,GAAQA,EAEtB5wC,EAAQ6wC,EAAuBx6B,EAAUvC,cAAgBuC,EAAUrW,MACnEc,EAAS+vC,EAAuBx6B,EAAUtC,eAAiBsC,EAAUvV,OACrEgwC,EAAa18B,GAAiB,CAClC+C,YAAanX,EACbqX,aAAcvW,EACdyW,QAAS,EACTE,QAAS,GAELs5B,EAAexpC,IAAAA,MAAQ+O,EAAmB,eAOhD,OAN2B/O,IAAAA,IAAMwpC,GAAc,SAACC,GAE9C,MAAO,CACLn7B,kBAFmBq6B,GAAyBY,EAAYE,GAI5D,GAEF,E,gLC1DaC,GAA+B,SAACtvB,GAE3C,IAAIuvB,EAAgB3pC,IAAAA,KAAOoa,GAAQ,SAAAQ,GAAG,OAAIA,GAAOA,EAAIjD,qBAAuBiD,EAAI9L,SAAS,IAQzF,OANK66B,IACHA,EAAgB3pC,IAAAA,KAAOoa,GAAQ,SAAAQ,GAAG,OAAIA,GAAOA,EAAI9L,SAAS,KAEvD66B,IACHA,EAAgB3pC,IAAAA,MAAQoa,IAEnBuvB,CACT,EAOMC,GAAe,SAACz9B,EAAOe,GAE3B,IC5B6Bb,ED4BvBw9B,EAAe7pC,IAAAA,SAAWmM,IC5BHE,ED6BVF,EC5BZ,IAAI29B,KAAJ,EAAY,SAACC,EAASC,GAC3B,IAAM79B,EAAQ,IAAIwgB,MAClBxgB,EAAM89B,OAAS,WACb,IAAAhyC,EAA6CkU,GAAS,CAAC,EAA/CwK,EAAG1e,EAAH0e,IAAKuzB,EAAYjyC,EAAZiyC,aAAcC,EAAalyC,EAAbkyC,cAC3BJ,EAAQ,CAAEpzB,IAAAA,EAAKle,MAAOyxC,EAAc3wC,OAAQ4wC,GAC9C,EACAh+B,EAAMi+B,QAAU,WACdJ,EAAO,IAAIK,MAAM,8BAADvwC,OAA+BuS,IACjD,EACAF,EAAMwK,IAAMtK,CACd,KDkB0BiD,MAAK,SAAArX,GAAA,IAAG0e,EAAG1e,EAAH0e,IAAKle,EAAKR,EAALQ,MAAOc,EAAMtB,EAANsB,OAAM,MAAQ,CACxD8S,IAAKsK,EAAKle,MAAAA,EAAOc,OAAAA,EAAQ+S,YAAaqK,EAAKpK,cAAe9T,EAAO+T,eAAgBjT,EAClF,IACCuwC,KAAAA,QAAgB39B,GAEdm+B,EAAQT,EAAav6B,MAAK,SAACi7B,GAC/B,IAAAn+B,EAEIm+B,GAAe,CAAC,EADlBjrC,EAAE8M,EAAF9M,GAAI+M,EAAGD,EAAHC,IAAK5T,EAAK2T,EAAL3T,MAAOc,EAAM6S,EAAN7S,OAAQ+S,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cAAeC,EAAcJ,EAAdI,eAAgBK,EAAaT,EAAbS,cAAeC,EAAkBV,EAAlBU,mBAOrF,MAAO,CAAEgC,UAHS,CAChBxP,GAAAA,EAAI+M,IAAAA,EAAK5T,MAAAA,EAAOc,OAAAA,EAAQ+S,YAAAA,EAAaC,cAAAA,EAAeC,eAAAA,EAAgBG,QAL0CP,EAAPO,QAK1BC,aAL+CR,EAAZQ,cAO9FC,cAAAA,EAAe29B,yBAA0B19B,EAC/D,IAAG2D,OAAM,SAACg6B,GAIR,OAHIv9B,GACFA,EAAQu9B,GAEH,IACT,IAEA,OAAOH,CACT,EAQA,SAASI,GAAgB57B,EAAWjC,EAAe29B,EAA0BG,EAAmB10B,GAE9F,IAAQkB,EAAiGwzB,EAAjGxzB,iBAAkBpL,EAA+E4+B,EAA/E5+B,eAAc6+B,EAAiED,EAA/DE,6BAAAA,OAA4B,IAAAD,EAAG57B,GAA2B47B,EAG9F77B,EJ69BgC,SAAChD,EAAgBkK,GACvD,IAAMa,EAAoBb,EAA4Bc,GAA0BC,GAC1EmtB,EAAQnkC,IAAAA,QAAU+L,GAExB,OAAI/L,IAAAA,QAAUmkC,GACL,GAEGnkC,IAAAA,IACVmkC,GACA,SAAAn4B,GAAa,OAAI8K,EAAkB9K,EAAc,GAGrD,CIz+B4B8+B,CAAyB/+B,EAAgBkK,GAGnE,OAAO6zB,KAAAA,QAAgBe,EAA6B,CAAE/7B,UAAAA,EAA2BjC,cAAAA,EAAekC,kBAAAA,KAC7FO,MAAK,WAA+B,IAA9By7B,EAAmBnK,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,GAErBrqB,EAAgBvW,IAAAA,IAAM+O,GAAmB,SAACV,EAAewM,GAE7D,IAAkBmwB,GAAmBhrC,IAAAA,KAAOwqC,GAA0B,SAAAlsC,GAAI,OAAIA,EAAK0N,gBAAkBqC,EAAcrC,aAAa,KAAK,CAAC,GAA9HC,SACR8B,EAEIg9B,EAAoBlwB,IAAU,CAAC,EADjCvM,EAAiBP,EAAjBO,kBAAmB0K,EAAmBjL,EAAnBiL,oBAAqBD,EAAkBhL,EAAlBgL,mBAAoBF,EAAgB9K,EAAhB8K,iBAAkBI,EAAyBlL,EAAzBkL,0BAEhF,MAAQ,CACN5K,cAAAA,EACAC,kBAAmB08B,GAAkB18B,EAIrCJ,qBAAsB88B,EACtBnyB,iBAAkBmyB,OAAiB1hC,EAAYuP,EAC/CG,oBAAqBgyB,OAAiB1hC,EAAY0P,EAClDD,mBAAoBiyB,OAAiB1hC,EAAYyP,EACjDE,0BAA2B+xB,OAAiB1hC,EAAY2P,EAE5D,IACA,MAAO,CAAE7B,KAAMD,EAAkBZ,cAAAA,EACnC,GACJ,CAQA,SAAS00B,GAA2Bj9B,GAEhC,IADFc,EAASd,EAATc,UAAWjC,EAAamB,EAAbnB,cAAe29B,EAAwBx8B,EAAxBw8B,yBAA0BU,EAAkBl9B,EAAlBk9B,mBAAoBj1B,EAAyBjI,EAAzBiI,0BAoBxE,OAlBY6zB,KAAAA,IACVoB,GACA,SAAAt/B,GAAK,OAAI8+B,GAAgB57B,EAAWjC,EAAe29B,EAA0B5+B,EAAOqK,EAA0B,GAC9G,CAAEk1B,YAAa,IACf77B,MAAK,SAACjC,GAYN,MAXe,CACboM,aAAc,CACZ3K,UAAAA,EACAjC,cAAAA,EAIAqB,qBAAsBrB,GAExBQ,cAAAA,EAGJ,GAEF,CAIO,IAAML,GAAoB,SAACC,EAAiBC,GAGjD,IAAMk+B,GAAwBxd,EAAAA,EAAAA,QAAO3gB,GAE/BhF,GAAcpG,EAAAA,EAAAA,YAAWiY,GAAAA,oBACzB7D,EAA4BjW,IAAAA,IAAMiI,EAAa,CAAC,UAAW,qBAEjEojC,EF0DiC,WAAuC,IAAtCC,EAAS1K,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG4G,GAC9C+D,GAAmCC,EAAAA,EAAAA,YAAW/D,GAAkB6D,GAAUG,GAAAhe,EAAAA,GAAAA,GAAA8d,EAAA,GAAnEG,EAAcD,EAAA,GAAEE,EAAQF,EAAA,GAC/BG,EAAsEF,GAAkB,CAAC,EAAjFhxB,EAAqBkxB,EAArBlxB,sBAAuBD,EAAcmxB,EAAdnxB,eAAgBD,EAAkBoxB,EAAlBpxB,mBAOzCZ,GAAqBhM,EAAAA,EAAAA,cAAY,SAACk6B,GACtC6D,EAAS,CAAEvlC,KAAMmhC,GAA+CO,SAAAA,EAAUC,aADdnH,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,IAAAA,UAAA,IAE9D,GAAG,IAEGiL,GAAsBj+B,EAAAA,EAAAA,cAAY,SAAC24B,GACvCoF,EAAS,CAAEvlC,KAAMmhC,GAAyDhB,yBAAAA,EAA0B4B,WADMvH,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,GAE/G,GAAG,IAEGkL,GAA0Bl+B,EAAAA,EAAAA,cAAY,SAACzH,GAC3C,IAAAmU,EAEInU,GAAU,CAAC,EAAC4lC,EAAAzxB,EADd6tB,WAAAA,OAAU,IAAA4D,EAAG,EAACA,EAAE50B,EAAgBmD,EAAhBnD,iBAAkBnL,EAAasO,EAAbtO,cAAeC,EAAQqO,EAARrO,SAEnD0/B,EAAS,CACPvlC,KAAMmhC,GAA6Dv7B,cAAAA,EAAeC,SAAAA,EAAUk8B,WAAAA,EAAYhxB,iBAAAA,GAE5G,GAAG,IAEG60B,GAAqCp+B,EAAAA,EAAAA,cAAY,SAACzH,GACtD,IAAA8lC,EAEI9lC,GAAU,CAAC,EAAC+lC,EAAAD,EADd9D,WAAAA,OAAU,IAAA+D,EAAG,EAACA,EAAE/0B,EAAgB80B,EAAhB90B,iBAAkB2sB,EAASmI,EAATnI,UAAW73B,EAAQggC,EAARhgC,SAE/C0/B,EAAS,CACPvlC,KAAMmhC,GAA2EzD,UAAAA,EAAW73B,SAAAA,EAAUk8B,WAAAA,EAAYhxB,iBAAAA,GAEtH,GAAG,IAEGg1B,GAAwBv+B,EAAAA,EAAAA,cAAY,WAAiB,IAAD,IAAAw+B,EAAAxL,UAAAniC,OAAZ4tC,EAAO,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAPF,EAAOE,GAAA3L,UAAA2L,GACnDZ,EAAS,CAAEvlC,KAAMmhC,GAAqD/sB,mBAAoB6xB,GAC5F,GAAG,IAEH,MAAO,CACL3xB,sBAAAA,EACAD,eAAAA,EACAD,mBAAAA,EACAZ,mBAAAA,EACAiyB,oBAAAA,EACAC,wBAAAA,EACAE,mCAAAA,EACAG,sBAAAA,EAEJ,CElGMK,GARF9xB,EAAqB2wB,EAArB3wB,sBACAD,EAAc4wB,EAAd5wB,eACAb,EAAkByxB,EAAlBzxB,mBACqB6yB,EAAwBpB,EAA7CQ,oBACyBa,EAA4BrB,EAArDS,wBACoCa,EAAuCtB,EAA3EW,mCACAxxB,EAAkB6wB,EAAlB7wB,mBACA2xB,EAAqBd,EAArBc,sBAGIN,GAAsBj+B,EAAAA,EAAAA,cAAY,SAACg/B,GAAsC,IAApBzE,EAAUvH,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,EAGtErpB,GAD0BmD,GAAyBA,EAAsBytB,IAAgB,CAAC,GAAlF1uB,cAC6C,CAAC,EAA9C3K,EAASyI,EAATzI,UAAWjC,EAAa0K,EAAb1K,cAGXQ,GAAmB+9B,EAAsBltC,SAAWktC,EAAsBltC,QAAQiqC,IAAgB,CAAC,GAAnG96B,cAEJA,GAAiByB,GAAa89B,IAAqB5sC,IAAAA,QAAU6M,EAAe+/B,IAC9E3B,GAA4B,CAC1Bn8B,UAAAA,EAAWjC,cAAe+/B,EAAkBpC,8BAA0BlhC,EAAW4hC,mBAAoB79B,EAAe4I,0BAAAA,IACnH3G,MAAK,SAACu9B,GACPJ,EAAyBI,EAAqB1E,EAChD,GAEJ,GAAG,CAACztB,EAAuB+xB,IAQrBX,GAA0Bl+B,EAAAA,EAAAA,cAAY,SAACzH,GAC3C,IAAAgU,EAEIhU,GAAU,CAAC,EADb2mC,EAAoB3yB,EAApB2yB,qBAAsB31B,EAAgBgD,EAAhBhD,iBAAkBnL,EAAamO,EAAbnO,cAAa+gC,EAAA5yB,EAAEguB,WAGzDuE,EAA6B,CAC3BvE,gBAJiE,IAAA4E,EAAG,EAACA,EAIzD51B,iBAAAA,EAAkBnL,cAAAA,EAAeC,SAAU6gC,GAE3D,GAAG,CAACJ,IAQEV,GAAqCp+B,EAAAA,EAAAA,cAAY,SAACzH,GACtD,IAAAylC,EAEIzlC,GAAU,CAAC,EADb2mC,EAAoBlB,EAApBkB,qBAAsB31B,EAAgBy0B,EAAhBz0B,iBAAkB2sB,EAAS8H,EAAT9H,UAASkJ,EAAApB,EAAEzD,WAGrDwE,EAAwC,CACtCxE,gBAJ6D,IAAA6E,EAAG,EAACA,EAIrD71B,iBAAAA,EAAkB2sB,UAAAA,EAAW73B,SAAU6gC,GAEvD,GAAG,CAACH,IAGEM,GAAqBrf,EAAAA,EAAAA,QAAO,MAI5Bsf,GAAkBt/B,EAAAA,EAAAA,cAAY,SAACu/B,GAGnC,IAAMC,EAAiBptC,IAAAA,QAAUmtC,GACjC,IAAIntC,IAAAA,QAAUotC,KAKVptC,IAAAA,QAAUitC,EAAmB/uC,QAASkvC,GAA1C,CAGAH,EAAmB/uC,QAAUkvC,EAG7BhC,EAAsBltC,QAAUkvC,EAEhC,IAAAC,GAAAC,EAAAA,GAAAA,GAAuCF,GAAhCG,EAAWF,EAAA,GAAKG,EAAYH,EAAAI,MAAA,GAGnC7D,GAAa2D,EAAYphC,MAAOe,GAASoC,MAAK,SAACo+B,GAE7C,IAAKA,EACH,OAAO,KAET,IAAQ5+B,EAAuD4+B,EAAvD5+B,UAAWjC,EAA4C6gC,EAA5C7gC,cAAe29B,EAA6BkD,EAA7BlD,yBASlC,OAHA5wB,EAAmB,CAAEc,sBAAuB,CAJX,CAC/BjB,aAAc,CAAE3K,UAAAA,EAAWjC,cAAAA,EAAeqB,qBAAsBrB,GAChEQ,cAAe,OAKV49B,GAA4B,CACjCn8B,UAAAA,EAAWjC,cAAAA,EAAe29B,yBAAAA,EAA0BU,mBAAoBqC,EAAYlgC,cAAe4I,0BAAAA,IAClG3G,MAAK,SAACq+B,GACHA,IAEF/zB,EAAmB,CAAEc,sBAAuB,CAACizB,KAExC3tC,IAAAA,QAAUwtC,IACb1D,KAAAA,IACE0D,GACA,SAAA3/B,GAAM,OAAI+7B,GAAa/7B,EAAO1B,MAAOe,GAASoC,MAAK,SAACs+B,GAClD,OAAIA,EACK3C,GAA4B,CACjCn8B,UAAW8+B,EAAQ9+B,UACnBjC,cAAe+gC,EAAQ/gC,cACvB29B,yBAA0BoD,EAAQpD,yBAClCU,mBAAoBr9B,EAAOR,cAC3B4I,0BAAAA,IAGG,IACT,GAAE,GACF,CAAEk1B,YAAa,IACf77B,MAAK,SAAC4K,GAEN,IAAM2zB,EAAqB7tC,IAAAA,QAAUka,GAChCla,IAAAA,QAAU6tC,IACbj0B,EAAmB,CAAEc,sBAAsB,CAAEizB,GAAiB7zC,QAAA8L,EAAAA,GAAAA,GAAKioC,KAEvE,IAGN,GACF,GAxDA,CAyDF,GAAG,CAAC3gC,EAAS0M,KAEbkiB,EAAAA,EAAAA,YAAU,WACH97B,IAAAA,QAAUiN,IACbigC,EAAgBjgC,EAGpB,GAAG,CAACA,IAKJ,IAAM6gC,GAA4BlgC,EAAAA,EAAAA,cAAY,SAACmgC,GAC7C,GAAI/tC,IAAAA,QAAU0a,GACZ,MAAO,GAGT,IAAMszB,EAAqB,GAGvBC,EAA8BvzB,EAqDlC,OApDIqzB,IAAqB/tC,IAAAA,QAAUwa,KACjCyzB,EAA8BjuC,IAAAA,QAAUA,IAAAA,IAAMwa,GAAoB,SAAA1J,GAAG,OAAI4J,EAAsB5J,EAAI,MAMrG9Q,IAAAA,KAAOiuC,GAA6B,SAAA3zB,GAA8C,IAA7B4zB,EAAM5zB,EAApBb,aAAsBpM,EAAaiN,EAAbjN,cAC3D4+B,EAAuDiC,GAAU,CAAC,EAA1Dp/B,EAASm9B,EAATn9B,UAAWjC,EAAao/B,EAAbp/B,cAAeoK,EAAgBg1B,EAAhBh1B,iBAIlCjX,IAAAA,KAAOqN,GAAe,SAAA8gC,GAAgD,IAAvCh3B,EAAgBg3B,EAAtB/2B,KAAwBb,EAAa43B,EAAb53B,cAE3C63B,EAAwBJ,EAAmBK,MAAK,SAAA/vC,GAAI,OAAIA,EAAK6Y,mBAAqBA,CAAgB,IACjGi3B,IACHA,EAAwB,CAAEj3B,iBAAAA,EAAkBZ,cAAe,IAC3Dy3B,EAAmBp3B,KAAKw3B,IAK1BpuC,IAAAA,KAAOuW,GAAe,SAAA+3B,GAEf,IADLjgC,EAAaigC,EAAbjgC,cAAeC,EAAiBggC,EAAjBhgC,kBAAmBoJ,EAAoB42B,EAApB52B,qBAAsBC,EAAmB22B,EAAnB32B,oBAAqBkB,EAAgBy1B,EAAhBz1B,iBAAkBG,EAAmBs1B,EAAnBt1B,oBAAqBD,EAAkBu1B,EAAlBv1B,mBAAoBE,EAAyBq1B,EAAzBr1B,0BAA8BtX,GAAIZ,EAAAA,EAAAA,GAAAutC,EAAAttC,IAEpKutC,GAAct1C,EAAAA,EAAAA,GAAA,CAClB6V,UAAAA,EACAjC,cAAAA,EACAoK,iBAAAA,EACA3I,kBAAAA,EACAoJ,qBAAAA,EACAwa,kBAAoBxa,GAAwBA,EAAqBlC,WAAeyB,GAAoBA,EAAiBzB,WAAcqD,GAAqB/J,IAAcA,EAAUxC,aAAewC,EAAUzC,KACzM8lB,oBAAqBpZ,GAAuBjK,GAAaA,EAAUvC,cACnE6lB,qBAAsBpZ,GAAwBlK,GAAaA,EAAUtC,eACrE6lB,0BAA2BpZ,EAC3BtB,oBAAAA,GACGhW,GAEC6sC,EAAUxuC,IAAAA,UAAYouC,EAAsB73B,eAAgB,SAAAjY,GAAI,OAAIA,EAAK+P,cAAcrC,gBAAkBqC,EAAcrC,aAAa,IACtIwiC,GAAW,GACbJ,EAAsB73B,cAAci4B,GAASp0B,OAAOxD,KAAK23B,GACzDH,EAAsB73B,cAAci4B,GAAS72B,oBACzCA,GAAuBy2B,EAAsB73B,cAAci4B,GAAS72B,qBAExEy2B,EAAsB73B,cAAcK,KAAK,CACvCvI,cAAAA,EAAesJ,oBAAAA,EAAqByC,OAAQ,CAACm0B,IAGnD,GACF,GACF,IAEOP,CACT,GAAG,CAACxzB,EAAoBE,IAElB+zB,GAAmClnC,EAAAA,EAAAA,UAAQ,kBAAMumC,GAA0B,EAAM,GAAE,CAACA,IACpFY,GAAyCnnC,EAAAA,EAAAA,UAAQ,kBAAMumC,GAA0B,EAAK,GAAE,CAACA,IAMzFa,GAAoCpnC,EAAAA,EAAAA,UAAQ,WAYhD,OAXYvH,IAAAA,IAAMyuC,GAAkC,SAAAG,GAA0C,IAAvCz3B,EAAgBy3B,EAAhBz3B,iBAAkBZ,EAAaq4B,EAAbr4B,cASvE,MAAO,CAAEY,iBAAAA,EAAkBZ,cARdvW,IAAAA,IAAMuW,GAAe,SAAAs4B,GAAqD,IAAlDxgC,EAAawgC,EAAbxgC,cAAesJ,EAAmBk3B,EAAnBl3B,oBAAqByC,EAAMy0B,EAANz0B,OACjEuvB,EAAgBD,GAA6BtvB,GACnD,OAAAnhB,EAAAA,EAAAA,GAAA,CACEoV,cAAAA,EACAsJ,oBAAAA,GACGgyB,EAEP,IAEF,KACc,EAChB,GAAG,CAAC8E,IAEEK,GAA0CvnC,EAAAA,EAAAA,UAAQ,WAYtD,OAXYvH,IAAAA,IAAM0uC,GAAwC,SAAAK,GAA0C,IAAvC53B,EAAgB43B,EAAhB53B,iBAAkBZ,EAAaw4B,EAAbx4B,cAS7E,MAAO,CAAEY,iBAAAA,EAAkBZ,cARdvW,IAAAA,IAAMuW,GAAe,SAAAy4B,GAAqD,IAAlD3gC,EAAa2gC,EAAb3gC,cAAesJ,EAAmBq3B,EAAnBr3B,oBAAqByC,EAAM40B,EAAN50B,OACjEuvB,EAAgBD,GAA6BtvB,GACnD,OAAAnhB,EAAAA,EAAAA,GAAA,CACEoV,cAAAA,EACAsJ,oBAAAA,GACGgyB,EAEP,IAEF,KACc,EAChB,GAAG,CAAC+E,IAEEO,GAAa1nC,EAAAA,EAAAA,UAAQ,WAEzB,OADyBvH,IAAAA,MAAQ0a,IAA0B,CAAC,GAApDjB,YAEV,GAAG,CAACiB,IAEEw0B,GAAY3nC,EAAAA,EAAAA,UAAQ,WAExB,OADavH,IAAAA,IAAM0a,GAAuB,SAAAy0B,GAAe,OAAAA,EAAZ11B,YAA+B,KAC7D,EACjB,GAAG,CAACiB,IAEE00B,GAAe7nC,EAAAA,EAAAA,UAAQ,WAC3B,GAAIvH,IAAAA,QAAUwa,GACZ,MAAO,GAET,IAAMN,EAAMla,IAAAA,IAAMwa,GAAoB,SAAAK,GAAK,OAAIH,EAAsBG,IAAUH,EAAsBG,GAAOpB,YAAY,IACxH,OAAOzZ,IAAAA,QAAUka,IAAQ,EAC3B,GAAG,CAACQ,EAAuBF,IAIrB7M,GAAsBpG,EAAAA,EAAAA,UAAQ,WAgBlC,OAdYvH,IAAAA,IAAM0a,GAAuB,SAAA20B,GAAsC,IAAnC51B,EAAY41B,EAAZ51B,aAAcpM,EAAagiC,EAAbhiC,cAClDlB,GAAKlT,EAAAA,EAAAA,GAAA,GAAQwgB,GACbxL,EAAa,GAUnB,OARAjO,IAAAA,KAAOqN,GAAe,SAAAiiC,GAAwB,IAArB/4B,EAAa+4B,EAAb/4B,cAEvBvW,IAAAA,KAAOuW,GAAe,SAACe,GACjBA,EAAUpJ,oBACZD,EAAW2I,KAAKU,EAEpB,GACF,IACO,CAAEnL,MAAAA,EAAO8B,WAAAA,EAClB,KACc,EAChB,GAAG,CAACyM,IAEE60B,GAA4B3hC,EAAAA,EAAAA,cAAY,SAACk6B,GAC7CluB,EAAmBkuB,GACnBmF,EAAmB/uC,QAAU,IAC/B,GAAG,CAAC0b,IAEJ,MAAO,CAELY,mBAAAA,EACA2xB,sBAAAA,EACAvyB,mBAAoB21B,EAEpB9hC,mBAAoBy/B,EACpBrB,oBAAAA,EACAC,wBAAAA,EACAE,mCAAAA,EACAnyB,wBAAyB60B,EACzBc,yBAA0BV,EAC1BL,iCAAAA,EACAE,kCAAAA,EACAM,WAAAA,EACAC,UAAAA,EACAE,aAAAA,EACA30B,eAAAA,EACA9M,oBAAAA,EAEJ,EE3ba8hC,GAAwB,CACnCC,IAAK,CACHC,UAAWrN,GAAiBv5B,kBAC5B6mC,eAAgBtN,GAAiBt5B,2BACjC6mC,YAAavN,GAAiBr5B,oBAC9B6mC,cAAexN,GAAiBp5B,uBAGlC6mC,KAAM,CACJJ,UAAWrN,GAAiBn5B,mCAC5B0mC,YAAavN,GAAiB34B,iCAC9BqmC,qBAAsB1N,GAAiBj5B,uCACvC4mC,aAAc3N,GAAiB74B,yBAC/BymC,iBAAkB5N,GAAiB54B,4BAGrCymC,OAAQ,CACNC,eAAgB9N,GAAiBz4B,uCACjCwmC,aAAc/N,GAAiB14B,iCAC/B0mC,WAAYhO,GAAiBv4B,uBAC7BwmC,UAAWjO,GAAiBl5B,0BAC5BonC,cAAelO,GAAiBl4B,8BAChCqmC,YAAanO,GAAiB/4B,4BAC9BmnC,iBAAkBpO,GAAiBt4B,kCACnC2mC,YAAarO,GAAiBp4B,6BAGhC0mC,KAAM,CACJC,oBAAqBvO,GAAiBn3B,sCACtC2lC,kBAAmBxO,GAAiBr3B,wCACpC8lC,kBAAmBzO,GAAiBp3B,gCACpC8lC,iBAAkB1O,GAAiB/2B,2BACnC0lC,aAAc3O,GAAiB92B,uBAC/BykC,aAAc3N,GAAiBl3B,8BAC/B8kC,iBAAkB5N,GAAiBj3B,gCACnC2kC,qBAAsB1N,GAAiBh3B,4CACvC4lC,oBAAqB5O,GAAiBx4B,kDACtCqnC,uBAAwB7O,GAAiB94B,uCACzC4nC,iBAAkB9O,GAAiBn4B,gCACnCknC,sBAAuB/O,GAAiBr4B,sCACxCqnC,cAAehP,GAAiBpuB,6BAChCq9B,MAAOjP,GAAiBC,YAG1BiP,OAAQ,CACNX,oBAAqBvO,GAAiBn3B,sCACtC2lC,kBAAmBxO,GAAiBr3B,wCACpC8lC,kBAAmBzO,GAAiBp3B,gCACpC8lC,iBAAkB1O,GAAiB/2B,2BACnC0lC,aAAc3O,GAAiB92B,uBAC/B0lC,oBAAqB5O,GAAiBx4B,kDACtCqnC,uBAAwB7O,GAAiB94B,uCACzC4nC,iBAAkB9O,GAAiBn4B,gCACnCknC,sBAAuB/O,GAAiBr4B,sCACxCqnC,cAAehP,GAAiBpuB,6BAChCq9B,MAAOjP,GAAiBC,YAG1BkP,MAAO,CACLC,yBAA0BpP,GAAiBpxB,kCAC3CygC,yBAA0BrP,GAAiBnxB,kCAC3CygC,yBAA0BtP,GAAiBlxB,kCAC3CygC,yBAA0BvP,GAAiBjxB,kCAC3CygC,yBAA0BxP,GAAiBhxB,kCAC3CygC,yBAA0BzP,GAAiB/wB,kCAC3CygC,wBAAyB1P,GAAiB9wB,iCAC1CygC,iBAAkB3P,GAAiB7wB,gCACnCygC,aAAc5P,GAAiB5wB,wBAC/BygC,UAAW7P,GAAiBE,iBAC5B4P,aAAc9P,GAAiBG,oBAC/B4P,OAAQ/P,GAAiBI,aACzB4P,iBAAkBhQ,GAAiB3wB,iCACnC4gC,UAAWjQ,GAAiB1wB,yBAG9B4gC,SAAU,CACRlB,cAAehP,GAAiBzwB,+BAChCs/B,uBAAwB7O,GAAiBxwB,yCAEzC69B,UAAWrN,GAAiBj4B,0CAC5BwlC,YAAavN,GAAiBv3B,wCAE9B0nC,qBAAsBnQ,GAAiB93B,8CACvCwlC,qBAAsB1N,GAAiBh4B,8CAEvCooC,kBAAmBpQ,GAAiB73B,mCACpCkoC,kBAAmBrQ,GAAiB53B,mCACpCulC,aAAc3N,GAAiB33B,gCAC/BulC,iBAAkB5N,GAAiB13B,kCACnCgoC,kBAAmBtQ,GAAiBt3B,kCAEpC6nC,uBAAwBvQ,GAAiB/3B,kDACzCuoC,sBAAuBxQ,GAAiBz3B,iDACxCkoC,qBAAsBzQ,GAAiBx3B,iDAGzCkoC,QAAS,CACPC,OAAQ3Q,GAAiBK,oBACzBuQ,IAAK5Q,GAAiBM,kBAGxBuQ,WAAY,CACVF,OAAQ3Q,GAAiBO,mBACzBuQ,QAAS9Q,GAAiBQ,oBAC1B1/B,KAAMk/B,GAAiBS,kBAGzBsQ,WAAY,CACV3D,IAAK,CACHC,UAAWrN,GAAiBvwB,6BAC5B69B,eAAgBtN,GAAiBtwB,sCACjC69B,YAAavN,GAAiBrwB,+BAC9B69B,cAAexN,GAAiBpwB,kCAGlC69B,KAAM,CACJJ,UAAWrN,GAAiBnwB,8CAC5B09B,YAAavN,GAAiBlwB,4CAC9B49B,qBAAsB1N,GAAiBjwB,kDACvC49B,aAAc3N,GAAiBhwB,oCAC/B49B,iBAAkB5N,GAAiB/vB,uCAGrC49B,OAAQ,CACNC,eAAgB9N,GAAiB1vB,kDACjCy9B,aAAc/N,GAAiBzvB,4CAC/By9B,WAAYhO,GAAiBxvB,kCAC7By9B,UAAWjO,GAAiBvvB,qCAC5By9B,cAAelO,GAAiBtvB,yCAChCy9B,YAAanO,GAAiBrvB,uCAC9By9B,iBAAkBpO,GAAiBpvB,6CACnCy9B,YAAarO,GAAiBnvB,wCAGhC6/B,QAAS,CACPC,OAAQ3Q,GAAiBU,+BACzBkQ,IAAK5Q,GAAiBW,6BAGxBkQ,WAAY,CACV/vC,KAAMk/B,GAAiBY,6BAGzBuO,MAAO,CACLQ,iBAAkB3P,GAAiB9vB,2CACnC0/B,aAAc5P,GAAiB7vB,mCAC/B0/B,UAAW7P,GAAiBa,4BAC5BiP,aAAc9P,GAAiBc,+BAC/BiP,OAAQ/P,GAAiBe,wBACzBiP,iBAAkBhQ,GAAiB5vB,4CACnC6/B,UAAWjQ,GAAiB3vB,oCAG9Bi+B,KAAM,CACJC,oBAAqBvO,GAAiB/tB,iDACtCu8B,kBAAmBxO,GAAiBhuB,mDACpCy8B,kBAAmBzO,GAAiBluB,2CACpC48B,iBAAkB1O,GAAiBjuB,sCACnC48B,aAAc3O,GAAiBnuB,kCAC/B87B,aAAc3N,GAAiB7tB,yCAC/By7B,iBAAkB5N,GAAiB5tB,2CACnCs7B,qBAAsB1N,GAAiB9tB,uDACvC08B,oBAAqB5O,GAAiBvtB,6DACtCo8B,uBAAwB7O,GAAiBttB,kDACzCo8B,iBAAkB9O,GAAiBrtB,2CACnCo8B,sBAAuB/O,GAAiBptB,iDACxCo8B,cAAehP,GAAiBntB,yCAGlCq8B,OAAQ,CACNX,oBAAqBvO,GAAiBn3B,sCACtC2lC,kBAAmBxO,GAAiBr3B,wCACpC8lC,kBAAmBzO,GAAiBp3B,gCACpC8lC,iBAAkB1O,GAAiB/2B,2BACnC0lC,aAAc3O,GAAiB92B,uBAC/B0lC,oBAAqB5O,GAAiBx4B,kDACtCqnC,uBAAwB7O,GAAiB94B,uCACzC4nC,iBAAkB9O,GAAiBn4B,gCACnCknC,sBAAuB/O,GAAiBr4B,sCACxCqnC,cAAehP,GAAiBpuB,+BAIpC2J,iBAAkB,CAChBza,KAAMk/B,GAAiBgB,kBACvB8P,QAAS9Q,GAAiBiB,0BAC1B0P,OAAQ3Q,GAAiBkB,0BAG3B5lB,cAAe,CACb01B,QAAShR,GAAiBmB,gBAG5B8P,SAAU,CACRC,UAAW,CACTC,mBAAoBnR,GAAiBlvB,wCACrCsgC,kBAAmBpR,GAAiBjvB,wCAEtCsgC,OAAQ,CACNF,mBAAoBnR,GAAiB7uB,qCACrCigC,kBAAmBpR,GAAiB5uB,qCAEtCkgC,SAAU,CACRF,kBAAmBpR,GAAiBxuB,wCAIxC+/B,cAAe,CACbC,gBAAiBxR,GAAiB3tB,iCAClCo/B,YAAazR,GAAiBqB,6BAC9BqQ,WAAY1R,GAAiBxtB,4BAC7Bm/B,sBAAuB3R,GAAiBztB,wCACxCs+B,WAAY7Q,GAAiB1tB,4BAC7Bs/B,eAAgB5R,GAAiBoB,mCAIrC+L,GAAsBC,IAAIyE,IAAM,CAC9B7R,GAAiBv5B,kBACjBu5B,GAAiBt5B,2BACjBs5B,GAAiBr5B,oBACjBq5B,GAAiBp5B,uBAGnBumC,GAAsBM,KAAKoE,IAAM,CAC/B7R,GAAiBn5B,mCACjBm5B,GAAiBj5B,uCACjBi5B,GAAiB74B,yBACjB64B,GAAiB54B,2BACjB44B,GAAiB34B,kCAGnB8lC,GAAsBU,OAAOgE,IAAM,CACjC7R,GAAiBz4B,uCACjBy4B,GAAiBv4B,uBACjBu4B,GAAiBl5B,0BACjBk5B,GAAiB/4B,4BACjB+4B,GAAiBt4B,kCACjBs4B,GAAiBp4B,4BACjBo4B,GAAiBl4B,8BACjBk4B,GAAiB14B,kCAGnB6lC,GAAsBmB,KAAKuD,IAAM,CAC/B7R,GAAiB92B,uBACjB82B,GAAiBr3B,wCACjBq3B,GAAiBp3B,gCACjBo3B,GAAiBh3B,4CACjBg3B,GAAiBl3B,8BACjBk3B,GAAiBj3B,gCACjBi3B,GAAiBn3B,sCACjBm3B,GAAiB/2B,4BAGnBkkC,GAAsB+B,OAAO2C,IAAM,CACjC7R,GAAiB92B,uBACjB82B,GAAiBr3B,wCACjBq3B,GAAiBp3B,gCACjBo3B,GAAiBn3B,sCACjBm3B,GAAiB/2B,2BACjB+2B,GAAiBx4B,kDACjBw4B,GAAiB94B,uCACjB84B,GAAiBr4B,sCACjBq4B,GAAiBn4B,iCAGnBslC,GAAsB+B,OAAO4C,MAAQ,CACnC9R,GAAiB92B,uBACjB82B,GAAiBp3B,gCACjBo3B,GAAiBn3B,sCACjBm3B,GAAiB/2B,2BACjB+2B,GAAiBx4B,kDACjBw4B,GAAiB94B,uCACjB84B,GAAiBr4B,sCACjBq4B,GAAiBn4B,gCACjBm4B,GAAiBpuB,8BAGnBu7B,GAAsB+C,SAAS2B,IAAM,CACnC7R,GAAiBj4B,0CACjBi4B,GAAiBh4B,8CACjBg4B,GAAiB/3B,kDACjB+3B,GAAiB93B,8CACjB83B,GAAiB73B,mCACjB63B,GAAiB53B,mCACjB43B,GAAiB33B,gCACjB23B,GAAiB13B,kCACjB03B,GAAiBz3B,iDACjBy3B,GAAiBx3B,gDACjBw3B,GAAiBv3B,wCACjBu3B,GAAiBt3B,mCAGnBykC,GAAsB+C,SAAS4B,MAAQ,CACrC9R,GAAiBzwB,+BACjBywB,GAAiB/3B,kDACjB+3B,GAAiB93B,8CACjB83B,GAAiBxwB,yCACjBwwB,GAAiBz3B,iDACjBy3B,GAAiBx3B,gDACjBw3B,GAAiBv3B,wCACjBu3B,GAAiBh4B,8CACjBg4B,GAAiB53B,oCAGnB+kC,GAAsB0D,WAAWgB,IAAM,CACrC7R,GAAiBS,iBACjBT,GAAiBQ,oBACjBR,GAAiBO,oBAGnB4M,GAAsBgC,MAAM0C,IAAM,CAChC7R,GAAiBpxB,kCACjBoxB,GAAiBnxB,kCACjBmxB,GAAiBlxB,kCACjBkxB,GAAiBjxB,kCACjBixB,GAAiBhxB,kCACjBgxB,GAAiB/wB,kCACjB+wB,GAAiB9wB,iCACjB8wB,GAAiB7wB,gCACjB6wB,GAAiB5wB,wBACjB4wB,GAAiBE,iBACjBF,GAAiBG,oBACjBH,GAAiBI,aACjBJ,GAAiB3wB,iCACjB2wB,GAAiB1wB,yBAGnB69B,GAAsB5xB,iBAAiBs2B,IAAM,CAC3C7R,GAAiBgB,kBACjBhB,GAAiBiB,0BACjBjB,GAAiBkB,0BAGnBiM,GAAsB7xB,cAAcu2B,IAAM,CACxC7R,GAAiBmB,gBAGnBgM,GAAsB8D,SAASY,IAAM,CACnC7R,GAAiBlvB,wCACjBkvB,GAAiBjvB,uCAEjBivB,GAAiB7uB,qCACjB6uB,GAAiB5uB,oCAEjB4uB,GAAiBxuB,uC,oBCzVN8E,GAAuB,SAAH3gB,GAQ1B,IAPLwgB,EAAkBxgB,EAAlBwgB,mBACAI,EAAgB5gB,EAAhB4gB,iBACAE,EAAkB9gB,EAAlB8gB,mBACAC,EAAmB/gB,EAAnB+gB,oBACAC,EAAyBhhB,EAAzBghB,0BACAP,EAAyBzgB,EAAzBygB,0BAAyB27B,EAAAp8C,EACzBihB,WAAAA,OAAU,IAAAm7B,OAAG/qC,EAAS+qC,EAEtB,OAAK57B,GAAsBA,IAAuB67B,GAAAA,GAAsBC,KAIpE77B,GAA6BD,IAAuB67B,GAAAA,GAAsBE,aAAe97B,EAA0BC,eAAiBQ,GAAAA,GAAgBs7B,WAIpJh8B,IAAuB67B,GAAAA,GAAsBI,mBAHxC,KAOJz7B,EAIDC,GAAcA,IACT,KAGF,CACLH,mBAAAA,EACAC,oBAAAA,EACAC,0BAAAA,EACAJ,iBAAAA,GAXO,KAZA,IAyBX,EAEa87B,GAAyB,SAAHvoC,GAK5B,IAJL0C,EAAS1C,EAAT0C,UACAjC,EAAaT,EAAbS,cACAkC,EAAiB3C,EAAjB2C,kBAAiB6lC,EAAAxoC,EACjBk9B,qBAAAA,OAAoB,IAAAsL,GAAQA,EAExBC,EAAe,CAAC,EACpB,GAAI/lC,EAAUlC,aAAc,CAC1B,IAAQA,EAAiBkC,EAAjBlC,aACRioC,EAAe,CACbh8B,iBAAkBjM,EAAaiM,iBAC/BE,mBAAoBnM,EAAamM,mBACjCC,oBAAqBpM,EAAaoM,oBAClCC,0BAA2BrM,EAAaqM,0BACxCP,0BAA2B9L,EAAa8L,0BACxCD,mBAAoB7L,EAAa6L,mBAErC,KAAO,KAAI3J,EAAUnC,QAGnB,MAAO,GAFPkoC,GAAeC,EAAAA,GAAAA,IAAWhmC,EAAUnC,QAASmC,EAAUzC,IAGzD,CAEA,IAAA0oC,EAOIF,EANF97B,EAAkBg8B,EAAlBh8B,mBACAC,EAAmB+7B,EAAnB/7B,oBAC2Bg8B,EAAiCD,EAA5D97B,0BACAP,EAAyBq8B,EAAzBr8B,0BACAG,EAAgBk8B,EAAhBl8B,iBACAJ,EAAkBs8B,EAAlBt8B,mBAGI+wB,EAAexpC,IAAAA,MAAQ+O,EAAmB,eAC1CtW,EAAQ6wC,EAAuBx6B,EAAUvC,cAAgBuC,EAAUrW,MACnEc,EAAS+vC,EAAuBx6B,EAAUtC,eAAiBsC,EAAUvV,OACrEgwC,EAAa18B,GAAiB,CAClC+C,YAAanX,EACbqX,aAAcvW,EACdyW,QAAS,EACTE,QAAS,GAGL+kC,EAA+Bj1C,IAAAA,IAAMwpC,GAAc,SAACC,GACxD,IAAMyL,EAAcl1C,IAAAA,KAAOg1C,GAAmC,SAAA5nC,GAAc,OAAAA,EAAXqC,cAAkCg6B,CAAK,IACxG,OAAOyL,EAAcA,EAAYppC,iBAAcxC,CACjD,IAEM6rC,EAA+Bn1C,IAAAA,IAAMwpC,GAAc,SAACC,GACxD,IAAMyL,EAAcl1C,IAAAA,KAAO0Y,GAA2B,SAAA3K,GAAc,OAAAA,EAAX0B,cAAkCg6B,CAAK,IAChG,OAAOyL,EAAcA,EAAYppC,aAAW7S,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAQ0vC,GAAyBY,EAAYE,IAAM,IAAE9wB,aAAcQ,GAAAA,GAAgBi8B,YACjI,IAwBA,OAtBsBp1C,IAAAA,IAAMi1C,GAA8B,SAACI,EAAqBx6B,GAC9E,IAAMy6B,EAAoB18B,GAAqB,CAC7CH,mBAAAA,EACAI,iBAAAA,EACAE,mBAAAA,EACAC,oBAAAA,EACAC,0BAA2Bo8B,EAC3B38B,0BAA2By8B,EAA6Bt6B,KAG1D,OAAIy6B,GACFr8C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKq8C,GAAiB,IACpBhnC,kBAAmB6mC,EAA6Bt6B,KAI7C,CACLvM,kBAAmB6mC,EAA6Bt6B,GAEpD,GAGF,EChBM06B,IAAuBC,GAAA,IAAA3sC,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAE1B3R,GAAG6L,IAAIC,UAAY7c,IACnB+Q,GAAG6L,IAAIE,eAAiB7c,IACxB8Q,GAAG6L,IAAIG,YAAc5c,IACrB4Q,GAAG6L,IAAII,cAAgB5c,IAGvB2Q,GAAGkM,KAAKJ,UAAYxc,IACpB0Q,GAAGkM,KAAKF,YAActc,IACtBsQ,GAAGkM,KAAKC,qBAAuB5c,IAC/ByQ,GAAGkM,KAAKE,aAAe5c,IACvBwQ,GAAGkM,KAAKG,iBAAmB5c,IAE3BuQ,GAAGsM,OAAOC,eAAiBrc,KAAkDlrB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAC7E3R,GAAGsM,OAAOE,aAAe3b,IACzBmP,GAAGsM,OAAOG,WAAanc,IACvB0P,GAAGsM,OAAOI,UAAYnc,IACtByP,GAAGsM,OAAOK,cAAgB/b,IAC1BoP,GAAGsM,OAAOM,YAAcnc,IACxBuP,GAAGsM,OAAOO,iBAAmBnc,IAC7BsP,GAAGsM,OAAOQ,YAAcnc,IAGxBqP,GAAG+M,KAAKC,oBAAsBtd,IAC9BsQ,GAAG+M,KAAKE,kBAAoB3d,IAC5B0Q,GAAG+M,KAAKG,kBAAoBhe,KAAmClqB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAC/D3R,GAAG+M,KAAKI,iBAAmB9d,IAC3B2Q,GAAG+M,KAAKK,aAAene,IACvB+Q,GAAG+M,KAAKX,aAAe5c,IACvBwQ,GAAG+M,KAAKV,iBAAmB5c,IAC3BuQ,GAAG+M,KAAKZ,qBAAuB5c,IAC/ByQ,GAAG+M,KAAKM,oBAAsBnd,IAC9B8P,GAAG+M,KAAKO,uBAAyB7c,IACjCuP,GAAG+M,KAAKQ,iBAAmB5c,IAC3BqP,GAAG+M,KAAKS,sBAAwB9c,IAChCsP,GAAG+M,KAAKU,cAAgBld,KAAsCvrB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAC9D3R,GAAG+M,KAAKW,MAAQ7R,IAGhBmE,GAAG2O,SAAS7C,UAAYhb,IACxBkP,GAAG2O,SAASxC,qBAAuBpb,IACnCiP,GAAG2O,SAASK,uBAAyBhe,IACrCgP,GAAG2O,SAASC,qBAAuB3d,IACnC+O,GAAG2O,SAASE,kBAAoB3d,IAChC8O,GAAG2O,SAASG,kBAAoB3d,IAChC6O,GAAG2O,SAASvC,aAAehb,IAC3B4O,GAAG2O,SAAStC,iBAAmBhb,IAC/B2O,GAAG2O,SAASM,sBAAwBzd,KAA6CxsB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GACjF3R,GAAG2O,SAASO,qBAAuBvd,IACnCqO,GAAG2O,SAAS3C,YAAc1a,IAC1B0O,GAAG2O,SAASI,kBAAoBxd,IAChCyO,GAAG2O,SAASlB,cAAgBld,IAC5ByP,GAAG2O,SAASrB,uBAAyB7c,IAGrCuP,GAAGmP,QAAQC,OAAS/b,IACpB2M,GAAGmP,QAAQE,IAAM9b,IACjByM,GAAGsP,WAAWF,OAAStc,IACvBkN,GAAGsP,WAAWC,QAAU1c,IACxBmN,GAAGsP,WAAW/vC,KAAOqzB,KAAyB5tB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAG9C3R,GAAGwP,WAAW3D,IAAIC,UAAYnT,IAC9BqH,GAAGwP,WAAW3D,IAAIE,eAAiBnT,IACnCoH,GAAGwP,WAAW3D,IAAIG,YAAcnT,IAChCmH,GAAGwP,WAAW3D,IAAII,cAAgBnT,IAGlCkH,GAAGwP,WAAWtD,KAAKJ,UAAY/S,IAC/BiH,GAAGwP,WAAWtD,KAAKF,YAAc7S,IACjC6G,GAAGwP,WAAWtD,KAAKC,qBAAuBnT,IAC1CgH,GAAGwP,WAAWtD,KAAKE,aAAenT,IAClC+G,GAAGwP,WAAWtD,KAAKG,iBAAmBnT,IAEtC8G,GAAGwP,WAAWlD,OAAOC,eAAiBrc,KAAkDlrB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GACxF3R,GAAGwP,WAAWlD,OAAOE,aAAe3b,IACpCmP,GAAGwP,WAAWlD,OAAOG,WAAanc,IAClC0P,GAAGwP,WAAWlD,OAAOI,UAAYnc,IACjCyP,GAAGwP,WAAWlD,OAAOK,cAAgB/b,IACrCoP,GAAGwP,WAAWlD,OAAOM,YAAcnc,IACnCuP,GAAGwP,WAAWlD,OAAOO,iBAAmBnc,IACxCsP,GAAGwP,WAAWlD,OAAOQ,YAAcnc,IAGnCqP,GAAGwP,WAAWL,QAAQC,OAAS5Y,IAC/BwJ,GAAGwP,WAAWL,QAAQE,IAAM5Y,IAC5BuJ,GAAGwP,WAAWF,WAAW/vC,KAAO65B,KAAmCp0B,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAGnE3R,GAAGjmB,cAAc01B,QAAUhU,IAG3BuE,GAAGhmB,iBAAiBza,KAAOw7B,IAC3BiF,GAAGhmB,iBAAiBu1B,QAAUvU,IAC9BgF,GAAGhmB,iBAAiBo1B,OAASlU,IAG7B8E,GAAGwP,WAAW5B,MAAMQ,kBtB1H0C,SAAH16B,GAAA,IAC5D6iB,EAAe7iB,EAAf6iB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAwW,EAAAk+B,IAAA,OAEPv2C,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,0CAA2C,sCAAsCx6B,UAC3HV,EAAAA,EAAAA,KAACud,IAA4BxjB,EAAAA,EAAAA,GAAA,GAAK0I,KAC9B,IsBqHLkiC,GAAGwP,WAAW5B,MAAMS,ctBvLkC,SAAHj6C,GAAA,IACpDmiC,EAAeniC,EAAfmiC,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAA9I,EAAA+I,IAAA,OAEP9B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,2CAA2Cx6B,UACrFV,EAAAA,EAAAA,KAACy/B,IAA+B1lC,EAAAA,EAAAA,GAAA,GAAK0I,KACjC,IsBkLLkiC,GAAGwP,WAAW5B,MAAMU,WtB7J4B,SAAHpkC,GAAA,IAC9CqsB,EAAersB,EAAfqsB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAgN,EAAAosB,IAAA,OAEPj7B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,0CAA2C,+BAA+Bx6B,UACpHV,EAAAA,EAAAA,KAACs/B,IAAyBvlC,EAAAA,EAAAA,GAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAU0I,GAAI,IAAEqnB,WAAW,OACjD,IsBwJL6a,GAAGwP,WAAW5B,MAAMW,ctBrJ+B,SAAHpkC,GAAA,IACjDosB,EAAepsB,EAAfosB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAiN,EAAA0tB,IAAA,OAEPx8B,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,0CAA2C,kCAAkCx6B,UACvHV,EAAAA,EAAAA,KAACu/B,IAA4BxlC,EAAAA,EAAAA,GAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAU0I,GAAI,IAAEqnB,WAAW,OACpD,IsBgJL6a,GAAGwP,WAAW5B,MAAMY,QtB7IyB,SAAHjkC,GAAA,IAC3CgsB,EAAehsB,EAAfgsB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAqN,EAAAsnC,IAAA,OAEPx2C,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,0CAA2C,2BAA2Bx6B,UAChHV,EAAAA,EAAAA,KAACw/B,IAAsBzlC,EAAAA,EAAAA,GAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAU0I,GAAI,IAAEqnB,WAAW,OAC9C,IsBwIL6a,GAAGwP,WAAW5B,MAAMa,kBtBlLmC,SAAHlmC,GAAA,IACrDguB,EAAehuB,EAAfguB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAqL,EAAAqX,IAAA,OAEPvkB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,2CAA2Cx6B,UACrFV,EAAAA,EAAAA,KAAC0+B,IAAgC3kC,EAAAA,EAAAA,GAAA,GAAK0I,KAClC,KsB4K4EkH,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GACjF3R,GAAGwP,WAAW5B,MAAMc,WtB1KmC,SAAHnlC,GAAA,IACrDgtB,EAAehtB,EAAfgtB,gBACGz4B,GAAIZ,EAAAA,EAAAA,GAAAqM,EAAAyW,IAAA,OAEP3kB,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWkR,EAAiB,2CAA2Cx6B,UACrFV,EAAAA,EAAAA,KAAC2+B,IAAgC5kC,EAAAA,EAAAA,GAAA,GAAK0I,KAClC,IsBuKLkiC,GAAGwP,WAAWzC,KAAKC,oBAAsB7T,IACzC6G,GAAGwP,WAAWzC,KAAKE,kBAAoBlU,IACvCiH,GAAGwP,WAAWzC,KAAKG,kBAAoBtU,IACvCoH,GAAGwP,WAAWzC,KAAKI,iBAAmBrU,IACtCkH,GAAGwP,WAAWzC,KAAKK,aAAezU,IAClCqH,GAAGwP,WAAWzC,KAAKX,aAAenT,IAClC+G,GAAGwP,WAAWzC,KAAKV,iBAAmBnT,IACtC8G,GAAGwP,WAAWzC,KAAKZ,qBAAuBnT,IAC1CgH,GAAGwP,WAAWzC,KAAKM,oBAAsBnd,KAAkDlrB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAC3F3R,GAAGwP,WAAWzC,KAAKO,uBAAyB7c,IAC5CuP,GAAGwP,WAAWzC,KAAKQ,iBAAmB5c,IACtCqP,GAAGwP,WAAWzC,KAAKS,sBAAwB9c,IAC3CsP,GAAGwP,WAAWzC,KAAKU,cAAgBld,IAGnCyP,GAAG4N,MAAMC,yBAA2B/T,IACpCkG,GAAG4N,MAAME,yBAA2BhU,IACpCkG,GAAG4N,MAAMG,yBAA2BjU,IACpCkG,GAAG4N,MAAMI,yBAA2BlU,IACpCkG,GAAG4N,MAAMK,yBAA2BnU,IACpCkG,GAAG4N,MAAMM,yBAA2BpU,KAAiC90B,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GACrE3R,GAAG4N,MAAMO,wBAA0BrU,IACnCkG,GAAG4N,MAAMQ,iBAAmBvU,IAC5BmG,GAAG4N,MAAMS,aAAevT,IACxBkF,GAAG4N,MAAMU,UAAY3T,IACrBqF,GAAG4N,MAAMW,aAAe3T,IACxBoF,GAAG4N,MAAMY,OAAS3T,IAClBmF,GAAG4N,MAAMa,iBAAmB1U,IAC5BiG,GAAG4N,MAAMc,UAAY1U,IAGrBgG,GAAG0P,SAASC,UAAUC,mBAAqBjb,IAC3CqL,GAAG0P,SAASC,UAAUE,kBAAoBjb,KAAoC5vB,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,GAAA2sC,GAE9E3R,GAAG0P,SAASI,OAAOF,mBAAqBjb,IACxCqL,GAAG0P,SAASI,OAAOD,kBAAoBjb,IAEvCoL,GAAG0P,SAASK,SAASF,kBAAoBjb,IAGzCoL,GAAGgQ,cAAcC,gBAAkB3X,IACnC0H,GAAGgQ,cAAcV,WAAa/X,IAC9ByI,GAAGgQ,cAAcK,eAAiB7Y,IAClCwI,GAAGgQ,cAAcI,sBAAwB3Y,IACzCuI,GAAGgQ,cAAcE,YAAcxZ,IAC/BsJ,GAAGgQ,cAAcG,WAAapa,KAGpB+b,GAA0B,SAAA3pC,GAAa,OAAIupC,GAAwBvpC,EAAe,E,8BC9LlF8O,GAAsB0F,GAxCkB,SAArCvoB,GAMT,IALLse,EAAate,EAAbse,cACAwpB,EAAiB9nC,EAAjB8nC,kBACA6V,EAAiB39C,EAAjB29C,kBACAC,EAA4B59C,EAA5B49C,6BACA52C,EAAOhH,EAAPgH,QAEM62C,GAAYvuC,EAAAA,EAAAA,UAAQ,WACxB,OAAIquC,EACKA,EAAkBr/B,GAEpB,IACT,GAAG,CAACq/B,EAAmBr/B,IAEjBw/B,GAAyBxuC,EAAAA,EAAAA,UAAQ,WAgBrC,OAfYvH,IAAAA,IAAMuW,GAAe,SAACe,EAAWuD,GAC3C,IAAAzO,EAA2CkL,GAAa,CAAC,EAAjDjJ,EAAajC,EAAbiC,cAAe+L,EAAMhO,EAANgO,OAAWzY,GAAIZ,EAAAA,EAAAA,GAAAqL,EAAApL,IACtCoM,EAA0CiB,GAAiB,CAAC,EAApDrC,EAAaoB,EAAbpB,cAAe+3B,EAAc32B,EAAd22B,eACjBiS,EAAuBL,GAAwB3pC,GACrD,GAAIgqC,EAAsB,CAExB,IAAIC,EAAe3+B,EACnB,IAAKysB,IAAmB/jC,IAAAA,QAAUoa,GAAS,CACzC,IAAMuvB,EAAgBD,GAA6BtvB,IAAW,CAAC,EAC/D67B,GAAYh9C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKoV,cAAAA,GAAkBs7B,GAAkBhoC,EACvD,CACA,OAAOo+B,EAAkBkW,EAAcD,EAAsBn7B,EAC/D,CACA,OAAO,IACT,GAEF,GAAG,CAACklB,EAAmBxpB,IAEvB,OAAQvW,IAAAA,QAAU+1C,GAIdD,GAHF52C,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQi3C,6BAA8BL,GAA8Bj2C,SAC5Fm2C,GAGP,IC/D4C,WAAC,MAA6C,CACxFG,6BAA8B,CAC5B39C,QAAS,QAEZ,GDgEC,CAAEuoB,cAAe,wB,8BEAN9F,GAAiCwF,GA1ChB,SAAHvoB,GAOpB,IANLi5B,EAAaj5B,EAAbi5B,cACA6O,EAAiB9nC,EAAjB8nC,kBACA6V,EAAiB39C,EAAjB29C,kBACAO,EAAwBl+C,EAAxBk+C,yBAAwBC,EAAAn+C,EACxBo+C,aAAAA,OAAY,IAAAD,GAAOA,EACnBn3C,EAAOhH,EAAPgH,QAEM62C,GAAYvuC,EAAAA,EAAAA,UAAQ,WACxB,OAAIquC,EACKA,EAAkB1kB,GAEpB,IACT,GAAG,CAAC0kB,EAAmB1kB,IAEjBolB,GAAqB/uC,EAAAA,EAAAA,UAAQ,WACjC,IAAA6E,EAA2C8kB,GAAiB,CAAC,EAArD7iB,EAAajC,EAAbiC,cAAe+L,EAAMhO,EAANgO,OAAWzY,GAAIZ,EAAAA,EAAAA,GAAAqL,EAAApL,IACtCoM,EAAkDiB,GAAiB,CAAC,EAA5DrC,EAAaoB,EAAbpB,cAAauqC,EAAAnpC,EAAE22B,eAAAA,OAAc,IAAAwS,GAAQA,EACvCP,EAAuBL,GAAwB3pC,GACrD,GAAIgqC,EAAsB,CAExB,IAAKjS,IAAmB/jC,IAAAA,QAAUoa,GAAS,CACzC,IAAMuvB,EAAgBD,GAA6BtvB,IAAW,CAAC,EACzD67B,GAAYh9C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKoV,cAAAA,GAAkBs7B,GAAkBhoC,GAC3D,OAAOo+B,EAAkBkW,EAAcD,EACzC,CACA,OAAOjW,EAAkB7O,EAAe8kB,EAC1C,CACA,OAAO,IACT,GAAG,CAACjW,EAAmB7O,IAEvB,OAAOmlB,GACLn3C,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQu3C,yBAA0BL,EAA0B,oBAAoBv2C,SACxG02C,GAAsBR,KAGzB52C,EAAAA,EAAAA,KAAAkC,EAAAA,SAAA,CAAAxB,SACG02C,GAAsBR,GAG7B,IClEuD,WAAC,MAA6C,CACnGU,yBAA0B,CAC1B,EACD,GDoEC,CAAE11B,cAAe,mC,4HElEb21B,GAAU,CACdC,QAAS,YAWEC,GAAiB,SAACp5C,GAC7B,IAAMq5C,GAAchpB,EAAAA,EAAAA,QAAO,MAIzBmI,GAKEx4B,EAPF04B,SAOE14B,EANFs5C,WAMEt5C,EALFw4B,aACAn2B,EAIErC,EAJFqC,SACAk3C,EAGEv5C,EAHFu5C,iBACAC,EAEEx5C,EAFFw5C,yBACGp1C,GAAIZ,EAAAA,EAAAA,GACLxD,EAAKyD,IAETssB,GAAgDC,EAAAA,EAAAA,UAAS,MAAKC,GAAAC,EAAAA,GAAAA,GAAAH,EAAA,GAAvD0pB,EAAgBxpB,EAAA,GAAEypB,EAAmBzpB,EAAA,IAE5CsO,EAAAA,EAAAA,YAAU,WACHkb,GACHC,EAAoBL,EAAY14C,QAEpC,GAAG,CAAC84C,IAEJ,IAAAE,GAA8C3vC,EAAAA,EAAAA,UAAQ,WACpD,OAAIyvC,EACKA,EAAiBG,gBAAcl+C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIsE,GAAK,IAAEk5C,QAAAA,MAE9C,MAACntC,OAAWA,EACrB,GAAG,CAAC0tC,EAAkBz5C,IAAO65C,GAAA3pB,EAAAA,GAAAA,GAAAypB,EAAA,GALtBG,EAAgBD,EAAA,GAAEE,EAAiBF,EAAA,GAO1C,OACEp0C,EAAAA,EAAAA,MAAA,OAAKxD,UAAWC,IAAW,mBAAoBs3C,GAA0Bn3C,SAAA,EACvEV,EAAAA,EAAAA,KAACq4C,GAAAA,GAAUt+C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACTsG,IAAKq3C,EACL7gB,YAAaA,EACbE,UAAU,EACV4gB,YAAY,GACRl1C,GAAI,IAAA/B,SAEPA,MAEHoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,0CAAyCI,SAAA,CAErDy3C,EACAL,EAAmBA,EAAiBQ,iBAAiB53C,EAAUm2B,EAAa0gB,IAAW,KACvFa,EAECR,GAAmB9zC,EAAAA,EAAAA,MAAA5B,EAAAA,SAAA,CAAAxB,SAAA,CAAE,IAAEk3C,EAAiB,OAAO,UAKzD,EAWAH,GAAe92C,cAAY5G,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEtBs+C,GAAAA,EAAW13C,cAAY,IAE1Bo2B,UAAU,EACV4gB,YAAY,EACZj3C,SAAU,KACVk3C,iBAAkB,KAClBC,yBAA0B,OAG5BJ,GAAec,QAAUF,GAAAA,EAAWE,QACpCd,GAAexgB,KAAOohB,GAAAA,EAAWphB,K,gEC1EpBpuB,GAAiB,SAAH9P,GAkBpB,IAjBL89B,EAAW99B,EAAX89B,YACA2hB,EAAcz/C,EAAdy/C,eACAz4C,EAAOhH,EAAPgH,QACA04C,EAA2B1/C,EAA3B0/C,4BACAC,EAA0B3/C,EAA1B2/C,2BACAC,EAA4B5/C,EAA5B4/C,6BACA7vC,EAAgB/P,EAAhB+P,iBACA8vC,EAAiB7/C,EAAjB6/C,kBACAl2C,EAAI3J,EAAJ2J,KACAg0C,EAAiB39C,EAAjB29C,kBACA7V,EAAiB9nC,EAAjB8nC,kBACAgY,EAAmB9/C,EAAnB8/C,oBACAjY,EAAc7nC,EAAd6nC,eACAvpB,EAAate,EAAbse,cACAyhC,EAAoB//C,EAApB+/C,qBACAC,EAAiBhgD,EAAjBggD,kBACAC,EAA8BjgD,EAA9BigD,+BAEA5qB,GAA0BC,EAAAA,EAAAA,UAAS,GAAEC,GAAAC,EAAAA,GAAAA,GAAAH,EAAA,GAA9BzS,EAAK2S,EAAA,GAAE2qB,EAAQ3qB,EAAA,GAGhB4qB,EAAkBp4C,IAAAA,YAAc+1B,GAA6Blb,EAAdkb,EAC/CsiB,EAAcX,GAAkBS,EAEtCG,GAAkC/qB,EAAAA,EAAAA,UAAS,QAAOgrB,GAAA9qB,EAAAA,GAAAA,GAAA6qB,EAAA,GAA3C7iB,EAAS8iB,EAAA,GAAEC,EAAYD,EAAA,GAC9BE,GAAwBlrB,EAAAA,EAAAA,UAASvlB,GAAoB8vC,GAAkBY,GAAAjrB,EAAAA,GAAAA,GAAAgrB,EAAA,GAAhEE,EAAID,EAAA,GAAEE,EAAOF,EAAA,GACpBG,GAA4DtrB,EAAAA,EAAAA,WAAS,GAAMurB,GAAArrB,EAAAA,GAAAA,GAAAorB,EAAA,GAApEE,EAAsBD,EAAA,GAAEE,EAAyBF,EAAA,GAElDG,GAAqBrrB,EAAAA,EAAAA,QAAO,MAE5BkoB,GAAYvuC,EAAAA,EAAAA,UAAQ,WACxB,OAAIquC,EACKA,EAAkBr/B,GAEpB,IACT,GAAG,CAACq/B,EAAmBr/B,IAEjBw/B,GAAyBxuC,EAAAA,EAAAA,UAAQ,WAgBrC,OAfY4G,EAAAA,EAAAA,KAAIoI,GAAe,SAACe,EAAWwtB,GACzC,IAAA14B,EAA2CkL,GAAa,CAAC,EAAjDjJ,EAAajC,EAAbiC,cAAe+L,EAAMhO,EAANgO,OAAWzY,GAAIZ,EAAAA,EAAAA,GAAAqL,EAAApL,IACtCoM,EAA0CiB,GAAiB,CAAC,EAApDrC,EAAaoB,EAAbpB,cAAe+3B,EAAc32B,EAAd22B,eACjBiS,EAAuBL,GAAwB3pC,GACrD,GAAIgqC,EAAsB,CAExB,IAAIC,EAAe3+B,EACnB,IAAKysB,KAAmB/W,EAAAA,EAAAA,SAAQ5S,GAAS,CACvC,IAAMuvB,EAAgBD,GAA6BtvB,IAAW,CAAC,EAC/D67B,GAAYh9C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKoV,cAAAA,GAAkBs7B,GAAkBhoC,EACvD,CACA,MAAO,CAACo+B,EAAkBkW,EAAcD,EAAsBlR,GAAIxtB,EACpE,CACA,MAAO,CAAC,KAAMA,EAChB,GAEF,GAAG,CAACyoB,EAAmBxpB,IAEjB2iC,GAAyBtrC,EAAAA,EAAAA,cAAY,WACzC,GAAIkyB,EAAgB,CAClB,IAAMxoB,EAAYf,EAAgBA,EAAc6hC,GAAkB,KAClErqC,EAA2CuJ,GAAa,CAAC,EAAjDjJ,EAAaN,EAAbM,cAAe+L,EAAMrM,EAANqM,OAAWzY,GAAIZ,EAAAA,EAAAA,GAAAgN,EAAA0V,IAElCwyB,EAAe3+B,EACnB,KAF2BjJ,GAAiB,CAAC,GAArC01B,kBAEgB/W,EAAAA,EAAAA,SAAQ5S,GAAS,CACvC,IAAMuvB,EAAgBD,GAA6BtvB,IAAW,CAAC,EAC/D67B,GAAYh9C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKoV,cAAAA,GAAkBs7B,GAAkBhoC,EACvD,CACA,OAAOm+B,EAAemW,EAAcmC,EACtC,CACA,OAAO,IACT,GAAG,CAACA,EAAgBtY,EAAgBvpB,IAE9B4iC,GAA0BvrC,EAAAA,EAAAA,cAAY,WACtCqrC,EAAmB/6C,UACrBk7C,aAAaH,EAAmB/6C,SAChC+6C,EAAmB/6C,QAAU,KAEjC,GAAG,IAEGgK,GAAa0F,EAAAA,EAAAA,cAAY,SAACyrC,GAC9B,GAAKV,KAAQ3rB,EAAAA,EAAAA,SAAQzW,GAArB,CAKAyiC,GAA0B,GAE1B,IAAMM,EAAe/iC,EAAc9X,OAC/B86C,EAAYF,EAAe,EAC3BE,GAAaD,IACfC,EAAY,GAGdN,EAAmB/6C,QAAUs7C,YAAW,WACtCnB,EAAYkB,GACZf,EAAa,QACbtwC,EAAWqxC,EACb,GAnGuB,IAqFvB,CAeF,GAAG,CAACZ,EAAMN,EAAa9hC,IAEjBkjC,GAAQ7rC,EAAAA,EAAAA,cAAY,WACxB4qC,EAAa,QACbI,GAAQ,EACV,GAAG,IAEGc,GAAO9rC,EAAAA,EAAAA,cAAY,WACnB+qC,IACFC,GAAQ,GACRO,IACAH,GAA0B,GAE9B,GAAG,CAACG,EAAyBR,IAEvB3iB,GAAWpoB,EAAAA,EAAAA,cAAY,SAACioB,EAAexP,GAC3CqzB,IACArB,EAAYxiB,GAAiB,GAC7B2iB,EAAanyB,EAAEoP,UACjB,GAAG,CAAC4iB,EAAaqB,KAGjB5d,EAAAA,EAAAA,YAAU,WACJ6c,IAASI,GACX7wC,EAAWkwC,EAEf,GAAG,CAAClwC,EAAYywC,EAAMI,EAAwBX,KAE9Ctc,EAAAA,EAAAA,YAAU,WACJic,GACFA,EAAoBK,EAExB,GAAG,CAACA,EAAgBL,KAEpBjc,EAAAA,EAAAA,YAAU,kBAAM,WACdqd,GACF,CAAC,GAAE,CAACA,KAEJrd,EAAAA,EAAAA,YAAU,WACJvlB,GAAiBA,EAAc9X,OAAS,GAAK25C,GAAkB7hC,EAAc9X,QAC/Ei5C,EAAe,EAEnB,GAAG,CAACU,EAAgB7hC,EAAemhC,IAEnC,IAAMiC,EAAoB1B,EAAoBtB,GAAiB7gB,GAAAA,SACzD8jB,GAAoBryC,EAAAA,EAAAA,UACxB,kBAAO0wC,EAAoB,CACzBlB,yBAA0B7tB,IAAWgvB,EAAgCj5C,EAAQ46C,wBAC3E,CAAC,CAAC,GACN,CAAC56C,EAAQ46C,sBAAuB3B,EAAgCD,IAGlE,OAAQjrB,EAAAA,EAAAA,SAAQ+oB,GAmCZD,GAlCF9yC,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAWjqB,EAAQ66C,wBAAyBnC,EAA6B,2CAA2C/3C,SAAA,EAClIV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,iBAAgBI,SAC5Bs5C,OAEHh6C,EAAAA,EAAAA,KAACy6C,GAAiB1gD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAChB88B,YAAaqiB,EAAiB7hC,EAAc9X,OAAS25C,EAAiB,EACtE3iB,UAAWA,EACXQ,UAAU,EACVD,SAAUA,EACV8gB,iBAAkB9uC,GAAmB9I,EAAAA,EAAAA,KAAC66C,GAAAA,EAAgB,CACpDC,QAASp4C,EACTq4C,UAAWtB,EACXuB,KAAMT,EACNU,MAAOT,EACP1pB,oBAAqB6nB,GAAgC54C,EAAQm7C,mBAC1D,KACLC,UAAWz4C,EAAKQ,UAAUsoB,mBAC1B4vB,UAAW14C,EAAKQ,UAAUsoB,uBAC1BlrB,UAAW0pB,KAAY8uB,GAAwB/4C,EAAQs7C,kBAAmB3C,GAA8B34C,EAAQu7C,yBAA0B,yBACtIZ,GAAiB,IAAAh6C,SAGnBm2C,EAAuB5nC,KAAI,SAAAC,EAAkC0C,GAAS,IAADyG,GAAAkW,EAAAA,GAAAA,GAAArf,EAAA,GAAxCkoC,EAAkB/+B,EAAA,GAC7CkjC,EADwDljC,EAAA,IACE,CAAC,EAAnDlJ,EAAaosC,EAAbpsC,cAAe6jB,EAAiBuoB,EAAjBvoB,kBACvB,OAEEhzB,EAAAA,EAAAA,KAAC42B,GAAAA,SAASK,KAAI,CAAAv2B,SACX02C,GAAkB,OAAAx8C,OADMuU,EAAgBA,EAAcrC,cAAgB8E,EAAG,KAAAhX,OAAIo4B,EAAiB,KAAAp4B,OAAIgX,GAIzG,SAKV,EA6BA/I,GAAelI,aAAe,CAC5Bk2B,iBAAazsB,EACbouC,oBAAgBpuC,EAChBquC,4BAA6B,KAC7BC,2BAA4B,KAC5BC,6BAA8B,KAC9B7vC,kBAAkB,EAClB8vC,mBAAmB,EACnBlC,kBAAmB,KACnBmC,oBAAqB,KACrBjY,eAAgB,KAChBkY,sBAAsB,EACtBC,mBAAmB,EACnBC,+BAAgC,KAChCj5C,QAAS,CAAC,GAGL,IAAMoJ,GAA0BmY,EAAqBzY,ICvPrB,SAACrB,GAAU,IAAAzO,EAAA2oC,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAA2D,CAAC,EAAC1oC,EAAAD,EAAzDE,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA0D,EAAA3D,EAAE4D,eAAAA,OAAc,IAAAD,EAAG,oBAAmBA,EAAA,MAAa,CACnHk+C,wBAAyB,CACvBx/C,SAAU,WACV7B,MAAO,QAGT8hD,kBAAmB,CACjBjgD,SAAU,WAEV,oBAAqB,CACnBoB,cAAe,IAOjB,2BAA4B,CAC1BpB,SAAU,WACV7B,MAAO,OAEP,OAAQ,CACNoB,WAAY,OACZnB,OAAQ,oBACR8C,aAAc,GACdnD,OAAQ,aACRkB,OAAQ,GACRd,MAAO,IAGT,cAAe,CACboB,WAAY1B,EAAQ6B,aACpBtB,OAAO,aAADoB,OAAe3B,EAAQ6B,gBAIjC,uBAAwB,CACtBzB,QAAS,QAGX,sBAAuB,CACrB6B,MAAOjC,EAAQ6B,aACfM,SAAU,WACVwC,KAAM,OACNtC,IAAK,OACLC,MAAO,EACPgC,OAAQ,EACRlD,OAAQ,GACRd,MAAO,GACPJ,OAAQ,YACR+9B,WAAY,OACZv8B,WAAY,QAEZ,UAAW,CACT0G,QAAQ,aAADzG,OAAe3B,EAAQ+B,mBAGhC,SAAU,CACRI,SAAU,YAGZ,UAAW,CACTA,SAAU,YAGZ,wDAAyD,CACvDd,WAAYqC,EACZvB,SAAU,WACVE,IAAK,OACLC,MAAO,OACPgC,OAAQ,OACRK,KAAM,OACNzE,OAAQ,EACRgC,SAAU,GACVK,WAAY,EACZM,cAAe,KAIrBw/C,yBAA0B,CACxB,2BAA4B,CAC1B/9C,OAAQ,EACRK,KAAM,GACNzE,OAAQ,aAEV,2BAA4B,CAC1ByE,MAAO,EACPL,QAAS,GAEX,4BAA6B,CAC3BK,KAAM,IACNL,QAAS,IAGb29C,iBAAkB,CAChB9/C,SAAU,WACVwC,KAAM,IACNL,OAAQ,KACRlE,QAAS,qBAET,SAAU,CACR6B,MAAOjC,EAAQ6B,eAInB6/C,sBAAuB,CACrB,6CAA8C,CAC5CthD,QAAS,OACTkqB,cAAe,MACfppB,WAAY,SACZiB,SAAU,WACVmC,OAAQ,EACRpE,OAAQ,CAAC,GAAI,IAEb,2BAA4B,CAC1BiC,SAAU,sBACVE,IAAK,mBACLsC,KAAM,mBACNrC,MAAO,mBACPgC,OAAQ,iBACRpE,OAAQ,8BACRuC,QAAS,mBACTnC,MAAO,OAEP,OAAQ,CACNoB,WAAY,OACZnB,OAAQ,oBACR8C,aAAc,GACdnD,OAAQ,aACRkB,OAAQ,GACRd,MAAO,IAET,cAAe,CACboB,WAAY1B,EAAQ6B,aACpBtB,OAAO,aAADoB,OAAe3B,EAAQ6B,gBAIjC,sBAAuB,CACrBM,SAAU,sBACVjC,OAAQ,iBACRwB,WAAY,QACZW,IAAK,mBACLsC,KAAM,mBACNrC,MAAO,mBACPgC,OAAQ,mBACRrC,MAAOjC,EAAQ6B,aAEfT,OAAQ,GACRd,MAAO,GACP29B,WAAY,OAEZ,UAAW,CACT71B,QAAQ,aAADzG,OAAe3B,EAAQ+B,mBAGhC,wDAAyD,CACvDV,WAAYqC,EACZvB,SAAU,WACVE,IAAK,OACLC,MAAO,OACPgC,OAAQ,OACRK,KAAM,OACNzE,OAAQ,EACRgC,SAAU,GACVK,WAAY,EACZM,cAAe,IAInB,sBAAuB,CACrBV,SAAU,sBACV/B,QAAS,qBACTuE,KAAM,mBACNtC,IAAK,mBACLiC,OAAQ,oBAIf,GDoEoG,CAAEqkB,cAAe,4BAEzG5F,GAAkCnT,GAKlCQ,GAA4B,SAAChL,GACxC,IAAQm9C,EAAYn9C,EAAZm9C,QACFC,GAAkB/sC,EAAAA,EAAAA,cACtB,SAAAymB,GAAM,OAAIn1B,EAAAA,EAAAA,KAACmJ,IAAuBpP,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKo7B,GAAM,IAAEqmB,QAASA,IAAW,GACnE,CAACA,IAEH,OAAOx7C,EAAAA,EAAAA,KAACy7C,GAAe1hD,EAAAA,EAAAA,GAAA,GAAKsE,GAC9B,EE9PM+hB,GAA6B,SAAHrnB,GAAA,IAC9BgH,EAAOhH,EAAPgH,QACA27C,EAAa3iD,EAAb2iD,cAAa,OAEb17C,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ47C,oCAAoCj7C,SACzDg7C,EAAczsC,KAAI,SAAA/B,GAAA,IAAG0uC,EAAQ1uC,EAAR0uC,SAAUC,EAAK3uC,EAAL2uC,MAAK,OACnC/3C,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,yBAAwBI,SAAA,CACpCk7C,IAAY57C,EAAAA,EAAAA,KAAA,QAAMM,UAAU,WAAUI,SAAA,GAAA9F,OAAKghD,EAAQ,QACnDC,IAAS77C,EAAAA,EAAAA,KAAA,QAAMM,UAAU,QAAOI,SAAEm7C,EAAMC,KAAK,UAC1C,KAEJ,EAaR17B,GAA2Bzf,aAAe,CACxCZ,QAAS,CAAC,EACV27C,cAAe,IAGV,IAAMl/B,GAAsC8E,EACjDlB,ICkDiD,WAAH,MAAU,CACxDu7B,oCAAqC,CACnC,cAAe,CACbzgD,MAAO,UACPZ,WAAY,SACZZ,WAAY,MACZ8B,WAAY,QAEd,WAAY,CACVN,MAAO,UACPZ,WAAY,SACZkB,WAAY,SAGjB,GD/DsC,CAAEomB,cAAe,wCE/BlDtB,GAAmB,SAAHvnB,GAAA,IACpBgH,EAAOhH,EAAPgH,QACA27C,EAAa3iD,EAAb2iD,cAAa,OAEb17C,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQg8C,0BAA0Br7C,UAChDV,EAAAA,EAAAA,KAAA,QAAAU,SAAOg7C,EAAczsC,KAAI,SAAA/B,GAAO,OAAAA,EAAJhJ,IAAe,IAAE43C,KAAK,aAC9C,EAYRx7B,GAAiB3f,aAAe,CAC9BZ,QAAS,CAAC,EACV27C,cAAe,IAGV,IAAMr7B,GAA4BiB,EACvChB,ID/BuC,WAAH,MAAU,CAC9Cy7B,0BAA2B,CACzB7gD,MAAO,UACPZ,WAAY,SACZkB,WAAY,QAEf,GC0B4B,CAAEomB,cAAe,8BCzBxCpB,GAAiB,SAAHznB,GAAA,IAClBgH,EAAOhH,EAAPgH,QACA27C,EAAa3iD,EAAb2iD,cAAa,OAEb17C,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQi8C,wBAAwBt7C,SAE5Cg7C,EAAczsC,KAAI,SAAA/B,EAEfyO,GAAK,IADNlY,EAAMyJ,EAANzJ,OAAQw4C,EAAW/uC,EAAX+uC,YAAaC,EAAQhvC,EAARgvC,SAAU/6B,EAAKjU,EAALiU,MAAO+M,EAAShhB,EAATghB,UAAS,OAE/CpqB,EAAAA,EAAAA,MAACpF,EAAAA,SAAc,CAAAgC,SAAA,EACbV,EAAAA,EAAAA,KAAA,KAAGsqB,KAAM4D,EAAU,GAAGxtB,SAAE+C,KACxBzD,EAAAA,EAAAA,KAAA,QAAAU,SAAA,MAAA9F,OAAaqhD,EAAW,QACxBj8C,EAAAA,EAAAA,KAAA,OAAAU,SAAA,GAAA9F,OAASshD,EAAW/6B,KACnBxF,EAAQ+/B,EAAcn8C,OAAS,IAAKS,EAAAA,EAAAA,KAAA,QAAAU,SAAO,aAC7B,KAGjB,EAgBR8f,GAAe7f,aAAe,CAC5BZ,QAAS,CAAC,EACV27C,cAAe,IAGV,IAAMn7B,GAA0Be,EACrCd,IFtCqC,WAAH,MAAU,CAC5Cw7B,wBAAyB,CACvB9gD,MAAO,UACPZ,WAAY,SACZkB,WAAY,OACZ,MAAO,CACLN,MAAO,WAET,QAAS,CACP7B,QAAS,iBAGd,GE2B0B,CAAEuoB,cAAe,4B,wCCvCtClB,GAAqB,SAAH3nB,GAAA,IACtBgH,EAAOhH,EAAPgH,QACa,OAAAhH,EAAb2iD,cAEczsC,KAAI,SAAA/B,GAAA,IAChBivC,EAAQjvC,EAARivC,SAAUC,EAAalvC,EAAbkvC,cAAeC,EAAanvC,EAAbmvC,cAAeC,EAAepvC,EAAfovC,gBAAiBC,EAASrvC,EAATqvC,UAAWC,EAAWtvC,EAAXsvC,YAAaC,EAAkBvvC,EAAlBuvC,mBAAoBC,EAAYxvC,EAAZwvC,aAAY,OAEjH54C,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQ48C,4BAA4Bj8C,SAAA,EAClDoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,iBAAgBI,SAAA,CAC5B87C,IAAex8C,EAAAA,EAAAA,KAAA,QAAAU,SAAA,GAAA9F,OAAUuhD,EAAQ,SAClCn8C,EAAAA,EAAAA,KAAA,QAAMM,UAAU,WAAUI,SAAE07C,KAC5Bp8C,EAAAA,EAAAA,KAAA,QAAAU,SAAA,SAAA9F,OAAayhD,KACZI,IAAsBz8C,EAAAA,EAAAA,KAAA,QAAAU,SAAA,SAAA9F,OAAa0hD,KACnCI,IAAgB18C,EAAAA,EAAAA,KAAA,QAAAU,SAAA,SAAA9F,OAAa2hD,SAEhCz4C,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,iBAAgBI,SAAA,EAC7BV,EAAAA,EAAAA,KAAA,QAAAU,SAAM,SACNV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,eAAcI,UAC1BgG,EAAAA,GAAAA,GAAI0mC,MAAM,IAAIn+B,KAAI,kBACjBjP,EAAAA,EAAAA,KAAA,OAAKyX,IAAKmlC,GAAMnxB,IAAI,QAAS,OAGjCzrB,EAAAA,EAAAA,KAAA,QAAMM,UAAU,UAASI,SAAC,yBAExB,GACN,EAmBJggB,GAAmB/f,aAAe,CAChCZ,QAAS,CAAC,EACV27C,cAAe,IAGV,IAAMj7B,GAA8Ba,EACzCZ,IHpCyC,WAAH,MAAU,CAChDi8B,4BAA6B,CAC3BtjD,QAAS,OACTkqB,cAAe,SACf,oBAAqB,CACnB,SAAU,CACRroB,MAAO,UACPZ,WAAY,SACZkB,WAAY,QAEd,cAAe,CACbN,MAAO,YAGX,oBAAqB,CACnB7B,QAAS,OACTc,WAAY,SACZ0rB,IAAK,MACL,SAAU,CACR3qB,MAAO,UACPZ,WAAY,SACZZ,WAAY,MACZ8B,WAAY,QAEd,kBAAmB,CACjBG,UAAW,OACXtC,QAAS,QAEX,aAAc,CACZ6B,MAAO,UACPxB,WAAY,SAInB,GGG8B,CAAEkoB,cAAe,gCCpD1ChB,GAAoB,SAAH7nB,GA6BrB,IA1BK,IAFLgH,EAAOhH,EAAPgH,QACA27C,EAAa3iD,EAAb2iD,cAEMmB,GAAenuC,EAAAA,EAAAA,cAAY,SAAAxB,GAE1B,IACD4vC,EAFJC,EAAW7vC,EAAX6vC,YAAaC,EAAY9vC,EAAZ8vC,aAAcC,EAAY/vC,EAAZ+vC,aAAcC,EAAchwC,EAAdgwC,eAAgBhvB,EAAShhB,EAATghB,UAGzD,GAAIgvB,EACFJ,EAAUI,OACL,GAAIhvB,GAAaA,EAAU3uB,OAAS,EAAG,CAC3Cu9C,GAD2CvuB,EAAAA,GAAAA,GAChCL,EAAS,GAAb,EACV,MACE4uB,EAAU,GAMZ,OAJIA,GAAuC,IAA5BA,EAAQK,QAAQ,UAC7BL,EAAO,UAAAliD,OAAakiD,KAIpBh5C,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,gBAAeI,SAAA,EAC5BV,EAAAA,EAAAA,KAAA,KAAGM,UAAU,QAAQgqB,KAAMwyB,EAAS1yB,OAAO,SAASC,IAAI,aAAY3pB,SAAEq8C,IACrEC,IAAgBh9C,EAAAA,EAAAA,KAAA,OAAKM,UAAU,OAAMI,SAAEs8C,IACvCC,IAAgBj9C,EAAAA,EAAAA,KAAA,OAAKM,UAAU,OAAMI,SAAEu8C,MAG9C,GAAG,IAEGG,EAAQ,GACLxX,EAAI,EAAGA,EAAI8V,EAAcn8C,OAAQqmC,GAAK,EAAG,CAChD,IAAM5mC,EAAU08C,EAAc9V,GACxByX,EAAOzX,EAAI,EAAI8V,EAAcn8C,OAASm8C,EAAc9V,EAAI,GAAK,KACnEwX,EAAM1lC,MACJ5T,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,eAAcI,SAAA,CAC1Bm8C,EAAa79C,GACbq+C,GAAQR,EAAaQ,MAG5B,CAEA,OACEr9C,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQu9C,2BAA2B58C,SAChD08C,GAGP,EAeAx8B,GAAkBjgB,aAAe,CAC/BZ,QAAS,CAAC,EACV27C,cAAe,IAGV,IAAM/6B,GAA6BW,EACxCV,IJfwC,WAAH,MAAU,CAC/C08B,2BAA4B,CAC1BjkD,QAAS,OACTkqB,cAAe,SACf,kBAAmB,CACjBlqB,QAAS,OACTwsB,IAAK,OACLlqB,UAAW,OACX,mBAAoB,CAClBpC,MAAO,QACPF,QAAS,OACTkqB,cAAe,SACfsC,IAAK,MACL,WAAY,CACV3qB,MAAO,UACPZ,WAAY,SACZa,SAAU,OACVK,WAAY,QAEd,UAAW,CACTN,MAAO,OACPZ,WAAY,SACZkB,WAAY,WAKrB,GIX6B,CAAEomB,cAAe,8B,wKC1ElCwzB,EAAwB,CACnCC,KAAM,OACNkI,aAAc,eAEdjI,YAAa,cACbE,mBAAoB,sBAGTv7B,EAAkB,CAC7BC,WAAY,aACZg8B,WAAY,aACZX,UAAW,YACXiI,QAAS,WCTE5jC,EAAsB,SAACL,EAAoB9B,EAAKgmC,EAAc5jC,EAAoBC,GAC7F,IAAKP,GAAsBA,IAAuB67B,EAAsBC,KAEtE,OAAO,KAGT,IAAMqI,GAAY58C,IAAAA,QAAU2W,IAAQA,EAAI0lC,QAAQ,KAAO,EACjDQ,EAAeD,EAAWjmC,EAAG,GAAA7c,OAAM6c,EAAG,KACxCmmC,EAAc,GAClB,GAAIrkC,IAAuB67B,EAAsBE,YAC/CsI,EAAcF,EAAW,WAAa,eACjC,IAAInkC,IAAuB67B,EAAsBmI,cACpDhkC,IAAuB67B,EAAsBI,sBAE/CoI,EAAW,GAAAhjD,OAAM8iD,EAAW,IAAM,GAAE,MAAA9iD,OAAKif,EAAkB,OAAAjf,OAAMkf,GAC7D2jC,GAAc,CAChB,IAAM7rC,EAAM6rC,EAAaN,QAAQ,KACjCS,GAAW,QAAAhjD,OAAY6iD,EAAalP,MAAM38B,EAAM,GAClD,CAGF,MAAM,GAANhX,OAAU+iD,GAAY/iD,OAAGgjD,EAC3B,EAEahI,EAAa,SAACnoC,EAAS0C,GAClC,IAAK1C,IAAY0C,EACf,MAAO,CAAC,EAEV,IACE,IAAM0tC,EAAaC,KAAKC,MAAMtwC,GACxB8L,EAAqBskC,EAAWG,mBAChCnkC,EAAqBN,IAAuB67B,EAAsBE,YAAcuI,EAAWI,eAAiBJ,EAAWK,kBACvHpkC,EAAsBP,IAAuB67B,EAAsBE,YAAcuI,EAAWM,gBAAkBN,EAAWO,mBACzHX,EAAeI,EAAWQ,aAC1BtkC,EAA4B8jC,EAAWS,iBAAmBx9C,IAAAA,IAAM+8C,EAAWS,kBAAkB,SAAAvlD,GAAA,IAAGiX,EAAWjX,EAAXiX,YAA0BuuC,EAAExlD,EAAfi9C,YAAW,MAAY,CACxIzlC,YAAaP,EACbpD,YAAa,CACXgE,aAAc2tC,EAAGC,aAAc9tC,YAAa6tC,EAAGE,YAAa3tC,QAASytC,EAAGG,QAAS1tC,QAASutC,EAAGI,SAEhG,IAAK,KACAC,EAAerlC,IAAuB67B,EAAsBE,YAAcr7B,EAAgBi8B,WAAaj8B,EAAgBs7B,UAS7H,MAAO,CACL17B,mBAAAA,EACAC,oBAAAA,EACAC,0BAAAA,EACAP,0BAZgCqkC,EAAWgB,yBAA2B/9C,IAAAA,IAAM+8C,EAAWgB,0BAA0B,SAAA3xC,GAAA,IAAG8C,EAAW9C,EAAX8C,YAA0BuuC,EAAErxC,EAAf8oC,YAAW,MAAY,CACxJzlC,YAAaP,EACbpD,YAAa,CACXgE,aAAc2tC,EAAGC,aAAc9tC,YAAa6tC,EAAGE,YAAa3tC,QAASytC,EAAGG,QAAS1tC,QAASutC,EAAGI,QAASllC,aAAcmlC,GAEvH,IAAK,KAQJjlC,iBAPuBC,EAAoBL,EAAoBpJ,EAAUstC,EAAc5jC,EAAoBC,GAQ3GP,mBAAAA,EACAkkC,aAAAA,EAEJ,CAAE,MAAOt2B,GACP,MAAO,CAAC,CACV,CACF,C,sbC5Ca23B,EAAmB,SAAH/lD,GAEtB,IADL0vC,EAAM1vC,EAAN0vC,OAAQsW,EAAShmD,EAATgmD,UAAWC,EAAYjmD,EAAZimD,aAAcC,EAAUlmD,EAAVkmD,WAAYv+C,EAAQ3H,EAAR2H,SAEvCw+C,GAAkBv8C,EAAAA,EAAAA,YAAWw8C,EAAAA,wBAE7BC,GAAa/2C,EAAAA,EAAAA,UAAQ,sCAAAzN,OAA2B6tC,EAAM,KAAA7tC,OAAImkD,EAAS,GAAI,CAACtW,EAAQsW,IAEhFM,GAAmBh3C,EAAAA,EAAAA,UAAQ,kBAC/B42C,EAAWK,YAAYF,EAAW,GACjC,CAACH,EAAYG,IAMhB,OAJAxiB,EAAAA,EAAAA,YAAU,YACR2iB,EAAAA,EAAAA,gBAAa51C,EAAAA,EAAAA,GAAC,CAAC,EAAF,qBAAA/O,OAAyB6tC,GAAWsW,GACnD,GAAG,CAACtW,EAAQsW,KAGV/+C,EAAAA,EAAAA,KAACw/C,EAAAA,sBAAsBC,SAAQ,CAAC3gD,OAAK,EAAA4B,UACnCV,EAAAA,EAAAA,KAAC0/C,EAAAA,GAAyB,CACxBxnC,KAAMknC,EACNF,gBAAiBA,EACjBS,eAAe,EAAMj/C,UAErBV,EAAAA,EAAAA,KAAC4/C,EAAAA,SAAQ,CAAC1nC,KAAMknC,EAAW1+C,UACzBV,EAAAA,EAAAA,KAAC6/C,EAAAA,SAAQ,CAAC3nC,KAAK,wBAAuBxX,UACpCV,EAAAA,EAAAA,KAAC8/C,EAAAA,OAAM,CAACnxC,OAAQqwC,EAAat+C,UAC3BV,EAAAA,EAAAA,KAAC+/C,EAAAA,EAAgB,CAACX,WAAYA,EAAYY,aAAcX,EAAiB3+C,UACvEoD,EAAAA,EAAAA,MAACm8C,EAAAA,gBAAe,CAACC,SAAUC,EAAAA,gBAAgBz/C,SAAA,EACzCV,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,gBAAgBm5C,UAAWC,EAAAA,iBACxCtgD,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,UAAUm5C,UAAWE,EAAAA,eAClCvgD,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,eAAem5C,UAAWG,EAAAA,qBACtC9/C,gBASnB,EAYAo+C,EAAiBn+C,aAAe,CAC9BD,SAAU,M,6UCnEN+/C,EAAqB,SAAA1xC,GAAU,OAHd,GAGmBA,EAFpB,GAEqDA,EAAa,EAAoB,EAE/F2xC,EAAqB,WAAH,MAAU,CACvCC,UAAW,CACTtnD,QAAS,OACTqwB,SAAU,OACVnwB,MAAO,OACPssB,IAAK,OAEL,gBAAiB,CACftsB,MAAO,qBAGX,cAAe,CACbA,MAAO,qBAETqnD,gBAAiB,CACf,8BAA+B,CAC7BtnD,SAAU,qBAGdunD,cAAe,CACbtnD,MAAO,OACP,sCAAuC,CACrCA,MAAO,QAET,oDAAqD,CACnDgC,MAAO,mBACPH,SAAU,oBAGZ,0BAA2B,CACzB7B,MAAO,QAET,yBAA0B,CACxBA,MAAO,qBAGX,oBAAqB,CACnBA,MAAO,SAET,mBAAoB,CAClBA,MAAO,SAETunD,mBAAoB,CAClBnlD,UAAW,IACX,UAAW,CACTL,IAAK,KAEP6oB,SAAU,KAEZ,uBAAwB,CACtB5qB,MAAO,qBAET,uBAAwB,CACtBA,MAAO,qBAET,uBAAwB,CACtBA,MAAO,qBAETwnD,UAAW,CACT,6CAA8C,CAC5CtnD,SAAU,oBAEZkC,UAAW,SAEbqlD,iBAAkB,CAChB5lD,SAAU,SACV7B,MAAO,IACPoC,UAAW,QACXL,IAAK,MACL,0BAA2B,CACzBjB,OAAQ,KAEV,6CAA8C,CAE5Cb,OAAQ,+BAIRF,SAAU,mBAEV,oBAAqB,CACnBD,QAAS,QAGX,wBAAyB,CACvBA,QAAS,QAEX,oBAAqB,CACnBgB,OAAQ,KAGV,yBAA0B,CACxBhB,QAAS,OACTwsB,IAAK,MACLjoB,KAAM,iBACNzE,OAAQ,oBACRgsB,UAAW,mBAEX,OAAQ,CACNhsB,OAAQ,MAIZ,sBAAuB,CACrBE,QAAS,OACTE,MAAO,OACPJ,OAAQ,oBACRyE,KAAM,kBAGR,2BAA4B,CAC1BunB,UAAW,SAAFpsB,GAAuB,IAAlBgW,EAAUhW,EAAVgW,WACNkyC,EAAkB,GAGxBA,EAAgBvpC,KAAK,oBAGrB,IAAMwpC,EAAkBT,EAAmB1xC,GAM3C,OALAkyC,EAAgBvpC,KAAK,eAAD9c,OAAgBsmD,EAAkB,EAAC,QAGvDD,EAAgBvpC,KAAK,qBAEdupC,EAAgBnF,KAAK,IAC9B,EACAv+C,OAAQ,IAGV,4BAA6B,CAC3B4nB,UAAW,SAAFjY,GAAuB,IAAlB6B,EAAU7B,EAAV6B,WACNkyC,EAAkB,GAGxBA,EAAgBvpC,KAAK,oBAGrB,IAAMwpC,EAAkBT,EAAmB1xC,GAM3C,OALAkyC,EAAgBvpC,KAAK,cAAD9c,OAAesmD,EAAkB,EAAC,QAGtDD,EAAgBvpC,KAAK,oBAEdupC,EAAgBnF,KAAK,IAC9B,EACAv+C,OAAQ,IAGV,sBAAuB,CACrBlD,OAAQ,OACR4K,SAAU,SACVujB,aAAc,WACdpuB,WAAY,SAEZ,8BAA+B,CAC7Bc,MAAO,UACPC,SAAU,OACVzB,WAAY,IACZG,YAAa,OAGf,gCAAiC,CAC/BsB,SAAU,SAId,0BAA2B,CACzB8J,SAAU,SAEV,iBAAkB,CAChB1L,MAAO,QAGT,mCAAoC,CAClC0qB,UAAW,aACX1qB,MAAO,SAGX,yCAA0C,CACxC,iBAAkB,CAChB,mCAAoC,CAClCc,OAAQ,cACRd,MAAO,cACPE,SAAU,OACV,wBAAyB,CACvBA,SAAU,wBAKlB,4CAA6C,CAC3C,yCAA0C,CACxCY,OAAQ,OACRd,MAAO,WAKf,uBAAwB,CACtB,6BAA8B,CAC5BA,MAAO,KAETA,MAAO,KAET,sBAAuB,CACrBA,MAAO,KAEV,EAEY4nD,EAAsB,WAAH,OAASC,EAAAA,EAAAA,IAA0BV,EAAoB,E,2DCjN1EW,IAAc13C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxB23C,EAAAA,GAAMC,IAAMC,EAAAA,GAAUD,KACtBD,EAAAA,GAAMG,QAAUD,EAAAA,GAAUC,SAC1BH,EAAAA,GAAMI,QAAUF,EAAAA,GAAUE,SAGhBC,GAAwB,CACnCC,YAAa,CACX/iD,IAAK,cACL6E,MAAO8nB,eACPzc,WAAY,CACV,oBAGJ8yC,KAAM,CACJhjD,IAAK,OACL6E,MAAO8nB,OACPzc,WAAY,CACV,gBAGJ+yC,WAAY,CACVjjD,IAAK,aACL6E,MAAO8nB,gBACPzc,WAAY,CACV,eAGJgzC,qBAAsB,CACpBljD,IAAK,uBACL6E,MAAO8nB,yBACPzc,WAAY,CACV,0BAGJklC,WAAY,CACVp1C,IAAK,aACL6E,MAAO8nB,cACPzc,WAAY,CACV,aACA,oBAKOizC,GAAkB,CAAC,CAC9B/pC,iBAAkB0pC,GAAsBC,YAAY/iD,IACpDgO,eAAgB,CACdjD,GAAAA,GAAI+qC,cAAcC,kBAEnB,CACD38B,iBAAkB0pC,GAAsBE,KAAKhjD,IAC7CgO,eAAgB,CACdjD,GAAAA,GAAI+qC,cAAcE,cAEnB,CACD58B,iBAAkB0pC,GAAsBG,WAAWjjD,IACnDgO,eAAgB,CACdjD,GAAAA,GAAI+qC,cAAcG,aAEnB,CACD78B,iBAAkB0pC,GAAsBI,qBAAqBljD,IAC7DgO,eAAgB,CACdjD,GAAAA,GAAI+qC,cAAcI,wBAEnB,CACD98B,iBAAkB0pC,GAAsB1N,WAAWp1C,IACnDgO,eAAgB,CACdjD,GAAAA,GAAI+qC,cAAcV,WAClBrqC,GAAAA,GAAI+qC,cAAcK,kBC5DTiN,GAAwB,SAAC5jD,GACpC,IACE6jD,EACE7jD,EADF6jD,KAAMx/C,EACJrE,EADIqE,KAAMy/C,EACV9jD,EADU8jD,aAAcC,EACxB/jD,EADwB+jD,aAAcC,EACtChkD,EADsCgkD,SAGpCC,GAA2B5zC,EAAAA,EAAAA,cAAY,kBAC3C1O,EAAAA,EAAAA,KAACuiD,EAAAA,GAAS,CAACC,SAAUh3B,mBAA0Bi3B,SAAS,0BAA2B,GAClF,IAEH,OACE3+C,EAAAA,EAAAA,MAAC4+C,EAAAA,IAAmB3oD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAClB2J,OAAO1D,EAAAA,EAAAA,KAACuiD,EAAAA,GAAS,CACfC,SAAUh3B,0BACVm3B,KAAMC,EAAAA,eAERC,qBAAsB,CAAEC,cAAeC,EAAAA,KACnC1kD,GAAK,IAAAqC,SAAA,EAETV,EAAAA,EAAAA,KAAA,OAAAU,SAAM2hD,IAAaA,EAASW,YAActgD,EAAKQ,UAAUsoB,yCACzDxrB,EAAAA,EAAAA,KAACijD,EAAAA,GAAuB,CACtBl9C,KAAMs8C,EACND,aAAcA,EACdD,aAAcA,EACdz/C,KAAMA,EAAKhC,UAEXV,EAAAA,EAAAA,KAACkjD,EAAAA,GAAgB,CACfC,SAAU9B,GAAea,GACzBpjD,MAAOujD,GAAYA,EAASW,WAC5BI,UAAWjB,EACXkB,gBAAiB73B,yCACjB83B,SAAUjB,GAAYA,EAASkB,mBAC/BC,2BAAqD,YAAzBnC,GAAea,QAG/CliD,EAAAA,EAAAA,KAACyjD,EAAAA,gDAA+C,CAC9CC,YAAahhD,EAAKQ,UAAUsoB,+BAC5BprB,GAAG,yBACHujD,gBAAiB,CACf38C,MAAO,OACPd,OAAQ09C,EAAAA,YAEVlhD,KAAMA,EACNN,MAAOM,EAAKQ,UAAUsoB,oBACtBq4B,cAAevB,OAIvB,E,8EClCawB,GAAgB,SAAH/qD,GAqBnB,IApBLgrD,EAAmChrD,EAAnCgrD,oCACAC,EAA6CjrD,EAA7CirD,8CACAC,EAAyClrD,EAAzCkrD,0CACAC,EAA4CnrD,EAA5CmrD,6CACAC,EAAuCprD,EAAvCorD,wCACAC,EAA2CrrD,EAA3CqrD,4CACAC,EAA2BtrD,EAA3BsrD,4BACAC,EAAiBvrD,EAAjBurD,kBACAC,EAAkCxrD,EAAlCwrD,mCACAC,EAAkBzrD,EAAlByrD,mBACAC,EAA0B1rD,EAA1B0rD,2BACAC,EAAsB3rD,EAAtB2rD,uBACAC,EAA4B5rD,EAA5B4rD,6BACAC,EAA+B7rD,EAA/B6rD,gCACA3F,EAAUlmD,EAAVkmD,WACA4F,EAAU9rD,EAAV8rD,WACA9+C,EAAIhN,EAAJgN,KACA++C,EAAW/rD,EAAX+rD,YACAC,EAAkBhsD,EAAlBgsD,mBACAC,EAAejsD,EAAfisD,gBAEMC,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUiF,EAAK,GAAE,CAACA,IAE5CrD,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAKRs/C,GAHEgD,EAAAA,EAAAA,oBAAV1c,MAIE2c,QADRC,WAAclD,KAGhBh1C,EAGInH,GAAQ,CAAC,EAFXs/C,EAASn4C,EAATm4C,UACAC,EAAYp4C,EAAZo4C,aAGIC,GAA8Bl9C,EAAAA,EAAAA,UAAQ,kBAAMm9C,EAAAA,GAAAA,IAA+B9iD,EAAM2iD,EAAU,GAAE,CAACA,EAAW3iD,IACzG+iD,GAAiCp9C,EAAAA,EAAAA,UAAQ,kBAAMq9C,EAAAA,GAAAA,IAAkChjD,EAAM4iD,EAAa,GAAE,CAACA,EAAc5iD,IAE3HijD,GAIIC,EAAAA,EAAAA,IACFd,EACAA,GACDe,GAAAt3B,EAAAA,EAAAA,GAAAo3B,EAAA,GANCG,EAAWD,EAAA,GACXE,EAA2BF,EAAA,GAC3BG,EAA8BH,EAAA,GAMhCI,GAIIL,EAAAA,EAAAA,IACFM,GAAAA,GAAWC,gBACX,IACDC,GAAA73B,EAAAA,EAAAA,GAAA03B,EAAA,GANCI,EAAYD,EAAA,GACZE,EAA4BF,EAAA,GAC5BG,EAA+BH,EAAA,GAM3BI,GAAkBn+C,EAAAA,EAAAA,UACtB,kBAAMo+C,EAAAA,EAAAA,IAAiB,CAAEC,cAAeV,GAAiC,GACzE,CAACA,IAGKW,GAAUC,EAAAA,GAAAA,MAAVD,MAEFE,GAA0Bx+C,EAAAA,EAAAA,UAAQ,kBAAM,IAAIy+C,GAAAA,WAAa,GAAE,IAOjE,OALAlqB,EAAAA,EAAAA,YAAU,WACR+pB,EAAME,EAER,GAAG,CAACA,EAAyBF,KAG3B7iD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,iBAAgBI,SAAA,EAC7BoD,EAAAA,EAAAA,MAAA,OAAKvC,MAAO,CAAE5F,UAAW,GAAI3B,aAAc,IAAK0G,SAAA,EAC9CV,EAAAA,EAAAA,KAAA,OAAAU,UACEV,EAAAA,EAAAA,KAAC+mD,GAAAA,EAAS,CAAArmD,SACPgC,EAAKQ,UAAUsoB,mBAGpBxrB,EAAAA,EAAAA,KAAA,OAAKuB,MAAO,CAAE5F,UAAW,GAAI+E,UAC3BV,EAAAA,EAAAA,KAACkE,GAAAA,EAAI,CAAAxD,SACFgC,EAAKQ,UAAUsoB,yIAItBxrB,EAAAA,EAAAA,KAAA,OAAAU,UACEoD,EAAAA,EAAAA,MAACkjD,EAAAA,GAAQ,CACPC,cAAenB,EACfoB,oBAAkB,EAClBC,WAAYpB,EACZW,cAAeV,EACfoB,YAAU,EAAA1mD,SAAA,EAEVV,EAAAA,EAAAA,KAACqnD,GAAAA,GAAW,CAEVb,gBAAiBA,EACjBc,uBAAwB,WAAO,EAC/B3E,KAAM4E,EAAAA,eACN/C,mBAAoBA,EACpBT,oCAAqCA,EACrCQ,mCAAoCA,EACpCrpC,OAAQnV,GAAQA,EAAKyhD,OACrB/E,SAAS,sBARJyD,GAAAA,GAAWuB,SAUlBznD,EAAAA,EAAAA,KAAC0nD,GAAAA,GAAc,CAEblB,gBAAiBA,EACjBc,uBAAwB,WAAO,EAC/B3E,KAAM4E,EAAAA,eACN/E,SAAUh3B,cACVm8B,YAAan8B,0BACbo8B,WAAY7hD,GAAQA,EAAK8hD,eACzBC,aAAcrD,EACdsD,qBAAsB7D,EACtB8D,oBAAqB5D,EACrB6D,aAAc,GAVT/B,GAAAA,GAAWgC,mBAYlBloD,EAAAA,EAAAA,KAAC0nD,GAAAA,GAAc,CAEblB,gBAAiBA,EACjBc,uBAAwB,WAAO,EAC/B3E,KAAM4E,EAAAA,eACN/E,SAAUh3B,cACVm8B,YAAan8B,0BACbo8B,WAAY7hD,GAAQA,EAAKoiD,WACzBL,aAAcpD,EACdqD,qBAAsB9D,EACtB+D,oBAAqB7D,EACrB8D,aAAc,GAVT/B,GAAAA,GAAWkC,eAYlBpoD,EAAAA,EAAAA,KAACqoD,GAAAA,GAAU,CAET7B,gBAAiBA,EACjB7D,KAAM4E,EAAAA,eACN/E,SAAUN,IAASZ,EAAAA,GAAMI,QAAUl2B,QAAgBA,WACnD88B,MAAOviD,GAAQA,EAAKuiD,MACpBhE,kBAAmBpC,IAASZ,EAAAA,GAAMI,QAAU4C,EAAoBD,EAChEkE,mCAAoCrG,IAASZ,EAAAA,GAAMI,QAAUqC,EAAsCC,EACnGn3B,YACEq1B,IAASZ,EAAAA,GAAMI,QACbl2B,6GACAA,mMAVC06B,GAAAA,GAAWsC,QAYlBxoD,EAAAA,EAAAA,KAACyoD,GAAAA,GAAmB,CAElBjC,gBAAiBA,EACjB7D,KAAM+F,EAAAA,cACNC,YAAazG,IAASZ,EAAAA,GACnBI,QAAU,kBAAoB,gBACjCkD,gCAAiCA,EACjCgE,WAAY1G,IAASZ,EAAAA,GAAMI,QAC3B6D,4BAA6BA,GAPxBW,GAAAA,GAAW2C,kBASlB7oD,EAAAA,EAAAA,KAAC8oD,GAAAA,GAAiB,CAEhBtC,gBAAiBA,EACjB7D,KAAM+F,EAAAA,cACNC,YAAY,gBACZhE,6BAA8BA,EAC9Bc,+BAAgCA,GAL3BS,GAAAA,GAAW6C,cAOjB7G,IAASZ,EAAAA,GAAMI,UACd1hD,EAAAA,EAAAA,KAACgpD,EAAAA,GAAU,CAET/J,WAAYA,EACZ4F,WAAYA,EACZnoB,OAAQ32B,GAAQA,EAAK22B,OACrBimB,KAAM+F,EAAAA,cACNlC,gBAAiBA,EACjByC,iBAAe,EACfxG,SAAS,qBACTyG,uBAAqB,EACrBnE,mBAAoBA,EACpBC,gBAAiBA,GAVZkB,GAAAA,GAAWiD,cAexBnpD,EAAAA,EAAAA,KAAA,OAAKuB,MAAO,CAAE5F,UAAW,GAAI3B,aAAc,IAAK0G,SAE1CI,IAAAA,SAAWgkD,EAAaoB,GAAAA,GAAWkD,mBACjCppD,EAAAA,EAAAA,KAACqpD,GAAAA,GAAqB,CAAA3oD,UACpBV,EAAAA,EAAAA,KAACgnD,EAAAA,GAAQ,CACPC,cAAenB,EACfsB,YAAU,EACVF,oBAAkB,EAClBC,WAAYpB,EACZW,cAAeV,EAA+BtlD,UAE9CV,EAAAA,EAAAA,KAACspD,EAAAA,GAAmB,CAElBrE,UAAWA,EACXxjC,QAAS,CACP49B,iBAAkBJ,GAEpBsK,OAAQ/C,EACRzgD,KAAMA,GANDmgD,GAAAA,GAAWkD,wBAa9BtlD,EAAAA,EAAAA,MAAA,OAAKvC,MAAO,CAAE5F,UAAW,IAAK+E,SAAA,EAC5BV,EAAAA,EAAAA,KAAA,OAAKuB,MAAO,CAAE5F,UAAW,EAAG3B,aAAc,GAAI0G,UAC5CoD,EAAAA,EAAAA,MAACI,GAAAA,EAAI,CAACslD,KAAM,IAAKC,OAAO,OAAM/oD,SAAA,CAAC,IAAEgC,EAAKQ,UAAUsoB,iBAAuB,UAEzExrB,EAAAA,EAAAA,KAACgnD,EAAAA,GAAQ,CACPC,cAAeZ,EACfa,oBAAkB,EAClBC,WAAYb,EACZI,cAAeH,EACfa,YAAU,EAAA1mD,UAEVV,EAAAA,EAAAA,KAAC0pD,GAAAA,GAAiB,CAChBzE,UAAWA,EAEXsE,OAAQ/C,EACRzgD,KAAMA,GAFDmgD,GAAAA,GAAWC,wBAQ5B,ECnNMwD,IAAqBC,EAAAA,EAAAA,IAAyBC,EAAAA,IAG9CC,GAAyB,SAAH/wD,GAMrB,IALLgN,EAAIhN,EAAJgN,KACcgkD,EAAgBhxD,EAA9BqpD,aACA4H,EAAKjxD,EAALixD,MACAC,EAAKlxD,EAALkxD,MACAnF,EAAW/rD,EAAX+rD,YAEM1B,GAAY8G,EAAAA,EAAAA,MAEV1hB,GAAU0c,EAAAA,EAAAA,oBAAV1c,MAGQ0Z,EACZ1Z,EAAM2c,QADRC,WAAclD,KAGVn5C,GAAcpG,EAAAA,EAAAA,YAAWiY,EAAAA,oBAEzBuvC,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IAC3BlL,GAAkBv8C,EAAAA,EAAAA,YAAWw8C,EAAAA,wBACnCkL,GAAgC1nD,EAAAA,EAAAA,YAAW2nD,EAAAA,IAApCC,GAA0Dh8B,EAAAA,EAAAA,GAAA87B,EAAA,GAArC,GAEtB7F,GAAqB91B,EAAAA,EAAAA,QAAO,MAC5B41B,GAAoB51B,EAAAA,EAAAA,QAAO,MAC3B21B,GAA8B31B,EAAAA,EAAAA,QAAO,MACrC87B,GAA6B97B,EAAAA,EAAAA,QAAO,MACpC+7B,GAAyB/7B,EAAAA,EAAAA,QAAO,MAChCg8B,GAAuBh8B,EAAAA,EAAAA,QAAO,MAE9Bi8B,GAAetiD,EAAAA,EAAAA,UAAQ,iBAC1B,CAAEg4C,UAAW,CAAEtxC,WAAY,GAAK,GAAG,IAEhCyS,GAAYopC,EAAAA,EAAAA,IAAoBlK,EAAoBiK,GAE1Dz9C,GAAqB+8C,EAAM/kB,QAAU,CAAC,EAA9B2lB,GAAG39C,GAAH29C,IAAKC,GAAG59C,GAAH49C,IAEb18B,IAA8CC,EAAAA,EAAAA,UAAS,GAAEC,IAAAC,EAAAA,EAAAA,GAAAH,GAAA,GAAlD42B,GAAe12B,GAAA,GAAEy2B,GAAkBz2B,GAAA,GAE1C8qB,IAAsF/qB,EAAAA,EAAAA,UAAS,CAAC,GAAEgrB,IAAA9qB,EAAAA,EAAAA,GAAA6qB,GAAA,GAA3F2K,GAAmC1K,GAAA,GAAE0R,GAAsC1R,GAAA,GAClFE,IAAwGlrB,EAAAA,EAAAA,UAAS,CAAC,GAAEmrB,IAAAjrB,EAAAA,EAAAA,GAAAgrB,GAAA,GAA7GyR,GAA4CxR,GAAA,GAAEyR,GAA+CzR,GAAA,GACpGG,IAAgGtrB,EAAAA,EAAAA,UAAS,CAAC,GAAEurB,IAAArrB,EAAAA,EAAAA,GAAAorB,GAAA,GAArGuR,GAAwCtR,GAAA,GAAEuR,GAA2CvR,GAAA,GAE5FwR,IAAoF/8B,EAAAA,EAAAA,UAASg9B,EAAAA,MAAKC,IAAA/8B,EAAAA,EAAAA,GAAA68B,GAAA,GAA3F7G,GAAkC+G,GAAA,GAAEC,GAAqCD,GAAA,GAChFE,IAA8Fn9B,EAAAA,EAAAA,UAASg9B,EAAAA,MAAKI,IAAAl9B,EAAAA,EAAAA,GAAAi9B,GAAA,GAArGrH,GAAuCsH,GAAA,GAAEC,GAA0CD,GAAA,GAC1FE,IAAsGt9B,EAAAA,EAAAA,UAASg9B,EAAAA,MAAKO,IAAAr9B,EAAAA,EAAAA,GAAAo9B,GAAA,GAA7GvH,GAA2CwH,GAAA,GAAEC,GAA8CD,GAAA,GAElGE,IAAkEz9B,EAAAA,EAAAA,UAASg9B,EAAAA,MAAKU,IAAAx9B,EAAAA,EAAAA,GAAAu9B,GAAA,GAAzEE,GAAyBD,GAAA,GAAEpH,GAA4BoH,GAAA,GAC9DE,IAAwE59B,EAAAA,EAAAA,UAASg9B,EAAAA,MAAKa,IAAA39B,EAAAA,EAAAA,GAAA09B,GAAA,GAA/EE,GAA4BD,GAAA,GAAEtH,GAA+BsH,GAAA,GACpEE,IAA0G/9B,EAAAA,EAAAA,UAAS,CAAC,GAAEg+B,IAAA99B,EAAAA,EAAAA,GAAA69B,GAAA,GAA/GpI,GAA6CqI,GAAA,GAAEC,GAAgDD,GAAA,GACtGE,IAAkFl+B,EAAAA,EAAAA,UAAS,CAAEm+B,eAAgB,KAAMC,aAAc,OAAOC,IAAAn+B,EAAAA,EAAAA,GAAAg+B,GAAA,GAAjII,GAAiCD,GAAA,GAAEE,GAAoCF,GAAA,GAC9EG,IAAgFx+B,EAAAA,EAAAA,UAAS,CAAEm+B,eAAgB,KAAMC,aAAc,OAAOK,IAAAv+B,EAAAA,EAAAA,GAAAs+B,GAAA,GAA/HE,GAAgCD,GAAA,GAAEE,GAAmCF,GAAA,GAC5EG,IAAwE5+B,EAAAA,EAAAA,UAAS,CAAEm+B,eAAgB,KAAMC,aAAc,OAAOS,IAAA3+B,EAAAA,EAAAA,GAAA0+B,GAAA,GAAvHE,GAA4BD,GAAA,GAAEE,GAA+BF,GAAA,GACpEG,IAA8Bh/B,EAAAA,EAAAA,UAAS,MAAKi/B,IAAA/+B,EAAAA,EAAAA,GAAA8+B,GAAA,GAArCE,GAAOD,GAAA,GAAEE,GAAUF,GAAA,GAE1Bp/C,GAGInI,GAAQ,CAAC,EAFX0nD,GAAUv/C,GAAVu/C,WAKAzK,IAJQ90C,GAARm0C,UAKc,CAAC,GADfW,WAGFl0C,GAUI2+C,IAAc,CAAC,EATjBjG,GAAM14C,GAAN04C,OACAkG,GAAY5+C,GAAZ4+C,aACAC,GAAa7+C,GAAb6+C,cACArI,GAAYx2C,GAAZw2C,aACAD,GAASv2C,GAATu2C,UAASuI,GAAA9+C,GACT4tB,OAAAA,QAAM,IAAAkxB,GAAG,GAAEA,GACX/F,GAAc/4C,GAAd+4C,eACAM,GAAUr5C,GAAVq5C,WACA0F,GAAe/+C,GAAf++C,gBAGIzL,IAAe1zC,EAAAA,EAAAA,cAAY,SAACo/C,GAC3B1K,EAAUpkD,SACf+qD,GAAgBhwD,EAAAA,EAAAA,GAAC,CAAC,EAAI+zD,GACxB,GAAG,CAAC1K,EAAW2G,IAETgE,IAAUr/C,EAAAA,EAAAA,cAAY,WAC1B0zC,GAAa,CACXr8C,KAAM,SAAAioD,GAAQ,OAAAj0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTi0D,GAAQ,IACXP,YAAU1zD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLi0D,EAASP,YAAU,IACtBjG,QAAMztD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACD0zD,GAAWjG,QAAM,IACpByG,UAAW,GACXC,YAAa,OAEf7I,UAAW,CACT8I,UAAW,GACXC,UAAW,GACXC,UAAW,IAEbV,cAAe,CACbW,cAAe,IAEjBhJ,aAAc,CACZiJ,aAAc,GACdvR,aAAc,OAEjB,EAEHrc,SAAS,GAEb,GAAG,CAAC8sB,GAAYrL,KAEVoM,IAAoB9/C,EAAAA,EAAAA,cAAY,SAAC0I,GACrCgrC,GAAa,CACXr8C,KAAM,SAAAioD,GAAQ,OAAAj0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTi0D,GAAQ,IACXP,YAAU1zD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLi0D,EAASP,YAAU,IACtBjG,QAAMztD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACDi0D,EAASP,WAAWjG,QAAM,IAC7ByG,UAAW72C,EACX82C,YAAa,UAEhB,GAGP,GAAG,CAAC9L,KAEJlzC,GAGI86C,GAAS,CAAC,EAACyE,GAAAv/C,GAFbw/C,aAAAA,QAAY,IAAAD,GAAG,GAAEA,GAAAE,GAAAz/C,GACjB0/C,aAAAA,QAAY,IAAAD,GAAG,GAAEA,GAGbjsD,IAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBisD,IAAmBxmD,EAAAA,EAAAA,UAAQ,kBAAMymD,OAAOC,iBAAiBC,IAAI,uBAAuB,GAAE,IAEtFC,IAAa5mD,EAAAA,EAAAA,UAAQ,kBAAM6mD,EAAAA,EAAAA,iBAAgBxsD,GAAM,CAACysD,EAAAA,oBAAqBC,EAAAA,0BAA0B,GAAE,CAAC1sD,KAEpGmiD,IAAax8C,EAAAA,EAAAA,UAAQ,WACzB,IAAMgnD,GAAiBC,EAAAA,EAAAA,GACrBL,GACAvsD,IAGF,OAAO4sD,EAAAA,EAAAA,GACLT,GACAQ,EAEJ,GAAG,CAAC3sD,GAAMusD,GAAYJ,KAEMU,IAAmBC,EAAAA,EAAAA,kBAAvChnB,MAAS2c,QAAWoK,WAEtBE,IAAWC,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYC,QAC7CC,IAAcH,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYG,WAEhD7Q,IAAat8C,EAAAA,EAAAA,YAAWotD,EAAAA,IAE9BC,IAAgE3hC,EAAAA,EAAAA,UAAS,CACvEm+B,eAAgB,KAChByD,cAAe,KACfxD,aAAc,KACdyD,qBAAsB,KACtBC,IAAA5hC,EAAAA,EAAAA,GAAAyhC,GAAA,GALKI,GAAwBD,GAAA,GAAEE,GAA2BF,GAAA,GAOpDG,IAAsB/F,GAAyBc,EAAAA,MAA/CiF,kBAEFrI,IAAe5/C,EAAAA,EAAAA,UAAQ,WAE3B,OAAO,IADiBm/C,IAAUA,GAAOyG,YAAasC,EAAAA,EAAAA,SAAQ/I,GAAOyG,WAAazG,GAAOyG,UAAU1uD,OAAS,EAE9G,GAAG,CAACioD,KAEEgJ,IAAkBnoD,EAAAA,EAAAA,UAAQ,WAC9B,OAAI26C,GACEd,IAASZ,EAAAA,GAAMI,QACX,qCAAN9mD,OAA4CooD,GAAWyN,OAElDzN,GAAW0N,OAEb,IACT,GAAG,CAAC1N,GAAYd,IAEhByO,IAGIC,EAAAA,EAAAA,GAAW,CACb3I,aAAAA,GACAkE,6BAAAA,GACA0E,4BAA6BxF,EAAAA,KAC7BW,0BAAAA,GACAzH,mCAAAA,GAEAuM,WAAYpD,GACZK,QAAAA,GACAlD,IAAAA,GACAC,IAAAA,GACAX,cAAAA,EACAjL,gBAAAA,EACAn5C,MAAIhM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACC0zD,IAAU,IACbsD,UAAW,CAACP,IACZQ,0BAA2BR,KAE7Bf,SAAAA,GACAI,YAAAA,GACAoB,8BAA8B,EAC9BC,QAASC,EAAAA,GAAkBC,KAC3BC,cAAeC,EAAAA,cAAcC,mBAxB7BC,GAAab,GAAba,cACAC,GAAgBd,GAAhBc,iBA0BIC,IAA4BrpD,EAAAA,EAAAA,UAAQ,kBACxCrI,EAAAA,EAAAA,KAAA,OAAAU,UACEV,EAAAA,EAAAA,KAAC2xD,EAAAA,GAA+B,CAC9BjvD,KAAMA,GACNqG,YAAaA,EACb6oD,kBAAmBpN,EACnBqN,iBAAkBvN,EAClBwN,uBAAwB,WAAO,EAC/BC,eAAe,EACf3B,yBAA0BA,GAC1BC,4BAA6BA,GAC7B2B,2BAA4BjH,GAC5BQ,sCAAuCA,GACvC5H,gBAAiB,CAAE59C,KAAM0nD,GAAYwE,aAAcxE,IACnDgE,iBAAkBA,GAClBpS,iBAAkBJ,GAClBqR,kBAAmBA,GACnB4B,qBAAmB,EACnBC,0BAA2BppD,EAAYqpD,yBAKvCC,oBAAqBnQ,IAASZ,EAAAA,GAAMI,WAElC,GAAG,CAACh/C,GAAMqG,EAAaunD,GAAmBmB,GAAkBrB,GAA0B3C,GAAYxO,GAAYiD,IAEhHoQ,IAA2BjqD,EAAAA,EAAAA,UAAQ,kBACvCrI,EAAAA,EAAAA,KAAA,OAAAU,UACEV,EAAAA,EAAAA,KAAC2xD,EAAAA,GAA+B,CAC9BjvD,KAAMA,GACNqG,YAAaA,EACb6oD,kBAAmBvN,EACnBqG,qBAAsBA,EACtBqH,eAAe,EACfQ,wBAAwB,EACxBnC,yBAA0BzD,GAC1B0D,4BAA6BzD,GAC7BoF,2BAA4B1F,GAC5B3I,gBAAiB,CAAE59C,KAAM0nD,GAAYwE,aAAcxE,IACnDpO,iBAAkBJ,GAClBuT,oBAAqB,EACrBC,kBAAkB,kBAClBJ,qBAAmB,EACnBK,2BAAyB,EACzBC,kCAAkC,EAClCC,0BAA0B,KAExB,GAAG,CAAClwD,GAAMqG,EAAak2C,GAAYwO,GAAYd,KAEjDkG,IAA2CxqD,EAAAA,EAAAA,UAAQ,kBACvDrI,EAAAA,EAAAA,KAAC2xD,EAAAA,GAA+B,CAC9BjvD,KAAMA,GACNqG,YAAaA,EACb6oD,kBAAmBpH,EACnBE,qBAAsBA,EACtBqH,eAAe,EACfQ,wBAAwB,EACxBnC,yBAA0BrD,GAC1BsD,4BAA6BrD,GAC7BgF,2BAA4B/G,GAC5BM,sCAAuCM,GACvClI,gBAAiB,CAAE59C,KAAM0nD,GAAYwE,aAAcxE,IACnDpO,iBAAkBJ,GAClBuT,oBA/QgB,EAgRhBC,kBAAkB,iBAClBJ,qBAAmB,EACnBS,qBAAmB,EACnBH,kCAAkC,EAClCC,0BAA0B,GAC1B,GACD,CAAClwD,GAAMqG,EAAagkD,GAAkCU,GAAYxO,KAE/D8T,IAAuC1qD,EAAAA,EAAAA,UAAQ,kBACnDrI,EAAAA,EAAAA,KAAC2xD,EAAAA,GAA+B,CAC9BjvD,KAAMA,GACNqG,YAAaA,EACb6oD,kBAAmBnH,EACnBC,qBAAsBA,EACtBqH,eAAe,EACfQ,wBAAwB,EACxBnC,yBAA0BjD,GAC1BkD,4BAA6BjD,GAC7B4E,2BAA4B7G,GAC5BI,sCAAuCG,GACvC/H,gBAAiB,CAAE59C,KAAM0nD,GAAYwE,aAAcxE,IACnDuF,eAAa,EACb3T,iBAAkBJ,GAClBuT,oBAvSgB,EAwShBC,kBAAkB,aAClBJ,qBAAmB,EACnBY,iBAAe,EACfN,kCAAkC,EAClCC,0BAA0B,GAC1B,GACD,CAAClwD,GAAMqG,EAAaokD,GAA8BM,GAAYxO,KAE3D8B,IAAY14C,EAAAA,EAAAA,UAAQ,WACxB,IAAM6qD,EAAe,CACnBxwD,KAAAA,GACAsU,UAAWwwC,IAAUA,GAAOyG,UAC5BkF,gBAAiB3E,GACjBt8B,cAAgBmzB,IAAqC,KAAxBA,GAAU8I,WAAoB9I,GAAU8I,gBAAc/jD,EACnFioB,aAAes7B,IAAiD,KAAhCA,GAAcW,eAAwBX,GAAcW,oBAAkBlkD,EACtGyiB,YAAcy4B,IAA8C,KAA9BA,GAAaiJ,cAAuBjJ,GAAaiJ,mBAAiBnkD,EAChG8gB,aAAc83B,IAAcA,GAAWoQ,SACvC5iC,aAAck9B,GACdhxB,OAASA,GAAOn9B,OAASylD,IAAuC,OAApBA,GAA4B,CAACtoB,GAAOsoB,KAAoB,GACpGt6B,WAAY8lC,GACZrjD,IAAKqjD,GACLJ,yBAAAA,GACAC,4BAAAA,GACArO,gBAAAA,GACAqR,oBAAoB,EACpBC,kBAAmB3R,GACnB4L,QAAAA,IAEF,OACEvtD,EAAAA,EAAAA,KAACuzD,EAAAA,IAA8Bx5D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBm5D,GAAY,IAChBM,oBAAkB,IAGxB,GAAG,CAAC9wD,GAAM8kD,GAAQ9qB,GAAQ6wB,GAASvK,GAAYgC,GAAiBwL,GAAiBhC,GAAmBnJ,GAAWsI,GAAerI,GAAcoI,GAAc0C,KAEpJqD,IAAuBprD,EAAAA,EAAAA,UAAQ,kBACnCrI,EAAAA,EAAAA,KAAC0zD,EAAAA,GAAa,CACZhxD,KAAMA,GACNsU,WAAW28C,EAAAA,EAAAA,OAAM9L,GAAgBM,GAAY0F,IAC7CsF,gBAAiB9H,EAAAA,KACjBn5B,cAAemzB,IAAaA,GAAU8I,UACtCjjC,aAAc83B,IAAcA,GAAWoQ,SACvChD,yBAA0BrD,GAC1BsD,4BAA6BrD,GAC7B4G,mBAAiB,EACjBC,sBAAoB,EACpBC,WAAS,GACT,GACD,CAACpxD,GAAM2iD,GAAWwC,GAAgBM,GAAY0F,GAAiB7K,GAAY+J,KAa9E,OAXAnwB,EAAAA,EAAAA,YAAU,WACJomB,IAAcA,GAAW+Q,UAC3BC,EAAAA,EAAAA,IAA2BhR,GAAW+Q,SAAS3jD,MAAK,SAAC6jD,GACnDzG,IAAUzzD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACPk6D,GAAS,IACZ/6C,aAAc,CAAC,IAEnB,GAEJ,GAAG,CAAC8pC,MAGFhjD,EAAAA,EAAAA,KAACk0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,SAAU7E,IAAa7uD,UACvDV,EAAAA,EAAAA,KAACq0D,EAAAA,GAAoB,CAAA3zD,UACnBV,EAAAA,EAAAA,KAACs0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,OAAQ9F,GAAc+F,wBAAyBlF,IAAa7uD,UAC5FoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWC,IAAWihB,EAAU,aAAc,kCAAkC9gB,SAAA,EACnFoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWC,IAAWihB,EAAU,iBAAkB,kCAAkC9gB,SAAA,EACvFV,EAAAA,EAAAA,KAAC00D,EAAAA,GAAU,CACThxD,MAAO8nB,cACPqB,YAAarB,sHAEfxrB,EAAAA,EAAAA,KAAC2pD,GAAkB,CAACrpD,UAAU,yBAC9BN,EAAAA,EAAAA,KAAC20D,EAAAA,GAAY,CAACH,OAAQ5F,MACtB5uD,EAAAA,EAAAA,KAAA,OAAAU,UACEV,EAAAA,EAAAA,KAAC40D,EAAAA,GAAyB,CACxB7uD,KAAMA,IAAIhM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLgM,EAAK0nD,YAAU,IAClBuD,0BAA2BR,KAE7BpO,aAAcA,GACdD,aAAciB,EAAUpkD,QACxB0D,KAAMmiD,GAAWnkD,UAEjBoD,EAAAA,EAAAA,MAAC+wD,EAAAA,0BAAyB,CACxBC,YAAa,EACbrqC,SAAU+lC,GACVuE,OAAQryD,GAAKsyD,YACb/V,WAAYA,GACZgW,mBAAmB,QACnB9K,cAAeA,EACf+K,kBAAkB,EAAMx0D,SAAA,EAExBV,EAAAA,EAAAA,KAACiiD,GAAqB,CACpB3hD,UAAU,2BACV4hD,KAAMA,EACNC,aAAciB,EAAUpkD,QACxB0D,KAAMmiD,GACNzC,aAAcA,GACdC,SAAUt8C,GAAQA,EAAKs8C,WAExBmP,IACDxxD,EAAAA,EAAAA,KAAC8jD,GAAa,CACZC,oCAAqCA,GACrCQ,mCAAoCA,GACpCJ,wCAAyCA,GACzCC,4CAA6CA,GAC7CH,0CAA2CiH,GAC3ChH,6CAA8C8G,GAC9CrG,6BAA8BA,GAC9BC,gCAAiCA,GACjCZ,8CAA+CA,GAC/CQ,mBAAoBA,EACpBC,2BAA4B+F,EAC5B9F,uBAAwB+F,EACxBpG,4BAA6BA,EAC7BC,kBAAmBA,EACnBO,WAAYA,GACZ5F,WAAYA,GACZl5C,KAAMA,GAAQA,EAAK0nD,WACnB3I,YAAaA,EACbC,mBAAoBA,GACpBC,gBAAiBA,KAElB9C,IAASZ,EAAAA,GAAMI,SAAWgQ,GAC1BxP,IAASZ,EAAAA,GAAMI,SAAW4Q,GAC1BpQ,IAASZ,EAAAA,GAAMI,SAAWmR,GAC1B3Q,IAASZ,EAAAA,GAAMI,SAAWqR,aAMjC7Q,IAASZ,EAAAA,GAAMI,SACb1hD,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAWihB,EAAU,oBAAqB,4BAA4B9gB,SACnF+yD,MAGHzzD,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAWihB,EAAU,aAAc,4BAA4B9gB,SAC5EqgD,aAQnB,EAsCA+I,GAAuBnpD,aAAe,CACpCqpD,MAAO,CAAC,GAGH,IAAMmL,IAAiBC,EAAAA,EAAAA,oBAAkBC,EAAAA,EAAAA,WAAUvL,KCvgB7CwL,GAAkB,SAACj3D,GAC9B,IAAQ0H,GAAS1H,GAAS,CAAC,GAAnB0H,KAEFk/C,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUiF,EAAK,GAAE,CAACA,IAC5Cyb,EAAY2/B,IAKFe,GAHEgD,EAAAA,EAAAA,oBAAV1c,MAIE2c,QADRC,WAAclD,KAGV4C,GAAcz8C,EAAAA,EAAAA,UAAQ,kBAAMktD,EAAAA,EAAAA,IAAgBrT,EAAK,GAAE,CAACA,IAE1D,OACEliD,EAAAA,EAAAA,KAAAkC,EAAAA,SAAA,CAAAxB,SAEIukD,GACEnhD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWkhB,EAAU,aAAa9gB,SAAA,EACrCV,EAAAA,EAAAA,KAAA,OAAKM,UAAWkhB,EAAU,iBAAiB9gB,UACzCV,EAAAA,EAAAA,KAACw1D,EAAAA,GAAmB,OAEtBx1D,EAAAA,EAAAA,KAAA,OAAKM,UAAWkhB,EAAU,sBAAsB9gB,UAC9CV,EAAAA,EAAAA,KAACy1D,EAAAA,GAAwB,UAG3Bz1D,EAAAA,EAAAA,KAACm1D,IAAcp7D,EAAAA,EAAAA,GAAA,CACb+qD,YAAaA,GACTzmD,KAKlB,EAMAi3D,GAAgB30D,aAAe,CAC7BoF,KAAM,CAAC,G,uHC3CH2vD,GAAqB,CACzBC,QAAS,oBACTC,QAAS,iBACTC,IAAK,iBAGDC,GAAmB,SAAC5T,GAExB,OADmBA,IAASZ,EAAAA,GAAMI,QAEzB,CACLqU,KAAM,YACNC,UAAW,GAGR,CACLD,KAAM,YACNE,UAAW,EAEf,EAEaC,GAAyB,SAAHn9D,GAK5B,IACDo9D,EALJhM,EAAapxD,EAAboxD,cACAiM,EAAer9D,EAAfq9D,gBACApT,EAAUjqD,EAAViqD,WACAd,EAAInpD,EAAJmpD,KAMA,OAHIA,IAASZ,EAAAA,GAAMI,UACjByU,EAAqBjU,IAASZ,EAAAA,GAAMG,QAAU,UAAY,OAEpD,CACN4U,KAAK,GAADz7D,QAAK07D,EAAAA,GAAAA,IAA6BpU,IAASZ,EAAAA,GAAMI,QAAU,yBAAwB,GAAA9mD,OAAMu7D,EAAkB,yBAAuB,KAAAv7D,OAAIgvC,KAAK2sB,MAAsB,IAAhB3sB,KAAK4sB,WAC1JC,OAAQ,SACRC,WAAWC,EAAAA,GAAAA,IAA6BP,GACxCQ,OAAQ,CACNC,QAAQC,EAAAA,GAAAA,IAAe3M,EAAc4M,eAAeC,cAAcC,MAAMC,QACxEnB,KAAM,iBAERoB,cAAerB,GAAiB5T,GAChCkV,aAAc,MACdC,gBAAiB,aACjBC,iBAAiBC,EAAAA,GAAAA,IAAmCnB,GACpDoB,SAAU9B,GAA6B,OAAV1S,QAAU,IAAVA,OAAU,EAAVA,EAAYyU,aACzChH,MAAiB,OAAVzN,QAAU,IAAVA,OAAU,EAAVA,EAAY0U,WACnBC,oBAAqB,0DACrB3U,WAAAA,EAEJ,EC3Ba4U,GAA0B,WACrC,IAAMC,GAAkBl1D,EAAAA,EAAAA,YAAWm1D,EAAAA,iBAE7Bp1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExBm1D,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KAGC9V,EACZ1Z,EAAM2c,QADRC,WAAclD,KAGVn5C,GAAcpG,EAAAA,EAAAA,YAAWiY,EAAAA,oBAEzBq9C,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAEtBC,GAAgBC,EAAAA,GAAAA,IAAcrvD,GAE9BsvD,GAASC,EAAAA,GAAAA,IAAyBL,EAAUE,EAAe,qBAE3DhO,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IAIjCmO,IAFkB51D,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MAEmB/kB,OAAnB4lB,EAAGyN,EAAHzN,IAAKD,EAAG0N,EAAH1N,IAEb4N,GAAuCC,EAAAA,EAAAA,IAAsB,CAAEvV,SAAU9B,GAAea,KAAhFyW,EAAaF,EAAbE,cAAeC,EAAWH,EAAXG,YAEjBC,GAAkBC,EAAAA,GAAAA,IAAsB,CAC5CF,YAAAA,EACA9N,IAAAA,EACAD,IAAAA,IAGIkO,GAAmBC,EAAAA,GAAAA,IAAuB,CAC9Ct2D,KAAAA,EACA21D,OAAAA,EACAO,YAAAA,EACA9N,IAAAA,EACAD,IAAAA,IAGIoO,GAAkBC,EAAAA,GAAAA,IAAsB,CAC5CN,YAAAA,EACA9N,IAAAA,EACAD,IAAAA,EACAwN,OAAAA,EACA31D,KAAAA,EACAu1D,SAAAA,IAGIkB,GAAsBzqD,EAAAA,EAAAA,cAAY,SAAAxB,GAAqB,IAAlBugD,EAAUvgD,EAAVugD,WACnC2L,EAAgB,GAEtB,OAAK3L,EAAW/wB,QAKhB+wB,EAAW/wB,OAAOllB,SAAQ,SAAC6hD,GACpBA,EAAMj5D,IACTg5D,EAAc1hD,MAAK4hD,EAAAA,GAAAA,IAAoB,CACrCC,cAAeF,EACfG,qBAAAA,GAAAA,GACAT,iBAAAA,EACAE,gBAAAA,EACAJ,gBAAAA,IACCzoD,MAAK,SAACqpD,GACP34D,IAAAA,OAASu4D,EAAOI,EAClB,IAEJ,IAEI34D,IAAAA,QAAUs4D,GACLxuB,KAAAA,QAAgB6iB,GAGlB7iB,KAAAA,IAAYwuB,GAAehpD,MAAK,kBAAMq9C,CAAU,KAtB9C7iB,KAAAA,QAAgB6iB,EAuB3B,GAAG,CAACsL,EAAkBE,EAAiBJ,IAEjCh8B,GAAOnuB,EAAAA,EAAAA,cAAY,WACvB,IAAAgrD,EAAiElxB,EAAM2c,QAAQC,WAA3DuU,EAAeD,EAA3BjM,WAAuCmM,EAAaF,EAAvBrX,SAE/ByS,EAAa8E,EAAgBA,EAAc9gD,GAAK,KAChD+gD,EAAeF,EAAkBA,EAAgB7gD,GAAK,KAEtDghD,EAAuBhF,GACzBiF,EAAAA,EAAAA,IAAwBlP,EAAKC,EAAKgK,GAClClqB,KAAAA,QAAgB,CAAC,GAEfovB,EAAoB9X,IAASZ,EAAAA,GAAMI,QAAUuY,EAAAA,8BAAgCC,EAAAA,yBAE7EC,EAAyBN,EAC3BG,EAAkBnP,EAAKC,EAAKgK,EAAY+E,EAAcn3D,GAAM,GAAO,EAAOm2D,GAC1EjuB,KAAAA,QDhE4B,SAAH19B,GAAA,IAAMxK,EAAIwK,EAAJxK,KAAMwoB,EAAYhe,EAAZge,aAAYkvC,EAAAltD,EAAEmtD,cAAAA,OAAa,IAAAD,EAAG,KAAIA,EAAA,MAAQ,CACrF/D,MAAMC,EAAAA,GAAAA,IAA6B5zD,EAAKQ,UAAUsoB,eAClDirC,OAAQ,SACRjP,OAAQ,CACNyG,UAAW,GACXqM,YAAY,GAEdC,aAAcrvC,EACdgD,UAAW,CAACmsC,GACZrJ,0BAA2BqJ,EAC3BG,eAAgBC,GAAAA,GAAkBxlB,IACnC,CCqDuBylB,CAAqB,CAAEh4D,KAAAA,KAE3C,OAAOkoC,KAAAA,MAAc,CAAEyX,SAAUyX,EAAsBrM,WAAY0M,IAChE/pD,MAAK,SAAAlC,GAA+B,IAA5Bm0C,EAAQn0C,EAARm0C,SAAUoL,EAAUv/C,EAAVu/C,WAYjB,OAXI3sD,IAAAA,IAAMuhD,EAAU,UAGlBA,EAAWA,EAASt8C,MAElBjF,IAAAA,IAAM2sD,EAAY,UAGpBA,EAAaA,EAAW1nD,MAGlB,CACNs8C,SAAAA,EACAoL,WAAAA,EAEJ,IAAGr9C,MAAK,SAAAvB,GAA+B,IAA5BwzC,EAAQxzC,EAARwzC,SAAUoL,EAAU5+C,EAAV4+C,WACnB,GAAIpL,GAAYA,EAASsY,kBAAoBtY,EAASsY,iBAAiBp7D,OAAS,EAAG,CACjF,IACQkxD,GADYpO,EAASsY,iBAAiBxrB,MAAK,SAAAyrB,GAAQ,MAAgC,sBAA5BA,EAAS,cAAsC,KAC7E,CAAC,GAA1BnK,MAER,OAAOkI,EAAclI,GAAOrgD,MAAK,SAACyqD,GAMhC,OAJAxY,EAASW,WAAa6X,EAEtBxY,EAASkB,oBAAqB,EAEvB,CACLlB,SAAAA,EACAoL,WAAAA,EAEJ,GACF,CACA,MAAO,CACLpL,SAAAA,EACAoL,WAAAA,EAEJ,IAAGl8C,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,8CAADngE,OAA+CkgE,IAGtDlwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACJ,GAAG,CAAC7C,EAAUv1D,EAAM8lC,EAAM2c,QAAQC,WAAY0F,EAAKD,EAAK8N,EAAeE,IAEjEmC,GAAOtsD,EAAAA,EAAAA,cAAY,SAAAQ,GAGlB,IAFLnJ,EAAImJ,EAAJnJ,KACAk1D,EAAW/rD,EAAX+rD,YAEMrB,EAAgBpxB,EAAM2c,QAAQC,WAAW/C,SAE3B6Y,EAA+Cn1D,EAA3D0nD,WAAwC0N,EAAmBp1D,EAA7Bs8C,SAClB+Y,EAAsBH,EAAlCxN,WAEAzK,EAAemY,EAAfnY,WAEF8W,EAAuBF,EACzBhvB,KAAAA,QAAgB,CAChByX,SAAU,CACRt8C,KAAM6zD,KCvLqB,SAAH7gE,GAM3B,IALL2J,EAAI3J,EAAJ2J,KACAynD,EAAapxD,EAAboxD,cACA0N,EAAe9+D,EAAf8+D,gBACA7U,EAAUjqD,EAAViqD,WACAd,EAAInpD,EAAJmpD,KAEMn5C,EAAcohD,EAAckR,aAAe,CAAC,EAE5CC,EAA2B,CAC/Bv1D,KAAMmwD,GAAuB,CAC3BxzD,KAAAA,EACAynD,cAAAA,EACAiM,gBAAiBrtD,EAAYwyD,mCAC7BvY,WAAAA,EACAd,KAAAA,KAIJ,OAAOsZ,EAAAA,EAAAA,IAAa,CAClBnZ,SAAUiZ,GACT,CACDG,SAAU5D,EAAgB3/C,KAC1BxV,KAAAA,EACAg5D,eAAgB7D,EAAgB8D,eAAe,wBAEnD,CDgKMC,CAAsB,CACpBl5D,KAAAA,EACAynD,cAAAA,EACA0N,gBAAAA,EACA7U,WAAAA,EACAd,KAAAA,IAGJ,OAAO4X,EAAqB1pD,MAAK,SAAC09C,GAChC,IAAQzL,EAAayL,EAAbzL,SAUR,OARA4V,EAAS8C,MAAM,+CACf9C,EAAS4D,OAAO,4DAADjhE,OAA6DynD,EAASt8C,KAAK+S,KAE1Fk/C,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAE1Z,SAAUyL,EAAOzL,SAASt8C,OAEnEi2D,GAAAA,QAAaC,WAAW,cACxBD,GAAAA,QAAaC,WAAW,YAEjB,CACL5Z,SAAUyL,EAAOzL,SAASt8C,KAE9B,IAAGqK,MAAK,SAAC09C,GACP,IAAMoO,EAAoB,CACxBzO,WAAY,CACV1nD,KAAMm1D,GAERiB,mBAAoB,CAClBp2D,KAAMq1D,GAER/Y,SAAUyL,EAAOzL,UAGb+Z,EAAc,CAClBX,SAAU5D,EAAgB3/C,KAC1B+/C,SAAAA,EACAyD,eAAgB7D,EAAgB8D,eAAe,cAC/Cj5D,KAAAA,EACAynD,cAAAA,EACAU,IAAAA,EACAC,IAAAA,GAGF,OAAOlgB,KAAAA,MAAc,CACnByX,SAAUzX,KAAAA,QAAgBkjB,EAAOzL,UACjCsX,gBAAiBR,EAAoB,CAAE1L,WAAYyN,IAChD9qD,MAAK,kBAAMisD,EAAAA,EAAAA,IAAeH,EAAmBE,EAAY,KAEhE,IAAGhsD,MAAK,SAAC09C,GACP,IAAQ6L,EAAoB7L,EAApB6L,gBAaR,OAXA1B,EAAS8C,MAAM,kDAADngE,OAAmDkzD,IAEjEkK,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAEtO,WAAYkM,EAAgBlM,WAAW1nD,OASzE,CACLs8C,SAAUyL,EAAOzL,SACjBoL,WAAYkM,EAAgBlM,WAAW1nD,KAE3C,IAAGwL,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,8CAADngE,OAA+CkgE,IAGtDlwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACF,GAAG,CAAC7C,EAAUnN,EAAKD,EAAK3I,EAAMx/C,EAAMm1D,EAAiBG,EAAM7N,EAAe3hB,EAAM2c,QAAQC,WAAW/C,SAAU8W,IAE7G,MAAO,CACLt8B,KAAAA,EACAm+B,KAAAA,EAEJ,EErQasB,GAA0B,SAACj+D,GACtC,IAAQ0H,GAAS1H,GAAS,CAAC,GAAnB0H,KAEFk/C,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUiF,EAAK,GAAE,CAACA,IAC5Cyb,EAAY2/B,IAKFe,GAHEgD,EAAAA,EAAAA,oBAAV1c,MAIE2c,QADRC,WAAclD,KAGV4C,GAAcz8C,EAAAA,EAAAA,UAAQ,kBAAMk0D,EAAAA,EAAAA,IAAwBra,EAAK,GAAE,CAACA,IAElE,OACEliD,EAAAA,EAAAA,KAAAkC,EAAAA,SAAA,CAAAxB,SAEIukD,GACEnhD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWkhB,EAAU,aAAa9gB,SAAA,EACrCV,EAAAA,EAAAA,KAAA,OAAKM,UAAWkhB,EAAU,iBAAiB9gB,UACzCV,EAAAA,EAAAA,KAACw1D,EAAAA,GAAmB,OAEtBx1D,EAAAA,EAAAA,KAAA,OAAKM,UAAWkhB,EAAU,sBAAsB9gB,UAC9CV,EAAAA,EAAAA,KAACy1D,EAAAA,GAAwB,UAG3Bz1D,EAAAA,EAAAA,KAACm1D,IAAcp7D,EAAAA,EAAAA,GAAA,CACb+qD,YAAaA,GACTzmD,KAKlB,EAMAi+D,GAAwB37D,aAAe,CACrCoF,KAAM,CAAC,G,8BC9CHyb,GAAY,WAAH,OAAAznB,EAAAA,EAAAA,GAAA,CACb4mD,UAAW,CACTlnD,SAAU,OAET+iE,EAAAA,GAAAA,MAA4B,EAGpBC,GAAyB,WAAH,OAASrb,EAAAA,EAAAA,IAA0B5/B,GAAW,ECkB3EmoC,IAAqBC,EAAAA,EAAAA,IAAyBC,EAAAA,IAEvC6S,GAAqB,SAAH3jE,GAIxB,IAAD4jE,EAAA5jE,EAHJgN,KAAM62D,OAAa,IAAAD,EAAG,CAAC,EAACA,EACxBva,EAAYrpD,EAAZqpD,aACA4H,EAAKjxD,EAALixD,MAEM/E,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMylB,EAAAA,EAAAA,SAAQ8uC,EAAc,GAAE,CAACA,IACnDxZ,GAAY8G,EAAAA,EAAAA,MAEZ1oC,EAAYi7C,KAElBvvD,EAAuC88C,GAAS,CAAC,EAAzC0E,EAAYxhD,EAAZwhD,aAAcE,EAAY1hD,EAAZ0hD,aAEMW,GAAmBC,EAAAA,EAAAA,kBAAvChnB,MAAS2c,QAAWoK,WACtB7sD,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBq8C,GAAat8C,EAAAA,EAAAA,YAAWotD,EAAAA,IAE9B7hD,EAKI0uD,GAAiB,CAAC,EAJpBC,EAAe3uD,EAAf2uD,gBACAC,EAAwB5uD,EAAxB4uD,yBAAwBC,EAAA7uD,EACxBm0C,SAAAA,OAAQ,IAAA0a,EAAG,CAAC,EAACA,EAAAC,EAAA9uD,EACbu/C,WAAAA,OAAU,IAAAuP,EAAG,CAAC,EAACA,EAGjBrX,GAIIC,EAAAA,EAAAA,IAEF,CAACM,GAAAA,GAAW+W,UAAW/W,GAAAA,GAAWgX,gBAAiBhX,GAAAA,GAAWkD,iBAC9D,CAAClD,GAAAA,GAAW+W,UAAW/W,GAAAA,GAAWgX,gBAAiBhX,GAAAA,GAAWkD,kBAC/DvD,GAAAt3B,EAAAA,EAAAA,GAAAo3B,EAAA,GAPCG,EAAWD,EAAA,GACXsX,EAAgBtX,EAAA,GAChBuX,EAAmBvX,EAAA,GAOfwX,GAAkBh1D,EAAAA,EAAAA,UACtB,kBAAMo+C,EAAAA,EAAAA,IAAiB,CAAEC,cAAe0W,GAAsB,GAC9D,CAACA,IAGH,OACEp9D,EAAAA,EAAAA,KAACk0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,SAAU7E,GAAa7uD,UACvDV,EAAAA,EAAAA,KAACq0D,EAAAA,GAAoB,CAAA3zD,UACnBV,EAAAA,EAAAA,KAACs0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,OAAQ9F,EAAca,WAAAA,EAAY+N,YAAaC,EAAAA,gBAAiB78D,UAChGoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWC,IAAWihB,EAAU,aAAc,4BAA4B9gB,SAAA,EAC7EV,EAAAA,EAAAA,KAAC00D,EAAAA,GAAU,CACThxD,MAAO8nB,mCACPqB,YAAarB,+CAEfxrB,EAAAA,EAAAA,KAAC2pD,GAAkB,CAACrpD,UAAU,yBAC9BN,EAAAA,EAAAA,KAAC20D,EAAAA,GAAY,CAACH,OAAQ5F,KACtB5uD,EAAAA,EAAAA,KAACijD,EAAAA,GAAuB,CACtBl9C,KAAMs8C,EACND,aAAcA,EACdD,aAAciB,EAAUpkD,QACxB0D,KAAMA,EAAKhC,UAEXoD,EAAAA,EAAAA,MAACkjD,EAAAA,GAAQ,CACPC,cAAenB,EACfsB,YAAU,EACVF,oBAAkB,EAClBC,WAAYgW,EACZzW,cAAe0W,EAAoB18D,SAAA,EAEnCV,EAAAA,EAAAA,KAACw9D,EAAAA,GAA6B,CAE5BvY,UAAWA,EACXxjC,QAAS,CACPo7C,gBAAAA,EACAC,yBAAAA,GAEFvT,OAAQ8T,EACRt3D,KAAMs8C,EACNI,SAAS,wBARJyD,GAAAA,GAAW+W,YAUlBj9D,EAAAA,EAAAA,KAACy9D,GAAAA,GAAmB,CAElBxY,UAAWA,EACXsE,OAAQ8T,EACRt3D,KAAMs8C,EACNI,SAAS,wBAJJyD,GAAAA,GAAWgX,kBAMlBl9D,EAAAA,EAAAA,KAAC09D,GAAAA,EAAoB,CAEnBzY,UAAWA,EACXsE,OAAQ8T,EACRt3D,KAAMs8C,GAHDsb,GAAAA,EAAcC,wBAOzB59D,EAAAA,EAAAA,KAAC40D,EAAAA,GAAyB,CACxB7uD,KAAM0nD,EACNrL,aAAcA,EACdD,aAAciB,EAAUpkD,QACxB0D,KAAMA,EAAKhC,UAEXV,EAAAA,EAAAA,KAACqpD,GAAAA,GAAqB,CAAA3oD,UACpBV,EAAAA,EAAAA,KAACgnD,EAAAA,GAAQ,CACPC,cAAenB,EACfsB,YAAU,EACVF,oBAAkB,EAClBC,WAAYgW,EACZzW,cAAe0W,EAAoB18D,UAEnCV,EAAAA,EAAAA,KAACspD,EAAAA,GAAmB,CAElBrE,UAAWA,EACXxjC,QAAS,CACP49B,iBAAkBJ,GAEpBsK,OAAQ8T,EACRt3D,KAAM0nD,GANDvH,GAAAA,GAAWkD,+BAgBpC,EAiBAsT,GAAmB/7D,aAAe,CAChCoF,KAAM,CAAC,EACPikD,MAAO,CAAC,G,8BCvKJxoC,GAAY,WAAH,MAAU,CACvBq/B,cAAe,CACbpnD,SAAU,IACV,8BAA+B,CAC7BF,MAAO,mBAEP,wBAAyB,CACvBD,SAAU,sBAIjB,ECgBYukE,GAAsB,SAAH9kE,GAKzB,IAJC+kE,EAAY/kE,EAAlBgN,KACAq8C,EAAYrpD,EAAZqpD,aACA2b,EAAehlE,EAAfglE,gBACAC,EAA6BjlE,EAA7BilE,8BAEA9wD,EAII4wD,GAAgB,CAAC,EAHnBzb,EAAQn1C,EAARm1C,SACAwa,EAAe3vD,EAAf2vD,gBACAC,EAAwB5vD,EAAxB4vD,yBAGI7X,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUg9D,EAAa,GAAE,CAACA,IAEpDt8C,GD5B0C4/B,EAAAA,EAAAA,IAA0B5/B,IC8BpE9e,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBwgD,GAAY8G,EAAAA,EAAAA,MACZ+E,GAAa5mD,EAAAA,EAAAA,UAAQ,kBAAM6mD,EAAAA,EAAAA,iBAAgBxsD,EAAM,CAACysD,EAAAA,qBAAqB,GAAE,CAACzsD,IAEhFijD,GAIIC,EAAAA,EAAAA,IAAiBmY,EAAiBC,GAA8BnY,GAAAt3B,EAAAA,EAAAA,GAAAo3B,EAAA,GAHlEG,EAAWD,EAAA,GACXsX,EAAgBtX,EAAA,GAChBuX,EAAmBvX,EAAA,GAGf0D,GAASlhD,EAAAA,EAAAA,UACb,kBAAMo+C,EAAAA,EAAAA,IAAiB,CAAEC,cAAe0W,GAAsB,GAC9D,CAACA,IAGGa,GAAmB51D,EAAAA,EAAAA,UAAQ,kBAAO48C,GAA8C,eAAzB,OAAR5C,QAAQ,IAARA,OAAQ,EAARA,EAAU8U,cAAcpB,KAAoB,GAAE,CAAC9Q,EAAW5C,IACzG6b,GAAwB71D,EAAAA,EAAAA,UAAQ,kBAAO41D,EAAmB,CAACE,GAAAA,IAAc,CAACC,GAAAA,GAAW,GAAG,CAACH,IAE/F,OACEj+D,EAAAA,EAAAA,KAAA,OAAKM,UAAWkhB,EAAU,iBAAiB9gB,UACzCV,EAAAA,EAAAA,KAACijD,EAAAA,GAAuB,CACtBl9C,KAAMs8C,EACND,aAAcA,EACdD,aAAciB,EAAUpkD,QACxB0D,KAAMusD,EAAWvuD,UAEjBoD,EAAAA,EAAAA,MAACkjD,EAAAA,GAAQ,CACPC,cAAenB,EACfsB,YAAU,EACVF,oBAAkB,EAClBC,WAAYgW,EACZzW,cAAe0W,EAAoB18D,SAAA,EAEnCV,EAAAA,EAAAA,KAACq+D,GAAAA,GAAiB,CAEhBpZ,UAAWA,GADNiB,GAAAA,GAAWoY,gBAGlBt+D,EAAAA,EAAAA,KAACu+D,GAAAA,GAAe,CAEdtZ,UAAWA,EACXl/C,KAAM+3D,GAFD5X,GAAAA,GAAWsY,MAIlBx+D,EAAAA,EAAAA,KAACy+D,GAAAA,GAAgB,CAEfxZ,UAAWA,EACXsE,OAAQA,EACRnH,aAAcA,EACdr8C,KAAM+3D,EACNr8C,QAAS,CACPi9C,4BAA6B,CAC3BC,mBAAoBT,EACpBU,uBAAuB,GAEzBC,qBAAsB,CACpBC,oBAAoB,KAXnB5Y,GAAAA,GAAW6Y,eAelB/+D,EAAAA,EAAAA,KAACg/D,GAAAA,GAAa,CAEZC,aAAchB,EAAmB,YAAc,YAC/ChZ,UAAWA,EACXsE,OAAQA,EACRnH,aAAcA,EACdr8C,KAAM+3D,GALD5X,GAAAA,GAAWgZ,YAOlBl/D,EAAAA,EAAAA,KAACm/D,GAAAA,GAAW,CAEVla,UAAWA,EACXsE,OAAQA,EACRnH,aAAcA,EACdr8C,KAAM+3D,GAJD5X,GAAAA,GAAWkZ,SAMlBp/D,EAAAA,EAAAA,KAACw9D,EAAAA,GAA6B,CAE5BvY,UAAWA,EACXxjC,QAAS,CACPo7C,gBAAAA,EACAC,yBAAAA,GAEFvT,OAAQA,EACRxjD,KAAMs8C,GAPD6D,GAAAA,GAAW+W,YASlBj9D,EAAAA,EAAAA,KAACy9D,GAAAA,GAAmB,CAElBxY,UAAWA,EACXsE,OAAQA,EACRxjD,KAAMs8C,GAHD6D,GAAAA,GAAWgX,kBAKlBl9D,EAAAA,EAAAA,KAACq/D,GAAAA,GAAe,CAEdpa,UAAWA,EACXsE,OAAQA,EACRxjD,KAAMs8C,GAHD6D,GAAAA,GAAWoZ,cAKlBt/D,EAAAA,EAAAA,KAACu/D,GAAAA,GAAe,CAEdta,UAAWA,EACXsE,OAAQA,EACRxjD,KAAMs8C,EACN5gC,QAAS,CACPiR,iBAAiB,EACjB8sC,oBAAqB,CACnBC,oBAAoB,EACpBC,sBAAsB,IAG1BC,+BAA6B,EAC7BC,aAAW,GAZN1Z,GAAAA,GAAW2Z,mBAkB5B,EAWAhC,GAAoBl9D,aAAe,CACjCoF,KAAM,CAAC,GCvJT,IAAM4jD,IAAqBC,EAAAA,EAAAA,IAAyBC,EAAAA,IAE9CiW,GAAoB,CAAC5Z,GAAAA,GAAWoY,cAAepY,GAAAA,GAAWoZ,YAAapZ,GAAAA,GAAW2Z,aAClFE,GAAmCD,GAE5BE,GAA2B,SAAHjnE,GAI9B,IAHLgN,EAAIhN,EAAJgN,KACAq8C,EAAYrpD,EAAZqpD,aAGAl1C,EAFKnU,EAALixD,OAEgD,CAAC,EAAzC0E,EAAYxhD,EAAZwhD,aAAcE,EAAY1hD,EAAZ0hD,aAGdW,GADUC,EAAAA,EAAAA,kBAAVhnB,MACqB2c,QAArBoK,WAER,OACEvvD,EAAAA,EAAAA,KAACk0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,SAAU7E,GAAa7uD,UACvDV,EAAAA,EAAAA,KAACq0D,EAAAA,GAAoB,CAAA3zD,UACnBV,EAAAA,EAAAA,KAACs0D,EAAAA,GAAc,CAACC,eAAgB,CAC9BC,OAAQ9F,EAAca,WAAAA,EAAY+N,YAAaC,EAAAA,eAAgB9I,wBAAyBlF,GACtF7uD,UAEFoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,kCAAiCI,SAAA,EAC9CV,EAAAA,EAAAA,KAAC00D,EAAAA,GAAU,CACThxD,MAAO8nB,mBACPqB,YAAarB,oCAEfxrB,EAAAA,EAAAA,KAAC2pD,GAAkB,CAACrpD,UAAU,yBAC9BN,EAAAA,EAAAA,KAAC20D,EAAAA,GAAY,CAACH,OAAQ5F,KACtB5uD,EAAAA,EAAAA,KAAC69D,GAAmB,CAClB93D,KAAMA,EACNq8C,aAAcA,EACd2b,gBAAiB+B,GACjB9B,8BAA+B+B,aAO7C,EAaAC,GAAyBr/D,aAAe,CACtCoF,KAAM,CAAC,EACPikD,MAAO,CAAC,GCxDV,IAAML,IAAqBC,EAAAA,EAAAA,IAAyBC,EAAAA,IAE9CiW,GAAoB,CACxB5Z,GAAAA,GAAWoY,cACXpY,GAAAA,GAAWoZ,YACXpZ,GAAAA,GAAW2Z,YACX3Z,GAAAA,GAAW6Y,aACX7Y,GAAAA,GAAWgZ,UACXhZ,GAAAA,GAAWkZ,OACXlZ,GAAAA,GAAW+W,UACX/W,GAAAA,GAAWgX,gBACXhX,GAAAA,GAAWsY,KAEPuB,GAAmC,CACvC7Z,GAAAA,GAAWoY,cACXpY,GAAAA,GAAWoZ,YACXpZ,GAAAA,GAAW2Z,YACX3Z,GAAAA,GAAWkZ,OACXlZ,GAAAA,GAAWgZ,UACXhZ,GAAAA,GAAW+W,UACX/W,GAAAA,GAAWgX,gBACXhX,GAAAA,GAAWsY,KAGAyB,GAA+B,SAAHlnE,GAIlC,IAHLgN,EAAIhN,EAAJgN,KACAq8C,EAAYrpD,EAAZqpD,aAGAl1C,EAFKnU,EAALixD,OAEgD,CAAC,EAAzC0E,EAAYxhD,EAAZwhD,aAAcE,EAAY1hD,EAAZ0hD,aAGdW,GADUC,EAAAA,EAAAA,kBAAVhnB,MACqB2c,QAArBoK,WAER,OACEvvD,EAAAA,EAAAA,KAACk0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,SAAU7E,GAAa7uD,UACvDV,EAAAA,EAAAA,KAACq0D,EAAAA,GAAoB,CAAA3zD,UACnBV,EAAAA,EAAAA,KAACs0D,EAAAA,GAAc,CAACC,eAAgB,CAC9BC,OAAQ9F,EACRa,WAAAA,EACA+N,YAAaC,EAAAA,eACb9I,wBAAyBlF,GACzB7uD,UAEAoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,uCAAsCI,SAAA,EACnDV,EAAAA,EAAAA,KAAC2pD,GAAkB,CAACrpD,UAAU,yBAC9BN,EAAAA,EAAAA,KAAC20D,EAAAA,GAAY,CAACH,OAAQ5F,KACtB5uD,EAAAA,EAAAA,KAAC69D,GAAmB,CAClB93D,KAAMA,EACNq8C,aAAcA,EACd2b,gBAAiB+B,GACjB9B,8BAA+B+B,aAO7C,EAaAE,GAA6Bt/D,aAAe,CAC1CoF,KAAM,CAAC,EACPikD,MAAO,CAAC,GCvEH,IAAMkW,GAAmC,SAAC7hE,GAC/C,IAAA05D,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KACT7N,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IAC3ByN,GAAkBl1D,EAAAA,EAAAA,YAAWm1D,EAAAA,iBAC7BG,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBACtBx1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB21D,IADkB51D,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MACmB/kB,OAAnB2lB,EAAG0N,EAAH1N,IAAKC,EAAGyN,EAAHzN,IACbqV,GAA+EC,EAAAA,EAAAA,MAAvEC,EAAsBF,EAAtBE,uBAAwBC,EAAsBH,EAAtBG,uBAAwBC,EAAkBJ,EAAlBI,mBAECC,GAAXniE,GAAS,CAAC,GAAhDoiE,0BAAAA,OAAyB,IAAAD,GAAQA,EAEjCte,EAAS1Z,EAAM2c,QAAQC,WAAvBlD,KACAyW,GAAkBD,EAAAA,EAAAA,IAAsB,CAAEvV,SAAU9B,GAAea,KAAnEyW,cAkIR,MAAO,CACL97B,MAjIWnuB,EAAAA,EAAAA,cAAY,WACvB,IAAMkrD,EAAgBpxB,EAAM2c,QAAQC,WAAW/C,SACnCyS,GAAe8E,GAAiB,CAAC,GAArC9gD,GAEF4nD,EAAe,CACnBre,UAAUse,EAAAA,EAAAA,cAAa9V,EAAKC,EAAKgK,GACjCwC,iBAAiBsJ,EAAAA,GAAAA,IAAuB/V,EAAKC,EAAKgK,GAClD+L,sCAAsCC,EAAAA,EAAAA,qBAAoB,CACxDjW,IAAAA,EACAC,IAAAA,EACAX,cAAAA,IAEF4W,mBAAmBC,EAAAA,GAAAA,IAAsBnW,EAAKC,EAAKgK,IAGrD,OAAOlqB,KAAAA,MAAc81B,GAActwD,MAAK,SAAAvB,GAKjC,IAJLwzC,EAAQxzC,EAARwzC,SACAiV,EAAezoD,EAAfyoD,gBACAuJ,EAAoChyD,EAApCgyD,qCACAE,EAAiBlyD,EAAjBkyD,kBAEME,GAAeC,EAAAA,EAAAA,6BAA4B,CAC/CC,eAAapnE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOsoD,GAAQ,IAAEoU,OAAQmD,EAAcwH,SACpDC,wBAAyB/J,EAAkBA,EAAgBx4D,MAAQ,GACnE+9D,gBAAiBgE,EAAqChE,gBACtDyE,uBAAwBP,EAAoBA,EAAkBjiE,MAAQ,KAGlEyiE,EAAqB,SAAAx7D,GAAI,OAAAhM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC1B8mE,GAAoC,IACvCxe,UAAQtoD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACHgM,GAAI,IACPy7D,UAAW1gE,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,eAAiB,KAC9Dof,UAAW3gE,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,eAAiB,QAE5Doe,EAA4BJ,EAAuBhe,GAAY,CAAC,EAAC,EAGvE,GAAI4e,EAAal7D,MAAQk7D,EAAal7D,KAAK40D,kBAAoBsG,EAAal7D,KAAK40D,iBAAiBp7D,OAAS,EAAG,CAC5G,IACQkxD,GADYwQ,EAAal7D,KAAK40D,iBAAiBxrB,MAAK,SAAAyrB,GAAQ,MAAgC,sBAA5BA,EAAS,cAAsC,KACtF,CAAC,GAA1BnK,MAER,OAAOkI,EAAclI,GAAOrgD,MAAK,SAACyqD,GAIhC,OAHAoG,EAAal7D,KAAKi9C,WAAa6X,EAC/BoG,EAAal7D,KAAKw9C,oBAAqB,EAEhCge,EAAmBN,EAAal7D,KACzC,GACF,CAEA,OAAOw7D,EAAmBN,EAAal7D,KACzC,IAAGwL,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,8CAADngE,OAA+CkgE,IAGtDlwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACF,GAAG,CAAC7C,EAAUnN,EAAKuV,EAAwBxV,EAAK4V,EAA2BtW,EAAe3hB,EAAM2c,QAAQC,WAAW/C,SAAUsW,IAqE3HqC,MAnEWtsD,EAAAA,EAAAA,cAAY,SAAAQ,GAElB,IADLnJ,EAAImJ,EAAJnJ,KAGYk7D,EASRl7D,EATFs8C,SACAwa,EAQE92D,EARF82D,gBACAC,EAOE/2D,EAPF+2D,yBACA4E,EAME37D,EANF27D,aACAC,EAKE57D,EALF47D,YACAH,EAIEz7D,EAJFy7D,UACAC,EAGE17D,EAHF07D,UACAG,EAEE77D,EAFF67D,cACAC,EACE97D,EADF87D,uBAGE1G,EAAiB8F,EAErB,GAAIR,EAA2B,CAC7B,IAAKF,EAAmBqB,EAAeC,GACrC,OAAOj3B,KAAAA,SAGTuwB,GAAcphE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTohE,GACAmF,EAAuBqB,EAAaD,EAAcF,EAAWC,GAEpE,CAEA,IAAMK,EAAe,CACnBzf,UAAUmZ,EAAAA,EAAAA,IAAa,CACrBnZ,SAAU,CAAEt8C,KAAMo1D,GAClB0B,gBAAAA,EACAC,yBAAAA,GACC,CACDrB,SAAU5D,EAAgB3/C,KAC1BxV,KAAAA,EACAg5D,eAAgB7D,EAAgB8D,eAAe,qBAInD,OAAO/wB,KAAAA,MAAck3B,GAAc1xD,MAAK,SAAAiI,GAEjC,IADK0pD,EAAe1pD,EAAzBgqC,SAEA4V,EAAS8C,MAAM,2EACf9C,EAAS4D,OAAO,2EAEhB,IAAQxZ,EAAa0f,EAAb1f,SAIR,OAFA2V,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAE1Z,SAAUA,EAASt8C,OAErD,CACLs8C,SAAUA,EAASt8C,KAEvB,IAAGwL,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,iFAGRnwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACF,GAAG,CAAC7C,EAAUqI,EAAwB59D,EAAM+9D,EAA2BF,EAAoB1I,EAAiBG,IAM9G,ECtKMx2C,GAAY,WAAH,MAAU,CACvBq/B,cAAe,CACbpnD,SAAU,IACVH,SAAU,IACVmhC,KAAM,KAET,ECwBKkvB,IAAqBC,EAAAA,EAAAA,IAAyBC,EAAAA,IAEvCmY,GAAkB,SAAHjpE,GAIrB,IAHCkpE,EAAUlpE,EAAhBgN,KACAq8C,EAAYrpD,EAAZqpD,aACA4H,EAAKjxD,EAALixD,MAEMtnD,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBwgD,GAAY8G,EAAAA,EAAAA,MACV1hB,GAAUgnB,EAAAA,EAAAA,kBAAVhnB,MACO05B,GAAgBhd,EAAAA,EAAAA,oBAAvB1c,MACA+mB,EAAe/mB,EAAM2c,QAArBoK,WACFtK,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUmhE,EAAW,GAAE,CAACA,IAElDzgD,GDpCiC4/B,EAAAA,EAAAA,IAA0B5/B,ICsCjEtU,EAAuC88C,GAAS,CAAC,EAAzC0E,EAAYxhD,EAAZwhD,aAAcE,EAAY1hD,EAAZ0hD,aAEtBjJ,GAIIC,EAAAA,EAAAA,IACF,CAACM,GAAAA,GAAW6Y,aAAc7Y,GAAAA,GAAWkZ,OAAQlZ,GAAAA,GAAWgZ,WACxD,CAAChZ,GAAAA,GAAWkZ,OAAQlZ,GAAAA,GAAWgZ,YAChCrZ,GAAAt3B,EAAAA,EAAAA,GAAAo3B,EAAA,GANCG,EAAWD,EAAA,GACXsc,EAAmBtc,EAAA,GACnBuX,EAAmBvX,EAAA,GAMfuc,GAAiB/5D,EAAAA,EAAAA,UAAQ,kBAC7Bo+C,EAAAA,EAAAA,IAAiB,CAAEC,cAAe0W,GAAsB,GAAE,CAACA,IAG7Clb,EACZggB,EAAY/c,QADdC,WAAclD,KAGV+b,GAAmB51D,EAAAA,EAAAA,UAAQ,kBAAM65C,IAASZ,EAAAA,GAAMI,OAAO,GAAE,CAACQ,IAC1Dgc,GAAwB71D,EAAAA,EAAAA,UAAQ,kBAAO41D,EAAmB,CAACE,GAAAA,IAAc,CAACC,GAAAA,GAAW,GAAG,CAACH,IAE/F,OACEj+D,EAAAA,EAAAA,KAACk0D,EAAAA,GAAc,CAACC,eAAgB,CAAEC,SAAU7E,GAAa7uD,UACvDV,EAAAA,EAAAA,KAACq0D,EAAAA,GAAoB,CAAA3zD,UACnBV,EAAAA,EAAAA,KAAA,OAAKM,UAAWC,IAAWihB,EAAU,iBAAkB,yBAAyB9gB,UAC9EoD,EAAAA,EAAAA,MAACwwD,EAAAA,GAAc,CAACC,eAAgB,CAAEC,OAAQ9F,EAAca,WAAAA,EAAY+N,YAAaC,EAAAA,gBAAiB78D,SAAA,EAChGV,EAAAA,EAAAA,KAAC00D,EAAAA,GAAU,CACThxD,MAAO8nB,kDACPqB,YAAarB,gEAEfxrB,EAAAA,EAAAA,KAAC2pD,GAAkB,CAACrpD,UAAU,yBAC9BN,EAAAA,EAAAA,KAAC20D,EAAAA,GAAY,CAACH,OAAQ5F,KACtB5uD,EAAAA,EAAAA,KAACijD,EAAAA,GAAuB,CACtBl9C,KAAMk8D,EACN7f,aAAcA,EACdD,aAAciB,EAAUpkD,QACxB0D,KAAMA,EAAKhC,UAEXoD,EAAAA,EAAAA,MAACkjD,EAAAA,GAAQ,CACPC,cAAenB,EACfoB,oBAAkB,EAClBC,WAAYgb,EACZzb,cAAe0W,EACfhW,YAAU,EAAA1mD,SAAA,EAEVV,EAAAA,EAAAA,KAACy+D,GAAAA,GAAgB,CAEfxZ,UAAWA,EACXsE,OAAQ6Y,EACRhgB,aAAcA,EACdr8C,KAAMk8D,EACNxgD,QAAS,CACPi9C,4BAA6B,CAC3BC,mBAAoBT,EACpBU,uBAAuB,GAEzBC,qBAAsB,CACpBC,oBAAoB,IAGxBrc,SAAS,2BAdJyD,GAAAA,GAAW6Y,eAgBlB/+D,EAAAA,EAAAA,KAACg/D,GAAAA,GAAa,CAEZC,aAAchB,EAAmB,YAAc,YAC/ChZ,UAAWA,EACXsE,OAAQ6Y,EACRhgB,aAAcA,EACdr8C,KAAMk8D,GALD/b,GAAAA,GAAWgZ,YAOlBl/D,EAAAA,EAAAA,KAACm/D,GAAAA,GAAW,CAEVla,UAAWA,EACXsE,OAAQ6Y,EACRhgB,aAAcA,EACdr8C,KAAMk8D,GAJD/b,GAAAA,GAAWkZ,qBAalC,EAWA4C,GAAgBrhE,aAAe,CAC7BoF,KAAM,CAAC,EACPikD,MAAO,CAAC,GCpIH,I,kDC8HMqY,GAAuB,SAAHn1D,GAAkB,IAAZnH,EAAImH,EAAJnH,KAC7BkkD,IAAUtnD,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MAEFvnD,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB21D,EAAqBtO,EAAM/kB,OAAnB2lB,EAAG0N,EAAH1N,IAAKC,EAAGyN,EAAHzN,IAEb18B,GAA8CC,EAAAA,EAAAA,UAAS,WAAUC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1Dk0C,EAAeh0C,EAAA,GAAEi0C,EAAkBj0C,EAAA,GAEpC67B,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IACjCv7C,EAA4Cs7C,GAAiB,CAAC,EAAtDkR,EAAWxsD,EAAXwsD,YAAamH,EAAkB3zD,EAAlB2zD,mBACfz5D,GAAcV,EAAAA,EAAAA,UAAQ,kBAAAtO,EAAAA,EAAAA,GAAC,CAAQ0oE,SAAO1oE,EAAAA,EAAAA,GAAA,GAAOyoE,IAAyBnH,EAAW,GAAK,CAACmH,EAAoBnH,IAEzG7yB,GAAU0c,EAAAA,EAAAA,oBAAV1c,MAERkxB,EAAoElxB,EAAM2c,QAAQC,WAA1Esd,EAAgBhJ,EAAhBgJ,iBAAkBC,EAAkBjJ,EAAlBiJ,mBAAoBC,EAAiBlJ,EAAjBkJ,kBAEtC1gB,GAAS2gB,EAAAA,EAAAA,gBAAer6B,GAAxB0Z,KAUR,OARAtlB,EAAAA,EAAAA,YAAU,WACR,IAAMkmC,EAAqBC,GAAAA,QAAAA,SAA+BA,GAAAA,QAC1DD,EAAmBE,aAAa5yD,MAAK,WACnC,IAAM6yD,EAAsBH,EAAmBI,WAAW,0CAA4C,CAAC,EACvGX,EAAmBzhE,IAAAA,YAAcmiE,EAAoBE,OAASF,EAAoBE,KAAO,UAAY,UACvG,GACF,GAAG,IAEKp9D,GAAQA,EAAKs8C,UAAYt8C,EAAK0nD,YA9JhB,SAAH10D,GAOd,IANLgN,EAAIhN,EAAJgN,KACAu8D,EAAevpE,EAAfupE,gBACAnY,EAAapxD,EAAboxD,cACAU,EAAG9xD,EAAH8xD,IACAC,EAAG/xD,EAAH+xD,IACApoD,EAAI3J,EAAJ2J,KAEM0gE,EAAYtiE,IAAAA,IAChBA,IAAAA,OACEiF,EAAKs8C,UAAYt8C,EAAKs8C,SAASiV,iBAAmBvxD,EAAKs8C,SAASiV,gBAAgB+L,qBAAqBC,kBACrG,SAAAC,GAAG,MAA4B,aAAxBA,EAAIC,eAA8B,KAE3C,SAAAD,GAAG,OAAIA,EAAIE,QAAQ,IAGrB,MAAQ,CACNC,aAAc,CACZ39D,KAAMA,EAAKs8C,SAASgU,MAEtBsN,eAAgB,CACd59D,KAAMA,EAAK0nD,WAAW1nD,KAAKswD,MAE7BuN,QAAS,CACP79D,KAAMA,EAAKs8C,SAASW,WAAW9qC,MAEjC2rD,YAAa,CACX99D,KAAMA,EAAKs8C,SAASW,WAAWyU,aAEjCqM,oBAAqB,CACnB/9D,KAAM,CACJg+D,wBAAyBh+D,EAAKs8C,SAAS0hB,wBACvCC,mBAAoBj+D,EAAKs8C,SAAS2hB,mBAClCC,wBAAyBl+D,EAAKs8C,SAAS4hB,wBACvCC,yBAA0Bn+D,EAAKs8C,SAAS6hB,2BAG5CC,OAAQ,CACNp+D,KAAMA,EAAKs8C,SAASuU,OACpBwN,aAAcja,EAAc4M,eAAeC,cAE7C2K,YAAa,CACX57D,KAAMA,EAAKs8C,SAAS8U,eAEtBkN,SAAU,CACRt+D,KAAMA,EAAKs8C,SAAS8U,cAAcqK,UAClC4C,aAAcja,EAAc4M,eAAeC,cAE7CsN,YAAa,CACXv+D,KAAM,CACJw+D,kBAAmBx+D,EAAKs8C,SAASkiB,oBAGrCC,gBAAiB,CACfA,gBAAiBz+D,EAAKs8C,SAASmiB,iBAEjCC,kBAAmB,CACjBrB,UAAAA,EACAsB,aAAc3+D,EAAKs8C,UAAYt8C,EAAKs8C,SAASiV,iBAAmBvxD,EAAKs8C,SAASiV,gBAAgB+L,qBAAqBqB,cAErHC,UAAW,CACT5+D,KAAMA,EAAKs8C,SAASqU,WAEtBkO,eAAgB,CACd7+D,KAAMA,EAAK0nD,WAAW1nD,KAAK8+D,eAE7BC,aAAc,CACZ/+D,KAAMA,EAAK0nD,WAAW1nD,KAAKg/D,wBAE7B7pD,OAAQ,CACNnV,KAAMA,EAAK0nD,WAAW1nD,KAAKyhD,OAC3Bwd,mBAAmB,EACnBna,IAAAA,EACAC,IAAAA,GAEFxC,MAAO,CACLviD,KAAMA,EAAK0nD,WAAW1nD,KAAKyhD,OAC3Bwd,mBAAmB,EACnBna,IAAAA,EACAC,IAAAA,EACA1oD,MAAOopB,QACPtU,QAAQ,GAEV+tD,UAAW,CACTl/D,KAAMA,EAAK0nD,WAAW1nD,KAAKs/C,WAE7B6f,aAAc,CACZn/D,KAAMA,EAAK0nD,WAAW1nD,KAAKu/C,cAE7B5oB,OAAQ,CACN32B,KAAMA,EAAK0nD,WAAW1nD,KAAK22B,QAE7ByoC,mBAAoB,CAClBC,UAAWr/D,EAAK0nD,WAAW1nD,KAAKs/D,UAChCC,QAASv/D,EAAK0nD,WAAW1nD,KAAKw/D,QAC9BC,YAAaz/D,EAAKs8C,UAAYt8C,EAAKs8C,SAASmjB,aAAez/D,EAAKs8C,SAASmjB,YAAYC,cACrFC,oBAAqB3/D,EAAKs8C,SAASsjB,8BACnCrD,gBAAAA,GAEFsD,WAAY,CACV7/D,KAAM,CACJ4xD,oBAAqB5xD,EAAKs8C,SAASsV,oBACnCkO,eAAgB9/D,EAAKs8C,SAASwjB,eAC9BC,oBAAqB//D,EAAKs8C,SAASyjB,sBAGvC9B,mBAAoB,CAClBj+D,KAAM,CACJi+D,mBAAoBj+D,EAAKs8C,SAAS2hB,qBAGtC+B,SAAU,CACRhgE,KAAM,CACJrD,KAAAA,EACAquD,UAAWhrD,EAAK0nD,WAAW1nD,KAAKmoB,UAChC83C,MAAOjgE,EAAK0nD,WAAW1nD,KAAKkgE,MAC5BC,MAAOngE,EAAK0nD,WAAW1nD,KAAKogE,MAC5BC,gBAAiBrgE,EAAK0nD,WAAW1nD,KAAKsgE,gBACtCN,SAAUhgE,EAAK0nD,WAAW1nD,KAAKugE,uBAGnCC,uBAAwB,CACtBxgE,KAAM,CACJygE,6BAA8BzgE,EAAKs8C,SAASmkB,6BAC5CD,uBAAwBxgE,EAAKs8C,SAASkkB,wBAExCnC,aAAcja,EAAc4M,eAAeC,cAGjD,CA6BsDyP,CAAgB,CAClE1gE,KAAAA,EACAu8D,gBAAAA,EACAnY,cAAAA,EACAU,IAAAA,EACAC,IAAAA,EACA5I,KAAAA,EACAwgB,iBAAAA,EACAC,mBAAAA,EACAC,kBAAAA,EACAlgE,KAAAA,EACAqG,YAAAA,KACK,CAAC,CACV,ECrKa29D,GAAmB,SAAH3tE,GAGtB,IAFLgN,EAAIhN,EAAJgN,KACAq8C,EAAYrpD,EAAZqpD,aAEMukB,EAAatE,GAAqB,CAAEt8D,KAAAA,IACpCk/C,GAAY58C,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,QAAUiF,EAAK,GAAE,CAACA,IAE5C6gE,GAAoBv+D,EAAAA,EAAAA,UAAQ,WAChC,GAAIs+D,EAAW9C,aAAe8C,EAAW9C,YAAY99D,KAAM,CACzD,GAAoC,YAAhC4gE,EAAW9C,YAAY99D,KACzB,MAAOylB,0BACF,GAAoC,QAAhCm7C,EAAW9C,YAAY99D,KAChC,MAAOylB,sBACF,GAAoC,YAAhCm7C,EAAW9C,YAAY99D,KAChC,MAAOylB,kBAEX,CACA,MAAOA,UACT,GAAG,CAACm7C,EAAW9C,cAEf9L,GAAwB7S,EAAAA,EAAAA,oBAAhB8S,EAAID,EAAJC,KAAMxvB,EAAKuvB,EAALvvB,MAERq+B,GAAcC,EAAAA,EAAAA,gBAAet+B,GAE3B0Z,EADe1Z,EAAM2c,QAArBC,WACAlD,KAEF6kB,GAA4Br4D,EAAAA,EAAAA,cAAY,WAC5CspD,EAAK8D,EAAAA,cAAckL,YAAa,CAC9BC,OAAQC,GAAWC,QAEvB,GAAG,CAACnP,IAEEoP,GAA+B14D,EAAAA,EAAAA,cAAY,kBAAMspD,EAAK8D,EAAAA,cAAckL,YAAa,CACrFC,OAAQC,GAAWG,WACnB,GAAE,CAACrP,IAECsP,GAAsC54D,EAAAA,EAAAA,cAAY,kBACtDspD,EAAK8D,EAAAA,cAAckL,YAAa,CAC9BC,OAAQC,GAAWK,kBACnB,GAAE,CAACvP,IAEDwP,GAAoC94D,EAAAA,EAAAA,cAAY,kBACpDspD,EAAK8D,EAAAA,cAAckL,YAAa,CAC9BC,OAAQC,GAAW9H,QACnB,GAAE,CAACpH,IAWD9xD,ECnEmB,SAAAub,GAAO,MAAK,CACrCrb,gBAAiB,CACfpM,aAAc,IAEhBqW,OAAQ,CACNnJ,KAAM,QACN3C,OAAQ,CACNb,MAAO8nB,SACP7nB,aAAc,CACZvB,MAAOopB,OACPnpB,SAAU,OACVE,UAAWipB,OACXhpB,QAASif,EAAQslD,4BAGrBv/D,WAAY,CACVpB,gBAAiB,CACfpM,aAAc,GAEhB2pE,gBAAgBj7D,EAAAA,GAAAA,IAAyB,CACvCtG,MAAOopB,mBACP5pB,aAAc,SAAAvD,GAAK,OAAIA,EAAMslE,cAAc,IAE7CC,SAASl7D,EAAAA,GAAAA,IAAyB,CAChCtG,MAAOqf,EAAQmlD,kBACfhlE,aAAc,SAAAvD,GAAK,OAAIA,EAAMulE,OAAO,IAEtC6D,IAAK,CACHvgE,KAAM,sBAERgU,OAAQ,CACNhU,KAAM,SACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAM6c,MAAM,GAErCwsD,IAAK,CACHxgE,KAAM,qBACNX,WAA6B,YAAjBkb,EAAQygC,MAEtBxlB,OAAQ,CACNx1B,KAAM,SACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMq+B,MAAM,EACnCn2B,WAA6B,YAAjBkb,EAAQygC,MAEtBylB,IAAK,CACHzgE,KAAM,sBAER+9D,UAAW,CACT/9D,KAAM,YACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAM4mE,SAAS,GAExCC,aAAc,CACZh+D,KAAM,eACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAM6mE,YAAY,KAI/C0C,UAAW,CACT1gE,KAAM,QACN3C,OAAQ,CACNb,MAAO8nB,YACP7nB,aAAc,CACZvB,MAAOopB,OACPnpB,SAAU,OACVE,UAAWipB,OACXhpB,QAASif,EAAQ2lD,+BAGrB5/D,WAAY,CACVpB,gBAAiB,CACfpM,aAAc,GAEhByqE,kBAAmB,CACjBv9D,KAAM,qBACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMomE,iBAAiB,GAEhDE,UAAW,CACTz9D,KAAM,YACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMsmE,SAAS,GAExCC,eAAgB,CACd19D,KAAM,kBACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMumE,cAAc,KAIjDiD,iBAAkB,CAChB3gE,KAAM,QACN3C,OAAQ,CACNb,MAAO8nB,mBACP7nB,aAAc,CACZvB,MAAOopB,OACPnpB,SAAU,OACVE,UAAWipB,OACXhpB,QAASif,EAAQ6lD,sCAGrB9/D,WAAY,CACVpB,gBAAiB,CACfpM,aAAc,GAEhB0pE,cAAch7D,EAAAA,GAAAA,IAAyB,CACrCtG,MAAOopB,gBACP5pB,aAAc,SAAAvD,GAAK,OAAIA,EAAMqlE,YAAY,IAE3CyB,mBAAoB,CAClBj+D,KAAM,cACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAM8mE,kBAAkB,GAEjDX,gBAAiB,CACft9D,KAAM,mBACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMmmE,eAAe,KAIlDL,OAAQ,CACNj9D,KAAM,QACN3C,OAAQ,CACNb,MAAO8nB,SACP7nB,aAAc,CACZvB,MAAOopB,OACPnpB,SAAU,OACVE,UAAWipB,OACXhpB,QAASif,EAAQ+lD,oCAGrBhgE,WAAY,CACVpB,gBAAiB,CACfpM,aAAc,GAEhBmqE,OAAQ,CACNj9D,KAAM,SACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAM8lE,MAAM,GAErCxC,YAAa,CACXz6D,KAAM,eACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMsjE,WAAW,GAE1C0C,SAAU,CACRn9D,KAAM,YACNtF,aAAc,SAAAvD,GAAK,OAAIA,EAAMgmE,QAAQ,KAI5C,CD5EgByD,EATCz/D,EAAAA,EAAAA,UAAQ,iBAAO,CAC7B0+D,0BAAAA,EACAK,6BAAAA,EACAE,oCAAAA,EACAE,kCAAAA,EACAZ,kBAAAA,EACA1kB,KAAAA,EACD,GAAG,CAAC6kB,EAA2BK,EAA8BE,EAAqCE,EAAmCZ,EAAmB1kB,KAWzJ,OAPAtlB,EAAAA,EAAAA,YAAU,kBACRwlB,EAAa,CACXr8C,KAAAA,EACA46B,SAAS,GACT,GACD,CAAC56B,EAAMq8C,KAGRt+C,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,yBAAwBI,SAAA,EACrCV,EAAAA,EAAAA,KAAC00D,EAAAA,GAAU,CACThxD,MAAO8nB,UACPqB,YAAarB,uEAEdy5B,GACCjlD,EAAAA,EAAAA,KAAC+nE,GAAAA,eAAc,CAACC,aAAcnB,KAC9B7mE,EAAAA,EAAAA,KAACkI,GAAAA,IAAWnO,EAAAA,EAAAA,GAAA,CAACmM,OAAQA,EAAQC,qBAAsB8hE,GAAAA,IAA+BtB,MAI1F,EAOAD,GAAiB/lE,aAAe,CAC9BoF,KAAM,CAAC,GE7EF,ICjBMmhE,GAAa,CACxBC,OAAQ,SACRE,UAAW,YACXE,iBAAkB,mBAClBW,sBAAuB,wBACvBC,kBAAmB,oBACnB/I,OAAQ,SACRgJ,QAAS,WCDEC,GAAgC,CAC3C,CACEjoE,GAAI8mE,GAAWC,OACfmB,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWC,OAAOzmE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAACs1D,IAAev7D,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EAC7FkqE,WAAY3Q,IAEd,CACEx3D,GAAI8mE,GAAWG,UACfiB,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWG,UAAU3mE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAAC08D,IAAkB3iE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EACnGkqE,WCFsC,WACxC,IAAMpe,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IAC3ByN,GAAkBl1D,EAAAA,EAAAA,YAAWm1D,EAAAA,iBAGnCS,IAFkB51D,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MAEmB/kB,OAAnB2lB,EAAG0N,EAAH1N,IAAKC,EAAGyN,EAAHzN,IAEbiN,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KAETC,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAEtBx1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aA8GxB,MAAO,CACLi6B,MA7GWnuB,EAAAA,EAAAA,cAAY,WACvB,IAAMkrD,EAAgBpxB,EAAM2c,QAAQC,WAAW/C,SACzCsX,EAAkBnxB,EAAM2c,QAAQC,WAAWqI,WACrCqH,GAAe8E,GAAiB,CAAC,GAArC9gD,GAEF4nD,EAAe,CACnBre,UAAUse,EAAAA,EAAAA,cAAa9V,EAAKC,EAAKgK,GACjCwC,iBAAiBsJ,EAAAA,GAAAA,IAAuB/V,EAAKC,EAAKgK,GAClDrH,WAAY7iB,KAAAA,QAAgB+uB,GAC5BkH,sCAAsCC,EAAAA,EAAAA,qBAAoB,CACxDjW,IAAAA,EACAC,IAAAA,EACAX,cAAAA,KAIJ,OAAOvf,KAAAA,MAAc81B,GAActwD,MAAK,SAAAlC,GAKjC,IAJL2yD,EAAoC3yD,EAApC2yD,qCACAxe,EAAQn0C,EAARm0C,SACAoL,EAAUv/C,EAAVu/C,WACA6J,EAAeppD,EAAfopD,gBAEM2J,GAAeC,EAAAA,EAAAA,6BAA4B,CAC/CC,eAAapnE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOsoD,GAAQ,IAAEoU,OAAQmD,EAAcwH,SACpDC,wBAAyB/J,EAAkBA,EAAgBx4D,MAAQ,GACnE+9D,gBAAiBgE,EAAqChE,kBAGxD,OAAA9iE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACK8mE,GAAoC,IACvCxe,SAAU4e,EAAal7D,KACvB0nD,WAAAA,GAEJ,GACF,GAAG,CAAC3C,EAAKD,EAAKV,EAAe3hB,EAAM2c,QAAQC,WAAWqI,WAAYjlB,EAAM2c,QAAQC,WAAW/C,WA4EzF2Y,MA1EWtsD,EAAAA,EAAAA,cAAY,SAAAG,GAGlB,IAFL9I,EAAI8I,EAAJ9I,KACAk1D,EAAWpsD,EAAXosD,YAEAnsD,EAKI/I,GAAQ,CAAC,EAJDo1D,EAAcrsD,EAAxBuzC,SACY6Y,EAAgBpsD,EAA5B2+C,WACAoP,EAAe/tD,EAAf+tD,gBACAC,EAAwBhuD,EAAxBguD,yBAGkB1B,EAAsBH,EAAlCxN,WAEFqU,EAAe,CACnBzf,UAAUmZ,EAAAA,EAAAA,IAAa,CACrBnZ,SAAU,CAAEt8C,KAAMo1D,GAClB0B,gBAAAA,EACAC,yBAAAA,GACC,CACDrB,SAAU5D,EAAgB3/C,KAC1BxV,KAAAA,EACAg5D,eAAgB7D,EAAgB8D,eAAe,oBAEjDlO,YAAY4O,EAAAA,EAAAA,IAAe,CACzB5O,WAAY,CAAE1nD,KAAMm1D,GACpBiB,mBAAoB,CAAEp2D,KAAMq1D,GAC5B/Y,SAAU8Y,GACT,CACDM,SAAU5D,EAAgB3/C,KAC1BxV,KAAAA,EACAg5D,eAAgB7D,EAAgB8D,eAAe,oBAC/CxR,cAAAA,EACAU,IAAAA,EACAC,IAAAA,EACAmN,SAAAA,KAIJ,OAAOrtB,KAAAA,MAAck3B,GAAc1xD,MAAK,SAAAlB,GAGjC,IAFK6yD,EAAe7yD,EAAzBmzC,SACYmmB,EAAiBt5D,EAA7Bu+C,WAEAwK,EAAS8C,MAAM,+EACf9C,EAAS4D,OAAO,+EAEhB,IACExZ,EACE0f,EADF1f,SAIAoL,EACE+a,EADF/a,WAMF,OAHAuK,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAE1Z,SAAUA,EAASt8C,OAC5DiyD,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAEtO,WAAYA,EAAW1nD,OAEzD,CACLs8C,SAAUA,EAASt8C,KACnB0nD,WAAYA,EAAW1nD,KAE3B,IAAGwL,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,qFAGRnwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACF,GAAG,CAAC7C,EAAUnN,EAAKD,EAAKnoD,EAAMm1D,EAAiBG,EAAM7N,IAMvD,GDzHE,CACE/pD,GAAI8mE,GAAWK,iBACfe,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWK,iBAAiB7mE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAACggE,IAAwBjmE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EAChHkqE,WAAYrI,IAEd,CACE9/D,GAAI8mE,GAAW9H,OACfkJ,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAW9H,OAAO1+D,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAACgiE,IAAejoE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EAC7FkqE,WNhBmC,WACrC,IAAAxQ,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KACG4B,EAAkBpxB,EAAM2c,QAAQC,WAA1C/C,SACA4H,IAAUtnD,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MACF4N,GAAkBl1D,EAAAA,EAAAA,YAAWm1D,EAAAA,iBAC7BG,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBACtBx1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxB21D,EAAqBtO,EAAM/kB,OAAnB2lB,EAAG0N,EAAH1N,IAAKC,EAAGyN,EAAHzN,IACbqV,GAA+EC,EAAAA,EAAAA,MAAvEC,EAAsBF,EAAtBE,uBAAwBC,EAAsBH,EAAtBG,uBAAwBC,EAAkBJ,EAAlBI,mBAkFxD,MAAO,CACL1jC,MAjFWnuB,EAAAA,EAAAA,cAAY,WACvB,IAAYomD,GAAe8E,GAAiB,CAAC,GAArC9gD,GAEF4nD,EAAe,CACnBre,UAAUse,EAAAA,EAAAA,cAAa9V,EAAKC,EAAKgK,GACjCwC,iBAAiBsJ,EAAAA,GAAAA,IAAuB/V,EAAKC,EAAKgK,IAGpD,OAAOlqB,KAAAA,MAAc81B,GAActwD,MAAK,SAAAlC,GAGjC,IAFLm0C,EAAQn0C,EAARm0C,SACAiV,EAAeppD,EAAfopD,gBAEM2J,GAAeC,EAAAA,EAAAA,6BAA4B,CAC/CC,eAAapnE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOsoD,GAAQ,IAAEoU,OAAQmD,EAAcwH,SACpDC,wBAAyB/J,EAAkBA,EAAgBx4D,MAAQ,KAGrE,OAAA/E,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKsmE,EAAuBhe,IAAS,IACnCA,SAAU4e,EAAal7D,MAE3B,GACF,GAAG,CAAC+kD,EAAKD,EAAKwV,EAAwBzG,IA4DpCoB,MA1DWtsD,EAAAA,EAAAA,cAAY,SAAAG,GAAe,IACtCC,EAD8BD,EAAJ9I,MASd,CAAC,EAPD0iE,EAAe35D,EAAzBuzC,SACAqf,EAAY5yD,EAAZ4yD,aACAC,EAAW7yD,EAAX6yD,YACAH,EAAS1yD,EAAT0yD,UACAC,EAAS3yD,EAAT2yD,UACAG,EAAa9yD,EAAb8yD,cACAC,EAAsB/yD,EAAtB+yD,uBAGF,IAAKtB,EAAmBqB,EAAeC,GACrC,OAAOj3B,KAAAA,SAGT,IAAM89B,GAAW3uE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACZ0uE,GACAnI,EAAuBqB,EAAaD,EAAcF,EAAWC,IAG5DK,EAAe,CACnBzf,UAAUmZ,EAAAA,EAAAA,IAAa,CACrBnZ,SAAU,CAAEt8C,KAAM2iE,IACjB,CACDjN,SAAU5D,EAAgB3/C,KAC1BxV,KAAAA,EACAg5D,eAAgB7D,EAAgB8D,eAAe,qBAInD,OAAO/wB,KAAAA,MAAck3B,GAAc1xD,MAAK,SAAAlB,GAEjC,IADK6yD,EAAe7yD,EAAzBmzC,SAEA4V,EAAS8C,MAAM,iEACf9C,EAAS4D,OAAO,iEAEhB,IAAQxZ,EAAa0f,EAAb1f,SAQR,OANA2V,EAAK8D,EAAAA,cAAcC,mBAAoB,CACrC1Z,UAAQtoD,EAAAA,EAAAA,GAAA,GACHsoD,EAASt8C,SAIhBhM,EAAAA,EAAAA,GAAA,CACEsoD,SAAUA,EAASt8C,MAChBs6D,EAAuBhe,EAASt8C,MAEvC,IAAGwL,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,uEAGRnwB,KAAAA,OAAe,CAAEof,OAAKjwD,EAAAA,EAAAA,GAAA,GAAO+gE,IACtC,GACF,GAAG,CAACyF,EAAoBD,EAAwBzI,EAAiBn1D,EAAMu1D,EAAUD,EAAMqI,IAMzF,GM5EE,CACEjgE,GAAI8mE,GAAWkB,QACfE,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWkB,QAAQ1nE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAAC0mE,IAAgB3sE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EAC/FkqE,WFboC,WACtC,IAAMpe,GAAgBxnD,EAAAA,EAAAA,YAAWynD,EAAAA,IAEjCmO,IADkB51D,EAAAA,EAAAA,YAAW61D,EAAAA,eAAiB,CAAC,GAAvCvO,MACmB/kB,OAAnB2lB,EAAG0N,EAAH1N,IAAKC,EAAGyN,EAAHzN,IACLtiB,GAAU0c,EAAAA,EAAAA,oBAAV1c,MAEFyvB,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAEtBx1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB82D,EAOIlxB,EAAM2c,QANRC,WACElD,EAAIwX,EAAJxX,KACAymB,EAAYjP,EAAZiP,aACU/O,EAAaF,EAAvBrX,SACYsX,EAAeD,EAA3BjM,WAIJgL,GAAuCC,EAAAA,EAAAA,IAAsB,CAAEvV,SAAU9B,GAAea,KAAhFyW,EAAaF,EAAbE,cAAeC,EAAWH,EAAXG,YAEjBC,GAAkBC,EAAAA,GAAAA,IAAsB,CAC5CF,YAAAA,EACA9N,IAAAA,EACAD,IAAAA,IAuFF,MAAO,CACLhuB,MArFWnuB,EAAAA,EAAAA,cAAY,WACvB,IAAMomD,EAAa8E,EAAgBA,EAAc9gD,GAAK,KAChD+gD,EAAeF,EAAkBA,EAAgB7gD,GAAK,KAEtD4nD,EAAe,CACnBre,UAAUse,EAAAA,EAAAA,cAAa9V,EAAKC,EAAKgK,GACjCwC,iBAAiBsJ,EAAAA,GAAAA,IAAuB/V,EAAKC,EAAKgK,GAClDrH,YAAYyM,EAAAA,EAAAA,0BAAyBrP,EAAKC,EAAKgK,EAAY+E,EAAcn3D,GAAM,GAAO,EAAOm2D,GAC7FgI,sCAAsCC,EAAAA,EAAAA,qBAAoB,CACxDjW,IAAAA,EACAC,IAAAA,EACAX,cAAAA,KAGJ,OAAOvf,KAAAA,MAAc81B,GAActwD,MAAK,SAAAlD,GAKjC,IAJL2zD,EAAoC3zD,EAApC2zD,qCACAxe,EAAQn1C,EAARm1C,SACAoL,EAAUvgD,EAAVugD,WACA6J,EAAepqD,EAAfoqD,gBAEM2J,GAAeC,EAAAA,EAAAA,6BAA4B,CAC/CC,eAAapnE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOsoD,GAAQ,IAAEoU,OAAQmD,EAAcwH,SACpDC,wBAAyB/J,EAAkBA,EAAgBx4D,MAAQ,GACnE+9D,gBAAiBgE,EAAqChE,kBAGxD,OAAA9iE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACK8mE,GAAoC,IACvCxe,SAAU4e,EAAal7D,KACvB0nD,WAAAA,GAEJ,IAAGr9C,MAAK,SAAAlC,GAA+B,IAA5Bm0C,EAAQn0C,EAARm0C,SAAUoL,EAAUv/C,EAAVu/C,WACnB,GAAIpL,GAAYA,EAASsY,kBAAoBtY,EAASsY,iBAAiBp7D,OAAS,EAAG,CACjF,IACQkxD,EADYpO,EAASsY,iBAAiBxrB,MAAK,SAAAyrB,GAAQ,MAAgC,sBAA5BA,EAAS,cAAsC,IACtGnK,MAER,OAAOkI,EAAclI,GAAOrgD,MAAK,SAACyqD,GAIhC,OAFAxY,EAASW,WAAa6X,EAEf,CACLxY,SAAAA,EACAoL,WAAAA,EAEJ,GACF,CACA,MAAO,CACLpL,SAAAA,EACAoL,WAAAA,EAEJ,IAAGl8C,OAAM,SAACupD,GAIR,OAHA7C,EAAS8C,MAAM,8CAADngE,OAA+CkgE,IAGtDlwB,KAAAA,OAAe,CACpBof,OAAKjwD,EAAAA,EAAAA,GAAA,GACA+gE,IAGT,GACF,GAAG,CAAC7C,EAAUnN,EAAKD,EAAKnoD,EAAMi3D,EAAiBC,EAAejB,EAAexO,EAAe0O,IA0B1FmC,MAxBWtsD,EAAAA,EAAAA,cAAY,SAAAG,GAElB,IADL9I,EAAI8I,EAAJ9I,KAEY+uD,GAAe8E,GAAiB,CAAC,GAArC9gD,GACI+gD,GAAiBF,GAAmB,CAAC,GAAzC7gD,GAYR,OAVI6vD,IACFC,EAAAA,GAAAA,mCAAkC,CAAE9T,WAAAA,EAAY+E,aAAAA,IAAgBzpD,MAAK,iBAAO,CAC1EiyC,SAAUt8C,EAAKs8C,SACfoL,WAAY1nD,EAAK0nD,WAClB,IAAGl8C,OAAM,SAAAupD,GAAS,OAEjBlwB,KAAAA,OAAe,CAAEof,OAAKjwD,EAAAA,EAAAA,GAAA,GAAO+gE,IAAc,IAIxClwB,KAAAA,QAAgB,CACrByX,SAAUt8C,EAAKs8C,SACfoL,WAAY1nD,EAAK0nD,YAErB,GAAG,CAACkb,EAAchP,EAAiBC,IAMrC,IElGaiP,GAA4C,CACvD,CACEzoE,GAAI8mE,GAAWgB,sBACfI,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWgB,sBAAsBxnE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAACigE,IAA4BlmE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EACzHkqE,WExCgD,WAAH,OAC/CrI,GAAiC,CAAEO,2BAA2B,GAAQ,IF2C3DqI,GAA6C,CACxD,CACE1oE,GAAI8mE,GAAWiB,kBACfG,KAAM,SAAAjqE,GAAK,OAAIyF,EAAAA,EAAAA,MAAC+7C,EAAAA,SAAQ,CAAC3nC,KAAMgvD,GAAWiB,kBAAkBznE,SAAA,CAAC,KAACV,EAAAA,EAAAA,KAACs8D,IAAuBviE,EAAAA,EAAAA,GAAA,GAAKsE,IAAS,MAAY,EAChHkqE,WAAY3Q,K,0BGjCVmR,GAAiB,WACrB,IAAMrmE,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAElBq1D,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAE5BH,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KACTgR,GAAatZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYsZ,YAAavZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYuZ,WAAYxZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYC,QAE5IuZ,GAAgBz6D,EAAAA,EAAAA,cAAY,WAC5BupD,GACFA,EAAS4D,OAAO,2BAElB7D,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAE4M,cAAc,IACvD3Q,EAAK8D,EAAAA,cAAcsN,cACrB,GAAG,CAACnR,EAAUD,IAERqR,GAAahhE,EAAAA,EAAAA,UAAQ,WAGzB,OAFoBihE,EAAAA,EAAAA,kBAAiB9gC,KAEjB0+B,GAAWkB,QACtB1lE,EAAKQ,UAAUsoB,WAGjB9oB,EAAKQ,UAAUsoB,iBACxB,GAAG,CAAC9oB,EAAM8lC,IAEV,OACExoC,EAAAA,EAAAA,KAACupE,GAAAA,cAAa,CACZh6C,SAAUy5C,EACVxmE,QAAS2mE,EACT7oE,UAAU,+BAA8BI,SAEvC2oE,GAGP,EAEMG,GAAc,WAClB,IAAM9mE,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAElBq1D,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAE5BuR,GAAwBvkB,EAAAA,EAAAA,oBAAhB1c,EAAKihC,EAALjhC,MAAOwvB,EAAIyR,EAAJzR,KACTgR,GAAatZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYsZ,YAAavZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYuZ,WAAYxZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYC,QAE5IuZ,GAAgBz6D,EAAAA,EAAAA,cAAY,WAC5BupD,GACFA,EAAS4D,OAAO,wBAElB7D,EAAK8D,EAAAA,cAAcC,mBAAoB,CAAE4M,cAAc,IACvD3Q,EAAK8D,EAAAA,cAAcsN,cACrB,GAAG,CAACnR,EAAUD,IAERqR,GAAahhE,EAAAA,EAAAA,UAAQ,WAGzB,OAFoBihE,EAAAA,EAAAA,kBAAiB9gC,KAEjB0+B,GAAWkB,QACtB1lE,EAAKQ,UAAUsoB,iBAGjB9oB,EAAKQ,UAAUsoB,uBACxB,GAAG,CAAC9oB,EAAM8lC,IAEV,OACExoC,EAAAA,EAAAA,KAACgD,GAAAA,cAAa,CACZusB,SAAUy5C,EACVxmE,QAAS2mE,EACT7oE,UAAU,yBAAwBI,SAEjC2oE,GAGP,EAEaK,GAAa,SAAH3wE,GAAkC,IAA5BswE,EAAUtwE,EAAVswE,WAAY95C,EAAQx2B,EAARw2B,SACjC7sB,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB+mE,GAAwBzkB,EAAAA,EAAAA,oBAAhB1c,EAAKmhC,EAALnhC,MAAOwvB,EAAI2R,EAAJ3R,KACTgR,GAAatZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYsZ,YAAavZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYuZ,WAAYxZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYC,QAE5IuZ,GAAgBz6D,EAAAA,EAAAA,cAAY,WAChCspD,EAAK8D,EAAAA,cAAc8N,cACrB,GAAG,CAAC5R,IAEJ,OACEh4D,EAAAA,EAAAA,KAACupE,GAAAA,cAAa,CACZh6C,SAAUA,GAAYy5C,EACtBxmE,QAAS2mE,EACT7oE,UAAU,mBAAkBI,SAE3B2oE,EAAa3mE,EAAKQ,UAAUmmE,GAAc3mE,EAAKQ,UAAUsoB,SAGhE,EAEaq+C,GAAa,SAAH38D,GAAwB,IAAlBm8D,EAAUn8D,EAAVm8D,WACrB3mE,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExBknE,GAAwB5kB,EAAAA,EAAAA,oBAAhB1c,EAAKshC,EAALthC,MAAOwvB,EAAI8R,EAAJ9R,KACTgR,GAAatZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYsZ,YAAavZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYuZ,WAAYxZ,EAAAA,EAAAA,gBAAelnB,EAAOmnB,EAAAA,YAAYC,QAE5Ima,GAAgBr7D,EAAAA,EAAAA,cAAY,WAChCspD,EAAK8D,EAAAA,cAAckO,KACrB,GAAG,CAAChS,IAEJ,OACEh4D,EAAAA,EAAAA,KAACgD,GAAAA,cAAa,CACZusB,SAAUy5C,EACVxmE,QAASunE,EACTzpE,UAAU,mBAAkBI,SAE3B2oE,EAAa3mE,EAAKQ,UAAUmmE,GAAc3mE,EAAKQ,UAAUsoB,SAGhE,EAIAq+C,GAAWlpE,aAAe,CACxB0oE,gBAAYj/D,GAOds/D,GAAW/oE,aAAe,CACxB0oE,gBAAYj/D,EACZmlB,UAAU,GAGL,IAAM06C,GAA2B,SAAH/7D,GAM9B,IALLg8D,EAAch8D,EAAdg8D,eACAC,EAAYj8D,EAAZi8D,aACAC,EAAcl8D,EAAdk8D,eACAC,EAAgBn8D,EAAhBm8D,iBACAC,EAAcp8D,EAAdo8D,eAEQ9hC,GAAU0c,EAAAA,EAAAA,oBAAV1c,MACF+hC,GAAcC,EAAAA,EAAAA,gBAAehiC,GAC7BiiC,GAAaC,EAAAA,EAAAA,eAAcliC,GAEjC,OACE1kC,EAAAA,EAAAA,MAACC,GAAAA,MAAK,CAACC,YAAU,EAAC2mE,OAAQ,CAAEC,YAAa,IAAKlqE,SAAA,EACzC6pE,IAAgBD,IAAmBtqE,EAAAA,EAAAA,KAAC6pE,GAAU,CAACR,WAAYe,IAC3DK,GAAkFzqE,EAAAA,EAAAA,KAAC+oE,GAAc,KAApF/oE,EAAAA,EAAAA,KAAC0pE,GAAU,CAACL,WAAYa,EAAgB36C,SAAU46C,IACjEM,IAAczqE,EAAAA,EAAAA,KAACwpE,GAAW,IAC1Be,IAAevqE,EAAAA,EAAAA,KAAC6qE,GAAAA,aAAY,CAACxB,WAAYgB,MAGhD,EAQAJ,GAAyBtpE,aAAe,CACtCupE,oBAAgB9/D,EAChB+/D,cAAc,EACdC,oBAAgBhgE,EAChBigE,sBAAkBjgE,EAClBkgE,gBAAgB,G,iBC5KLQ,GAAa,WACxB,IAAMpoE,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB,OACEkB,EAAAA,EAAAA,MAACC,GAAAA,EAAK,CAACC,YAAU,EAAC2mE,OAAQ,CAAEC,YAAa,IAAKlqE,SAAA,EAC5CV,EAAAA,EAAAA,KAAC+qE,EAAAA,kBAAiB,CAAC1B,WAAY3mE,EAAKQ,UAAUsoB,WAC9CxrB,EAAAA,EAAAA,KAAC6qE,EAAAA,aAAY,CAACxB,WAAY3mE,EAAKQ,UAAUsoB,cAG/C,E,uCCFaw/C,GAAW,WACtB,IAAAjT,GAAwB7S,EAAAA,EAAAA,oBAAhB1c,EAAKuvB,EAALvvB,MAAOwvB,EAAID,EAAJC,KACTt1D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAElBqoE,GAAgB3B,EAAAA,EAAAA,kBAAiB9gC,GACjCq+B,GAAcC,EAAAA,EAAAA,gBAAet+B,GAC7B0iC,GAAcC,EAAAA,GAAAA,mBAAkBC,GAAAA,UAAUC,2BACxCnpB,EAAS1Z,EAAM2c,QAAQC,WAAvBlD,KAEFopB,GAAiBjjE,EAAAA,EAAAA,UAAQ,kBL8BA,SAAHtP,GAAkB,IAAZ2J,EAAI3J,EAAJ2J,KAkBlC,MAjBuB,CAAC,CACtBtC,GAAI8mE,GAAWC,OACfzjE,MAAOhB,EAAKQ,UAAUsoB,WACrB,CACDprB,GAAI8mE,GAAWG,UACf3jE,MAAOhB,EAAKQ,UAAUsoB,cACrB,CACDprB,GAAI8mE,GAAWK,iBACf7jE,MAAOhB,EAAKQ,UAAUsoB,qBACrB,CACDprB,GAAI8mE,GAAW9H,OACf17D,MAAOhB,EAAKQ,UAAUsoB,WACrB,CACDprB,GAAI8mE,GAAWkB,QACf1kE,MAAOhB,EAAKQ,UAAUsoB,YAI1B,CKjDuC+/C,CAAkB,CAAE7oE,KAAAA,EAAMw/C,KAAAA,EAAM+oB,cAAAA,GAAgB,GAAE,CAACA,EAAe/oB,EAAMx/C,IAEvG8oE,GAA0B98D,EAAAA,EAAAA,cAAY,SAAC+8D,GAC3C,IAAIC,EACJ,GAAI7E,EAAY8E,SAASF,EAAKrrE,IAC5BsrE,EAASD,OACJ,IAAK3qE,IAAAA,QAAU2qE,EAAKG,OAAQ,CACjC,IAAMC,EAAe/qE,IAAAA,KAAO2qE,EAAKG,OAAO,SAAAE,GAAC,OAAIjF,EAAY8E,SAASG,EAAE1rE,GAAG,IACnEyrE,IACFH,EAASG,EAEb,CACA,GAAIH,GAAUA,EAAOK,SACnB,OAAO,WACL/T,EAAK8D,EAAAA,cAAckL,YAAa,CAC9BC,OAAQyE,EAAOtrE,IAEnB,CAGJ,GAAG,CAACymE,EAAa7O,IAEjB,OACEh4D,EAAAA,EAAAA,KAACgsE,GAAAA,mBAAkB,CACjBr9D,OAAQ28D,EACRL,cAAeA,EACfpE,YAAaA,EACboF,iBAAkBT,EAClBN,YAAaA,GAGnB,E,0BClDMgB,G,UAAkBC,iBAAiBC,yBAE5BC,GAA2B,SAACC,GACvC,IAAIC,EAA8BC,GAAAA,QAAUxd,IAAIkd,IAQhD,OAPKK,GACCE,GAAAA,GAAgBA,GAAAA,EAAaC,oBAC/BH,EAA8BE,GAAAA,EAAazd,IAAIkd,IAC/CM,GAAAA,QAAUG,IAAIT,GAAiBK,IAI5BA,GAA+BD,CACxC,EAEaM,GAAuB,SAACvqB,EAAUiqB,GAC7C,GAAIjqB,GAAYA,EAASsY,iBAAkB,CACzC,IAAMkS,EAAcxqB,EAASsY,iBAAiBxrB,MAAK,SAAAyrB,GAAQ,MAAgC,sBAA5BA,EAAS,cAAsC,IAE9G,GAAIiS,GAAeA,EAAYrV,SAC7B,OAAOsV,EAAAA,GAAwBD,EAAYrV,SAE/C,CACA,OAAO8U,CACT,ECqCaS,IAA2BC,EAAAA,EAAAA,cAAY3X,EAAAA,EAAAA,YAAU4X,EAAAA,EAAAA,KAnDd,SAAHl0E,GAEtC,IADLkmD,EAAUlmD,EAAVkmD,WAAYgL,EAAKlxD,EAALkxD,MAAOijB,EAAOn0E,EAAPm0E,QAEbnuB,EAAYstB,GAAyBc,EAAAA,GAAWC,kBAEhDC,GAAahlE,EAAAA,EAAAA,UAAQ,kBAAMilE,EAAAA,GAAmBvuB,EAAU,GAAE,CAACA,IAE3DwuB,GAA4BC,EAAAA,EAAAA,kBAAiBN,EAAS,aAEtDv+D,GAAStG,EAAAA,EAAAA,UAAQ,iBAAO,CAC5BjI,GRxB0C,iCQyB1CqtE,YAAavG,GAAWC,OACxByE,MAAOvD,GACPqF,mBAAoB,CAAExrB,KAAMmrB,GAC5BM,kBAAmB,CACjBzrB,KAAMmrB,GAERO,QAAS,CACPC,OAAQ,WAAF,OAAQ5jB,EAAM+Q,KAAKuS,EAA0B,EACnDO,SAAU,WAAF,OAAQ7jB,EAAM+Q,KAAKuS,EAA0B,GAExD,GAAG,CAACA,EAA2BtjB,EAAOojB,IAEvC,OACEvpE,EAAAA,EAAAA,MAACg7C,EAAgB,CACfrW,OAAO,WACPsW,UAAWA,EACXC,aAAcrwC,EACds7C,MAAOA,EACPhL,WAAYA,EAAWv+C,SAAA,EAEvBV,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,WAAWm5C,UAAW2qB,MACnChrE,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CACLl5C,KAAK,SACLm5C,UAAW4pB,GACXC,eAAgB1+C,6BAIxB,MCOauiD,IAAuC1Y,EAAAA,EAAAA,YAAU2X,EAAAA,EAAAA,cA/CT,SAAHj0E,GAE3C,IADLi1E,EAAej1E,EAAfi1E,gBAAiB/uB,EAAUlmD,EAAVkmD,WAAYiuB,EAAOn0E,EAAPm0E,QAASjjB,EAAKlxD,EAALkxD,MAEhClL,EAAY6tB,GAAqBoB,GACjCX,GAAahlE,EAAAA,EAAAA,UAAQ,kBAAMilE,EAAAA,GAAmBvuB,EAAU,GAAE,CAACA,IAE3DwuB,GAA4BC,EAAAA,EAAAA,kBAAiBN,EAAS,YAEtDv+D,GAAStG,EAAAA,EAAAA,UAAQ,iBAAO,CAC5BjI,GTrBwD,+CSsBxDqtE,YAAavG,GAAWgB,sBACxB0D,MAAO/C,GACP6E,mBAAoB,CAAExrB,KAAMmrB,GAC5BM,kBAAmB,CACjBtrB,SAAU2rB,EACV9rB,KAAMmrB,GAERO,QAAS,CACPC,OAAQ,WAAF,OAAQ5jB,EAAM+Q,KAAKuS,EAA0B,EACnDO,SAAU,WAAF,OAAQ7jB,EAAM+Q,KAAKuS,EAA0B,GAExD,GAAG,CAACS,EAAiBT,EAA2BtjB,EAAOojB,IAExD,OACErtE,EAAAA,EAAAA,KAAC8+C,EAAgB,CACfrW,OAAO,uBACPsW,UAAWA,EACXC,aAAcrwC,EACds7C,MAAOA,EACPhL,WAAYA,EAAWv+C,UAEvBV,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,SAASm5C,UAAWyqB,MAGvC,KCmBamD,IAAyC5Y,EAAAA,EAAAA,YAAU2X,EAAAA,EAAAA,cArDT,SAAHj0E,GAE7C,IADLi1E,EAAej1E,EAAfi1E,gBAAiB/uB,EAAUlmD,EAAVkmD,WAAYiuB,EAAOn0E,EAAPm0E,QAASjjB,EAAKlxD,EAALkxD,MAEhClL,EAAY6tB,GAAqBoB,GACjCX,GAAahlE,EAAAA,EAAAA,UAAQ,kBAAMilE,EAAAA,GAAmBvuB,EAAU,GAAE,CAACA,IAE3DwuB,GAA4BC,EAAAA,EAAAA,kBAAiBN,EAAS,uBAEpDrT,EAAiB5P,EAAM/kB,OAAvB20B,aAEFlrD,GAAStG,EAAAA,EAAAA,UAAQ,iBAAO,CAC5BjI,GVtB2D,kDUuB3DqtE,YAAavG,GAAWiB,kBACxByD,MAAO9C,GACP4E,mBAAoB,CAAExrB,KAAMmrB,GAC5BM,kBAAmB,CACjBtrB,SAAU2rB,EACVvgB,WAAY,CAAE30C,GAAI+gD,GAClB3X,KAAMmrB,GAERO,QAAS,CACPC,OAAQ,WAAF,OAAQ5jB,EAAM+Q,KAAKuS,EAA0B,EACnDO,SAAU,WAAF,OAAQ7jB,EAAM+Q,KAAKuS,EAA0B,GAExD,GAAG,CAACS,EAAiBT,EAA2BtjB,EAAO4P,EAAcwT,IAEtE,OACErtE,EAAAA,EAAAA,KAAC8+C,EAAgB,CACfrW,OAAO,qBACPsW,UAAWA,EACXC,aAAcrwC,EACds7C,MAAOA,EACPhL,WAAYA,EAAWv+C,UAEvBV,EAAAA,EAAAA,KAACogD,EAAAA,OAAM,CAACl5C,KAAK,SAASm5C,UAAWyqB,MAGvC,I,udC9CanW,EAAe,SAAH57D,GAAA,IAAMy7D,EAAMz7D,EAANy7D,OAAM,OACnCx0D,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,UAC5BV,EAAAA,EAAAA,KAACkuE,EAAAA,cAAa,CAACC,SAAU3Z,KACrB,EAORG,EAAah0D,aAAe,CAC1B6zD,OAAQ,I,2BCVGvR,EAA0B,SAAHlqD,GAE7B,IADLgN,EAAIhN,EAAJgN,KAAMq8C,EAAYrpD,EAAZqpD,aAAc1/C,EAAI3J,EAAJ2J,KAAMhC,EAAQ3H,EAAR2H,SAAU0tE,EAAer1E,EAAfq1E,gBAE9BC,GAAa3/D,EAAAA,EAAAA,cAAY,SAAC4/D,GAC9BlsB,EAAa,CACXr8C,KAAM,SAAAioD,GAAQ,OAAAj0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTi0D,GAAQ,IACX3L,UAAQtoD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACHi0D,EAAS3L,UACTisB,EAAQvoE,OACZ,EAEH46B,QAAS2tC,EAAQ3tC,QACjB4tC,QAASD,EAAQC,SAErB,GAAG,CAACnsB,IAEJ,OACEpiD,EAAAA,EAAAA,KAACwuE,EAAAA,gBAAe,CACd7qB,gBAAiB,CACfz9C,OAAQuoE,EAAAA,SACRJ,WAAAA,EACAtoE,KAAAA,EACArD,KAAAA,EACA0rE,gBAAAA,GACA1tE,SAEDA,GAGP,EAUAuiD,EAAwBtiD,aAAe,CACrCoF,KAAM,CAAC,EACPrF,SAAU,KACV0tE,iBAAiB,GAGZ,IAAMxZ,EAA4B,SAAH1nD,GAE/B,IADLnH,EAAImH,EAAJnH,KAAMq8C,EAAYl1C,EAAZk1C,aAAc1/C,EAAIwK,EAAJxK,KAAMhC,EAAQwM,EAARxM,SAEpB2tE,GAAa3/D,EAAAA,EAAAA,cAAY,SAAC4/D,GAC9BlsB,EAAa,CACXr8C,KAAM,SAAAioD,GAAQ,OAAAj0D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACTi0D,GAAQ,IACXP,YAAU1zD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLi0D,EAASP,YACT6gB,EAAQvoE,OACZ,EAEH46B,QAAS2tC,EAAQ3tC,QACjB4tC,QAASD,EAAQC,SAErB,GAAG,CAACnsB,IAEJ,OACEpiD,EAAAA,EAAAA,KAACwuE,EAAAA,gBAAe,CACd7qB,gBAAiB,CACfz9C,OAAQ09C,EAAAA,WACRyqB,WAAAA,EACAtoE,KAAAA,EACArD,KAAAA,GACAhC,SAEDA,GAGP,EASAk0D,EAA0Bj0D,aAAe,CACvCoF,KAAM,CAAC,EACPrF,SAAU,M,4GCtFCguE,EAAuB,SAACrwE,GACnC,IACEswE,EAGEtwE,EAHFswE,gBACAC,EAEEvwE,EAFFuwE,wBACA9a,EACEz1D,EADFy1D,UAGF1lC,GAA0CC,EAAAA,EAAAA,UAAS,WAAUC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtDygD,EAAavgD,EAAA,GAAEwgD,EAAgBxgD,EAAA,GAEhCygD,GAAa1mE,EAAAA,EAAAA,UAAQ,iBAAO,CAChCstD,QAAS7B,EAAY,CAAC,sBAAuB,qBAAsB,sBAAuB,qBAAsB,oBAAqB,oBAAsB,CAAC,sBAAuB,oBACnLkb,MAAO,CAAC,yBACT,GAAG,IAEEC,GAAuCvgE,EAAAA,EAAAA,cAAY,SAAC0J,GACxD,IAAc82D,EAAwB92D,EAA9BlR,KACFioE,EAAcJ,EAAWF,GAE/B,OAAO/tE,IAAAA,SAAWquE,EAAaD,EACjC,GAAG,CAACL,EAAeE,IAUnB,OARAnyC,EAAAA,EAAAA,YAAU,WACRgyC,EAAwBK,EAC1B,GAAG,CAACL,EAAyBK,KAE7BryC,EAAAA,EAAAA,YAAU,WACR+xC,EAAgBE,EAClB,GAAG,CAACF,EAAiBE,KAGnB7uE,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gCAA+BI,UAC5CoD,EAAAA,EAAAA,MAACsrE,EAAAA,EAAK,CAACC,YAAa,SAAAjwE,GAAI,OAAI0vE,EAAiB1vE,EAAKf,MAAMixE,QAAQ,EAAC5uE,SAAA,EAC/DV,EAAAA,EAAAA,KAACuvE,EAAAA,EAAS,CACRD,QAAQ,UACRE,WAAW,aAEbxvE,EAAAA,EAAAA,KAACuvE,EAAAA,EAAS,CACRD,QAAQ,QACRE,WAAW,wBAIrB,E,uDC/CaC,EAAqB,SAACjoE,EAAUzO,GAAA,IAAAC,EAAAD,EAAIE,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA,MAAQ,CACnEooC,mBAAoB,CAClB,6CAA8C,CAC5C5nC,OAAQ,EACR8D,UAAW,0EACXhB,aAAc,MACdD,gBAAgB,GAADzB,OAAK3B,EAAQy2E,QAE9B,mCAAoC,CAClClzE,cAAe,IAEjB,wBAAyB,CACvB,WAAY,CACV3C,YAAa,IAGjB,sBAAuB,CACrB,8BAA+B,CAC7BsB,SAAU,GACVzB,WAAY,OACZG,YAAa,GAEf,gCAAiC,CAC/BsB,SAAU,KAGd,yBAA0B,CACxBw0E,WAAY,UAEd,sBAAuB,CACrB,oBAAqB,CACnBt1E,OAAQ,IACRu1E,UAAW,IAEb,sBAAuB,CACrBj1E,WAAY,iBAKlBk1E,wBAAyB,CACvBr2E,OAAQ,EACR8D,UAAW,0EACXhB,aAAc,MACdD,gBAAgB,GAADzB,OAAK3B,EAAQy2E,OAE5B,sBAAuB,CACrB,oBAAqB,CACnBr1E,OAAQ,KAEV,oDAAqD,CACnDuD,KAAM,EACNL,QAAS,EACT5C,WAAY,cACZyG,OAAQ,MAId0uE,oBAAqB,CACnB,sBAAuB,CACrB,2BAA4B,CAC1Bl2E,WAAY,KAEd,4BAA6B,CAC3BA,WAAY,KAEd,yBAA0B,CACxBA,WAAY,IACZT,OAAQ,YACRyE,KAAM,KAIZmyE,uBAAwB,CACtB,sBAAuB,CACrB,2BAA4B,CAC1Bn2E,WAAY,KAEd,4BAA6B,CAC3BA,WAAY,KAEd,yBAA0B,CACxBA,WAAY,IACZT,OAAQ,YACRyE,KAAM,KAIZoyE,mBAAoB,CAClB,6CAA8C,CAC5C7qD,UAAW,qCACXvnB,KAAM,MAEN,2BAA4B,CAC1B/D,YAAa,mBAEf,4BAA6B,CAC3BD,WAAY,oBAIlB09B,qBAAsB,CAEpBn+B,OAAQ,IAEVgoC,4BAA6B,CAC3B7nC,SAAU,IACVE,OAAQ,eACR8D,UAAW,mBACXhB,aAAc,eACdjD,QAAS,OACT0sB,eAAgB,SAChBxC,cAAe,SAEf,kCAAmC,CACjClqB,QAAS,eACTE,MAAO,OACP4B,SAAU,GACVxB,UAAW,SACX6B,WAAY,EACZ3B,YAAa,KAGjBo2E,qBAAsB,CACpB52E,QAAS,OACTkqB,cAAe,MACfwC,eAAgB,gBAChBxsB,MAAO,OAEP,2BAA4B,CAC1BF,QAAS,eACTF,OAAQ,qBACRgC,SAAU,GACVK,WAAY,OAEZ,2BAA4B,CAC1BL,SAAU,GACVzB,WAAY,OACZG,YAAa,GAEf,2BAA4B,CAC1BsB,SAAU,KAGd,wBAAyB,CACvB9B,QAAS,OACTkqB,cAAe,MACfY,SAAU,EACVwF,WAAY,EACZxvB,WAAY,SACZN,YAAa,GACb,WAAY,CACVA,YAAa,KAIpB,EAEKq2E,EAAyB,CAC7BntE,KAAM,CACJ,sBAAuB,CACrB,2BAA4B,CAC1BnJ,WAAY,KAEd,4BAA6B,CAC3BA,WAAY,OAIlBu2E,gBAAiB,CACfC,yBAA0B,CACxB,yBAA0B,CACxBx2E,WAAY,IACZT,OAAQ,YACRyE,KAAM,MAMRyyE,EAA2B,CAC/BttE,KAAM,CACJ,sBAAuB,CACrB,2BAA4B,CAC1BnJ,WAAY,KAEd,4BAA6B,CAC3BA,WAAY,OAIlBu2E,gBAAiB,CACfC,yBAA0B,CACxB,yBAA0B,CACxBx2E,WAAY,IACZT,OAAQ,YACRyE,KAAM,MCtLD81D,EAAgB,SAACr1D,GAC5B,IACE2Y,EAQE3Y,EARF2Y,UACAm8C,EAOE90D,EAPF80D,gBACA/C,EAME/xD,EANF+xD,yBACAC,EAKEhyD,EALFgyD,4BACAigB,EAIEjyE,EAJFiyE,gCACA1c,EAGEv1D,EAHFu1D,kBACAC,EAEEx1D,EAFFw1D,qBACAC,EACEz1D,EADFy1D,UAIIyc,EAAgBzvE,IAAAA,KAAOzC,EADT,CAAC,gBAAiB,eAAgB,cAAe,MAAO,aAAc,eAAgB,iBAE1GmyE,EAA4B9xE,EAAAA,SAAe6xE,GAAcE,GAAAliD,EAAAA,EAAAA,GAAAiiD,EAAA,GAAlDE,EAAMD,EAAA,GAAEE,EAASF,EAAA,GAElBG,GAAkBliE,EAAAA,EAAAA,cAAY,SAAAmiE,GAAS,OAAKA,EAAUtxE,SAAWmxE,EAAOnxE,SAAWuB,IAAAA,QAAU+vE,EAAWH,EAAO,GAAG,CAACA,IACnHI,GAAqBzoE,EAAAA,EAAAA,UAAQ,kBAAMvH,IAAAA,SAAW6vE,EAAW,IAAI,GAAE,IACjEC,EAAgBL,KAClBO,EAAmBC,SACnBD,EAAmBP,IAGrB,IAAMS,GAAsBtiE,EAAAA,EAAAA,cAAY,SAACtO,GACvC,IAAMub,EAAQ7a,IAAAA,UAAYkW,GAAW,SAAAoB,GAAS,OAAItX,IAAAA,MAAQsX,GAAWhY,KAAOA,IAAOU,IAAAA,MAAQsX,GAAWlB,SAAWpW,IAAAA,MAAQsX,GAAW64D,UAAU,IAC9I,OAAOt1D,GAAS,EAAIA,EAAQ,IAC9B,GAAG,CAAC3E,IAEEk6D,GAAuBxiE,EAAAA,EAAAA,cAAY,SAACyiE,GACxC,IAAIx1D,EAAQq1D,EAAoBG,GAEhC,IAAKx1D,EAAO,CACV,IAAMy1D,EAAkBtwE,IAAAA,UAAYkW,GAAW,SAAAoB,GAAS,OAAKtX,IAAAA,MAAQsX,GAAWlB,SAAWpW,IAAAA,MAAQsX,GAAW64D,UAAU,IACxHt1D,EAAQy1D,GAAmB,EAAIA,EAAkB,IACnD,CAEA,OAAOz1D,CACT,GAAG,CAACq1D,EAAqBh6D,IAEjBw1C,EAAmB4D,EAAnB5D,eAEJ6kB,EAAkB,GAClBC,EAAoB,KACpBt6D,GAAa68C,EAEfwd,EAAkBr6D,EAAUu6D,OACnBv6D,GAAaA,EAAUzX,OAAS,IACzC+xE,EAAoBJ,EAAqB1kB,GACzC6kB,EAAkBvwE,IAAAA,SAAWwwE,GAAqBt6D,EAAUs6D,GAAqB,IAGnF,IAAME,GAAmB9iE,EAAAA,EAAAA,cAAY,SAACxH,GACpC,IAAMkQ,GAAY1Q,EAAAA,EAAAA,GAAOsQ,GACzBlW,IAAAA,KAAOsW,EAAak6D,IAAoB,SAAAG,GAAc,OAAIA,EAAevqE,OAASA,CAAI,IAAEoT,YAAa,EACrG+1C,GAA2Bt2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIq2D,GAAwB,IAAEshB,6BAA6B,KACxFve,EAAgB/7C,EAClB,GAAG,CAACJ,EAAWs6D,EAAmBlhB,EAA0BC,EAA6B8C,IAEnFwe,GAAsBjjE,EAAAA,EAAAA,cAAY,SAACxH,GACvC,IAAMkQ,GAAY1Q,EAAAA,EAAAA,GAAOsQ,GACzBlW,IAAAA,KAAOsW,EAAak6D,IAAoB,SAAAG,GAAc,OAAIA,EAAevqE,OAASA,CAAI,IAAEoT,YAAa,EACrG+1C,GAA2Bt2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIq2D,GAAwB,IAAEshB,6BAA6B,KACxFve,EAAgB/7C,EAClB,GAAG,CAACJ,EAAWs6D,EAAmBlhB,EAA0BC,EAA6B8C,IAEnFye,GAASljE,EAAAA,EAAAA,cAAY,SAACxH,GAC1B,IAAMulD,EAAe3rD,IAAAA,KAAOkW,EAAUs6D,IAAoB,SAAAG,GAAc,OAAIA,EAAevqE,OAASA,CAAI,IACxGmpD,GAA2Bt2D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIq2D,GAAwB,IAAE3D,aAAAA,IAC7D,GAAG,CAACz1C,EAAWs6D,EAAmBlhB,EAA0BC,IAEtDwhB,GAAkBxpE,EAAAA,EAAAA,UAAQ,WAC9B,IAAMypE,GAAW/3E,EAAAA,EAAAA,GAAA,GAAQ22E,GAczB,OAZIoB,EAAY5/C,eAAiB4/C,EAAY5/C,cAAc3yB,OA7EhC,KA8EzBuyE,EAAY5/C,cAAgB4/C,EAAY5/C,cAAc6/C,UAAU,EAAGC,KAGjEF,EAAYz/C,cAAgBy/C,EAAYz/C,aAAa9yB,OAhF/B,KAiFxBuyE,EAAYz/C,aAAey/C,EAAYz/C,aAAa0/C,UAAU,EAAGE,KAG/DH,EAAYjlD,aAAeilD,EAAYjlD,YAAYttB,OAnF9B,KAoFvBuyE,EAAYjlD,YAAcilD,EAAYjlD,YAAYklD,UAAU,EAAGG,KAG1DJ,CACT,GAAG,CAACpB,IAEJtiD,GAA8CC,EAAAA,EAAAA,UAAS,CAAE8jD,KAAM,WAAF,OAAQ,CAAI,IAAG7jD,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArEgkD,EAAe9jD,EAAA,GAAE+jD,EAAkB/jD,EAAA,GAEpCgkD,GAAkB5jE,EAAAA,EAAAA,cAAY,SAACtP,GACnC,OAAI0B,IAAAA,QAAU1B,GACL0B,IAAAA,MAAQ1B,GAEVA,CACT,GAAG,IAEGmzE,GAAU7jE,EAAAA,EAAAA,cAAY,WAC1B,IAAM45C,EAAQxnD,IAAAA,OAASkW,GAAW,SAAAw7D,GAAQ,MAGM,oBAA9CF,EAAgBE,GAAUl6D,eAAuC,IAEnE,OAAOxX,IAAAA,MAAQwnD,EACjB,GAAG,CAACgqB,EAAiBt7D,IAEby7D,GAA0BC,EAAAA,EAAAA,IAAyB,CACzDC,UAAW7e,EAAY8e,EAAAA,EAAsBC,WAAaD,EAAAA,EAAsBE,MAChFC,yBAA0BX,EAAgBD,KAC1Ca,mBAAoBC,EACpB3C,gCAAiCA,GAAmC,OAJ9DmC,sBAOF1yE,GAAU8tB,EAAAA,EAAAA,kBAAiB4hD,GACjCr2B,GAA0C/qB,EAAAA,EAAAA,UAAS,CAAC,GAAEgrB,GAAA9qB,EAAAA,EAAAA,GAAA6qB,EAAA,GAA/Cy1B,EAAax1B,EAAA,GAAEy1B,EAAgBz1B,EAAA,GAChCnyB,GAAiB7e,EAAAA,EAAAA,UAAQ,kBDyE6B,SAAC6qE,GAC7D,OAAQA,GACN,IAAK,OACL,IAAK,OACL,IAAK,UACH,OAAO7C,EAET,QACE,OAAOH,EAEb,CCnFuCiD,CAA+CtE,EAAc,GAAE,CAACA,IAE/FD,GAA0BlgE,EAAAA,EAAAA,cAAY,SAAC0kE,GAC3Cf,EAAmB,CAAEF,KAAMiB,GAC7B,GAAG,IAEH,OACEtvE,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQqhC,mBAAmB1gC,SAAA,EACzCV,EAAAA,EAAAA,KAAC0uE,EAAoB,CACnBC,gBAAiBG,EACjBF,wBAAyBA,EACzB9a,UAAWA,KAEb9zD,EAAAA,EAAAA,KAACyyE,EAAqB,CACpBpB,gBAAiBA,EACjB3hD,KAAM5uB,IAAAA,KAAOyxE,KAAW,SAAA7iD,GAAI,OAAIA,EAAKpV,UAAU,IAC/C+4D,kBAAmB,CACjB7B,iBAAAA,EACAG,oBAAAA,EACAC,OAAAA,GAEFlB,OAAQmB,EACRyB,qBAAsB,WAAF,OAAQ,CAAI,EAChCC,gBAAgB,EAChBrsD,eAAgBA,EAChB0sC,kBAAmBA,MAG3B,EAeAF,EAAc/yD,aAAe,CAC3BqW,UAAW,KACXs5D,gCAAiC,KACjC1c,mBAAmB,EACnBC,sBAAsB,EACtBC,WAAW,G,oDC9KP0f,EAAwC,CAC5C,QAAS,SAAU,KAAM,OAAQ,WAAY,kBAAmB,SAChE,iBAAkB,wBAAyB,eAAgB,kBAC3D,oBAAqB,0BAA2B,sBAChD,iBAAkB,sBAAuB,gBAAiB,sBAC1D,mBAAoB,6BACpB,+BAAgC,kCAAmC,YACnE,eAAgB,mBAAoB,gBACpC,gCAAiC,0BACjC,4BAA6B,WAAY,SAsB9BC,EAAkC,SAAH16E,GAIrC,IAHLooE,EAAapoE,EAAbooE,cACAtE,EAAe9jE,EAAf8jE,gBACA6W,EAAyB36E,EAAzB26E,0BAEI3tE,GAAO4tE,EAAAA,EAAAA,MAAKxS,EAAeqS,GAuB/B,OAtBIztE,EAAK+S,KAAM86D,EAAAA,EAAAA,UAAS7tE,EAAK+S,MAE3B/S,EAAK+S,GAAK+6D,SAAS9tE,EAAK+S,GAAI,KAE9B/S,GAAOuhB,EAAAA,EAAAA,QAAOvhB,GAAM+tE,EAAAA,EAAAA,wCAAuC,CACzDC,qBAAsB5S,EAAc6S,mBACpCnX,gBAAAA,KAGF92D,GAAOuhB,EAAAA,EAAAA,QAAOvhB,GAAMkuE,EAAAA,EAAAA,uCAAsC,CACxDC,WAAY/S,EAAc6S,sBAOF,CACxBjuE,KALFA,GAAOuhB,EAAAA,EAAAA,QAAOvhB,EAAM,CAClBi9C,WAAY0wB,GAA6BA,EAA0B3tE,MAAQ2tE,EAA0B3tE,KAAKi9C,aAK1GriB,SAAS,EACT4tC,SAAS,EAGb,EClDM4F,GAAwCxqE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,IAC3CyqE,EAAAA,EAAAA,wBAAuB3F,EAAAA,UAAY4F,EAAAA,GAAa5F,UACjD,oCAAqC4F,EAAAA,GAAaC,kBAClD,kCAAmCD,EAAAA,GAAaE,gBAChD,6CAA8CF,EAAAA,GAAaG,0BAC3D,2CAA4CH,EAAAA,GAAaI,wBACzD,oCAAqCJ,EAAAA,GAAaK,0BCjBvClZ,EDyBe,SAAHziE,EAAAmU,GAIkB,IAH/BynE,EAAiB57E,EAA3BspD,SACAwa,EAAe9jE,EAAf8jE,gBACAC,EAAwB/jE,EAAxB+jE,yBACGrB,EAAQvuD,EAARuuD,SAAU/4D,EAAIwK,EAAJxK,KAAMg5D,EAAcxuD,EAAdwuD,eACbyF,EDjBuC,SAACwT,GAC9C,IAAM5uE,GAAO4tE,EAAAA,EAAAA,MAAKgB,EAAkB5uE,KAAMytE,GAe1C,OAbImB,EAAkB5uE,MACjB4uE,EAAkB5uE,KAAKoxD,gBACtBwd,EAAkB5uE,KAAKoxD,cAAcqK,WAAamT,EAAkB5uE,KAAKoxD,cAAcsK,aAI3F17D,EAAKoxD,eAAap9D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACb46E,EAAkB5uE,KAAKoxD,eAAa,IACvCnB,UAAW2e,EAAkB5uE,KAAKoxD,cAAcqK,UAChDvL,UAAW0e,EAAkB5uE,KAAKoxD,cAAcsK,aAI7C17D,CACT,CCAwB6uE,CAAgCD,GAChDZ,GAAuBc,EAAAA,EAAAA,wCAAuCF,EAAmB7X,GACjFgY,GAAmBC,EAAAA,EAAAA,oCAAmCJ,GAEtDK,GAAWj7E,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACZonE,GAAa,IAChB6S,mBAAmB,GAADp5E,QAAA8L,EAAAA,EAAAA,GACbqtE,IAAoBrtE,EAAAA,EAAAA,GACpBouE,MAIP,OAAOG,EAAAA,EAAAA,IAAuBD,GAI3B5kE,MAAK,SAAC09C,GACL,IAAMzL,EAAWoxB,EAAgC,CAC/CtS,cAAerT,EACf4lB,0BAA2BiB,EAC3B9X,gBAAAA,IAQF,OALU9iE,EAAAA,EAAAA,GAAA,CACRsoD,SAAAA,GAlCoC,CAC1CqM,aAAc,GACdE,aAAc,IAqCZ,IAAG,SAACsmB,GACF,IAAIC,EAAAA,EAAAA,uBAAsBD,GAAoB,CAC5C,IAAQE,EAAmBF,EAAnBE,OAAQ5gB,EAAW0gB,EAAX1gB,OACVnS,EAAW+yB,EACf3B,EAAgC,CAC9BtS,cAAeiU,EACfvY,gBAAAA,IAEF8X,EAEEU,EAAiB7gB,EACjBnS,EAASt8C,KAAK+S,IAAM,IACtBu8D,GAAiBC,EAAAA,EAAAA,uCAAsCD,IAEzD,IAAM3mB,GAAe6mB,EAAAA,EAAAA,+BACnBF,EACAlB,EACA1Y,EACA/4D,EACAg5D,GAGI31D,GAAIhM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACRsoD,SAAAA,GA9DkC,CAC1CqM,aAAc,GACdE,aAAc,KA6DoB,IAC1BF,aAAAA,IAGF,OAAO5tD,IAAAA,QAAUu0E,GAAkBtvE,EAAO6kC,QAAQE,OAAO/kC,EAC3D,CAMA,OAFAyvE,QAAQC,KAAK,sCAAD76E,QAAuC86E,EAAAA,EAAAA,6BAA4BR,KAExEtqC,QAAQE,QAAM/wC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACpBsoD,SAAUsyB,GA3E0B,CAC1CjmB,aAAc,GACdE,aAAc,KA0EkB,IAC1BF,aAAc,CAACinB,EAAAA,mBAGnB,GACJ,EErGatZ,EAAiBuZ,EAAAA,4B,wBCIjBC,EAAa,SAAAC,GAAI,OAAKh1E,IAAAA,SAAWg1E,GAAe,IAAPA,EAAa,IAAI,EAG1D1V,EAAiB,WAC5B,IAAM19D,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAChBmzE,GAAmBC,EAAAA,EAAAA,MAAnBD,eACRE,GAAwCC,EAAAA,EAAAA,IAAcC,EAAAA,GAAgBC,kBAAtDC,GAAuE9nD,EAAAA,EAAAA,GAAA0nD,EAAA,GAArD,GAAzBn3E,MAEHuhE,GAAyB3xD,EAAAA,EAAAA,cAAY,SAAC2zC,GAC1C,IAAMqf,EAAe5gE,IAAAA,IAAMuhD,EAAU,CAAC,SAAU,WAC1Csf,EAAc7gE,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,SAChDi0B,EAAcx1E,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,eAAiB,KACjEk0B,EAAcz1E,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,eAAiB,KACjEm0B,EAAM11E,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,cACxCyzB,EAAOW,WAAW31E,IAAAA,IAAMuhD,EAAU,CAAC,gBAAiB,iBAAmB,KACvEq0B,EAAoC51E,IAAAA,SAAW01E,IAAQ11E,IAAAA,SAAWg1E,IAASh1E,IAAAA,SAAWw1E,IAAgBx1E,IAAAA,SAAWy1E,GAEvH,MAAO,CACL7U,aAAcqU,EAAerU,EAAc,OAC3CC,YAAAA,EACAF,UAAW8U,EACX/U,UAAW8U,EACXK,SAAUN,EACVG,IAAAA,EACAV,KAAMD,EAAWC,GACjBY,kCAAAA,EACA7U,wBAAwB,EAE5B,GAAG,CAACwU,EAAoBN,IAElBzV,GAAyB5xD,EAAAA,EAAAA,cAAY,SAACizD,EAAaD,GAAY,IAAE4U,EAAW50C,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,KAAM60C,EAAW70C,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,KAAI,MAC3G,CACEy1B,eAAap9D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACXg8D,KAAM4L,GACc,cAAhBA,GAA+C,OAAhB2U,GAAwB,CAAEtgB,UAAWsgB,IACpD,cAAhB3U,GAA+C,OAAhB4U,GAAwB,CAAEtgB,UAAWsgB,IAE1E3f,OAAQ,CACNC,OAAQn0D,EAAKk0E,aAAalV,GAC1B3L,KAAM,iBAET,GAAG,CAACrzD,IAKP,MAAO,CACL29D,uBAAAA,EACAC,uBAAAA,EACAC,mBANyB,SAACqB,EAAeC,GAAsB,OAC/DD,GAAiBC,CAAuB,EAO5C,E,iCCtDazgB,EAA4B,SAACy1B,GACxC,IAAMC,GAAsBlsB,EAAAA,EAAAA,IAAoBisB,GAEhD,OAAO,SAAAv2E,GAAS,OAAIC,IAAWu2E,EAAoBx2E,GAAY,CACjE,ECPa6sE,EAAa,CACxB4J,gBAAiB,kBACjB3J,iBAAkB,mBAClB4J,YAAa,eAGF11B,EAAQ,CACnBG,QAAS,UACTF,IAAK,MACLG,QAAS,WAGEu1B,EACK,iBADLA,EAEI,gBAFJA,EAGQ,oBAGRnK,GAAuBnjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjCstE,EAA+B9J,EAAWC,kBAC1C6J,EAA8B9J,EAAW6J,aACzCC,EAAkC9J,EAAW4J,iBAGnCzJ,GAAkB3jE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC5BwjE,EAAW4J,gBAAkBz1B,EAAMI,SACnCyrB,EAAWC,iBAAmB9rB,EAAMG,SACpC0rB,EAAW6J,YAAc11B,EAAMC,KCxBrBgU,EAAkB,SAACrT,GAC9B,IAAMg1B,EAAgB,CACpBhxB,EAAAA,GAAW2C,gBACX3C,EAAAA,GAAWiD,QAcb,OAXIjH,IAASZ,EAAMI,UACjBw1B,EAAcx/D,KAAKwuC,EAAAA,GAAWkC,cAC9B8uB,EAAcx/D,KAAKwuC,EAAAA,GAAWgC,kBAC9BgvB,EAAcx/D,KAAKwuC,EAAAA,GAAWsC,QAG5BtG,IAASZ,EAAMG,SAAWS,IAASZ,EAAMC,MAC3C21B,EAAcx/D,KAAKwuC,EAAAA,GAAW6C,cAC9BmuB,EAAcx/D,KAAKwuC,EAAAA,GAAWuB,SAGzByvB,CACT,EAEa3a,EAA0B,SAACra,GACtC,IAAMi1B,EAAS5hB,EAAgBrT,GAI/B,OAFAi1B,EAAOz/D,KAAKwuC,EAAAA,GAAWkD,iBAEhB+tB,CACT,C,ulBC7BaC,EAAgB,SAACC,GAC5B,IAAIC,EAAiB,KACjBC,EAAM,KAEV,GAAIF,EAAmB,CACrB,IAAM17D,EAAQ07D,EAAkBG,YAAY,KACxC77D,EAAQ,GACV27D,EAAiBD,EAAkB9oC,MAAM,EAAG5yB,GAC5C47D,EAAMF,EAAkB9oC,MAAM5yB,KAE9B27D,EAAiBD,EACjBE,EAAM,GAEV,CAEA,MAAO,CACLD,eAAAA,EACAC,IAAAA,EAEJ,E,YCVaE,EAAU,SAAAr5E,GACrB,SAAAq5E,EAAYp5E,GAAQ,IAADC,GAAAC,EAAAA,EAAAA,GAAA,KAAAk5E,IACjBn5E,GAAAE,EAAAA,EAAAA,GAAA,KAAAi5E,EAAA,CAAMp5E,KA2CRq5E,SAAW,SAACC,GACV,IAAA/3E,EAOItB,EAAKD,MANPu5E,EAAUh4E,EAAVg4E,WACAC,EAAUj4E,EAAVi4E,WACAC,EAAcl4E,EAAdk4E,eACAC,EAAiBn4E,EAAjBm4E,kBACAC,EAAoBp4E,EAApBo4E,qBACAC,EAAiCr4E,EAAjCq4E,kCAGIC,GAAiBp3E,IAAAA,YAAc62E,IAAgBA,EAAYp4E,OAAS,EAAIo4E,EAC5Er5E,EAAK65E,WAAWR,YAElB,GAAIO,EAAe,CACjB,IACIE,EADEC,EAAqBH,EAAc34E,OAEnC+4E,EAAW,GAEjB,IAAKF,EAAY,EAAGA,EAAYC,EAAoBD,GAAa,EAAG,CAClE,IAAMG,EAAUL,EAAcE,GACxBI,GAAcD,EAAQ/uB,KAAO,KAAO,MAAMivB,QAAQ,GACpDC,OAAU,EAEd,GAAIV,EAEFU,EAAaV,EAAqB,CAAET,IADpBH,EAAcmB,EAAQrgE,MAA9Bq/D,IACiCiB,WAAAA,SAEzCE,EAAaX,EAAoB,GAAKS,EAAaT,EAGrD,GAAIW,EAAY,CACdJ,EAAS5gE,KAAKugE,EAAkCn3E,IAAAA,OAAS,CACvD03E,WAAAA,IACER,GAAwB,CAAED,kBAAAA,MAE9B,KACF,CACF,CAEA,GAAIj3E,IAAAA,QAAUw3E,GAKZ,OAJIx3E,IAAAA,WAAag3E,IACfA,EAAeI,GAGVN,EAAWM,GAGpBL,EAAWS,EACb,CAEA,MAAO,EACT,EAACh6E,EAEDq6E,cAAgB,SAACC,GACft6E,EAAKu6E,SAAS,CACZC,cAAeF,GAEnB,EAlGE,IACEl2E,EAKErE,EALFqE,KACAq2E,EAIE16E,EAJF06E,eACAC,EAGE36E,EAHF26E,sBACAC,EAEE56E,EAFF46E,mBAGIC,EAAoB,CACxBF,sBAAAA,EACAt2E,KAAAA,EACAy2E,UAAU,EACVC,gBAAiB,WACjBL,eAAAA,EACAM,UAPEh7E,EADFg7E,WAiCD,OApBD/6E,EAAK65E,WAAa75E,EAAKD,MAAM85E,WAAa75E,EAAKD,MAAM85E,WAAa,IAAImB,EAAAA,WAAmBJ,GAEzF56E,EAAK65E,WAAWoB,GAAG,YAAaj7E,EAAKo5E,UACrCp5E,EAAK65E,WAAWoB,GAAG,mBAAmB,WAAQN,GAAsB,IAEpE36E,EAAK65E,WAAWqB,SAChBl7E,EAAK65E,WAAW94E,EAAE,gBAAgBo6E,SAClCn7E,EAAK65E,WAAW94E,EAAE,cAAcq6E,OAEhCp7E,EAAKkqC,MAAQ,CACXswC,eAAe,GAIbx6E,EAAKD,MAAMs7E,UACbr7E,EAAKD,MAAMs7E,QAAQ36E,QAAU,CAC3Bm5E,WAAY75E,EAAK65E,WACjBT,SAAUp5E,EAAKo5E,SAASkC,KAAIt7E,GAC5B25E,kCAAmC35E,EAAKD,MAAM45E,kCAAkC2B,KAAIt7E,KAEvFA,CACH,CAAC,OAAAK,EAAAA,EAAAA,GAAA84E,EAAAr5E,IAAAQ,EAAAA,EAAAA,GAAA64E,EAAA,EAAA54E,IAAA,SAAAC,MA6DD,WACE,IAAA+6E,EAUI96E,KAAKV,MATPqE,EAAIm3E,EAAJn3E,KACAo3E,EAAUD,EAAVC,WACAC,EAAeF,EAAfE,gBACAf,EAAqBa,EAArBb,sBACAC,EAAkBY,EAAlBZ,mBACAe,EAAgBH,EAAhBG,iBACAC,EAAcJ,EAAdI,eACAC,EAA0BL,EAA1BK,2BACAC,EAAeN,EAAfM,gBAIArB,EACE/5E,KAAKypC,MADPswC,cAGIsB,GACJp6E,EAAAA,EAAAA,KAAA,OAAKM,UAAS,6BAAA1F,OAA+Bk+E,EAAgB,WAAa,IAAKp4E,UAC7EV,EAAAA,EAAAA,KAACC,EAAAA,wBAAuB,CACtBE,SAAUpB,KAAKo5E,eAKrB,OACEr0E,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,wBAAuBI,SAAA,EAClCq5E,IACA/5E,EAAAA,EAAAA,KAAA,OAAKM,UAAU,0BAAyBI,SACrCgC,EAAKQ,UAAU,6CAIjB42E,GAMC95E,EAAAA,EAAAA,KAAA,OAAKM,UAAU,sBAAqBI,UAClCV,EAAAA,EAAAA,KAACq6E,EAAAA,GAAW,CACVC,WAAYv7E,KAAK24E,SACjB6C,qBAAsBvB,EACtBwB,mBAAoBvB,EACpB72E,MAAO43E,EACPntD,YAAaotD,EACbQ,gBAAiBP,EACjBQ,SAAU37E,KAAK45E,cACfj2E,KAAMA,EACN03E,WAAYA,EACZD,gBAAiBA,OAhBrBn6E,EAAAA,EAAAA,KAAA,OAAKM,UAAU,4BAA2BI,UACxCV,EAAAA,EAAAA,KAACC,EAAAA,wBAAuB,CACtBE,SAAUpB,KAAKo5E,iBAoB7B,IAAC,CAhKoB,CAASz5E,EAAAA,eA2LhC+4E,EAAW92E,aAAe,CACxBo4E,gBAAgB,EAChBe,YAAY,EACZC,iBAAiB,EACjBjC,eAAgBh3E,IAAAA,OAChBk4E,sBAAuB,GACvBC,mBAAoBn4E,IAAAA,KAEpBk5E,iBAAkB,GAClBC,eAAgB,GAChBC,2BAA4B,GAG5BlC,0BAAsB5tE,EACtB2tE,uBAAmB3tE,EACnB6tE,kCAAmCn3E,IAAAA,KACnCq5E,iBAAiB,EACjBd,WAAW,G,4DCnNAsB,EAAyB,SAAAC,GAAI,OAAI,IAAIhwC,IAAJ,EAAY,SAACC,EAASC,GAClE,IAAM+vC,EAAS,IAAIC,WAEnBD,EAAOE,iBAAiB,QAAQ,SAAC5zD,GAC/B0jB,EAAQ1jB,EAAEiD,OAAO0jC,OACnB,IAEA+sB,EAAO3vC,QAAUJ,EAEjB+vC,EAAOG,cAAcJ,EACvB,GAAG,ECZUK,EAAyB,GACzBC,EAAyB,IAIzBC,EAA6B,CACxC,OACA,OACA,OACA,MACA,MACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,UACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,QACA,Q,8CCvBIC,EAAgC,CAAC,OAAQ,OAAQ,QAAS,QAGnDC,EAAe,SAAAj9E,GAAA,SAAAi9E,IAAA,IAAA/8E,GAAAC,EAAAA,EAAAA,GAAA,KAAA88E,GAAA,QAAAnuC,EAAAxL,UAAAniC,OAAA+7E,EAAA,IAAAluC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAiuC,EAAAjuC,GAAA3L,UAAA2L,GA0DxB,OA1DwB/uC,GAAAE,EAAAA,EAAAA,GAAA,KAAA68E,EAAA,GAAAzgF,OAAA0gF,KAC1BC,mBAAqB,SAACrD,GACpB,IAAQN,EAAet5E,EAAKD,MAApBu5E,WAER,OAAOhtC,IAAAA,IACLstC,GACA,SAAAK,GAAO,OAAIoC,EAAuBpC,EAAQ,IAC1CnoE,MAAK,SAACorE,GACN5D,EAAW4D,EAActD,EAC3B,GACF,EAAC55E,EAED25E,kCAAoC,SAAAl/E,GAAwC,IAArCy/E,EAAUz/E,EAAVy/E,WAAYT,EAAiBh/E,EAAjBg/E,kBACjDn4E,EAAiCtB,EAAKD,MAA9B06E,EAAcn5E,EAAdm5E,eAAgBr2E,EAAI9C,EAAJ8C,KAcxB,OAXIq2E,EACSr2E,EAAKQ,UAAU,iDAAkD,CAC1Eu4E,gBAAiB1D,IAGRr1E,EAAKQ,UAAU,4CAA6C,CACrEw4E,SAAUlD,EACViD,gBAAiB1D,GAKvB,EAACz5E,EAED26E,mBAAqB,WACnB,IAII0C,EACAC,EALJ/B,EAEIv7E,EAAKD,MADPqE,EAAIm3E,EAAJn3E,KAAMm1E,EAAUgC,EAAVhC,WAAYkB,EAAcc,EAAdd,eAAgB8C,EAAchC,EAAdgC,eAAgBC,EAAYjC,EAAZiC,aAMhDD,GACFF,EAAgBj5E,EAAKQ,UAAUsoB,wBAC/BowD,EAAa,YACJE,GACTH,EAAgBj5E,EAAKQ,UAAU,oCAC/B04E,EAAa,aAEbD,EAAgBj5E,EAAKQ,UAAUsoB,uCAC/BowD,EAAa,YAGf/D,EAAW,EACT/zE,EAAAA,EAAAA,MAAA,QAAApD,SAAA,CACGgC,EAAKQ,UAAU,mBAADtI,OAAoBm+E,EAAiB,kBAAoB,GAAE,mCAC1E/4E,EAAAA,EAAAA,KAAC+7E,EAAAA,GAAa,CACZC,SAAUL,EACVM,MAAOL,QAIf,EAACt9E,CAAC,CAAD,OAAAK,EAAAA,EAAAA,GAAA08E,EAAAj9E,IAAAQ,EAAAA,EAAAA,GAAAy8E,EAAA,EAAAx8E,IAAA,SAAAC,MAED,WACE,IAAAo9E,EAGIn9E,KAAKV,MADK89E,GAAFD,EAAVtE,WAAuBsE,EAAXC,aAAal0B,EAAYi0B,EAAZj0B,aAAiBxlD,GAAIZ,EAAAA,EAAAA,GAAAq6E,EAAAp6E,GAExCY,EAASD,EAATC,KACJu3E,EAAiBhyB,GAAgB,EAAIvlD,EAAKQ,UAAU,+CAAgD,CAAEk5E,SAAUn0B,IAAkB,GAQtI,OAPKnnD,IAAAA,YAAcq7E,IAAgBr7E,IAAAA,QAAUq7E,IAAgBA,EAAY58E,OAAS,IAC5E06E,IACFA,GAAkB,KAEpBA,GAAkBv3E,EAAKQ,UAAU,6CAA8C,CAAE3J,MAAO4iF,EAAY,GAAI9hF,OAAQ8hF,EAAY,OAI5Hn8E,EAAAA,EAAAA,KAACy3E,GAAU19E,EAAAA,EAAAA,GAAA,CACTi/E,sBAAuBoC,EACvBxD,WAAY74E,KAAKw8E,mBACjBxD,kBAAmBkD,EACnBhD,kCAAmCl5E,KAAKk5E,kCACxCuC,mBAAoBz7E,KAAKy7E,mBACzBvB,mBAAoBl6E,KAAKk6E,mBACzBe,iBAAkBt3E,EAAKQ,UAAU,yCACjC+2E,eAAgBA,EAChBC,2BAA4Bx3E,EAAKQ,UAAU,2CACvCT,GAGV,IAAC,CAxFyB,CAAS/D,EAAAA,eAyGrC28E,EAAgB16E,aAAe,CAC7Bk7E,gBAAgB,EAChBC,cAAc,EACdK,YAAa,GACbl0B,cAAe,EACf8wB,gBAAgB,G,sCCnHLsD,EAAe,SAAAj+E,GAAA,SAAAi+E,IAAA,IAAA/9E,GAAAC,EAAAA,EAAAA,GAAA,KAAA89E,GAAA,QAAAnvC,EAAAxL,UAAAniC,OAAA+7E,EAAA,IAAAluC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAiuC,EAAAjuC,GAAA3L,UAAA2L,GAoCxB,OApCwB/uC,GAAAE,EAAAA,EAAAA,GAAA,KAAA69E,EAAA,GAAAzhF,OAAA0gF,KAC1BC,mBAAqB,SAACrD,GACpB,IAAAt4E,EAAuCtB,EAAKD,MAE5C,OAAOu5E,EAFWh4E,EAAVg4E,YAA0Bh4E,EAAdm5E,eAEeb,EAAep3E,IAAAA,MAAQo3E,GAC5D,EAAC55E,EAGD25E,kCAAoC,WAGlC,OAFiB35E,EAAKD,MAAdqE,KAEIQ,UACV,kDACA,CACEu4E,gBAAiBP,EAAyB,KAGhD,EAAC58E,EAED26E,mBAAqB,WACnB,IAAAY,EAEIv7E,EAAKD,MADPqE,EAAIm3E,EAAJn3E,KAAMm1E,EAAUgC,EAAVhC,WAAYkB,EAAcc,EAAdd,eAGd4C,EAAgBj5E,EAAKQ,UAAU,0CAGrC20E,EAAW,EACT/zE,EAAAA,EAAAA,MAAA,QAAApD,SAAA,CACGgC,EAAKQ,UAAU,mBAADtI,OAAoBm+E,EAAiB,kBAAoB,GAAE,mCAC1E/4E,EAAAA,EAAAA,KAAC+7E,EAAAA,GAAa,CACZC,SAAUL,EACVM,MAPa,iBAWrB,EAAC39E,CAAC,CAAD,OAAAK,EAAAA,EAAAA,GAAA09E,EAAAj+E,IAAAQ,EAAAA,EAAAA,GAAAy9E,EAAA,EAAAx9E,IAAA,SAAAC,MAED,WAEE,IAAAo9E,EAAgDn9E,KAAKV,MAAjC06E,GAAFmD,EAAVtE,WAA0BsE,EAAdnD,gBAAmBt2E,GAAIZ,EAAAA,EAAAA,GAAAq6E,EAAAp6E,GAE3C,OACE9B,EAAAA,EAAAA,KAACy3E,GAAU19E,EAAAA,EAAAA,GAAA,CACTi/E,sBAAuBmC,EACvBpC,eAAgBA,EAChBnB,WAAY74E,KAAKw8E,mBACjBe,SAAO,EACPb,gBAAiBP,EACjBnB,iBAAe,EACf9B,kCAAmCl5E,KAAKk5E,kCACxCgB,mBAAoBl6E,KAAKk6E,oBACrBx2E,GAGV,IAAC,CAvDyB,CAAS/D,EAAAA,eAoErC29E,EAAgB17E,aAAe,CAC7Bo4E,gBAAgB,EAChBnB,WAAY92E,IAAAA,M,6DC/EDyhB,EAAa,CACxBg6D,aAAc,CACZviF,aAAc,OACdH,YAAa,OACbN,MAAO,QACPc,OAAQ,QACRiC,aAAc,MACdgB,UAAW,0EACX2H,SAAU,UAEZu3E,aAAc,CACZjjF,MAAO,OACPc,OAAQ,QACRoiF,UAAW,YAIFC,EAAqB,SAAC57E,EAAC/H,GAAA,IAAAC,EAAAD,EAAIE,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA0D,EAAA3D,EAAE4D,eAAAA,OAAc,IAAAD,EAAG,oBAAmBA,EAAA,MAAQ,CAChGigF,uBAAwB,CACtBpjF,MAAO,QAETqjF,YAAa,CACXtiF,WAAY,WACZa,SAAU,OACVK,WAAY,OACZN,MAAOjC,EAAQ+B,iBACfrB,UAAW,UAEbkjF,sBAAuB,CACrBlhF,UAAW,OACXpC,MAAO,OACPF,QAAS,OACTqwB,SAAU,OACVtwB,UAAW,QACXF,UAAW,SACX4jF,UAAW,OACX,uBAAwB,CACtBvjF,MAAO,IACPF,QAAS,SAGbkjF,cAAYxiF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPwoB,EAAWg6D,cAAY,IAC1BlgF,gBAAiBpD,EAAQ8jF,oBAE3BC,kBAAmB,CACjBnjF,YAAa,KAEfojF,gBAAiB,CACf5gF,gBAAiB,UACjBjB,SAAU,YAEZohF,cAAYziF,EAAAA,EAAAA,GAAA,GACPwoB,EAAWi6D,cAEhBU,UAAW,CACTvhF,UAAW,OACX/B,WAAY,OACZU,WAAY,WACZa,SAAU,OACVK,WAAY,OACZN,MAAOjC,EAAQwC,eACflC,MAAO,QACP0L,SAAU,SACV7K,WAAY,SACZouB,aAAc,YAEhB20D,YAAa,CACXhkF,OAAQ,SACRE,QAAS,OACT0sB,eAAgB,iBAElBq3D,aAAc,CACZzhF,UAAW,MACXpC,MAAO,QACPc,OAAQ,MACRgC,gBAAiBpD,EAAQ2C,aACzBqJ,SAAU,UAEZo4E,WAAY,CACV/iF,WAAYqC,EACZnB,WAAY,OACZL,SAAU,GACVW,cAAe,UAEjBwhF,aAAc,CACZpiF,MAAOjC,EAAQskF,MACflkF,QAAS,QACT,WAAY,CACVkB,QAAS,YAEXijF,WAAY,iBAEdC,YAAa,CACXviF,MAAOjC,EAAQ6B,aACf,WAAY,CACVP,QAAS,aAGbmjF,UAAW,CACTtiF,SAAU,WACVmC,OAAQ,OACRhC,MAAO,OACPL,MAAO,UACP,WAAY,CACVX,QAAS,aAGbojF,SAAU,CACRhiF,UAAW,MACXrB,WAAY,WACZa,SAAU,OACVK,WAAY,OACZN,MAAO,UACPtB,WAAY,QAEdgkF,UAAW,CACTjiF,UAAW,MACX/B,WAAY,OACZU,WAAY,WACZa,SAAU,OACVK,WAAY,QAEf,E,eClHYqiF,EAAiC,SAAH9kF,GAMpC,IALL+kF,EAAS/kF,EAAT+kF,UACA71B,EAAYlvD,EAAZkvD,aACA81B,EAAgBhlF,EAAhBglF,iBACAj+E,EAAa/G,EAAb+G,cACAk+E,EAASjlF,EAATilF,UAEMj+E,GAAU8tB,EAAAA,EAAAA,kBAAiB6uD,GAC3Bh6E,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAElBq7E,GAAcvvE,EAAAA,EAAAA,cAAY,SAACgtE,GAC/B,IAAIlyB,EAAOkyB,EACPwC,EAAc,GASlB,OARKxC,EAAW,KAAQ,MACtBlyB,EAAOkyB,EAAW,KAClBwC,EAAcx7E,EAAKQ,UAAUsoB,kBAAyB,CAAEkwD,SAAUlyB,EAAKivB,QAAQ,OAE/EjvB,EAAOkyB,EAAW,KAAO,KACzBwC,EAAcx7E,EAAKQ,UAAUsoB,kBAAyB,CAAEkwD,SAAUlyB,EAAKivB,QAAQ,MAG1EyF,CACT,GAAG,CAACx7E,IAEEy7E,EAAgB,SAAA/+E,GAAI,OACxB0E,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAW,kBAAmBlqB,EAAcq+E,eAAez9E,SAAA,EACzEoD,EAAAA,EAAAA,MAAA,OAAKxD,UAAWP,EAAQo9E,YAAYz8E,SAAA,EAClCV,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQq9E,aAAc,iBAAiB18E,UAChEV,EAAAA,EAAAA,KAACo+E,EAAAA,SAAQ,CACPC,mBAAoBj/E,EAAKk/E,cAG7Bt+E,EAAAA,EAAAA,KAAA,OACEM,UAAW0pB,IACTjqB,EAAQs9E,WACR,cACkB,IAAlBj+E,EAAKk/E,SAAc,GAAA1jF,OAAMmF,EAAQu9E,aAAY,qBAAA1iF,OAC1CmF,EAAQ09E,YAAW,wBAI5Bz9E,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ69E,UAAW,aAAal9E,SAAEu9E,EAAY7+E,EAAKoqD,UAC1E,EAiBFozB,EAAcl6E,EAAKQ,UAAUsoB,sCAA6C,CAAE+yD,aAAct2B,EAAere,KAAK40C,IAAIv2B,EAAc61B,EAAUv+E,QAAUu+E,EAAUv+E,SAE9Jk/E,GAA0Bp2E,EAAAA,EAAAA,UAAQ,iBAAO,CAC7Cm0E,aAAcxyD,IAAWjqB,EAAQy8E,aAAc18E,EAAc08E,cAC7DkC,iBAAkB10D,IAAWlqB,EAAc4+E,kBAC5C,GAAG,CAAC5+E,EAAeC,IAEpB,OACE+9E,GAAaA,EAAUv+E,OAAS,GAC9BuE,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAW,2BAA4BjqB,EAAQ48E,wBAAyB,aAAYC,EAAYl8E,SAAA,CAE5Gs9E,IACEh+E,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ68E,YAAYl8E,SACjCk8E,KAIP58E,EAAAA,EAAAA,KAAA,OAAKM,UAAWP,EAAQ88E,sBAAsBn8E,SAE1Co9E,EAAU7uE,KAAI,SAAC7P,EAAMuc,GACnB,IAAMgjE,EAAqB12B,GAAgBtsC,GAASssC,EAE/BxlD,GAASrD,EAAtBk/E,UAAiBz8E,EAAAA,EAAAA,GAAKzC,EAAI0C,IAElC,OACEgC,EAAAA,EAAAA,MAAA,OACExD,UAAW0pB,IACTlqB,EAAcy8E,cAAgBx8E,EAAQw8E,cACrC5gE,EAAQ,GAAK,IAAM,EAAI5b,EAAQi9E,kBAAoB,GACpD2B,EAAqB5+E,EAAQk9E,gBAAkB,IAC7Cv8E,SAAA,EAGJV,EAAAA,EAAAA,KAAC+9E,GAAgBhkF,EAAAA,EAAAA,GAAA,CACfuG,UAAWm+E,EAAwBjC,aACnC/wD,IAAK/oB,EAAKQ,UAAUsoB,mBAChB/oB,KAENzC,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQm9E,UAAWp9E,EAAco9E,WAAWx8E,SAAEtB,EAAK8Y,OAE5EymE,GArDhB76E,EAAAA,EAAAA,MAAA,OAAKxD,UAAW0pB,IAAW,iBAAkBlqB,EAAc8+E,cAAcl+E,SAAA,EACvEV,EAAAA,EAAAA,KAAA,OACEM,UAAW0pB,IACPjqB,EAAQs9E,WACRt9E,EAAQ29E,UACR,cACA,iBAGN19E,EAAAA,EAAAA,KAAA,OAAKM,UAAW0pB,IAAWjqB,EAAQ49E,SAAU,aAAaj9E,SAAEgC,EAAKQ,UAAUsoB,8CA4CvB2yD,EAAc/+E,KATjDA,EAAK8Y,KAahB,SAGG,IAEf,EAcA2lE,EAA+Bl9E,aAAe,CAC5Cb,cAAe,CAAC,EAChBk+E,WAAW,EACX/1B,kBAAc79C,GAGT,IAAMy0E,EAAqB,SAAH3xE,GAAA,IAAM5M,EAAS4M,EAAT5M,UAAW6M,EAAGD,EAAHC,IAAKse,EAAGve,EAAHue,IAAG,OACtDzrB,EAAAA,EAAAA,KAAA,OAAKM,UAAWA,EAAWmX,IAAKtK,EAAKse,IAAKA,GAAO,EAStCqzD,EAAgB,SAAAzgF,GAAK,OAChC2B,EAAAA,EAAAA,KAAC69E,GAA8B9jF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBsE,GAAK,IACT0/E,iBAAkBc,IAClB,E,YC/IEE,EAAoB,SAAC1gF,GACzB,IAAM2gF,EAAiB,GAAApkF,QAAQ,IAAMyD,EAAM4gF,cAAiB5gF,EAAM6gF,YAAYzG,QAAQ,GAAE,MAExF,OACE30E,EAAAA,EAAAA,MAAA,OAAKxD,UAAU,4BAA2BI,SAAA,EACxCV,EAAAA,EAAAA,KAACo+E,EAAAA,SAAQ,CACP99E,UAAU,sBACV+9E,mBAAoBhgF,EAAM4gF,cAAgB5gF,EAAM6gF,cAElDl/E,EAAAA,EAAAA,KAAA,OAAKM,UAAU,2BAA0BI,SAAEs+E,MAEjD,EAEMG,EAAuB,SAAC9gF,GAC5B,IAAMyE,GAAS+qB,EAAAA,EAAAA,kBAAiBuxD,EAAAA,IAChC,OACEp/E,EAAAA,EAAAA,KAAA,OAAKM,UAAWwC,EAAOu8E,OAAO3+E,UAC5BV,EAAAA,EAAAA,KAACs/E,EAAAA,eAAc,CACbjB,mBAAoBhgF,EAAM4gF,cAAgB5gF,EAAM6gF,WAChD11B,KAAM,GACNv4B,OAAO,UACPC,YAAa,KAIrB,EAEaquD,EAAiB,SAAClhF,GAC7B,OAAQA,EAAM6I,MACZ,IAAK,MACH,OAAOlH,EAAAA,EAAAA,KAAC++E,GAAiBhlF,EAAAA,EAAAA,GAAA,GAAKsE,IAChC,IAAK,SACH,OAAO2B,EAAAA,EAAAA,KAACm/E,GAAoBplF,EAAAA,EAAAA,GAAA,GAAKsE,IACnC,QACE,OAAO,KAEb,EAeAkhF,EAAe5+E,aAAe,CAC5BuG,KAAM,OCtDD,IAaMs4E,EAAiB,SAAHzmF,GAAA,IAAM0mF,EAAW1mF,EAAX0mF,YAAa9jE,EAAK5iB,EAAL4iB,MAAO+jE,EAAsB3mF,EAAtB2mF,uBAAsB,OAAO,SAACC,GACjF,IAAMC,EAAWF,GAd0B,GAerCpB,EAAYqB,EAAIE,OAASF,EAAIG,MAASF,EAE5CH,EAAY9jE,EAAO2iE,EACrB,CAAE,EAYWyB,EAAuC,SAACpkE,EAAO2iE,GAAQ,OAAK,SAAApxE,GAAqB,IAAlB8yE,EAAU9yE,EAAV8yE,WAW1E,MAAO,CAAEA,YAVa/wE,EAAAA,EAAAA,KAAI+wE,GAAY,SAACC,EAAUr6C,GAC/C,OAAIA,IAAMjqB,GACR5hB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKkmF,GAAQ,IACX3B,SAAAA,IAGG2B,CACT,IAGF,CAAE,EAYWC,EAAuB,SAAHhyE,GAA6D,IAADiyE,EAAAjyE,EAAtDkyE,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAAEE,EAAWnyE,EAAXmyE,YAAWC,EAAApyE,EAAEqyE,kBAAAA,OAAiB,IAAAD,EAAG,GAAEA,EAYpF,OAXmBrxE,EAAAA,EAAAA,KAAIoxE,GAAa,SAACG,EAAQ7kE,GAQ3C,OAPgB5hB,EAAAA,EAAAA,GAAA,CACdoT,IAAKqzE,EACLlC,SAAU,EACV90B,KAAM42B,EAAMzkE,GAASykE,EAAMzkE,GAAO6tC,KAAO,EACzCtxC,KAAMkoE,EAAMzkE,GAASykE,EAAMzkE,GAAOzD,KAAO,IACrCqoE,EAAkB5kE,IAAU,CAAC,EAGrC,GAGF,E,YCtEa8kE,EAAqB,SAAH1nF,GAAA,IAC7B2nF,EAAW3nF,EAAX2nF,YACAC,EAAY5nF,EAAZ4nF,aACAC,EAAa7nF,EAAb6nF,cAAa,OACTC,EAAAA,EAAAA,IAA0C,CAC9CH,YAAAA,EACAC,aAAAA,EACAC,cAAAA,GACC,EAGUE,EAAqB,WAAH,OAASl2C,QAAQC,SAAQ,EAAM,C,+LCZxDk2C,EAAmB,CAAC,CACxBjiF,MAAO,QACP4F,KAAM,YACL,CACD5F,MAAO,OACP4F,KAAM,YAGKs8E,EAAW,WAAqE,IAADjoF,EAAA2oC,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAP,CAAC,EAACu/C,EAAAloF,EAA5DmoF,SAAAA,OAAQ,IAAAD,EAAG,GAAEA,EAAAE,EAAApoF,EAAEoU,IAAAA,OAAG,IAAAg0E,EAAG,GAAEA,EAAAC,EAAAroF,EAAEsoF,UAAAA,OAAS,IAAAD,EAAGL,EAAgBK,EACxEE,GAAUxgF,IAAAA,UACdugF,EACA,CAAEviF,MAAOoiF,KACN,CAAEx8E,KAAM,KAAMA,KACnB,MAAM,GAAN9J,OAAU0mF,GAAM1mF,OAAGuS,EACrB,EChBao0E,EAAW,SAACp0E,GACvB,IACMq0E,EADW,IAAIC,OAAO,wCAAyC,KACxCC,KAAKv0E,GAClC,MAAO,CAAE+zE,SAAUM,GAAeA,EAAY,GAAIr0E,IAAKq0E,GAAeA,EAAY,GACpF,E,2GCYaG,EAAS,SAAAC,GA+BpB,SAAAD,EAAYtjF,GAAQ,IAADC,GAAAC,EAAAA,EAAAA,GAAA,KAAAojF,IACjBrjF,GAAAE,EAAAA,EAAAA,GAAA,KAAAmjF,EAAA,CAAMtjF,KAORwjF,YAAc,SAAC10E,GACb7O,EAAKD,MAAMyjF,SAAS30E,EACtB,EAAC7O,EAEDyjF,gBAAkB,SAAC56D,GACjB,IAAM66D,EAAW76D,EAAEiD,OAAOtrB,MAC1BmjF,EAAwBV,EAASS,GAA3Bd,EAAQe,EAARf,SAAU/zE,EAAG80E,EAAH90E,MACX+zE,GAAaA,IAAapgF,IAAAA,UAAYxC,EAAKD,MAAMgjF,UAAW,CAAEviF,MAAOoiF,OAGxEA,EAAW,KACX/zE,EAAM60E,GAGR,IAAME,EAAS/0E,GAAO,GAChBg1E,EAAcjB,GAAY5iF,EAAKkqC,MAAM04C,SAErCkB,EAAUj1E,EAAM7O,EAAK+jF,aAAa,CACtCnB,SAAUiB,EACVh1E,IAAK+0E,EAAOI,SACT,GAELhkF,EAAKu6E,SAAS,CAAE1rE,IAAK+0E,EAAQhB,SAAUiB,IACvC7jF,EAAKujF,YAAYO,EACnB,EAAC9jF,EAEDikF,qBAAuB,SAACp7D,GACtBA,EAAEinD,kBACF,IAAM8S,EAAW/5D,EAAEiD,OAAOtrB,MACpBqO,EAAM7O,EAAKkqC,MAAMr7B,IAAIm1E,OAErBF,EAAUj1E,EAAM7O,EAAK+jF,aAAa,CACtCnB,SAAAA,EACA/zE,IAAAA,IACG,GAEL7O,EAAKu6E,SAAS,CAAEqI,SAAAA,IAChB5iF,EAAKujF,YAAYO,EACnB,EAAC9jF,EAED+jF,aAAe,SAAAtpF,GAAA,IAAGmoF,EAAQnoF,EAARmoF,SAAU/zE,EAAGpU,EAAHoU,IAAG,OAAO6zE,EAAS,CAAEE,SAAAA,EAAU/zE,IAAAA,EAAKk0E,UAAW/iF,EAAKD,MAAMgjF,WAAY,EA9ChG,IAAAmB,EAAwBjB,EAASljF,EAAM8O,KAAjC+zE,EAAQsB,EAARtB,SAAU/zE,EAAGq1E,EAAHr1E,IAGe,OAF/B+zE,EAAWA,GAAYpgF,IAAAA,MAAQzC,EAAMgjF,WAAWviF,MAChDqO,EAAMA,GAAO,GACb7O,EAAKkqC,MAAQ,CAAE04C,SAAAA,EAAU/zE,IAAAA,GAAM7O,CACjC,CAAC,OAAAK,EAAAA,EAAAA,GAAAgjF,EAAAC,IAAAhjF,EAAAA,EAAAA,GAAA+iF,EAAA,EAAA9iF,IAAA,SAAAC,MA4CD,WACE,IAAA2jF,EAA0B1jF,KAAKypC,MAAvB04C,EAAQuB,EAARvB,SAAU/zE,EAAGs1E,EAAHt1E,IAElB,OACErJ,EAAAA,EAAAA,MAAA,OAAKxD,UAAWvB,KAAKV,MAAMqkF,mBAAmBhiF,SAAA,EAC5CV,EAAAA,EAAAA,KAAC2iF,EAAAA,QAAM5oF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACLqG,GAAIrB,KAAKV,MAAM+B,GACfE,UAAWvB,KAAKV,MAAMukF,gBACtB9jF,MAAOoiF,EACPY,SAAU/iF,KAAKwjF,sBACXxjF,KAAKV,MAAMwkF,uBAAyB,CACtC,kBAAmB9jF,KAAKV,MAAMwkF,wBAC5B,CAAC,GACD9jF,KAAKV,MAAMykF,kBAAoB,CACjC,aAAc/jF,KAAKV,MAAMykF,mBACvB,CAAC,GAAC,IAAApiF,SAEL3B,KAAKV,MAAMgjF,UAAUpyE,KAAI,SAAA8zE,GAAM,OAC9B/iF,EAAAA,EAAAA,KAAA,UAA2BlB,MAAOikF,EAAOjkF,MAAM4B,SAAEqiF,EAAOr+E,MAA3Cq+E,EAAOjkF,MAAkD,QAG1EkB,EAAAA,EAAAA,KAACgjF,EAAAA,OAAKjpF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACJuG,UAAWvB,KAAKV,MAAM4kF,eACtBnkF,MAAOqO,EACP20E,SAAU/iF,KAAKgjF,iBACXhjF,KAAKV,MAAM6kF,kBAAoB,CACjC,kBAAmBnkF,KAAKV,MAAM6kF,mBAC5B,CAAC,GACDnkF,KAAKV,MAAM8kF,aAAe,CAC5B,aAAcpkF,KAAKV,MAAM8kF,cACvB,CAAC,MAIb,IAAC,CAnHmB,CAASzkF,EAAAA,WAAlBijF,EAkBJhhF,aAAe,CACpBP,QAAIgK,EACJs4E,wBAAoBt4E,EACpBw4E,qBAAiBx4E,EACjB64E,oBAAgB74E,EAChB+C,IAAK,GACLk0E,UAhCc,CAAC,CACjBviF,MAAO,QACP4F,KAAM,YACL,CACD5F,MAAO,OACP4F,KAAM,YA4BJm+E,4BAAwBz4E,EACxB84E,uBAAmB94E,EACnB04E,uBAAmB14E,EACnB+4E,kBAAc/4E,GA0FlB,IAAMg5E,GAA6BC,EAAAA,EAAAA,gBAAe,CAChDC,cAAe,QAGJC,GAA0BC,EAAAA,EAAAA,YAAUC,EAAAA,EAAAA,gBAC/C9B,EACAyB,I,wBCvIK,SAASM,EAAkBrlF,GAChC,IAAA+vB,GAAsBC,EAAAA,EAAAA,UAASvtB,IAAAA,MAAQzC,EAAMS,MAAMT,EAAM2I,SAAQsnB,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1DjhB,EAAGmhB,EAAA,GAAEq1D,EAAMr1D,EAAA,GACZs1D,EAAY,CAChBC,WAAY,CACV12E,KAAGpT,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACEsE,EAAM6H,OAAO29E,WAAWxlF,EAAM2I,QAAM,IACvCE,KAAM,aAaZ,OACElH,EAAAA,EAAAA,KAACujF,GAAuBxpF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClB+G,IAAAA,KAAOzC,EAAO,OAAQ,aAAW,IACrC8O,IAAKA,EACL20E,SAZgB,SAACI,GACnByB,EAAOzB,GACP,IAAM4B,EAAO5B,EAAS,CAACA,GAAU,GACjC7jF,EAAMyjF,UAAQn4E,EAAAA,EAAAA,GAAC,CAAC,EACbtL,EAAM2I,MAAQ88E,GAEnB,EAOIngC,gBAAiB,CACfz9C,OAAQ09E,EACR58E,MAAO,MACPjB,KAAM,CAAEoH,IAAAA,MAIhB,CAWAu2E,EAAkB/iF,aAAe,CAC/B7B,WAAOsL,E,sNC5CH25E,EAA2B,SAAC52E,GAEhC,MADiB,sBACD62E,KAAK72E,EACvB,EAEM82E,EAAiC,SAAC92E,GAEtC,MAD+B,WACD62E,KAAK72E,EACrC,EAEa+2E,EAAiB,KAwC9B,IAAMC,EAA+B,CACnC34D,sCACAA,uCAEI44D,EAAkB,G,uCCxDXniE,GAAYoiE,EAAAA,EAAAA,GAAW,CAClCC,mBAAiBvqF,EAAAA,EAAAA,GAAA,CACfV,QAAS,OACTqwB,SAAU,SACVnwB,MAAO,OACPc,OAAQ,OACR4pB,UAAW,aACX,MAAO,CACLuE,aAAc,aAEb+7D,EAAAA,GAAW1+D,IAAI,SAEpB2+D,SAAU,CACRnqF,OAAQ,OACRd,MAAO,OACP4qB,SAAU,GAEZsgE,YAAa,CACXnrF,SAAU,SAEZorF,kBAAmB,CACjBnrF,MAAO,SAETorF,SAAO5qF,EAAAA,EAAAA,GAAA,CACLV,QAAS,OACTqwB,SAAU,OACVtsB,UAAW,YACXjD,WAAY,YACToqF,EAAAA,GAAW1+D,IAAI,U,YCrBf,SAAS++D,EAAa7rF,GAKzB,IAJF+F,EAAK/F,EAAL+F,MACAqO,EAAGpU,EAAHoU,IACAzK,EAAI3J,EAAJ2J,KACAo/E,EAAQ/oF,EAAR+oF,SAEA+C,GAAAt2D,EAAAA,EAAAA,GAAuBzvB,EAAK,GAArBmnE,EAAK4e,EAAA,GAAE1e,EAAK0e,EAAA,GACbC,GAAYz8E,EAAAA,EAAAA,UAAQ,kBAAM08E,EAAAA,EAAAA,WAAU53E,EAAI,GAAE,CAACA,IAC3C63E,GAAet2E,EAAAA,EAAAA,cAAY,SAACu2E,EAAI/3E,GAA2B,IAAhBg4E,EAAQh4E,EAAfpO,MAClC01D,EF0CH,SAAsBtvB,EAAQxiC,GACnC,IAAM8xD,EAAS,GACTwR,EAAQllE,IAAAA,QAAUokC,EAAO,IAAM,GAAKA,EAAO,GAAGo9C,OAC9Cpc,EAAQplE,IAAAA,QAAUokC,EAAO,IAAM,GAAKA,EAAO,GAAGo9C,OAWpD,OAVIxhF,IAAAA,QAAUklE,KAAWllE,IAAAA,QAAUolE,IACjC1R,EAAO98C,KAAKhV,EAAKQ,UAAUsoB,sDAG7B1qB,IAAAA,KAAOokC,GAAQ,SAACl+B,EAAO2U,GACjB3U,GAASlG,IAAAA,KAAOkG,GAASo9E,GAC3B5vB,EAAO98C,KAAKhV,EAAKQ,UAAUihF,EAA6BxoE,IAE5D,IAEO64C,CACT,CEzDmB2wB,CAAa,CAAU,UAATF,EAAmBC,EAAWjf,EAAgB,UAATgf,EAAmBC,EAAW/e,GAAQzjE,GACxGo/E,EAASttB,GAAM7qD,EAAAA,EAAAA,GAAA,GAAKs7E,EAAOC,GAC7B,GAAG,CAACjf,EAAOE,EAAOzjE,EAAMo/E,IAElBsD,GAAgB12E,EAAAA,EAAAA,cAAY,SAAC22E,EAAOH,GACxCF,EAAa,QAASE,EACxB,GAAG,CAACF,IAEEM,GAAgB52E,EAAAA,EAAAA,cAAY,SAAC22E,EAAOH,GACxCF,EAAa,QAASE,EACxB,GAAG,CAACF,IAEEliF,EAASmf,IAEf,OACEne,EAAAA,EAAAA,MAAA,OAAKxD,WAAWilF,EAAAA,EAAAA,GAAa,WAAYziF,EAAO6hF,SAASjkF,SAAA,EACvDV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,mBAAkBI,UAC9BkzE,EAAAA,EAAAA,UAASkR,IAAcA,EAAUvlF,OAAS,EACzCulF,EACA,qBAGJ9kF,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAC,OAC/BV,EAAAA,EAAAA,KAACgjF,EAAAA,EAAK,CACJ1iF,UAAU,QACVxB,MAAOmnE,EACP6b,SAAUsD,KAEZplF,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAC,OAC/BV,EAAAA,EAAAA,KAACgjF,EAAAA,EAAK,CACJ1iF,UAAU,QACVxB,MAAOqnE,EACP2b,SAAUwD,MAIlB,CAaAV,EAAcjkF,aAAe,CAC3BmhF,SAAUz2B,EAAAA,M,wCClECm6B,EAAwB,MACxBC,EAAqB,QAE3B,SAASC,EAA2Bj7D,GAAkD,IAAxCk7D,EAAgBjkD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG+jD,EAChE9pE,EAAQ7a,IAAAA,SAAW2pB,GAAYA,EAAS0yB,QAAQqoC,IAA0B,EAChF,OAAI7pE,GAAS,EAIJ,CAHQ8O,EAASsnD,UAAU,EAAGp2D,GAAOpD,cACxBkS,EAASsnD,UAAUp2D,EAAQ6pE,EAAsBjmF,QAAQ+iF,QAKxE,CAACqD,EAAkB,GAC5B,CAEO,IAAMC,EACX,SAACC,EAAkBC,GACjB,IAAIC,EAAQ,GAKZ,OAJKD,EAAUna,SAAS6Z,KACtBO,EAAQP,GAGJ,GAAN5qF,OAAUkrF,GAASlrF,OAAGmrF,GAAKnrF,OAAGirF,EAChC,EAEWG,EAAgC,SAACC,EAAWf,GACvD,GAAIA,EAASvZ,SAAS6Z,GAAwB,CAE5C,IAAAU,EAA8BR,EAA2BR,GAASiB,GAAA53D,EAAAA,EAAAA,GAAA23D,EAAA,GAA3D5E,EAAM6E,EAAA,GAAEC,EAAWD,EAAA,GAE1B,GAAe,SAAX7E,GAAgC,UAAXA,EACvB,MAAM,GAAN1mF,OAAU0mF,GAAM1mF,OAAG4qF,GAAqB5qF,OAAGwrF,EAE/C,CAEA,MAAM,GAANxrF,OAAUqrF,GAASrrF,OAAG4qF,GAAqB5qF,OAAGsqF,EAAS5C,OACzD,ECxBM+D,EAAmB,CACvB,CAAExnF,IAAK,QAAS6F,KAAM,WAAYhB,MAAO,YACzC,CAAE7E,IAAK,OAAQ6F,KAAM,UAAWhB,MAAO,YAGlC,SAAS4iF,EAAcvtF,GAe1B,IAdFoU,EAAGpU,EAAHoU,IACAzK,EAAI3J,EAAJ2J,KACAo/E,EAAQ/oF,EAAR+oF,SACAY,EAAkB3pF,EAAlB2pF,mBACA6D,EAAoBxtF,EAApBwtF,qBACAC,EAAcztF,EAAdytF,eACAC,EAAuB1tF,EAAvB0tF,wBACAC,EAAW3tF,EAAX2tF,YACAC,EAAgB5tF,EAAhB4tF,iBACAC,EAAoB7tF,EAApB6tF,qBACAC,EAAkB9tF,EAAlB8tF,mBACAnC,EAAiB3rF,EAAjB2rF,kBACAoC,EAAiC/tF,EAAjC+tF,kCACAC,EAAYhuF,EAAZguF,aAEM9uB,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAE5BlgB,GAAsC3vC,EAAAA,EAAAA,UACpC,kBAAMq9E,EAA2Bv4E,EAAI,GACrC,CAACA,IACF+qC,GAAA3pB,EAAAA,EAAAA,GAAAypB,EAAA,GAHMiuC,EAAS/tC,EAAA,GAAE2tC,EAAgB3tC,EAAA,GAK5B8uC,GAAqB3+E,EAAAA,EAAAA,UAAQ,WAEjC,OADuBg+E,EAAiBnnF,QAAO,SAAA6jF,GAAM,OAAIA,EAAOlkF,MAAQonF,CAAS,IAAE,IAAMI,EAAiB,IACpF3hF,IACxB,GAAG,CAACuhF,IAEEgB,GAAuBv4E,EAAAA,EAAAA,cAAY,SAACw4E,GAExC,IAAIC,EJxBD,SAAuBh6E,EAAKi6E,GAAwK,IAA1I1kF,EAAIg/B,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,CAAEx+B,UAAWpC,IAAAA,UAAcumF,EAAc3lD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAGwiD,EAAgBQ,EAAiBhjD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,IAAAA,UAAA,GAAUolD,EAAiCplD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,IAAAA,UAAA,GAC9L,OAAKv0B,EAID25E,GAAqC7C,EAA+B92E,GAC/DzK,EAAKQ,UAAUsoB,wCAGpB1qB,IAAAA,KAAOqM,GAAOk6E,EACT3kF,EAAKQ,UAAUsoB,uEAA8E,CAAE87D,YAAaD,IAGhH3C,IAAsBX,EAAyB52E,KAAWu3E,KAAsBnxD,EAAAA,EAAAA,YAAWpmB,GACvFzK,EAAKQ,UAAUsoB,4BAGnB1qB,IAAAA,QAAUsmF,IAITA,KAD2BG,EAAAA,EAAAA,yBAAwBp6E,GAMlD,KAJIzK,EAAKQ,UAAUsoB,oFApBjB9oB,EAAKQ,UAAUsoB,2BAyB1B,CIHiCg8D,CAAcN,EAAY,GAAIxkF,EAAMwhF,EAAgBQ,EAAmBoC,IAC/FK,GAA0BZ,IAC7BY,EAAyBZ,EAAqBW,IAGhDpF,EAASqF,EAAyB,CAACA,GAA0B,GAAID,GAC7DjvB,GACFA,EAAS4D,OAAO,KAADjhE,OAAM8rF,EAAW,aAAA9rF,OAAYkjD,KAAK2pC,UAAUP,GAAW,gBAAAtsF,QAAgBusF,EAAsB,KAEhH,GAAG,CAAClvB,EAAUsuB,EAAsB7B,EAAmBhiF,EAAMo/E,EAAU4E,IAEjEgB,GAAqBh5E,EAAAA,EAAAA,cACzB,SAAC22E,EAAOsC,GAAO,OACbV,EAAqBrB,EAAgCC,EAAkB8B,EAAQC,aAAa,GAC9F,CAAC/B,EAAkBoB,IAGfY,GAA6Bn5E,EAAAA,EAAAA,cACjC,SAAC22E,EAAKn4E,GAAA,IAAIpO,EAAKoO,EAALpO,MAAK,OACbmoF,EAAqBrB,EAAgCC,EAAkB/mF,GAAO,GAChF,CAAC+mF,EAAkBoB,IAGfa,GAAep5E,EAAAA,EAAAA,cAAY,SAAC22E,EAAKn3E,GAAiB,IAAbpP,EAAKoP,EAALpP,MACxBknF,EAA8BC,EAAWnnF,IAGxDmoF,EAAqBjB,EAA8BC,EAAWnnF,GAElE,GAAG,CAACmoF,EAAsBhB,KAE1BrpD,EAAAA,EAAAA,YAAU,YACHzvB,GAAOq5E,EAEVS,EAAqBjB,EAA8BC,EAAWO,IACrDG,GACTM,EAAqB95E,EAIzB,GAAG,CAACA,IAEJ,IAAMrK,EAASmf,IAEf,OACEne,EAAAA,EAAAA,MAAA,OAAKxD,WAAWilF,EAAAA,EAAAA,GAAaziF,EAAOwhF,kBAAmB5B,GAAoBhiF,SAAA,EAEtEqmF,GAAgBrC,IACf1kF,EAAAA,EAAAA,KAACgjF,EAAAA,EAAK,CACJlkF,MAAOmnF,EACPnE,SAAU+F,EACVvnF,WAAWilF,EAAAA,EAAAA,GAAa,eAAgBziF,EAAO4hF,mBAC/CqD,aAAa,SAIhBhB,IAAiBrC,IAChB1kF,EAAAA,EAAAA,KAACgoF,EAAAA,EAAQ,CACPC,eAAgBP,EAChB,aAAYjB,EACZnmF,WAAWilF,EAAAA,EAAAA,GAAa,eAAgBziF,EAAO2hF,aAC/CyD,gBAAiB,CAACjC,GAAaI,EAAiB,GAAGxnF,KACnDC,MAAOkoF,EAAmBtmF,SAEzB2lF,EAAiBp3E,KAAI,SAAA8zE,GAAM,OAC1B/iF,EAAAA,EAAAA,KAACmoF,EAAAA,EAAM,CAAkBrpF,MAAOikF,EAAOlkF,IAAI6B,SACxCqiF,EAAOr+E,MADGq+E,EAAOlkF,IAEX,OAKjBmB,EAAAA,EAAAA,KAACgjF,EAAAA,GAAKjpF,EAAAA,EAAAA,GAAA,CACJ+E,MAAO+mF,EACP/D,SAAUgG,EACVxnF,WAAWilF,EAAAA,EAAAA,GAAa,YAAaziF,EAAO0hF,UAC5C,aAAYqC,GACRD,MAIZ,CAsBAN,EAAe3lF,aAAe,CAC5BmhF,SAAUz2B,EAAAA,KACV7oD,QAAS6oD,EAAAA,KACTq3B,mBAAoB,GACpB6D,qBAAsBl7B,EAAAA,KACtBm7B,eAAgB,GAChBC,wBAAyB,GACzBC,YAAa,GACbC,kBAAkB,EAClBC,qBAAsB,CAAC,EACvBlC,mBAAmB,EACnBoC,mCAAmC,EACnCC,cAAc,G,qCC/JHqB,EAAiB,SAAC7mE,GAoB7B,OAnB+B,SAACljB,GAC9B,IAAQ8O,EAA2B9O,EAA3B8O,IAAK20E,EAAsBzjF,EAAtByjF,SAAar/E,GAAIZ,EAAAA,EAAAA,GAAKxD,EAAKyD,GAElCumF,EAAkBl7E,EAAG,WAAAvS,OAAcuS,GAAQA,EAQjD,OAAOnN,EAAAA,EAAAA,KAACuhB,GAAgBxnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK0I,GAAI,IAAE0K,IAAKk7E,EAAiBvG,SAN5B,SAACttB,EAAQ0yB,GAEpC,IAAAhB,EAAsCR,EAA2BwB,GAAWf,GAAA53D,EAAAA,EAAAA,GAAA23D,EAAA,GAA1DL,GAAFM,EAAA,GAAkBA,EAAA,IAClC,OAAOrE,EAASttB,EAAQqxB,EAC1B,EAEyFkB,cAAY,IACvG,CAQF,C,6UCrBMhD,EAA2B,SAAC52E,GAEhC,MADiB,sBACD62E,KAAK72E,EACvB,EAEM82E,EAAiC,SAAC92E,GAEtC,MAD+B,WACD62E,KAAK72E,EACrC,EAEa+2E,EAAiB,KAWvB,SAASsD,EAAcr6E,EAAKi6E,GAAgK,IAAlI1kF,EAAIg/B,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG,CAAEx+B,UAAWpC,IAAAA,UAAcumF,EAAc3lD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAGwiD,EAAgBQ,EAAiBhjD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,IAAAA,UAAA,GAAU4mD,EAAyB5mD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,IAAAA,UAAA,GACtL,IAAKv0B,EACH,OAAOzK,EAAKQ,UAAUsoB,4BAGxB,GAAI88D,GAA6BrE,EAA+B92E,GAC9D,OAAOzK,EAAKQ,UAAUsoB,wCAGxB,GAAI1qB,IAAAA,KAAOqM,GAAOk6E,EAChB,OAAO3kF,EAAKQ,UAAUsoB,uEAA8E,CAAE87D,YAAaD,IAGrH,GAAK3C,IAAsBX,EAAyB52E,KAAWu3E,KAAsBnxD,EAAAA,EAAAA,YAAWpmB,GAC9F,OAAOzK,EAAKQ,UAAUsoB,4BAGxB,IAAK1qB,IAAAA,QAAUsmF,IAITA,KAD2BG,EAAAA,EAAAA,yBAAwBp6E,GAErD,OAAOzK,EAAKQ,UAAUsoB,oFAI1B,OAAO,IACT,CAEA,IAAM24D,EAA+B,CACnC34D,sCACAA,uCAEI44D,EAAkB,G,gBCnDlBmE,EAAe,CACnBxlF,KAAM,CACJylF,SAAU,WACVprF,UAAW,cAIR,SAASwnF,EAAa7rF,GAKzB,IAJF+F,EAAK/F,EAAL+F,MACAqO,EAAGpU,EAAHoU,IACAzK,EAAI3J,EAAJ2J,KACAo/E,EAAQ/oF,EAAR+oF,SAEA+C,GAAAt2D,EAAAA,EAAAA,GAAuBzvB,EAAK,GAArBmnE,EAAK4e,EAAA,GAAE1e,EAAK0e,EAAA,GACbC,GAAYz8E,EAAAA,EAAAA,UAAQ,kBAAM08E,EAAAA,EAAAA,WAAU53E,EAAI,GAAE,CAACA,IAC3C63E,GAAet2E,EAAAA,EAAAA,cAAY,SAACu2E,EAAMC,GACtC,IAAM1wB,EDqCH,SAAsBtvB,EAAQxiC,GACnC,IAAM8xD,EAAS,GACTwR,EAAQllE,IAAAA,QAAUokC,EAAO,IAAM,GAAKA,EAAO,GAAGo9C,OAC9Cpc,EAAQplE,IAAAA,QAAUokC,EAAO,IAAM,GAAKA,EAAO,GAAGo9C,OAWpD,OAVIxhF,IAAAA,QAAUklE,KAAWllE,IAAAA,QAAUolE,IACjC1R,EAAO98C,KAAKhV,EAAKQ,UAAUsoB,sDAG7B1qB,IAAAA,KAAOokC,GAAQ,SAACl+B,EAAO2U,GACjB3U,GAASlG,IAAAA,KAAOkG,GAASo9E,GAC3B5vB,EAAO98C,KAAKhV,EAAKQ,UAAUihF,EAA6BxoE,IAE5D,IAEO64C,CACT,CCpDmB2wB,CAAa,CAAU,UAATF,EAAmBC,EAAWjf,EAAgB,UAATgf,EAAmBC,EAAW/e,GAAQzjE,GACxGo/E,EAASttB,GAAM7qD,EAAAA,EAAAA,GAAA,CAAIs8D,MAAAA,EAAOE,MAAAA,GAAQ8e,EAAOC,GAC3C,GAAG,CAACjf,EAAOE,EAAOzjE,EAAMo/E,IAElBsD,GAAgB12E,EAAAA,EAAAA,cAAY,SAAC22E,EAAOH,GACxCF,EAAa,QAASE,EACxB,GAAG,CAACF,IAEEM,GAAgB52E,EAAAA,EAAAA,cAAY,SAAC22E,EAAOH,GACxCF,EAAa,QAASE,EACxB,GAAG,CAACF,IAEJ,OACEhlF,EAAAA,EAAAA,KAAC+D,EAAAA,EAAK,CACJzD,UAAU,WACVqqE,OAAQ,CACNC,YAAa,GACblqE,UAEFoD,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CACJC,YAAU,EACVlI,cAAc,WACdgH,OAAQylF,EACR5d,OAAQ,CACNC,YAAa,GACblqE,SAAA,EAEFV,EAAAA,EAAAA,KAAA,OAAKM,UAAU,mBAAkBI,UAC9BkzE,EAAAA,EAAAA,UAASkR,IAAcA,EAAUvlF,OAAS,EACrCulF,EACA,qBAGR9kF,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAC,OAC/BV,EAAAA,EAAAA,KAACyoF,EAAAA,EAAS,CACRnoF,UAAU,QACVxB,MAAOmnE,EACP6b,SAAUsD,EACV7iF,UAAWG,EAAKQ,UAAUsoB,8BAE5BxrB,EAAAA,EAAAA,KAAA,OAAKM,UAAU,gBAAeI,SAAC,OAC/BV,EAAAA,EAAAA,KAACyoF,EAAAA,EAAS,CACRnoF,UAAU,QACVxB,MAAOqnE,EACP2b,SAAUwD,EACV/iF,UAAWG,EAAKQ,UAAUsoB,iCAKpC,CAaAo5D,EAAcjkF,aAAe,CAC3BmhF,SAAUz2B,EAAAA,M,uCCtFCm6B,EAAwB,MACxBC,EAAqB,QAE3B,SAASC,EAA2Bj7D,GAAkD,IAAxCk7D,EAAgBjkD,UAAAniC,OAAA,QAAA6K,IAAAs3B,UAAA,GAAAA,UAAA,GAAG+jD,EAChE9pE,EAAQ7a,IAAAA,SAAW2pB,GAAYA,EAAS0yB,QAAQqoC,IAA0B,EAChF,OAAI7pE,GAAS,EAIJ,CAHQ8O,EAASsnD,UAAU,EAAGp2D,GAAOpD,cACxBkS,EAASsnD,UAAUp2D,EAAQ6pE,EAAsBjmF,QAAQ+iF,QAKxE,CAACqD,EAAkB,GAC5B,CAEO,IAAMC,EACX,SAACC,EAAkBC,GACjB,IAAIC,EAAQ,GAKZ,OAJKD,EAAUna,SAAS6Z,KACtBO,EAAQP,GAGJ,GAAN5qF,OAAUkrF,GAASlrF,OAAGmrF,GAAKnrF,OAAGirF,EAChC,EAEWG,EAAgC,SAACC,EAAWf,GACvD,GAAIA,EAASvZ,SAAS6Z,GAAwB,CAE5C,IAAAU,EAA8BR,EAA2BR,GAASiB,GAAA53D,EAAAA,EAAAA,GAAA23D,EAAA,GAA3D5E,EAAM6E,EAAA,GAAEC,EAAWD,EAAA,GAE1B,GAAe,SAAX7E,GAAgC,UAAXA,EACvB,MAAM,GAAN1mF,OAAU0mF,GAAM1mF,OAAG4qF,GAAqB5qF,OAAGwrF,EAE/C,CAEA,MAAM,GAANxrF,OAAUqrF,GAASrrF,OAAG4qF,GAAqB5qF,OAAGsqF,EAAS5C,OACzD,EAEaoG,EAAa,SAAC33B,GAIzB,IAAA43B,EAAiBjD,EAA2B5kF,IAAAA,MAAQiwD,IAA3C63B,GAAsDr6D,EAAAA,EAAAA,GAAAo6D,EAAA,GAAlD,GACb,OAAO7nF,IAAAA,QAAU8nF,EACnB,ECjCMvC,EAAmB,CACvB,CAAExnF,IAAK,QAAS6F,KAAM,WAAYhB,MAAO,YACzC,CAAE7E,IAAK,OAAQ6F,KAAM,UAAWhB,MAAO,YAGlC,SAAS4iF,EAAcvtF,GAgB1B,IAfFoU,EAAGpU,EAAHoU,IACAzK,EAAI3J,EAAJ2J,KACAo/E,EAAQ/oF,EAAR+oF,SACAY,EAAkB3pF,EAAlB2pF,mBACA6D,EAAoBxtF,EAApBwtF,qBACAsC,EAAoB9vF,EAApB8vF,qBACArC,EAAcztF,EAAdytF,eACAC,EAAuB1tF,EAAvB0tF,wBACAC,EAAW3tF,EAAX2tF,YACAC,EAAgB5tF,EAAhB4tF,iBACAC,EAAoB7tF,EAApB6tF,qBACAC,EAAkB9tF,EAAlB8tF,mBACAnC,EAAiB3rF,EAAjB2rF,kBACAoC,EAAiC/tF,EAAjC+tF,kCACAC,EAAYhuF,EAAZguF,aAEM9uB,GAAWt1D,EAAAA,EAAAA,YAAWu1D,EAAAA,iBAC5BlgB,GAAsC3vC,EAAAA,EAAAA,UACpC,kBAAMq9E,EAA2Bv4E,EAAI,GACrC,CAACA,IACF+qC,GAAA3pB,EAAAA,EAAAA,GAAAypB,EAAA,GAHMiuC,EAAS/tC,EAAA,GAAE2tC,EAAgB3tC,EAAA,GAK5B+uC,GAAuBv4E,EAAAA,EAAAA,cAAY,SAACw4E,GAExC,IACIC,GADgB0B,GAAwBrB,GACHN,EAAY,GAAIxkF,EAAMwhF,EAAgBQ,EAAmBoC,IAC7FK,GAA0BZ,IAC7BY,EAAyBZ,EAAqBW,IAGhDpF,EAASqF,EAAyB,CAACA,GAA0B,GAAID,GAC7DjvB,GACFA,EAAS4D,OAAO,KAADjhE,OAAM8rF,EAAW,aAAA9rF,OAAYkjD,KAAK2pC,UAAUP,GAAW,gBAAAtsF,QAAgBusF,EAAsB,KAEhH,GAAG,CAAClvB,EAAUsuB,EAAsB7B,EAAmBmE,EAAsBnmF,EAAMo/E,EAAU4E,IAEvFgB,GAAqBh5E,EAAAA,EAAAA,cACzB,SAAC22E,EAAOsC,GAAO,OACbV,EAAqBrB,EAAgCC,EAAkB8B,EAAQ9oF,KAAK,GACtF,CAACgnF,EAAkBoB,IAGfY,GAA6Bn5E,EAAAA,EAAAA,cACjC,SAAC22E,EAAOvmF,GAAK,OACXmoF,EAAqBrB,EAAgCC,EAAkB/mF,GAAO,GAChF,CAAC+mF,EAAkBoB,IAGfa,GAAep5E,EAAAA,EAAAA,cAAY,SAAC22E,EAAOvmF,GACtBknF,EAA8BC,EAAWnnF,IAGxDmoF,EAAqBjB,EAA8BC,EAAWnnF,GAElE,GAAG,CAACmoF,EAAsBhB,IAa1B,OAXArpD,EAAAA,EAAAA,YAAU,YACHzvB,GAAOq5E,EAEVS,EAAqBjB,EAA8BC,EAAWO,IACrDG,GACTM,EAAqB95E,EAIzB,GAAG,CAACA,KAGFrJ,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CACJzD,UAAWoiF,EACX1+E,YAAU,EACV2mE,OAAQ,CACNC,YAAa,IACblqE,SAAA,EAGCqmF,GAAgBrC,IACf1kF,EAAAA,EAAAA,KAACyoF,EAAAA,EAAS,CACR3pF,MAAOmnF,EACPnE,SAAU+F,EACVvnF,UAAU,eACViB,MAAO,CAAEhI,MAAO,SAChBuvF,OAAO,SAIV/B,IAAiBrC,IAChB1kF,EAAAA,EAAAA,KAACgoF,EAAAA,EAAQ,CACPvmE,QAAS4kE,EACT0C,YAAa9C,EACbnE,SAAU4F,EACVnlF,UAAWkkF,EACXnmF,UAAU,kBAGhBN,EAAAA,EAAAA,KAAC+D,EAAAA,EAAMkzB,KAAI,CAAC+xD,MAAI,EAAAtoF,UACdV,EAAAA,EAAAA,KAACyoF,EAAAA,GAAS1uF,EAAAA,EAAAA,GAAA,CACR+E,MAAO+mF,EACP/D,SAAUgG,EACVxnF,UAAU,YACViC,UAAWskF,GACND,QAKf,CAuBAN,EAAe3lF,aAAe,CAC5BmhF,SAAUz2B,EAAAA,KACV7oD,QAAS6oD,EAAAA,KACTq3B,mBAAoB,GACpB6D,qBAAsBl7B,EAAAA,KACtBw9B,qBAAsB,KACtBrC,eAAgB,GAChBC,wBAAyB,GACzBC,YAAa,GACbC,kBAAkB,EAClBC,qBAAsB,CAAC,EACvBlC,mBAAmB,EACnBoC,mCAAmC,EACnCC,cAAc,G,qCC5JHqB,EAAiB,SAAC7mE,GAoB7B,OAnB+B,SAACljB,GAC9B,IAAQ8O,EAA2B9O,EAA3B8O,IAAK20E,EAAsBzjF,EAAtByjF,SAAar/E,GAAIZ,EAAAA,EAAAA,GAAKxD,EAAKyD,GAElCumF,EAAkBl7E,EAAG,WAAAvS,OAAcuS,GAAQA,EAQjD,OAAOnN,EAAAA,EAAAA,KAACuhB,GAAgBxnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK0I,GAAI,IAAE0K,IAAKk7E,EAAiBvG,SAN5B,SAACttB,EAAQ0yB,GAEpC,IAAAhB,EAAsCR,EAA2BwB,GAAWf,GAAA53D,EAAAA,EAAAA,GAAA23D,EAAA,GAA1DL,GAAFM,EAAA,GAAkBA,EAAA,IAClC,OAAOrE,EAASttB,EAAQqxB,EAC1B,EAEyFkB,cAAY,IACvG,CAQF,C,yBC1BA,IAAIkC,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAivC,OAA7uC,SAAUI,EAAMC,EAAgBC,EAAYxxE,GAAOoxE,EAAWA,EAAW,8DAAyFL,EAAIU,OAAO,OAASN,EAAanxE,GAAQ,GAAKmxE,GAAe,iCAA+DJ,EAAIU,OAAO,OAASN,EAAaG,GAAQ,GAAKH,GAAe,sHAAsNJ,EAAIU,OAAO,OAASN,EAAaK,GAAc,GAAKL,GAAe,mCAAiEJ,EAAIU,OAAO,OAASN,EAAaI,GAAkB,GAAKJ,GAAe,oBAAkE,EAAEO,KAAK7qF,KAAK,SAAUwqF,EAAgBA,EAAgBC,KAAmB,qBAAPA,KAAmBA,UAAKp/E,EAAU,mBAAoBm/E,EAAgBA,EAAgBE,eAAuC,qBAAjBA,eAA6BA,oBAAer/E,EAAU,eAAgBm/E,EAAgBA,EAAgBG,WAA+B,qBAAbA,WAAyBA,gBAAWt/E,EAAU,SAAUm/E,EAAgBA,EAAgBrxE,KAAmB,qBAAPA,KAAmBA,UAAK9N,GAAoBk/E,CAAS,C,wRCAv2C,SAASO,GAAmB,KAAE9jF,EAAI,YAAE+jF,EAAW,OAAEC,IACtD,OAAO,WAAShkF,GAAM3G,GAAQA,EAAK0qF,EAAY5xE,OAAS9Y,EAAK0qF,EAAYE,WAAa5qF,EAAK0qF,EAAYG,YAAc7qF,EAAK2qF,IAC5H,C,ICJYG,E,aAAZ,SAAYA,GACV,iBACA,oBACD,CAHD,CAAYA,IAAAA,EAAK,KAKV,MAAMC,EAAe,CAC1B,CAACD,EAAME,KAAM,MACb,CAACF,EAAMG,OAAQ,QAGJC,EAAqB,EAKrBC,EAAsB,CACjCC,QAAS,CACPtyE,KAAM,cACN+xE,UAAW,mBACXD,SAAU,mBAEZS,OAAQ,CACNvyE,KAAM,aACN+xE,UAAW,kBACXD,SAAU,kBAEZU,gBAAiB,CACfxyE,KAAM,kBACN+xE,UAAW,wBACXD,SAAU,wBAEZW,KAAM,CACJzyE,KAAM,OACN+xE,UAAW,gBACXD,SAAU,gBAEZY,WAAY,CACV1yE,KAAM,aACN+xE,UAAW,sBACXD,SAAU,uBAIDa,EAAiB,CAC5BC,OAAQ,SACRC,YAAa,QACbC,IAAK,MACLC,WAAY,WACZC,MAAO,QACPC,yBAA0B,iBAC1BC,iCAAkC,sBAClCC,kBAAmB,QACnBC,sBAAuB,aACvBC,qBAAsB,MACtBC,0BAA2B,UAC3BC,iBAAkB,uBAGPC,EAAsB,CACjCZ,OAAQ,SACRC,YAAa,cACbC,IAAK,MACLC,WAAY,cACZC,MAAO,QACPC,yBAA0B,sBAC1BC,iCAAkC,+BAClCC,kBAAmB,cACnBC,sBAAuB,kBACvBC,qBAAsB,MACtBC,0BAA2B,UAC3BC,iBAAkB,uBChEdE,EAAsB,UAqB5B,SAASC,GAAoB,aAAEC,IAC7B,MAAM,SACJpoB,EAAQ,OAAEqoB,GACRD,EAEEE,EArBR,UAAwB,OACtBD,EAAM,YACN77D,IAMA,MAAO,kDAA2D,EAAT67D,cAAgC,EAATA,0BAC9DA,UAAeA,SAAcA,EAbvB,qBAQJH,6BACFA,oBAK4E17D,2BAC5E67D,UAAeA,yBANfH,kBASpB,CAOcK,CAAe,CACzBF,SACA77D,YA1BuB,KAkCzB,MAAO,CACLwzC,WAEAsoB,MACAtqE,QAAS,CACPwqE,OAAQ,CAAEC,EAAGJ,EAAQK,EAAGL,GACxBM,oBAAoB,GAG1B,CAaO,SAASC,GAAmB,aACjCC,EAAY,YAAExC,EAAW,OAAEC,EAAM,UAAEwC,EAAS,KAAE7pF,IAE9C,MAAM8pF,EAAW5iD,KAAKC,IAAI,QAAMyiD,GAAcltF,GAAQwqC,KAAKC,IAAIzqC,EAAK2qF,MAAUA,IAC9E,OAAO,UAAQuC,GAAc9iD,QAAOpqC,IAASA,EAAK2qF,KAAS96E,KAAK7P,IAC9D,MAAMqqF,GAAyB,IAAAgD,cAAa1C,EAAQ3qF,EAAK2qF,IACnDL,EAAqBhnF,EAAKQ,UAAU2nF,EAAed,IACnDtmB,EAAoD,CAAEipB,SAAUttF,EAAK0qF,EAAYE,UAAW2C,UAAWvtF,EAAK0qF,EAAYG,YACxH/xE,EAAe9Y,EAAK0qF,EAAY5xE,MAGhC00E,EAAgBhB,EAAoB,CACxCC,aAAc,CACZpoB,WACAqoB,OALmBliD,KAAKijD,ID7DC,GC6DIztF,EAAK2qF,GAA+ByC,ED5DxC,MCoEvBM,GA5BmBC,EA4BqBH,EA5BR,EACxCI,WAEA,MAAMvpB,EAAW,IAAIupB,EAAKC,SAASF,EAAUtpB,SAASipB,SAAUK,EAAUtpB,SAASkpB,WAKnF,OAJY,IAAIK,EAAKE,QAAQzpB,EAAU,WAASspB,EAAUtrE,QAAS,CACjEwqE,OAAQ,IAAIe,EAAKG,MAAMJ,EAAUtrE,QAAQwqE,OAAOC,EAAGa,EAAUtrE,QAAQwqE,OAAOE,IAC3E,CAAExpC,KAAMoqC,EAAUhB,MAEX,GARiBgB,MA8BzB,MAAO,CACLtpB,WACAqoB,OAAQliD,KAAKijD,IDzEc,GCyETztF,EAAK2qF,GAA+ByC,EDxE3B,GCyE3B1tF,MAAOM,EAAK2qF,GACZL,aACAF,KAAM,GAAG9mF,EAAK0qF,WAAWb,EAAUhyC,YAAY73C,EAAK0qF,WAAWb,EAAUc,OACzEn1E,OACAuxE,iBACAqD,mBACD,IAEA7+D,MAAM,IACNnvB,OACL,CCpFO,MAAMwuF,EAAsB,EACjCvD,SACAwC,YACA7pF,OACA6qF,gBACAC,iBAEA,MAAM,MAAEvjC,IAAU,IAAAtnD,YAAW,EAAA61D,eAE3BtzB,QAAQ,IACN2lB,EAAG,IACHC,EAAG,WACHgK,IAEA7K,GAEGmZ,EAAWqqB,IAAgB,IAAAp/D,aAC3B42B,EAAWyoC,IAAgB,IAAAr/D,WAAkB,GAE9Cs/D,GAAuB,IAAAj/E,cAAY,CAAC49E,EAAcxC,KACtD2D,EAAapB,EAAmB,CAC9BC,eAAcxC,cAAaC,SAAQwC,YAAW7pF,UAEhDgrF,GAAa,GACbF,GAAY,GACX,CAACjB,EAAW7pF,EAAMqnF,EAAQyD,IAwE7B,OAtEA,IAAA5wD,YAAU,KACR8wD,GAAa,GACb,MAAM,iBACJE,EAAgB,yBAChBC,EAAwB,gBACxBC,EAAe,cACfC,EAAa,oBACbC,GCtCC,UAA2B,IAChCnjC,EAAG,IAAEC,EAAG,WAAEgK,EAAU,UAAEy3B,EAAS,OAAExC,IAsBjC,MAAO,CACL6D,kBArBkB,IAAAA,kBAAiB,CACnC/iC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAqBjC8D,0BAlB0B,IAAAA,0BAAyB,CACnDhjC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAkBjC+D,iBAfiB,IAAAA,iBAAgB,CACjCjjC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAejCgE,eAZe,IAAAA,eAAc,CAC7BljC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAYjCiE,qBATqB,IAAAA,qBAAoB,CACzCnjC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAUrC,CDSQkE,CAAkB,CACpBpjC,MAAKC,MAAKgK,aAAYy3B,YAAWxC,WAEnCwD,IACAK,EAAiBx9E,MAAM89E,IACrB,MAAMC,EAAsBtE,EAAmB,CAAE9jF,KAAiB,OAAXmoF,QAAW,IAAXA,OAAW,EAAXA,EAAapvF,MAAOgrF,YAAaS,EAAoBC,QAAST,WACjH,YAAUoE,GACZR,EAAqB,GAAIpD,EAAoBC,SAG3C,SAAO2D,GAAuB,IEvDjC,SAAsBA,GAC3B,OAAoC,IAAhC,SAAOA,IAIJ,UAAQA,GAAsB3D,GAClCA,EAAQ4D,gBAAkB,IAAM5D,EAAQ4D,gBAAkB,IAAM5D,EAAQ6D,kBAAoB,IAAM7D,EAAQ6D,kBAAoB,IAC9H7D,EAAQ4D,gBAAkB,IAAM5D,EAAQ4D,gBAAkB,IAAM5D,EAAQ6D,kBAAoB,KAAO7D,EAAQ6D,kBAAoB,IACpI,CF+C8CC,CAAaH,GACnDR,EAAqBQ,EAAqB5D,EAAoBC,SAIhEqD,EAAyBz9E,MAAMm+E,IAC7B,MAAMC,EAA8B3E,EAAmB,CAAE9jF,KAAyB,OAAnBwoF,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBzvF,MAAOgrF,YAAaS,EAAoBG,gBAAiBX,WACzI,SAAOyE,GAA+B,EACxCb,EAAqBa,EAA6BjE,EAAoBG,iBAGxEoD,EAAgB19E,MAAMq+E,IACpB,MAAMC,EAAqB7E,EAAmB,CAAE9jF,KAAgB,OAAV0oF,QAAU,IAAVA,OAAU,EAAVA,EAAY3vF,MAAOgrF,YAAaS,EAAoBE,OAAQV,WAC9G,SAAO2E,GAAsB,EAC/Bf,EAAqBe,EAAoBnE,EAAoBE,QAG/DsD,EAAc39E,MAAMu+E,IAClB,MAAMC,EAAmB/E,EAAmB,CAAE9jF,KAAc,OAAR4oF,QAAQ,IAARA,OAAQ,EAARA,EAAU7vF,MAAOgrF,YAAaS,EAAoBI,KAAMZ,WAExG,SAAO6E,GAAoB,EAC7BjB,EAAqBiB,EAAkBrE,EAAoBI,MAG7DqD,EAAoB59E,MAAMy+E,IACxB,MAAMC,EAAyBjF,EAAmB,CAAE9jF,KAAoB,OAAd8oF,QAAc,IAAdA,OAAc,EAAdA,EAAgB/vF,MAAOgrF,YAAaS,EAAoBK,WAAYb,WAC9H,GAAI,YAAU+E,GAGZ,OAAK,YAAUF,GAIV,YAAUF,GAIV,YAAUF,QAIfb,EAAqBQ,EAAqB5D,EAAoBC,cAH5DmD,EAAqBa,EAA6BjE,EAAoBG,sBAJtEiD,EAAqBe,EAAoBnE,EAAoBE,aAJ7DkD,EAAqBiB,EAAkBrE,EAAoBI,MAc/DgD,EAAqBmB,EAAwBvE,EAAoBK,WAAW,GAC5E,GACF,GACF,GACF,GACF,GACD,CAAC9/B,EAAKgK,EAAYjK,EAAK0hC,EAAWxC,EAAQ4D,EAAsBJ,IAE5D,CAAEtoC,YAAWme,YAAW,E,mJG3G1B,MAAM2rB,GAA0B,OAAW,CAChDpuC,UAAW,CACTjnB,UAAW,WACXrgC,QAAS,OACTc,WAAY,UAEd60F,cAAe,OAAF,gEACXz1F,MAAO,OACPc,OAAQ,OACRhB,QAAS,OACTc,WAAY,UACT,KAAWmC,aAAa,QACxB,KAAW+G,YAAY,UACvB,KAAWC,YAAY,QACvB,KAAWvG,YAAY4tE,EAAA,EAAOskB,+BAA6B,CAC9Dp1F,YAAa,MACbksB,eAAgB,WAElB48B,KAAM,OAAF,gEACFppD,MAAO,MACPc,OAAQ,OACL,KAAWiC,aAAa,QACxB,KAAW+G,YAAY,UACvB,KAAWC,YAAY,QACvB,KAAWvG,YAAY4tE,EAAA,EAAOukB,gCAA8B,CAC/D7yF,gBAAiBsuE,EAAA,EAAOukB,gCAE1BC,OAAQ,CACNpzF,WAAY,EACZjC,YAAa,MACbqD,aAAc,MACdX,cAAe,MACfjD,MAAO,eAET8vE,WAAY,OAAF,wBACL,KAAWpkE,SAAS,WAAS,CAChCmqF,UAAW,WACX5mE,aAAc,WACdpuB,WAAY,aCtBT,SAASi1F,GAAe,OAC7BtF,EAAM,eACNuF,EAAc,KACd5sF,IAEA,MAAMI,EAASisF,IAEf,OACE,uBAAKzuF,UAAW,IAAW,kBAAmBwC,EAAO69C,YACnD,gBAAC4uC,EAAA,EAAI,KACH,gBAACC,EAAA,EAAW,CAACC,0BAAwB,GACnC,gBAACC,EAAA,EAAO,CAACn1F,QAASmI,EAAKQ,UAAUwoF,EAAoB3B,IAAU4F,aAAa,eAC1E,gBAACC,EAAA,EAAU,CAACtvF,UAAW,IAAW,cAAewC,EAAOqsF,QAASjzF,WAAW,eAC1E,uBAAKoE,UAAWwC,EAAOksF,eACrB,uBAAK1uF,UAAWwC,EAAO6/C,QAEzB,gBAAC,IAAI,CAACriD,UAAW,IAAW,yBAA0BwC,EAAOumE,aAAc3mE,EAAKQ,UAAU2nF,EAAed,QAI/G,gBAAC8F,EAAA,EAAW,CAACvvF,UAAU,gBACrB,gBAACwvF,EAAA,EAAQ,KACN,IAAe7gF,KAAI8zE,GAAW,gBAACgN,EAAA,EAAQ,CAACzvF,UAAWyiF,EAAQlkF,IAAKkkF,EAAQvgF,QAAS,IAAM8sF,EAAevM,IAAUrgF,EAAKQ,UAAU2nF,EAAe9H,UAM3J,C,4BC5CO,MAAMiN,GAAkB,OAAW,CACxCC,OAAQ,CACNt0F,UAAW,OACXtC,QAAS,OACT0sB,eAAgB,mBCGb,SAASmqE,GAAO,eACrBC,EAAc,iBACdC,EAAgB,KAChB1tF,EAAI,aACJ2tF,IAEA,MAAMvtF,EAASktF,KACT,MAAE/lC,IAAU,IAAAtnD,YAAW,EAAA61D,eACvB,QACJx5D,EAAO,MAAE8gF,EAAK,OAAEwQ,EAAM,WAAEC,GACtBH,EAEE5tF,GAAU,IAAAkM,cAAY,KAC1B,IAAIu2E,EAAO,qCAEU,aAAjBoL,IACFpL,EAAO,4BAETh7B,EAAM+Q,KAAKiqB,EAAK,GACf,CAACoL,EAAcpmC,IAElB,OACE,uBAAK3pD,UAAW,IAAW,SAAUwC,EAAOmtF,SAC1C,gBAACl3D,EAAA,EAAM,CAACz4B,UAAW,IAAW,gBAAiB,sBAAuBkC,QAASA,GAAUE,EAAKQ,UAAU,0BACvGitF,GACC,uBAAK7vF,UAAU,wBACb,gBAACy4B,EAAA,EAAM,CAACz4B,UAAU,kBAAkBkC,QAAS+tF,EAAYhhE,SAAUvwB,GAAW,EAAG2jD,KAAM,gBAAC,MAAkB,MAAKzmD,WAAW,cAAa,aAAawG,EAAKQ,UAAU,cACnK,wBAAM5C,UAAU,QAAQoC,EAAKQ,UAAU,2BAAkC,CAAElE,UAAS8gF,WACpF,gBAAC/mD,EAAA,EAAM,CAACz4B,UAAU,cAAckC,QAAS8tF,EAAQ/gE,SAAUvwB,GAAW8gF,EAAOn9B,KAAM,gBAAC,MAAmB,MAAKzmD,WAAW,cAAa,aAAawG,EAAKQ,UAAU,WAK1K,C,4BCxCO,MAAMstF,GAAuB,OAAW,CAC7C7vC,UAAW,CACTtnD,QAAS,OACTkqB,cAAe,SACfY,SAAU,GAEZssE,eAAgB,CACdtsE,SAAU,EACVusE,UAAW,IACXt3F,UAAW,QACXG,MAAO,OACPL,UAAW,SACX6sB,eAAgB,SAChB5rB,WAAY,SACZd,QAAS,OACTgD,gBAAiB,WAEnB4Q,MAAO,CACL7T,UAAW,SAEbsK,MAAO,CACL/H,UAAW,U,qDCfR,SAASg1F,GAAO,KAAEjuF,IACvB,MAAMI,EAAS0tF,IACf,OACE,uBAAKlwF,UAAW,IAAW,oBAAqBwC,EAAO69C,YACrD,uBAAKrgD,UAAWwC,EAAO2tF,gBACrB,gBAAChjE,EAAA,EAAK,CAACntB,UAAWwC,EAAOmK,MAAO2jF,IAAI,UAAUn5E,IAAK,EAAagU,IAAK/oB,EAAKQ,UAAU,wBAEtF,gBAAC2tF,EAAA,EAAS,CAACvwF,UAAW,IAAW,QAASwC,EAAOY,QAAShB,EAAKQ,UAAU,sBACzE,gBAAC4tF,EAAA,EAAK,CAACxwF,UAAU,QAAQoC,EAAKQ,UAAU,mHAG9C,C,2EChBA,MAAM6tF,EAAa,CAAC,CAAE7pF,KAAM,IAAmB8pF,KAAM32F,OAAQ,KACvD42F,EAAa,CAAC,CAAE/pF,KAAM,IAAmB8pF,KAAM32F,OAAQ,MAEtD,SAAS62F,KACd,OACE,uBAAK5wF,UAAU,2BACb,gBAAC6wF,EAAA,EAAO,CAACC,gBAAiBL,EAAYxvF,MAAO,CAAEvH,aAAc,KAC7D,gBAACm3F,EAAA,EAAO,CAACC,gBAAiBL,EAAYxvF,MAAO,CAAEvH,aAAc,KAC7D,gBAACm3F,EAAA,EAAO,CAACC,gBAAiBL,EAAYxvF,MAAO,CAAEvH,aAAc,KAC7D,gBAACm3F,EAAA,EAAO,CAACC,gBAAiBL,EAAYxvF,MAAO,CAAEvH,aAAc,KAC7D,gBAACm3F,EAAA,EAAO,CAACC,gBAAiBL,EAAYxvF,MAAO,CAAEvH,aAAc,KAGnE,CAEO,SAASq3F,KACd,OACE,uBAAK/wF,UAAU,yBACb,gBAAC6wF,EAAA,EAAO,CAACC,gBAAiBH,EAAY1vF,MAAO,CAAEvH,aAAc,KAGnE,CCtBO,MAAMs3F,IAAiB,OAAW,CACvCxyF,MAAO,CACLzF,QAAS,OACT0sB,eAAgB,cCOb,SAASwrE,IAAkB,KAChC7uF,EAAI,UACJuiD,EAAS,UACTme,EAAS,iBACTgtB,IAEA,MAAMttF,EAASwuF,KACf,GAAIrsC,EACF,OAAO,gBAACisC,GAAY,MAEtB,MAAMM,ECpBD,SAA0BpuB,EAA2BgtB,EAAyCqB,GACnG,OAAOruB,EAAU70B,OAAO6hD,EAAiBpxF,QAAU,GAAKyyF,EAAkBrB,EAAiBpxF,QAAUyyF,EACvG,CDkBwBC,CAAiBtuB,EAAWgtB,EAAkB9F,GACpE,OACE,gBAACqH,EAAA,EAAK,CAACC,UAAQ,EAACtxF,UAAU,sBAAqB,cAAcoC,EAAKQ,UAAU,wBAC1E,gBAAC2uF,EAAA,EAAS,KACPL,EAAcviF,KAAI,EAAGiJ,OAAMuxE,oBAC1B,gBAACqI,EAAA,EAAQ,CAACxxF,UAAU,eAAezB,IAAKqZ,GACtC,gBAAC65E,EAAA,EAAS,KACR,gBAAC,IAAI,CAACzxF,UAAU,iBAAiB4X,IAEnC,gBAAC65E,EAAA,EAAS,KACR,gBAAC,IAAI,CAACzxF,UAAW,IAAWwC,EAAOhE,MAAO,iBAAkB2qF,QAO1E,C,yCErCO,MAAMuI,IAAe,OAAW,CACrCrxC,UAAW,CACTtmD,OAAQ,QACRd,MAAO,OACP,wBAAyB,OAAF,wBAClB,KAAWmC,QAAQ,SAAO,CAC7B4B,UAAW,qEACXjB,gBAAiB,4BACjB,0CAA2C,CACzC41F,eAAgB,aAChB51F,gBAAiB,6BAGnB,gBAAiB,OAAF,QACbjC,WAAY,UACT,KAAWjB,OAAO,WAEvB,sBAAuB,CACrBE,QAAS,OACTc,WAAY,UAEd,mCAAoC,CAClCN,YAAa,OAEf,oCAAqC,CACnCH,WAAY,QAEd,iBAAkB,OAAF,gEACdH,MAAO,OACPc,OAAQ,QACL,KAAWgJ,YAAY,UACvB,KAAWC,YAAY,QACvB,KAAWvG,YAAY,YACvB,KAAWT,aAAa,QAAM,CACjCzC,YAAa,MACbR,QAAS,OACTc,WAAY,SACZ4rB,eAAgB,WAElB,sBAAuB,OAAF,gEACnBxsB,MAAO,MACPc,OAAQ,OACL,KAAWgJ,YAAY,UACvB,KAAWC,YAAY,QACvB,KAAWvG,YAAY,YACvB,KAAWT,aAAa,QAAM,CACjCD,gBAAiB,iBCvCzB,MAAM61F,WAA0B,GAAAC,eAG9B,WAAAC,CAAYC,GAKVC,MAJiB,CACfC,SAAUF,EAAY5uB,SACtB+uB,aAAcH,EAAYn6E,MAEZ,GAAAu6E,eAAeC,IAAKL,EAAYvG,OAAQ,MACxD/sF,KAAKszF,YAAcA,CACrB,EAGK,SAASM,IAAgB,UAC9B1tC,EAAS,UACTme,IAEA,MAAMtgE,EAASkvF,KACTY,GAAS,IAAAlkE,UAET4oC,GAAkB,IAAAjvD,UAAQ,IAC1B+6D,EACKA,EAAUn0D,KAAI4jF,GAAK,IAAIX,GAAkBW,KAE3C,IACN,CAACzvB,IAEE0vB,GAA0B,IAAApkF,cAAY,CAAC22E,EAAO0N,IAAmB,KAAQ,CAC7E76E,KAAM66E,EAAeV,YAAYn6E,KACjCwxE,WAAY,GAAGqJ,EAAeV,YAAY3I,cAC1CD,eAAgBsJ,EAAeV,YAAY5I,eAC3CD,KAAMuJ,EAAeV,YAAY7I,QAC/B,IAEJ,OAAIvkC,EACK,gBAACosC,GAAU,MAIlB,uBAAK/wF,UAAWwC,EAAO69C,WACrB,gBAAC,GAAAqyC,aAAY,CACX5yF,GAAG,oBACHC,IAAKuyF,EACLtyF,UAAU,oBACVg3D,gBAAiBA,EACjBw7B,wBAAyBA,IAIjC,CCpDO,MAAMG,GAAuB7vB,IAClC,MAAO56B,EAAOqwC,IAAY,IAAAxqD,UAAS,CAAErvB,QAAS,EAAG8gF,MAAO,IAWxD,OATA,IAAAljD,YAAU,KACH,YAAUwmC,IACbyV,EAAS,CACP75E,QAAS,EACT8gF,MAAOl2C,KAAKspD,KAAK9vB,EAAU7jE,OAAS+qF,I,GAGvC,CAAClnB,KAEG,IAAA/6D,UAAQ,KACb,MAAMg1C,EAAO7U,EAAMxpC,QAAU,EAC7B,IAAIsxF,EAAqB,SACrBjzC,GAAQ7U,EAAMs3C,QAChBwQ,EAAS,IAAMzX,EAAS,OAAD,wBAAMrwC,GAAK,CAAExpC,QAASq+C,MAG/C,MAAM4iC,EAAWz3C,EAAMxpC,QAAU,EACjC,IAAIuxF,EAAyB,SAK7B,OAJItQ,EAAW,IACbsQ,EAAa,IAAM1X,EAAS,OAAD,wBAAMrwC,GAAK,CAAExpC,QAASihF,MAG5C,CACLjhF,QAASwpC,EAAMxpC,QACf8gF,MAAOt3C,EAAMs3C,MACbwQ,SACAC,aACA,GACD,CAAC/nD,GAAO,E,iBC/Bb,MAAM2qD,GAAS,wB,sDCJR,MAAMC,IAAgB,OAAW,CACtCzyC,UAAW,CACTtnD,QAAS,OACTkqB,cAAe,SACfwC,eAAgB,gBAChB1rB,OAAQ,QAEVg5F,cAAe,CACbh6F,QAAS,QAEXi6F,mBAAoB,CAClB/5F,MAAO,OAET02F,OAAQ,CACN52F,QAAS,OACT0sB,eAAgB,mBCCb,SAASwtE,IAAyB,YACvCC,EAAW,KACX9wF,EAAI,UACJ6pF,EAAS,OACTxC,EAAM,eACNuF,EAAc,gBACdmE,EAAe,aACfpD,IAEA,MAAMvtF,EAASswF,MACT,cACJ7F,EAAa,WACbC,EAAU,KACVkG,GACED,GACE,UAAExuC,EAAS,UAAEme,GAAckqB,EAAoB,CACnDvD,SACAwC,YACA7pF,OACA6qF,gBACAC,eAEI4C,EAAmB6C,GAAoB7vB,GACvCuwB,GAAwB,OAATvwB,QAAS,IAATA,OAAS,EAATA,EAAW7jE,QAAS,GAEzC,IAAAq9B,YAAU,KACHqoB,GACHyuC,G,GAED,CAACA,EAAMzuC,EAAWuoC,IAErB,MAAMoG,GAAc,IAAAvrF,UAAQ,IACrBsrF,GAAiB1uC,GAGP,OAAXuuC,QAAW,IAAXA,OAAW,EAAXA,EAAaK,YAEb,uBAAKvzF,UAAWwC,EAAOuwF,eACrB,uBAAK/yF,UAAWwC,EAAOwwF,oBACrB,gBAACX,GAAe,CAAC1tC,UAAWA,EAAWme,UAAWA,KAEpD,uBAAK9iE,UAAWwC,EAAOwwF,oBACrB,gBAAC/B,GAAiB,CAACtsC,UAAWA,EAAWviD,KAAMA,EAAM0gE,UAAWA,EAAWgtB,iBAAkBA,OAMtF,OAAXoD,QAAW,IAAXA,OAAW,EAAXA,EAAaM,cAAe5J,EAAME,IAC7B,gBAACuI,GAAe,CAAC1tC,UAAWA,EAAWme,UAAWA,IAEpD,gBAACmuB,GAAiB,CAACtsC,UAAWA,EAAWviD,KAAMA,EAAM0gE,UAAWA,EAAWgtB,iBAAkBA,IAlB3F,gBAACO,EAAM,CAACjuF,KAAMA,KAmBtB,CAACixF,EAAc1uC,EAAWuuC,EAAa9wF,EAAM0gE,EAAWgtB,EAAkBttF,IAGvEqtF,EAAiBwD,IAAiB1uC,KAAyB,OAAXuuC,QAAW,IAAXA,OAAW,EAAXA,EAAaK,cAAyB,OAAXL,QAAW,IAAXA,OAAW,EAAXA,EAAaM,cAAe5J,EAAMG,OAEnH,OACE,uBAAK/pF,UAAW,IAAW,wBAAyBwC,EAAO69C,YACzD,gBAAC0uC,EAAc,CAACtF,OAAQA,EAAQuF,eAAgBA,EAAgB5sF,KAAMA,IACrEkxF,EACD,gBAAC1D,EAAM,CACLC,eAAgBA,EAChBC,iBAAkBA,EAClB1tF,KAAMA,EACN2tF,aAAcA,IAItB,CAEO,MAAM0D,IF5EwDxyE,GGH9D,SAA6BA,GAClC,MAAMM,EAAOxjB,IACX,MAAM8rD,GAAgB,IAAAxnD,YAAW,OAEjC,OACE,gBAAC,GAAAqxF,wBAAuB,CACtBC,uBAAwB,GAAG9pC,EAAc+pC,kBAAkBC,cAAchqC,EAAciqC,kBACvFC,iBAAkBlqC,EAAcmqC,MAChCC,eAVkB,oEAYlB,gBAAChzE,EAAgB,iBAAKljB,IAEzB,EAOH,OAJAwjB,EAAIK,YAAc,wBAAuB,KAAAsyE,gBAAejzE,MAExD,KAAqBM,EAAKN,GAEnBM,CACT,CD2D0D4yE,EAAoB,QAAgBlB,KF3E/El1F,I,YACX,MAAM,qBACJq2F,EAAoB,gBACpBC,GACEt2F,EACEu2F,GAAoB,IAAAjyF,YAAW,GAAAkyF,mBAC/BC,EAAcF,EAAkB1xB,WAAW,yBAC3C6xB,GAAwE,QAAtD,EAAiB,QAAjB,EAAW,OAAXD,QAAW,IAAXA,OAAW,EAAXA,EAAa3xB,YAAI,eAAG,0CAAkC,eAAE6xB,QAAS,GACnFC,EAA8B,SAAOF,GAAkBG,GAAcA,EAAK90F,KAAO+yF,KACjFgC,EAAoD,QAAvC,EAA+B,QAA/B,EAAsB,OAAtBF,QAAsB,IAAtBA,OAAsB,EAAtBA,EAAwBxzE,eAAO,eAAEsoE,cAAM,QAAI,UACvDA,EAAQqL,IAAa,IAAA/mE,UAASqmE,GAAwBS,GAEvD7F,GAAiB,IAAA5gF,cAAa2mF,IAGlC,GAFAD,EAAUC,GAENV,EAEF,YADAA,EAAgB,CAAE5K,OAAQsL,IAI5B,IAAIL,EAIFA,EAHG,SAAOD,GAAkBG,GAAcA,EAAK90F,KAAO+yF,KAG9C4B,EAAgB9lF,KAAKimF,GACvBA,EAAK90F,KAAO+yF,GACP,OAAP,wBACK+B,GAAI,CACPzzE,QAAS,OAAF,wBACFyzE,EAAKzzE,SAAO,CACfsoE,OAAQsL,MAIPH,IAZD,IAAIH,EAAiB,CAAE30F,GAAI+yF,GAAQ1xE,QAAS,CAAEsoE,OAAQsL,KAehE,MAAMC,GAA6B,OAAXR,QAAW,IAAXA,OAAW,EAAXA,EAAa3xB,OAAQ,CAAC,EAC9CyxB,EAAkBjoB,IAAI,OAAD,sBACnBtW,KAAM,yBACHy+B,GAAW,CACd3xB,KAAM,OAAF,wBACCmyB,GAAe,CAClB,kCAAmC,OAAF,wBAC5BA,EAAgB,oCAAkC,CACrDN,cAGJ,GACD,CAACD,EAAiBJ,EAAiBC,EAAmBE,IAEzD,OAAQ,gBAACvzE,GAAgB,iBACnBljB,EAAY,CAChB0rF,OAAQA,EACRuF,eAAgBA,IACf,GAxDA,IAA8D/tE,G,aIX9D,MAAMg0E,IAAwB,OAAW,CAC9C50C,UAAW,OAAF,QACPlnD,SAAU,QACVJ,QAAS,OACT8qB,SAAU,IACV4B,eAAgB,YACb,KAAWF,IAAI,QAEpBspE,OAAQ,OAAF,QACJ51F,MAAO,cACPD,SAAU,QACP,KAAWoC,QAAQ,QAExB2tE,WAAY,OAAF,wBACL,KAAWpkE,SAAS,WAAS,CAChCmqF,UAAW,WACX5mE,aAAc,WACdpuB,WAAY,aCHVo7F,GAAkB,IAEjB,SAASC,IAAwB,KACtC/yF,EAAI,MACJ8lC,EAAK,SACLqwC,EAAQ,WACR6c,I,MAEA,MAAM5yF,EAASyyF,MAEf,IAAA34D,YAAU,KACH4L,GACHqwC,EAAS,CACPib,WAAY5J,EAAME,K,GAGrB,CAAC5hD,EAAOqwC,KAEX,IAAAj8C,YAAU,KACR,MAAMi3D,GAAuB,OAAV6B,QAAU,IAAVA,OAAU,EAAVA,EAAYn8F,OAAQi8F,IAC9B,OAALhtD,QAAK,IAALA,OAAK,EAALA,EAAOqrD,cAAeA,GACxBhb,GAAS/M,GAAM,OAAD,wBACTA,GAAC,CACJ+nB,gB,GAGH,CAAChb,EAAUrwC,EAAOktD,IAErB,MAAMC,GAAiB,IAAAjnF,cAAaolF,IAClCjb,GAAS/M,GAAM,OAAD,wBACTA,GAAC,CACJgoB,gBACC,GACF,CAACjb,IAEJ,OAAKrwC,IAAc,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOqrD,YACZ,iCAIP,uBAAKvzF,UAAW,IAAW,iCAAkCwC,EAAO69C,YAClE,gBAAC4uC,EAAA,EAAI,KACH,gBAACC,EAAA,EAAW,CAACC,0BAAwB,GACnC,gBAACG,EAAA,EAAU,CAACtvF,UAAW,IAAW,cAAewC,EAAOqsF,QAASjzF,WAAW,eAC1E,gBAAC,KAAI,CAACoE,UAAW,IAAW,yBAA0BwC,EAAOumE,aAAc3mE,EAAKQ,UAAU,S,IAAiBR,EAAKQ,UAAwC,QAA9B,EAAAinF,EAAa3hD,EAAMsrD,mBAAW,QAAI,OAGhK,gBAACjE,EAAA,EAAW,CAACvvF,UAAU,gBACrB,gBAACwvF,EAAA,EAAQ,KACP,gBAACC,EAAA,EAAQ,CAACzvF,UAAU,kBAAkBkC,QAAS,IAAMmzF,EAAezL,EAAME,MAAO1nF,EAAKQ,UAAUinF,EAAaD,EAAME,OACnH,gBAAC2F,EAAA,EAAQ,CAACzvF,UAAU,oBAAoBkC,QAAS,IAAMmzF,EAAezL,EAAMG,QAAS3nF,EAAKQ,UAAUinF,EAAaD,EAAMG,YAMnI,CAEAoL,GAAwB90F,aAAe,CACrC6nC,WAAOp+B,E","sources":["../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/bulk-edit-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/upgraded-url-override-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/automated-rules-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/bulk-edit-override-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/inline-download-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/paste-style.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/panel-styles.js","../../../node_modules/@bingads-webui-campaign-react/top-grid-panel/src/panel.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/text.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/custom-component/custom-component.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/custom-component/with-custom-rendering.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/action-button.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/header.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/panel/panel.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/message-bar.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-label.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-data.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/property-row/property-row.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/horizontal-divider.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/components/data.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/component-types.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/generate-components.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/generated-ui.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/schemas/default-text-property.js","../../../node_modules/@bingads-webui-campaign-react/ui-generator/src/schemas/default-data-property.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/carousel-layout-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/with-cmui-theme.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/media-placement-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/use-ad-preview-model-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/get-smart-cropped-image.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/src/use-image-experience-ad-preview-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-cmui/index.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/with-themed-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-v2-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/bing-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/outlook-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/linkedin-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/boost-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/disclaimer-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/responsive-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-in-msan-v2-refreshed-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/outlook-ad-refreshed-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/mma-placement-card.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/placement-card-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-content-container.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/ad-label.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/ad-label-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-ads.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/business-name-with-ads-label-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-gradient.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/placement-gradient-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/with-link.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-text.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-action.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/placement-image.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/disclaimer.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-logo.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/business-name-with-choice-icon.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/circle-right-arrow.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/shared-components/large-ad-choice-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/three-dot.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/outlookUnreadIcon.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/shared-components/description-with-action.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/mma-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-in-msan-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-ad-placements-v2/mma-ad-placement-base-v2.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/mma-in-msan-v2-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/single-image-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/image-extension-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/bing-desktop-multi-image-133x100.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/image-extension-ad-placements/bing-mobile-multi-image-133x100.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/media/bing-desktop-header.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/bing-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/outlook-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/linkedin-ad-placements/li-single-image-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/linkedin-ad-placements/li-single-image-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-base-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/app-ads-ad-placement-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-msn-display-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-outlook-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-outlook-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-m365-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-search-ad-placements/responsive-search-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-bing-search-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-casual-games-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/app-ads-ad-placements/app-ads-video-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-placement-card.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-placement-card-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-ad-placement-base.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-mma-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-mma-in-msan-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-mma-in-msan-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-bing-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/responsive-components/responsive-bing-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-windows-spotlight-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-ad-placements/responsive-boost-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-text-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/boost-ad-placements/boost-discover-card-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/responsive-search-ad-placements/responsive-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/dynamic-search-ad-placements/dynamic-search-ad-placements.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/dynamic-search-ad-placements-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-components/video-placement.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-placement-components/video-placement-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-placement-containers/index.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-preview-container-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/image-video-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/placement-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/@types/ad-extension-type-enum.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/placement-meta-list.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/merge-reducer-state-util.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/use-ad-preview-reducer.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/get-central-crop-settings.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/use-ad-preview-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/load-image-by-url.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/model-constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-preview-model/get-crop-settings-from-roi.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/get-ad-placement-component.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/grid-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/grid-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/single-placement-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/single-placement-layout-style.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/custom-carousel-component.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/layout-components/carousel-layout.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/layout-components/carousel-layout-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/structured-snippet-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/styles/ad-extension-components/ad-extension-component-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/callout-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/price-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/promotion-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-core/src/ad-extension-components/sitelink-extension.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-util/src/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-ad-preview-library-util/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/use-assets-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/asset-group-name-section.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/assets-section.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/components/assets-step-form.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/assets-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/default-data.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/use-assets-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/model/create-default-campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-assets/src/assets-step-shell-settings.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/use-targeting-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/targeting-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-form.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/campaign-details-edit-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/use-budget-step-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/budget-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-budget/src/use-budget-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/use-summary-schema-data.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/summary-step-shell.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/schema.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-summary/src/use-summary-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/steps/step-constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/steps/step-config.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-targeting/src/use-targeting-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-details/src/use-campaign-details-edit-step-repository.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/footer.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/edit-footer.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/components/step-list.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/use-store-type.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-campaign-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-edit-campaign-settings-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-campaign-wizard/src/wizard/unified-app-edit-asset-group-settings-wizard.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/system-errors.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/entity-validation-groups.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/preview-controls.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/preview-styles.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/components/windows-app-ads-preview.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/campaign-bulk.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/campaign/save-campaign.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/asset-group/save-asset-group.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/model/budget/use-budget-model.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/use-responsive-style-wrapper.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/constants.js","../../../node_modules/@bingads-webui-campaign-react/unified-app-shared/src/utils/assets-panels.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/parse-file.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/read-file.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/constants.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/image-file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/file-picker-view/video-file-picker.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/styles/upload-assets-preview-style.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/upload-assets-preview.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/upload-progress-control.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/upload-progress-view/progress-helpers.js","../../../node_modules/@bingads-webui-campaign-react/upload-file-picker/src/utils/validate-file.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/build-url.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/parse-url.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/url-editor.js","../../../node_modules/@bingads-webui-campaign-react/url-editor/src/url-editor-for-array.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/validation.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/styles.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/url-path-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/url-input-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent-v2/src/with-no-protocol.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/validation.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/url-path-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/utils.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/url-input-fluent.js","../../../node_modules/@bingads-webui-campaign-react/url-input-fluent/src/with-no-protocol.js","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/map-tooltip.pug","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/filter-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/const.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/format-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/use-top-locations-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/fetch-location-data.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/is-us-or-canada.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/metric-selector-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/metric-selector.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/footer-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/footer.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/no-locations-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/no-data.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/shimmer.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/table-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-table.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/utils/get-page-locations.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/map-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-map.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/use-pagination-config.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/with-preferences-metric.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/card-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/top-locations-card.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/with-bing-maps-context.tsx","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/styles/view-selector-styles.ts","../../../node_modules/@bingads-webui-campaign-react/top-locations-card/src/components/view-selector.tsx"],"sourcesContent":["import { underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const bulkEditStyle = ({ palette = {} }) => ({\r\n '& .previewTable': {\r\n overflowY: 'scroll',\r\n margin: '5px 0 !important',\r\n maxHeight: 250,\r\n display: 'inline-block',\r\n minWidth: 500,\r\n width: 'auto !important',\r\n },\r\n '& .previewTable > table': {\r\n width: '100%',\r\n border: '1px solid #CCCCCC',\r\n },\r\n '& .bulk-edit-progress-bar': {\r\n maxWidth: 750,\r\n width: '50%',\r\n },\r\n '& .form-group .bulk-edit-currency': {\r\n fontWeight: 'normal',\r\n },\r\n '& .form-inline .bulkEdit-bid': {\r\n textAlign: 'right',\r\n width: '5em',\r\n },\r\n '& .bulkEdit-units': {\r\n marginLeft: 4,\r\n },\r\n '& .bulkEdit-limit-label': {\r\n marginRight: 16,\r\n paddingLeft: 40,\r\n },\r\n '& .bulkeditlink': {\r\n marginBottom: 5,\r\n ...underlineLinkStyle({ palette }),\r\n },\r\n '& .bulkeditdate': {\r\n marginBottom: 5,\r\n },\r\n '& .bulkedit-info-text': {\r\n marginBottom: 10,\r\n },\r\n});\r\n","export const upgradedUrlOverrideStyle = {\r\n '& .custom-params-template .custom-param-entry': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .custom-params-template .custom-param-entry td': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container': {\r\n display: 'flex',\r\n alignItems: 'baseline',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container .control-label': {\r\n whiteSpace: 'pre',\r\n },\r\n '& .custom-params-template .flex-row-fixed.custom-param__key-container input.form-control.custom-param__key-field': {\r\n margin: '0px 5px',\r\n },\r\n '& .custom-params-template .flex-row-dynamic input.form-control.custom-param__value-field': {\r\n marginLeft: '5px',\r\n },\r\n '& .custom-params-template .closeimage.custom-param__close-button': {\r\n height: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '&:before': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n '& .custom-param__close-button': {\r\n marginLeft: 10,\r\n cursor: 'pointer',\r\n },\r\n};\r\n","export const getAutomatedRulesStyles = ({ palette, semanticColors }) => ({\r\n '& .automated-rules-vnext': {\r\n '& .different-user-warning.col-sm-10': {\r\n paddingLeft: 0,\r\n },\r\n '& .add-filter-button': {\r\n marginLeft: 0,\r\n },\r\n '& .predicate-list': {\r\n paddingLeft: 0,\r\n },\r\n '& .predicate-pill': {\r\n '&:hover': {\r\n background: `${palette.neutralPrimaryAlt} !important`,\r\n },\r\n },\r\n '& .predicate-pill-selected': {\r\n background: `${palette.themePrimary} !important`,\r\n\r\n '& .predicate-pill': {\r\n '&:hover': {\r\n background: `${palette.themeDark} !important`,\r\n },\r\n },\r\n '& .remove': {\r\n '&:hover': {\r\n background: `${palette.themeDark} !important`,\r\n },\r\n },\r\n },\r\n '& .predicate-pill-container': {\r\n background: palette.neutralSecondary,\r\n },\r\n '& .invalid-predicate-pill-container': {\r\n background: palette.red,\r\n },\r\n '& .icon-right.spritedimage.grid-expand-icon.pull-right': {\r\n border: '0 solid transparent',\r\n color: '#605e5c',\r\n display: 'inline-block',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n fontSize: '12px',\r\n fontWeight: 400,\r\n height: 'auto',\r\n margin: '0 4px',\r\n position: 'relative',\r\n float: 'right',\r\n width: 'auto',\r\n '&::before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n },\r\n '& .radio-inline + .radio-inline': {\r\n marginLeft: 16,\r\n },\r\n '& .error': {\r\n color: palette.red,\r\n },\r\n '& #AutomationRulesBidErrorMessage': {\r\n display: 'inline-block',\r\n marginLeft: '30px',\r\n },\r\n '& [data-bind*=\"isIncreaseBudgetHelp\"]': {\r\n display: 'inline-block',\r\n },\r\n '& input.search-box__input': {\r\n marginRight: '0px',\r\n },\r\n '& .search-box__icon.glyphicon.filter_search_icon_small:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .search-box__icon.glyphicon.filter_search_icon_small': {\r\n position: 'absolute',\r\n top: '10px',\r\n right: '10px',\r\n color: '#0078d4',\r\n fontSize: '14px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .rule-preview-body': {\r\n '& .previewTable.grid': {\r\n paddingLeft: '0 !important',\r\n '& .grid-row': {\r\n height: 42,\r\n },\r\n },\r\n '& .grid-header-text': {\r\n lineHeight: '\\'19px\\'',\r\n color: palette.neutralPrimary,\r\n fontWeight: 'normal',\r\n },\r\n '& .grid-header-row': {\r\n height: 42,\r\n },\r\n '& tbody .grid-cell': {\r\n lineHeight: '\\'19px\\'',\r\n color: palette.themePrimary,\r\n },\r\n '& tbody .grid-cell + .grid-cell': {\r\n lineHeight: '\\'16px\\'',\r\n color: '#797775',\r\n },\r\n },\r\n '& .control-label': {\r\n textAlign: 'left !important',\r\n width: '100%',\r\n padding: '12px 0 13px 0',\r\n marginBottom: '16px',\r\n display: 'flex',\r\n fontWeight: 600,\r\n lineHeight: '19px',\r\n fontSize: '18px',\r\n '& label': {\r\n padding: 0,\r\n },\r\n '& span.action-text': {\r\n fontSize: '14px',\r\n fontWeight: 'normal',\r\n },\r\n },\r\n '& .panel-body': {\r\n width: '100%',\r\n '& > div:not([style=\"display: none;\"])': {\r\n marginTop: '16px',\r\n },\r\n '& > div.margin-zero': {\r\n marginTop: 0,\r\n },\r\n '& .form-group:last-child': {\r\n marginBottom: 0,\r\n },\r\n '& .form-group .formgroupline': {\r\n width: '787px !important',\r\n height: '1px',\r\n color: palette.neutralLight,\r\n borderTop: '1px solid',\r\n },\r\n },\r\n '& .rule-scope-options-selection': {\r\n paddingLeft: 0,\r\n },\r\n '& .rule-options-selection': {\r\n padding: '0',\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n '& .form-text': {\r\n marginRight: 8,\r\n },\r\n '& .radio-inline': {\r\n paddingTop: '0',\r\n width: 94,\r\n display: 'inline-block',\r\n },\r\n '& input[type=\"radio\"]:checked': {\r\n W: 'none',\r\n M: 'none',\r\n appearance: 'none',\r\n display: 'inline-block',\r\n height: 18,\r\n width: 18,\r\n padding: 4,\r\n backgroundClip: 'content-box',\r\n border: `1px solid ${palette.themeDarkAlt}`,\r\n backgroundColor: palette.themeDarkAlt,\r\n borderRadius: '50%',\r\n },\r\n '& input[type=\"radio\"]': {\r\n W: 'none',\r\n M: 'none',\r\n appearance: 'none',\r\n display: 'inline-block',\r\n height: 18,\r\n width: 18,\r\n backgroundClip: 'content-box',\r\n border: `1px solid ${palette.neutralPrimary}`,\r\n backgroundColor: semanticColors.bodyBackground,\r\n borderRadius: '50%',\r\n },\r\n '& .radio-inline span': {\r\n marginLeft: 8,\r\n },\r\n '& .changeBudgetHelp': {\r\n display: 'contents',\r\n '& label': {\r\n display: 'contents',\r\n },\r\n },\r\n '& .k-datePicker-container': {\r\n padding: 0,\r\n '& .k-input': {\r\n border: 'none',\r\n height: 30,\r\n padding: '0px 0px 0px 8px',\r\n },\r\n },\r\n },\r\n '& select, & input': {\r\n marginRight: 8,\r\n },\r\n '& .bulk-edit-currency': {\r\n display: 'inline-block',\r\n },\r\n '& .bulkEdit-bid': {\r\n width: 106,\r\n },\r\n '& .predicate-row': {\r\n marginLeft: '0',\r\n paddingLeft: '0',\r\n },\r\n '& .rule-filter-selection': {\r\n marginLeft: '0',\r\n padding: '0',\r\n width: '100% !important',\r\n '& .glyphicon.glyphicon-remove': {\r\n marginTop: 6,\r\n color: palette.neutralSecondary,\r\n lineHeight: '12px',\r\n fontSize: 12,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n verticalAlign: 'middle',\r\n },\r\n '& .glyphicon-remove:before': {\r\n content: '\"\\\\E711\" !important',\r\n },\r\n '& .new': {\r\n color: palette.neutralPrimary,\r\n },\r\n '& .glyphicon.glyphicon-plus': {\r\n marginRight: 8,\r\n height: 14,\r\n width: 14,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n color: palette.themePrimary,\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\" !important',\r\n },\r\n '& .delivery-status-category-container:first-of-type': {\r\n float: 'left',\r\n marginLeft: '20px',\r\n display: 'inline-block',\r\n marginTop: 0,\r\n },\r\n\r\n '& .delivery-status-category-container + .delivery-status-category-container': {\r\n paddingLeft: 20,\r\n float: 'left',\r\n },\r\n '& .predicate-row': {\r\n alignItems: 'end',\r\n },\r\n },\r\n '& .frequency-selection': {\r\n display: 'inline-block',\r\n '& div[role=\"radiogroup\"]': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& #ImprovedAdScheduling_Display_Time_Label': {\r\n width: 'auto',\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { adColumnPreviewStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getBulkEditOverrideStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .campaigns-date-picker .radioInput .date': {\r\n marginRight: '5px',\r\n },\r\n '& select.form-control.custom-param__select': {\r\n marginBottom: '5px',\r\n },\r\n '& .bulkEdit-limit-label.checkbox-inline': {\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n },\r\n '& .control-label': {\r\n verticalAlign: 'middle',\r\n display: 'inline-block',\r\n\r\n '&.bulk-edit-currency': {\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n },\r\n '&#currencyLabel1': {\r\n paddingTop: '0px',\r\n },\r\n },\r\n '& span.control-label.not(#bulkedit-budget-label)': {\r\n paddingTop: '0px',\r\n },\r\n '& .infomark.spritedimage': {\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n verticalAlign: 'middle',\r\n marginRight: '5px',\r\n\r\n '&:before': {\r\n fontFamily: iconFontFamily,\r\n content: '\"\\\\F167\"',\r\n },\r\n },\r\n '& .form-horizontal .form-group': {\r\n marginLeft: '0px',\r\n marginRight: '0px',\r\n },\r\n '& .previewTable': {\r\n padding: '15px',\r\n overflowY: 'auto',\r\n },\r\n '& .previewTable > table': {\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n },\r\n '& .previewTable > table td, & .previewTable > table th': {\r\n border: '1px solid',\r\n borderColor: palette.neutralLighter,\r\n borderLeft: 'none',\r\n height: '44px',\r\n padding: '0px 8px',\r\n },\r\n '& .previewTable > table tr td:last-child, & .previewTable > table tr th:last-child': {\r\n borderRight: 'none',\r\n },\r\n '& .previewTable > table tr td': {\r\n color: ' #797775',\r\n fontSize: '12px',\r\n },\r\n '& .previewTable > table tr th a': {\r\n color: palette.neutralPrimary,\r\n fontWeight: 'normal',\r\n cursor: 'unset',\r\n },\r\n '& label > input[type=\"radio\"]': {\r\n marginRight: '5px',\r\n position: 'relative',\r\n },\r\n '& .campaigns-date-picker input[type=\"radio\"]': {\r\n position: 'relative',\r\n },\r\n '& .campaigns-date-picker .radioInput label': {\r\n display: 'inline-block',\r\n },\r\n '& .campaigns-date-picker .radioInput': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .nodate, & .date': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n },\r\n '& .form-inline .form-control, & .form-inline .form-text': {\r\n marginRight: '10px',\r\n },\r\n '& .font-error': {\r\n color: palette.redDark,\r\n },\r\n '& .error': {\r\n color: palette.redDark,\r\n },\r\n '& input.btn, & button.btn': {\r\n marginRight: '8px',\r\n },\r\n // bulk edit bid strategy type\r\n '& .bid-strategy-container label': {\r\n display: 'inline-block',\r\n },\r\n '& [data-bind=\"visible: checkCPC\"] > .row': {\r\n marginLeft: '0px',\r\n },\r\n '& [data-bind=\"visible: showCPC\"]': {\r\n '& > label, & > a[type=\"helppopup\"]': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .builkEdit-bid.custom-param__key-field, & .target-impression-share-percent-field.custom-param__key-field': {\r\n display: 'inline-block',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n width: 85,\r\n },\r\n '& .grid-content-container': {\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n color: palette.neutralPrimary,\r\n // Bulk change ads.\r\n ...adColumnPreviewStyle(),\r\n },\r\n '& .grid-content-container .previewAd': {\r\n border: '1px solid #ccc',\r\n padding: 5,\r\n margin: [5, 0, 5, 0],\r\n },\r\n '& .grid-content-container .previewAd .previewTitleAd + div + div, & .grid-content-container .previewAd .moreHint + div + span': {\r\n color: '#767676',\r\n },\r\n '& .panel > .panel-body > .form-group': {\r\n '& > .rsa-headlines, & > .rsa-descriptions, & > .mma-headlines, & > .mma-descriptions': {\r\n width: '100%',\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n '& .glyphicon-pushpin, & .glyphicon-plus': {\r\n color: palette.themePrimary,\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .glyphicon-pushpin:before': {\r\n content: '\"\\\\E840\"',\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\"',\r\n marginRight: 8,\r\n },\r\n '& .form-group': {\r\n margin: 0,\r\n },\r\n '& .control-label': {\r\n width: '16.66666667%',\r\n '& > label': {\r\n display: 'inline-block',\r\n },\r\n '& > helpbutton': {\r\n display: 'inline-block',\r\n },\r\n },\r\n '& .ad-rsa-filed-group': {\r\n width: '41.666666667%',\r\n '& > .form-control.text': {\r\n width: '90%',\r\n display: 'inline-block',\r\n },\r\n '& > .ad-rsa-pin-group': {\r\n display: 'inline-flex',\r\n width: '10%',\r\n '& > .ad-field-position': {\r\n display: 'inline',\r\n paddingLeft: 12,\r\n '& > .glyphicon-pushpin': {\r\n display: 'inline',\r\n },\r\n '& > .ad-pinned': {\r\n display: 'inline',\r\n paddingLeft: 8,\r\n color: palette.neutralPrimary,\r\n wordBreak: 'keep-all',\r\n },\r\n },\r\n },\r\n '& > .clearfix': {\r\n marginRight: '10%',\r\n textAlign: 'right',\r\n marginBottom: 11,\r\n },\r\n },\r\n '& .ad-rsa-add-headline, & .ad-rsa-add-description': {\r\n marginLeft: '16.66666667%',\r\n paddingLeft: 15,\r\n color: palette.neutralPrimary,\r\n },\r\n '& .ad-rsa-add-headline.disabled, & .ad-rsa-add-description.disabled': {\r\n color: palette.neutralTertiary,\r\n paddingLeft: 15,\r\n cursor: 'default',\r\n '& .glyphicon-plus': {\r\n color: palette.neutralTertiary,\r\n },\r\n },\r\n },\r\n },\r\n // Bulk appeal.\r\n '& .bulk-appeal .editor .form-horizontal': {\r\n margin: 0,\r\n maxWidth: 784,\r\n border: 0,\r\n boxShadow: 'none',\r\n '& .form-group': {\r\n margin: '0px 0px 18px 0px',\r\n '& .root': {\r\n margin: 0,\r\n padding: 0,\r\n '& > label': {\r\n padding: 0,\r\n },\r\n '& .title': {\r\n fontWeight: 'normal',\r\n },\r\n '& .details': {\r\n margin: '27px 0px 0px 0px',\r\n padding: 0,\r\n '& .col-sm-4': {\r\n padding: '0px 0px 0px 1px',\r\n width: '50%',\r\n '& .appeal-column-title': {\r\n fontSize: 18,\r\n lineHeight: '24px',\r\n fontWeight: 'normal',\r\n },\r\n '& .reasons > ul': {\r\n margin: '1px 0px 0px 0px',\r\n '& > li': {\r\n marginTop: '10px',\r\n },\r\n },\r\n },\r\n '& .col-sm-8': {\r\n width: '50%',\r\n paddingLeft: 14,\r\n paddingRight: 0,\r\n '& .appeal-column-title': {\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n fontWeight: 600,\r\n },\r\n '& .appeal-textarea': {\r\n marginTop: 7,\r\n padding: 8,\r\n fontSize: 14,\r\n lineHeight: '19px',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: '2px',\r\n background: '#FFFFFF',\r\n width: '100%',\r\n },\r\n '& .remaining-hint': {\r\n textAlign: 'right',\r\n marginTop: 3,\r\n marginBottom: 3,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n },\r\n },\r\n },\r\n '& .non-appeal-msg-panel': {\r\n margin: '11px 0px 0px 1px',\r\n },\r\n },\r\n },\r\n },\r\n '& .rsa-auto-assets-setting-container': {\r\n '& .checkbox-inline': {\r\n width: '100%',\r\n '& input': {\r\n float: 'left',\r\n bottom: '0',\r\n },\r\n },\r\n '& .HelpTopic': {\r\n marginLeft: 5,\r\n },\r\n },\r\n '& #status-label': {\r\n color: '#0A610A',\r\n backgroundColor: '#DFF6DD',\r\n fontWeight: 600,\r\n fontSize: 12,\r\n border: 4,\r\n paddingInline: 5,\r\n paddingTop: 2,\r\n paddingBottom: 2,\r\n paddingLeft: 2,\r\n paddingRight: 2,\r\n verticalAlign: 'middle',\r\n borderRadius: 4,\r\n marginLeft: 8,\r\n },\r\n});\r\n","import { getInlineDownloadStyle as sharedStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nexport const getInlineDownloadStyle = sharedStyle;\r\n","export const pasteStyle = {\r\n '& .copy-paste-container': {\r\n '& .form-group': {\r\n padding: 0,\r\n margin: 0,\r\n '& ul': {\r\n marginBottom: 0,\r\n '& .checkbox': {\r\n paddingTop: 0,\r\n '& label': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n '& .copyPaste-radio-topBottomPadding': {\r\n margin: {\r\n top: 3,\r\n bottom: 3,\r\n },\r\n },\r\n '& .date-picker-within-radio': {\r\n margin: {\r\n top: -6,\r\n bottom: -4,\r\n left: -15,\r\n },\r\n },\r\n '& .copyPaste-radio-label': {\r\n margin: {\r\n top: 4,\r\n right: -9,\r\n },\r\n },\r\n '& .col-sm-1': {\r\n width: 100,\r\n },\r\n '& .col-sm-2': {\r\n width: 140,\r\n },\r\n },\r\n },\r\n};\r\n","import { datePickerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nimport { bulkEditStyle } from './bulk-edit-style';\r\nimport { upgradedUrlOverrideStyle } from './upgraded-url-override-style';\r\nimport { getAutomatedRulesStyles } from './automated-rules-style';\r\nimport { getBulkEditOverrideStyle } from './bulk-edit-override-style';\r\nimport { getInlineDownloadStyle } from './inline-download-style';\r\nimport { pasteStyle } from './paste-style';\r\n\r\nconst {\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle,\r\n filterEditorStyle,\r\n getFilterEditorOverrideStyle,\r\n getTopGridPanelCommonStyle,\r\n} = ComponentSettings;\r\n\r\nexport const getTopGridPanelDefaultStyles = (_, {\r\n palette = {},\r\n semanticColors = {},\r\n spacing = {},\r\n}) => ({\r\n // Don't inject to global\r\n topGridPanelDefaultStyles: Object.assign(\r\n {},\r\n {\r\n // make sure we don't occupy any vertical space when panel is hidden\r\n padding: '0px',\r\n margin: '0px',\r\n minWidth: '1000px',\r\n maxWidth: '1500px',\r\n position: 'relative',\r\n zIndex: 1,\r\n\r\n '&:focus': {\r\n outline: 'none',\r\n },\r\n // Styles for panel itself\r\n ...getTopGridPanelCommonStyle({ palette }),\r\n\r\n '& .warn.warn-info.form-group': {\r\n padding: 8,\r\n background: '#FFF4CE',\r\n marginBottom: '5px',\r\n fontSize: '12px',\r\n width: '450px',\r\n\r\n '& .warn-image': {\r\n color: '#D83B01',\r\n fontSize: '16px !important',\r\n float: 'left',\r\n paddingRight: '5px',\r\n },\r\n },\r\n },\r\n // Styles for each of the panel contents\r\n bulkEditStyle({ palette }),\r\n getBulkEditOverrideStyle({ palette }),\r\n upgradedUrlOverrideStyle,\r\n getAutomatedRulesStyles({ palette, semanticColors, spacing }),\r\n columnChooserStyle,\r\n getColumnChooserOverrideStyle(palette),\r\n filterEditorStyle,\r\n getFilterEditorOverrideStyle(palette),\r\n getInlineDownloadStyle({ palette }),\r\n pasteStyle\r\n ),\r\n '@global': Object.assign(\r\n {},\r\n datePickerStyle({ palette })\r\n ),\r\n});\r\n\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport $ from 'jquery';\r\nimport { filter } from 'underscore';\r\n\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getTabbableNodes, addDataFocus } from '@bingads-webui-react/focus-lock';\r\n\r\nimport { getTopGridPanelDefaultStyles } from './panel-styles';\r\n\r\nclass TopGridPanelUnStyled extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.rootRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.rootRef && this.rootRef.current) {\r\n // filter the not visible element out which may due to parent display property\r\n const tabbableNode = filter(getTabbableNodes(this.rootRef.current), item => $(item).is(':visible'));\r\n\r\n if (tabbableNode && tabbableNode.length > 0) {\r\n tabbableNode[0].focus({\r\n preventScroll: true,\r\n });\r\n }\r\n addDataFocus(this.rootRef.current);\r\n }\r\n }\r\n\r\n render() {\r\n let panelContent = (null);\r\n const {\r\n panelView, customClasses, classes,\r\n } = this.props;\r\n\r\n if (panelView) {\r\n if (React.isValidElement(panelView)) {\r\n panelContent = panelView;\r\n } else {\r\n panelContent = (\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {panelContent}\r\n
\r\n );\r\n }\r\n}\r\n\r\nTopGridPanelUnStyled.propTypes = {\r\n panelView: PropTypes.shape({\r\n render: PropTypes.func,\r\n }),\r\n classes: PropTypes.shape({\r\n topGridPanelDefaultStyles: PropTypes.string.isRequired,\r\n }).isRequired,\r\n customClasses: PropTypes.object, // eslint-disable-line\r\n};\r\n\r\nTopGridPanelUnStyled.defaultProps = {\r\n panelView: null,\r\n customClasses: {},\r\n};\r\n\r\nexport const TopGridPanel = withDefaultStyles(\r\n TopGridPanelUnStyled,\r\n getTopGridPanelDefaultStyles\r\n);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Text as FluentText } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst style = mergeStyles({\r\n lineHeight: 19,\r\n});\r\n\r\nexport const Text = ({ text, ...rest }) => {\r\n const i18n = useContext(I18nContext);\r\n return {i18n.getString(text)};\r\n};\r\n\r\nText.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const CustomComponent = ({\r\n Renderer, renderProps, children, ...dynamicProps\r\n}) => {children};\r\n\r\nCustomComponent.propTypes = {\r\n Renderer: PropTypes.elementType.isRequired,\r\n renderProps: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]),\r\n};\r\n\r\nCustomComponent.defaultProps = {\r\n renderProps: null,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CustomComponent } from './custom-component';\r\n\r\nexport const withCustomRendering = (Component) => {\r\n const CustomRenderingWrapper = (props) => {\r\n const { Renderer } = props;\r\n\r\n return (\r\n <>\r\n {Renderer ? : }\r\n \r\n );\r\n };\r\n\r\n CustomRenderingWrapper.propTypes = {\r\n Renderer: PropTypes.elementType,\r\n };\r\n\r\n CustomRenderingWrapper.defaultProps = {\r\n Renderer: null,\r\n };\r\n\r\n return CustomRenderingWrapper;\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DefaultButton } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst ActionButton = ({\r\n label, iconName, iconStyles, ariaLabel, onClick, ...rest\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const buttonIcon = iconName && {\r\n iconName,\r\n styles: iconStyles || {\r\n root: {\r\n color: '#0078D4',\r\n },\r\n },\r\n };\r\n\r\n return (\r\n
\r\n {i18n.getString(label)}\r\n
\r\n );\r\n};\r\n\r\nActionButton.propTypes = {\r\n ariaLabel: PropTypes.string.isRequired,\r\n iconName: PropTypes.string,\r\n iconStyles: PropTypes.shape({}),\r\n label: PropTypes.string.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n};\r\n\r\nActionButton.defaultProps = {\r\n iconName: null,\r\n iconStyles: null,\r\n};\r\n\r\nconst ActionButtonWrapped = withCustomRendering(ActionButton);\r\n\r\nexport { ActionButtonWrapped as ActionButton };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Stack, Text } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport classNames from 'classnames';\r\nimport { ActionButton } from './action-button';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst headerStyles = mergeStyles({\r\n padding: '0px 24px 0px 24px',\r\n borderStyle: 'solid',\r\n borderWidth: '0px 0px 1px 0px',\r\n borderColor: '#EDEBE9',\r\n});\r\n\r\nconst headerStackStyles = {\r\n root: {\r\n height: 56,\r\n },\r\n};\r\n\r\nconst titleStyles = mergeStyles({\r\n fontSize: 18,\r\n fontWeight: 600,\r\n});\r\n\r\nconst Header = ({\r\n title, actionButton, actionButtonDynamic, as,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n return (\r\n
\r\n \r\n {i18n.getString(title)}\r\n {actionButton && }\r\n \r\n
\r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n actionButton: PropTypes.shape({}),\r\n actionButtonDynamic: PropTypes.shape({}),\r\n title: PropTypes.string.isRequired,\r\n as: PropTypes.string,\r\n};\r\n\r\nHeader.defaultProps = {\r\n actionButton: null,\r\n actionButtonDynamic: null,\r\n as: 'span',\r\n};\r\n\r\nconst HeaderWrapped = withCustomRendering(Header);\r\n\r\nexport { HeaderWrapped as Header };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { Header } from './header';\r\n\r\nconst panelStyles = mergeStyles({\r\n width: 928,\r\n background: '#FFFFFF',\r\n borderRadius: 4,\r\n boxShadow: '0px 1.600000023841858px 3.5999999046325684px 0px #00000021',\r\n});\r\n\r\nconst panelContentStyles = mergeStyles({\r\n padding: '16px 24px 16px 24px',\r\n});\r\n\r\nexport const Panel = ({\r\n header, headerDynamic, children,\r\n}) =>\r\n (\r\n
\r\n {header &&
}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n\r\nPanel.propTypes = {\r\n header: PropTypes.shape({}),\r\n headerDynamic: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n\r\nPanel.defaultProps = {\r\n header: null,\r\n headerDynamic: null,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MessageBar as FluentMessageBar } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withCustomRendering } from './custom-component';\r\n\r\nconst MessageBar = (props) => {\r\n const i18n = useContext(I18nContext);\r\n const { text, ...rest } = props;\r\n return {i18n.getString(text)};\r\n};\r\n\r\nMessageBar.propTypes = {\r\n Renderer: PropTypes.elementType,\r\n rendererProps: PropTypes.shape({}),\r\n text: PropTypes.string,\r\n};\r\n\r\nMessageBar.defaultProps = {\r\n Renderer: null,\r\n rendererProps: null,\r\n text: null,\r\n};\r\n\r\nconst MessageBarWrapped = withCustomRendering(MessageBar);\r\n\r\nexport { MessageBarWrapped as MessageBar };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport classNames from 'classnames';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\nconst labelStyles = mergeStyles({\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: 19,\r\n width: 148,\r\n paddingLeft: 8,\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n});\r\n\r\nconst PropertyLabel = ({ label }) => {\r\n const i18n = useContext(I18nContext);\r\n return (\r\n
{i18n.getString(label)}
\r\n );\r\n};\r\n\r\nPropertyLabel.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n};\r\n\r\nconst PropertyLabelWrapped = withCustomRendering(PropertyLabel);\r\n\r\nexport { PropertyLabelWrapped as PropertyLabel };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { withCustomRendering } from '../custom-component';\r\n\r\n\r\nconst dataStyles = mergeStyles({\r\n paddingLeft: 8,\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n overflow: 'hidden',\r\n width: 716,\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst PropertyData = ({ children }) =>\r\n (\r\n
\r\n {children}\r\n
\r\n );\r\n\r\nPropertyData.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n\r\nconst PropertyDataWrapped = withCustomRendering(PropertyData);\r\n\r\nexport { PropertyDataWrapped as PropertyData };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { PropertyLabel } from './property-label';\r\nimport { PropertyData } from './property-data';\r\n\r\nexport const PropertyRow = ({\r\n propertyLabel, propertyLabelDynamic, propertyData, propertyDataDynamic, children,\r\n}) => (\r\n
\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n
\r\n);\r\n\r\nPropertyRow.propTypes = {\r\n propertyData: PropTypes.shape({}),\r\n propertyDataDynamic: PropTypes.shape({}),\r\n propertyLabel: PropTypes.shape({}).isRequired,\r\n propertyLabelDynamic: PropTypes.shape({}),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]),\r\n};\r\n\r\nPropertyRow.defaultProps = {\r\n propertyData: null,\r\n propertyDataDynamic: null,\r\n propertyLabelDynamic: null,\r\n children: null,\r\n};\r\n","import React from 'react';\r\nimport { mergeStyles } from '@bingads-webui-react/fabric-control';\r\n\r\nconst dividerStyles = mergeStyles({\r\n height: 1,\r\n background: '#EDEBE9',\r\n});\r\n\r\nexport const HorizontalDivider = () =>
;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Text as FluentText } from '@bingads-webui-react/fabric-control';\r\n\r\nconst style = mergeStyles({\r\n lineHeight: 19,\r\n});\r\n\r\nexport const Data = ({ data, ...rest }) => {data};\r\n\r\nData.propTypes = {\r\n data: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n ]).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n Text,\r\n Panel,\r\n MessageBar,\r\n CustomComponent,\r\n PropertyRow,\r\n HorizontalDivider,\r\n Data,\r\n} from './components';\r\n\r\nexport const componentTypes = {\r\n text: Text,\r\n panel: Panel,\r\n 'message-bar': MessageBar,\r\n 'property-row': PropertyRow,\r\n 'horizontal-divider': HorizontalDivider,\r\n 'custom-component': CustomComponent,\r\n data: Data,\r\n};\r\n\r\nexport const register = (label, Component) => {\r\n componentTypes[label] = Component;\r\n};\r\n\r\nexport const bulkRegister = (registrationMap) => {\r\n _.extend(componentTypes, registrationMap);\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport { mergeStyles } from '@fluentui/react';\r\nimport classNames from 'classnames';\r\nimport { componentTypes, bulkRegister } from './component-types';\r\nimport { GeneratedUI } from './generated-ui';\r\n\r\nexport const generateComponents = (props) => {\r\n const { schema, customComponentTypes } = props;\r\n\r\n const selectComponentType = ({\r\n schemaComponent, key, commonSchemaStyles, numberOfComponents, separatorStyles,\r\n }) => {\r\n const field = schemaComponent[0];\r\n const params = schemaComponent[1];\r\n\r\n const Component = componentTypes[params.type];\r\n\r\n const separatorStylesForComponent = separatorStyles && key < numberOfComponents - 1 ? separatorStyles : {};\r\n\r\n const componentStyles = _.extend(separatorStylesForComponent, params.styles || commonSchemaStyles);\r\n const componentClassName = params.className || `${field}-${params.type}`;\r\n\r\n const { dynamicProps: getDirectlyDefinedDynamicProperties, components: componentsSchema } = params;\r\n\r\n const build = Component ? (propertiesSchema, dynamicProperties) => {\r\n const directlyDefinedComponentDynamicProperties = (dynamicProperties\r\n && getDirectlyDefinedDynamicProperties\r\n && getDirectlyDefinedDynamicProperties(dynamicProperties)) || {};\r\n const schemaBasedComponentDynamicProperties = (propertiesSchema && propertiesSchema[field]) || {};\r\n\r\n const { components: childComponentsDynamicProperties, ...rest } = schemaBasedComponentDynamicProperties;\r\n const componentDynamicProperties = (!_.isEmpty(directlyDefinedComponentDynamicProperties) && directlyDefinedComponentDynamicProperties) || rest;\r\n\r\n const dynamicallyHideComponent = componentDynamicProperties.isRendered === false;\r\n const componentStylesWithDynamics = mergeStyles(_.extend(componentStyles, componentDynamicProperties.styles, { display: dynamicallyHideComponent ? 'none' : 'block' }));\r\n\r\n return (\r\n
\r\n \r\n {componentsSchema && }\r\n \r\n
\r\n );\r\n } : null;\r\n\r\n return build ? { field, build } : null;\r\n };\r\n\r\n bulkRegister(customComponentTypes);\r\n\r\n const { styles, separatorStyles } = schema;\r\n\r\n const unrenderedComponents = _.keys(_.pick(schema, c => c.isRendered === false));\r\n const componentsToRenderSchema = _.omit(schema, 'styles', 'separatorStyles', ...unrenderedComponents);\r\n\r\n const schemaComponents = _.pairs(componentsToRenderSchema);\r\n\r\n const selectedComponentTypes = _.map(schemaComponents, (schemaComponent, key) =>\r\n selectComponentType({\r\n schemaComponent,\r\n key,\r\n numberOfComponents: schemaComponents.length,\r\n commonSchemaStyles: styles,\r\n separatorStyles,\r\n }));\r\n\r\n return _.without(selectedComponentTypes, null);\r\n};\r\n","import { useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { generateComponents } from './generate-components';\r\n\r\nexport const GeneratedUI = ({\r\n schema, propertiesSchema, customComponentTypes, ...dynamicProperties\r\n}) => {\r\n const dynamicComponentBuilders = useMemo(() => generateComponents({ schema, customComponentTypes }), [schema, customComponentTypes]);\r\n\r\n const completedComponents = useMemo(\r\n () =>\r\n _.map(dynamicComponentBuilders, componentBuilder => componentBuilder.build(propertiesSchema, dynamicProperties)),\r\n [dynamicComponentBuilders, dynamicProperties, propertiesSchema]\r\n );\r\n\r\n return completedComponents;\r\n};\r\n\r\nGeneratedUI.propTypes = {\r\n schema: PropTypes.shape({}).isRequired,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const buildDefaultTextProperty = (props) => {\r\n const {\r\n label,\r\n text,\r\n styles,\r\n isRendered,\r\n dynamicProps,\r\n } = props;\r\n\r\n const baselineProperty = {\r\n type: 'property-row',\r\n isRendered,\r\n propertyLabel: {\r\n label,\r\n },\r\n components: {\r\n text: {\r\n type: 'text',\r\n text,\r\n dynamicProps,\r\n },\r\n },\r\n };\r\n\r\n return _.extend(baselineProperty, { styles });\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const buildDefaultDataProperty = (props) => {\r\n const {\r\n label,\r\n data,\r\n styles,\r\n dynamicProps,\r\n } = props;\r\n\r\n const baselineProperty = {\r\n type: 'property-row',\r\n propertyLabel: {\r\n label,\r\n },\r\n components: {\r\n data: {\r\n type: 'data',\r\n data,\r\n dynamicProps,\r\n },\r\n },\r\n };\r\n\r\n return _.extend(baselineProperty, { styles });\r\n};\r\n","import React, { useMemo } from 'react';\r\n\r\nimport { isPlayPausePreviewImageEnabled } from '@bingads-webui-campaign-react/play-pause-buttons';\r\nimport {\r\n AdPreviewCarouselLayout,\r\n AdPreviewCarouselLayoutEx,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nconst withAutoRotate = (CarouselLayout) => {\r\n const Wrapper = ({ enableAutoRotate, permissions, ...rest }) => {\r\n const autoRotate = useMemo(() => enableAutoRotate && isPlayPausePreviewImageEnabled(permissions), [enableAutoRotate, permissions]);\r\n\r\n return (\r\n \r\n );\r\n };\r\n return Wrapper;\r\n};\r\n\r\nexport const AdPreviewCarouselLayoutWrapper = withAutoRotate(AdPreviewCarouselLayout);\r\nexport const AdPreviewCarouselLayoutWrapperEx = withAutoRotate(AdPreviewCarouselLayoutEx);\r\n","import { withTheme } from 'react-jss';\r\n\r\nexport const withCMUITheme = withTheme;\r\n","import { UAPPlacementType as EPT } from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n//\r\n// this is the type returned from MT APIs, will map it to a placement type\r\nexport const UAPMediaPlacementType = {\r\n MultiMediaAd400X100: 'MultiMediaAd400X100',\r\n MultiMediaAd191X100: 'MultiMediaAd191X100',\r\n MultiMediaAd100X100: 'MultiMediaAd100X100',\r\n MultiMediaAd50X100: 'MultiMediaAd50X100',\r\n MSAN191X100: 'MSAN191X100',\r\n MSAN178X100: 'MSAN178X100',\r\n MSAN172X100: 'MSAN172X100',\r\n MSAN169X100: 'MSAN169X100',\r\n MSAN155X100: 'MSAN155X100',\r\n MSAN150X100: 'MSAN150X100',\r\n MSAN133X100: 'MSAN133X100',\r\n MSAN100X100: 'MSAN100X100',\r\n MSAN93X100: 'MSAN93X100',\r\n MSAN201X100: 'MSAN201X100',\r\n MSAN200X100: 'MSAN200X100',\r\n MSAN153X100: 'MSAN153X100',\r\n MSAN124X100: 'MSAN124X100',\r\n MSAN120X100: 'MSAN120X100',\r\n ImageExtension191X100: 'ImageExtension191X100',\r\n ImageExtension178X100: 'ImageExtension178X100',\r\n ImageExtension172X100: 'ImageExtension172X100',\r\n ImageExtension169X100: 'ImageExtension169X100',\r\n ImageExtension155X100: 'ImageExtension155X100',\r\n ImageExtension150X100: 'ImageExtension150X100',\r\n ImageExtension133X100: 'ImageExtension133X100',\r\n ImageExtension100X100: 'ImageExtension100X100',\r\n ImageExtension93X100: 'ImageExtension93X100',\r\n AssetGroup191X100: 'AssetGroup191X100',\r\n AssetGroup100X100: 'AssetGroup100X100',\r\n AssetGroup150X100: 'AssetGroup150X100',\r\n AssetGroup133X100: 'AssetGroup133X100',\r\n AssetGroup178X100: 'AssetGroup178X100',\r\n AssetGroup100X200: 'AssetGroup100X200',\r\n AssetGroup400X100: 'AssetGroup400X100',\r\n};\r\n\r\n// todo: not all values are mapped\r\n// each multi-media placement type maps to a list of placement types\r\nexport const MediaPlacementTypeToPlacementTypeMap = {\r\n [UAPMediaPlacementType.MultiMediaAd400X100]: [EPT.MMA_WideImage_4x1],\r\n [UAPMediaPlacementType.MultiMediaAd191X100]: [EPT.MMA_LandscapeImage_191x100],\r\n [UAPMediaPlacementType.MultiMediaAd100X100]: [EPT.MMA_SquareImage_1x1],\r\n [UAPMediaPlacementType.MultiMediaAd50X100]: [EPT.MMA_VerticalImage_1x2],\r\n\r\n [UAPMediaPlacementType.MSAN191X100]: [EPT.Audience_Network_WideImage_191x100, EPT.MsanV2_MSAN_River_191x100],\r\n [UAPMediaPlacementType.MSAN178X100]: [EPT.Microsoft_Edge_Single_Carousel_178x100],\r\n [UAPMediaPlacementType.MSAN172X100]: undefined,\r\n [UAPMediaPlacementType.MSAN169X100]: [EPT.MsanV2_MSN_Carousel_169x100, EPT.PMax_MMAV2_MSN_Single_Carousel_169x100],\r\n [UAPMediaPlacementType.MSAN155X100]: undefined,\r\n [UAPMediaPlacementType.MSAN150X100]: [EPT.MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.MSAN133X100]: [EPT.MSN_Small_Headline_133x100],\r\n [UAPMediaPlacementType.MSAN100X100]: [EPT.Audience_Network_SquareImage_1x1, EPT.MsanV2_Microsoft_Edge_Mobile_1x1],\r\n [UAPMediaPlacementType.MSAN93X100]: undefined,\r\n [UAPMediaPlacementType.MSAN201X100]: [EPT.MsanV2_Microsoft_Edge_Carouse_l201x100, EPT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100],\r\n [UAPMediaPlacementType.MSAN200X100]: [EPT.MsanV2_MSAN_Banner_2x1],\r\n [UAPMediaPlacementType.MSAN153X100]: [EPT.MsanV2_MSN_Partner_Stripe_153x100, EPT.PMax_MMAV2_MSN_Partner_Stripe_153x100],\r\n [UAPMediaPlacementType.MSAN124X100]: [EPT.MsanV2_MSN_Restoday_124x100, EPT.PMax_MMAV2_MSN_Restoday_124x100],\r\n [UAPMediaPlacementType.MSAN120X100]: [EPT.MsanV2_MSAN_Rectangle_120x100],\r\n\r\n [UAPMediaPlacementType.ImageExtension191X100]: [EPT.ImgExt_Audience_Network_WideImage_191x100],\r\n [UAPMediaPlacementType.ImageExtension178X100]: [\r\n EPT.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n EPT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n ],\r\n [UAPMediaPlacementType.ImageExtension172X100]: [EPT.ImgExt_Microsoft_Edge_Medium_Headline_172x100],\r\n [UAPMediaPlacementType.ImageExtension169X100]: [EPT.ImgExt_MSN_Single_Carousel_169x100],\r\n [UAPMediaPlacementType.ImageExtension155X100]: [EPT.ImgExt_MSN_Medium_Headline_155x100],\r\n [UAPMediaPlacementType.ImageExtension150X100]: [EPT.ImgExt_MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.ImageExtension133X100]: [\r\n EPT.ImgExt_MSN_Small_Headline_133x100,\r\n EPT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n EPT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n ],\r\n [UAPMediaPlacementType.ImageExtension100X100]: [EPT.ImgExt_Audience_Network_SquareImage_1x1],\r\n [UAPMediaPlacementType.ImageExtension93X100]: [EPT.ImgExt_MSN_Double_Carousel_93x100],\r\n\r\n [UAPMediaPlacementType.AssetGroup191X100]: [EPT.PMax_Audience_Network_WideImage_191x100, EPT.PMax_MMA_LandscapeImage_191x100],\r\n [UAPMediaPlacementType.AssetGroup100X100]: [EPT.PMax_Audience_Network_SquareImage_1x1],\r\n [UAPMediaPlacementType.AssetGroup150X100]: [EPT.PMax_MSN_InArticle_Ad_150x100],\r\n [UAPMediaPlacementType.AssetGroup133X100]: [EPT.PMax_MSN_Small_Headline_133x100],\r\n [UAPMediaPlacementType.AssetGroup178X100]: [EPT.PMax_Microsoft_Edge_Single_Carousel_178x100],\r\n [UAPMediaPlacementType.AssetGroup100X200]: [EPT.PMax_MMA_VerticalImage_1x2],\r\n [UAPMediaPlacementType.AssetGroup400X100]: [EPT.PMax_MMA_WideImage_4x1],\r\n};\r\n\r\n// multiple placement types may map to the same media placement type\r\nexport const PlacementType2MediaPlacementTypeMap = {\r\n // MMA\r\n [EPT.MMA_WideImage_4x1]: UAPMediaPlacementType.MultiMediaAd400X100,\r\n [EPT.MMA_LandscapeImage_191x100]: UAPMediaPlacementType.MultiMediaAd191X100,\r\n [EPT.MMA_SquareImage_1x1]: UAPMediaPlacementType.MultiMediaAd100X100,\r\n [EPT.MMA_VerticalImage_1x2]: UAPMediaPlacementType.MultiMediaAd50X100,\r\n\r\n // MSAN\r\n [EPT.Audience_Network_WideImage_191x100]: UAPMediaPlacementType.MSAN191X100,\r\n [EPT.Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.MSAN178X100,\r\n [EPT.MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.MSAN150X100,\r\n [EPT.MSN_Small_Headline_133x100]: UAPMediaPlacementType.MSAN133X100,\r\n [EPT.Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.MSAN100X100,\r\n\r\n // MSAN V2\r\n [EPT.MsanV2_Microsoft_Edge_Carouse_l201x100]: UAPMediaPlacementType.MSAN201X100,\r\n [EPT.MsanV2_MSAN_Banner_2x1]: UAPMediaPlacementType.MSAN200X100,\r\n [EPT.MsanV2_MSAN_River_191x100]: UAPMediaPlacementType.MSAN191X100,\r\n [EPT.MsanV2_MSN_Carousel_169x100]: UAPMediaPlacementType.MSAN169X100,\r\n [EPT.MsanV2_MSN_Partner_Stripe_153x100]: UAPMediaPlacementType.MSAN153X100,\r\n [EPT.MsanV2_MSN_Restoday_124x100]: UAPMediaPlacementType.MSAN124X100,\r\n [EPT.MsanV2_MSAN_Rectangle_120x100]: UAPMediaPlacementType.MSAN120X100,\r\n [EPT.MsanV2_Microsoft_Edge_Mobile_1x1]: UAPMediaPlacementType.MSAN100X100,\r\n\r\n // pmax\r\n [EPT.PMax_Audience_Network_WideImage_191x100]: UAPMediaPlacementType.AssetGroup191X100,\r\n [EPT.PMax_Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.AssetGroup100X100,\r\n [EPT.PMax_Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.AssetGroup178X100,\r\n [EPT.PMax_MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.AssetGroup150X100,\r\n [EPT.PMax_MSN_Small_Headline_133x100]: UAPMediaPlacementType.AssetGroup133X100,\r\n [EPT.PMax_MMA_WideImage_4x1]: UAPMediaPlacementType.AssetGroup400X100,\r\n [EPT.PMax_MMA_LandscapeImage_191x100]: UAPMediaPlacementType.AssetGroup191X100,\r\n [EPT.PMax_MMA_VerticalImage_1x2]: UAPMediaPlacementType.AssetGroup100X200,\r\n // pmax v2\r\n [EPT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: UAPMediaPlacementType.MSAN201X100,\r\n [EPT.PMax_MMAV2_MSN_Single_Carousel_169x100]: UAPMediaPlacementType.MSAN169X100,\r\n [EPT.PMax_MMAV2_MSN_Restoday_124x100]: UAPMediaPlacementType.MSAN124X100,\r\n [EPT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: UAPMediaPlacementType.MSAN153X100,\r\n\r\n //\r\n // Image Extension\r\n [EPT.ImgExt_Audience_Network_WideImage_191x100]: UAPMediaPlacementType.ImageExtension191X100,\r\n\r\n // ImageExtension178X100\r\n [EPT.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: UAPMediaPlacementType.ImageExtension178X100,\r\n [EPT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: UAPMediaPlacementType.ImageExtension178X100,\r\n\r\n [EPT.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: UAPMediaPlacementType.ImageExtension172X100,\r\n [EPT.ImgExt_MSN_Single_Carousel_169x100]: UAPMediaPlacementType.ImageExtension169X100,\r\n [EPT.ImgExt_MSN_Medium_Headline_155x100]: UAPMediaPlacementType.ImageExtension155X100,\r\n [EPT.ImgExt_MSN_InArticle_Ad_150x100]: UAPMediaPlacementType.ImageExtension150X100,\r\n\r\n // ImageExtension133X100\r\n [EPT.ImgExt_MSN_Small_Headline_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n [EPT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n [EPT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: UAPMediaPlacementType.ImageExtension133X100,\r\n\r\n [EPT.ImgExt_Audience_Network_SquareImage_1x1]: UAPMediaPlacementType.ImageExtension100X100,\r\n [EPT.ImgExt_MSN_Double_Carousel_93x100]: UAPMediaPlacementType.ImageExtension93X100,\r\n};\r\n","import _ from 'underscore';\r\nimport { useCallback, useMemo } from 'react';\r\n\r\nimport {\r\n useAdPreviewModel as useAdPreviewModelCore,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nimport {\r\n MediaPlacementTypeToPlacementTypeMap,\r\n PlacementType2MediaPlacementTypeMap,\r\n} from './media-placement-type-enum';\r\n\r\n\r\n// // this is the same shape as MT response\r\n// type MTPlacementCroppingParam = {\r\n// MediaPlacementType: EMediaPlacementType,\r\n// CropSetting: TCropRect,\r\n// }\r\n\r\n// // this is the same shape as MT response\r\n// type MTImageParam = {\r\n// id: number | undefined | null,\r\n// url: string,\r\n// width: number,\r\n// height: number,\r\n// originalUrl: string,\r\n// originalWidth: number,\r\n// originalHeight: number,\r\n// cropSettingOnOriginal: TCropRect | undefined | null,\r\n// placementSettings: Array | undefined | null,\r\n// }\r\n\r\n// const transformCroppingParam = (param: MTPlacementCroppingParam): Array => {\r\nconst transformCroppingParam = (param) => {\r\n const { MediaPlacementType, CropSetting } = param || {};\r\n const placementTypes = MediaPlacementTypeToPlacementTypeMap[MediaPlacementType];\r\n if (!_.isEmpty(placementTypes)) {\r\n return _.map(placementTypes, placementType => ({ placementType, cropping: CropSetting }));\r\n }\r\n return [];\r\n};\r\n\r\n// const transformImageParam = (image: MTImageParam): UAPPreviewImageParam => {\r\nconst transformImageParam = (image) => {\r\n const {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, cropSettingOnOriginal, placementSettings, roiInfo, expandedMeta,\r\n } = image || {};\r\n const imageParam = {\r\n id,\r\n url,\r\n width,\r\n height,\r\n originalUrl,\r\n originalWidth,\r\n originalHeight,\r\n imageCropping: cropSettingOnOriginal,\r\n placementsCropping: _.flatten(_.map(placementSettings, transformCroppingParam)),\r\n roiInfo,\r\n expandedMeta,\r\n };\r\n return imageParam;\r\n};\r\n\r\nconst transformImage = (image) => {\r\n if (!image || _.isString(image)) {\r\n return image;\r\n }\r\n return transformImageParam(image);\r\n};\r\n\r\n\r\n// type TPlacementConfig = Array<{\r\n// image: string | MTImageParam,\r\n// placementSets: Array<{\r\n// placementSetName: string,\r\n// placementTypes: Array,\r\n// // (params: { imageMeta: TImageMeta, imageCropping: TCropRect, placementMetaList: Array }) => Array;\r\n// getDefaultPlacementsCropping?: Function,\r\n// }>,\r\n// }>;\r\n\r\n// a simple wrapper to adapt the MT type to the core model\r\n// export const useAdPreviewModel = (placementConfig: TPlacementConfig, onError) => {\r\nexport const useAdPreviewModel = (placementConfig, onError) => {\r\n //\r\n const transformedConfig = useMemo(() => _.map(placementConfig, ({ image, placementSets }) => ({\r\n image: transformImage(image),\r\n placementSets,\r\n })), [placementConfig]);\r\n\r\n const {\r\n setPlacementConfig: setPlacementConfigCore,\r\n changedCropSettings: changedCropSettingsCore,\r\n ...rest\r\n } = useAdPreviewModelCore(transformedConfig, onError);\r\n\r\n // const setPlacementConfig = useCallback((config: TPlacementConfig) => {\r\n const setPlacementConfig = useCallback((config) => {\r\n const newConfig = _.map(config, ({ image, placementSets }) => ({\r\n image: transformImage(image),\r\n placementSets,\r\n }));\r\n return setPlacementConfigCore(newConfig);\r\n }, [setPlacementConfigCore]);\r\n\r\n const changedCropSettings = useMemo(() => {\r\n const ret = _.map(changedCropSettingsCore, ({ image, placements }) => {\r\n const imageCropping = image.hasCroppingChanged ? image.imageCropping : null;\r\n const placementSettings = _.chain(placements)\r\n .map(({ placementMeta, hasCroppingChanged, placementCropping }) => {\r\n if (hasCroppingChanged) {\r\n return { MediaPlacementType: PlacementType2MediaPlacementTypeMap[placementMeta.placementType], CropSetting: placementCropping };\r\n }\r\n return null;\r\n })\r\n .compact()\r\n .reduce((acc, placementCropping) => {\r\n // remove duplicated placement settings\r\n const { MediaPlacementType } = placementCropping;\r\n if (!acc[MediaPlacementType]) {\r\n acc[MediaPlacementType] = placementCropping;\r\n }\r\n return acc;\r\n }, {})\r\n .value(); // get chain result\r\n\r\n return {\r\n cropSettings: imageCropping,\r\n placementSettings: _.compact(_.values(placementSettings)) || [],\r\n };\r\n });\r\n return ret;\r\n }, [changedCropSettingsCore]);\r\n\r\n return { setPlacementConfig, changedCropSettings, ...rest };\r\n};\r\n","// derived from private\\component-react\\packages\\image-experience-utils\\src\\get-smart-cropped-image.js\r\n// and remvoed unrelated code/logic, only keep smart cropping handling here\r\n\r\nimport _ from 'underscore';\r\nimport { getCentralCroppedPlacements } from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\nimport { validateSmartCropSettings } from '@bingads-webui-campaign/image-experience-utils';\r\n\r\nexport const getSmartCropSettingsFactory = (mediaRepository, smartCropActivity) => {\r\n //\r\n // todo: defaultOption & isIncluded?\r\n const getSmartCropSettings = ({ imageMeta, imageCropping, placementMetaList }) => {\r\n // if the image is cropped itself, use central cropping for placements intead of smart cropping\r\n if (imageCropping) {\r\n return getCentralCroppedPlacements({ imageMeta, imageCropping, placementMetaList });\r\n }\r\n\r\n const ratioAndMinSizeList = _.map(placementMetaList, (placementMeta) => {\r\n const { aspectRatio, minSize } = placementMeta;\r\n return { aspectRatio, minSize };\r\n });\r\n\r\n return mediaRepository.generateSmartCrop({\r\n imageUrl: imageMeta.originalUrl,\r\n placementSettings: ratioAndMinSizeList, // [{aspectRatio, minSize}]\r\n }).then((assets) => {\r\n const ret = _.map(placementMetaList, (placementMeta) => {\r\n const asset = _.find(assets, ({ AspectRatio }) => AspectRatio === placementMeta.aspectRatioStr);\r\n if (asset) {\r\n const smartCropping = {\r\n SourceWidth: asset.Width,\r\n SourceHeight: asset.Height,\r\n SourceX: asset.X,\r\n SourceY: asset.Y,\r\n };\r\n const isValidSmartCropping = validateSmartCropSettings({\r\n originalImage: { width: imageMeta.originalWidth, height: imageMeta.originalHeight, Src: imageMeta.originalUrl },\r\n cropSettings: smartCropping,\r\n minWidth: placementMeta.minSize[0],\r\n minHeight: placementMeta.minSize[1],\r\n aspectRatio: placementMeta.aspectRatio,\r\n smartCropActivity,\r\n });\r\n return { placementMeta, smartCropping: isValidSmartCropping ? smartCropping : null };\r\n }\r\n return { placementMeta, smartCropping: null };\r\n });\r\n return ret; // [{placementMeta, smartCropping, isValidCropping}]\r\n }).catch(() => {\r\n // swallow the error\r\n }).then((smartPlacementAndCroppingList) => {\r\n // fallback to central cropped placements if no smart cropping available for some placements\r\n const placementsWithoutSmartCropping = _.filter(smartPlacementAndCroppingList, ({ smartCropping }) => !smartCropping);\r\n let croppingList = null;\r\n if (!_.isEmpty(placementsWithoutSmartCropping)) {\r\n const centralCroppingList = getCentralCroppedPlacements({ imageMeta, imageCropping, placementMetaList });\r\n // merge central cropping with smart cropping, smart cropping has high priority\r\n croppingList = _.map(smartPlacementAndCroppingList, ({ smartCropping }, idx) => (smartCropping ? { placementCropping: smartCropping } : centralCroppingList[idx]));\r\n } else {\r\n croppingList = _.map(smartPlacementAndCroppingList, ({ smartCropping }) => ({ placementCropping: smartCropping }));\r\n }\r\n return croppingList;\r\n });\r\n };\r\n\r\n return getSmartCropSettings;\r\n};\r\n","import _ from 'underscore';\r\nimport { useCallback, useMemo, useContext } from 'react';\r\nimport {\r\n useAdPreviewModel as useAdPreviewModelCore,\r\n UAPLPlacementMetaList,\r\n UAPLPlacementMetaListV2,\r\n UAPPlacementType as EPlacementType,\r\n getExpandedImageInfo,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\nimport { UAPCroppingType } from '@bingads-webui-campaign-react/unified-ad-preview-library-util';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nexport const PlacementType2AssociationTypeMap = {\r\n [EPlacementType.MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.MMA_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n\r\n // audience ad (mma in msan)\r\n [EPlacementType.Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n // audience ad (mma in msan) V2\r\n [EPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100]: 'ImageMedia201X100',\r\n [EPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n [EPlacementType.MsanV2_MSAN_Banner_2x1]: 'ImageMedia200X100',\r\n [EPlacementType.MsanV2_MSAN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.MsanV2_MSAN_Rectangle_120x100]: 'ImageMedia120X100',\r\n [EPlacementType.MsanV2_MSN_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.MsanV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.MsanV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n\r\n // boost\r\n [EPlacementType.Boost_Hero_Image_Carousel_200x100]: 'ImageMedia200X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_122x100]: 'ImageMedia122X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_159x100]: 'ImageMedia159X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_180x100]: 'ImageMedia180X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_233x100]: 'ImageMedia233X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_320x100]: 'ImageMedia320X100',\r\n [EPlacementType.Boost_Hero_Image_Carousel_57x100]: 'ImageMedia57X100',\r\n [EPlacementType.Boost_Windows_Spotlight_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Boost_Discover_Card_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Boost_Prong1_Prong2_Feed_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Boost_Coachmark_175x100]: 'ImageMedia178X100',\r\n\r\n // image extension\r\n [EPlacementType.ImgExt_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.ImgExt_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: 'ImageMedia172X100',\r\n [EPlacementType.ImgExt_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.ImgExt_MSN_Medium_Headline_155x100]: 'ImageMedia155X100',\r\n [EPlacementType.ImgExt_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.ImgExt_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: 'ImageMedia133X100',\r\n [EPlacementType.ImgExt_MSN_Double_Carousel_93x100]: 'ImageMedia93X100',\r\n [EPlacementType.ImgExt_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n\r\n [EPlacementType.Responsive_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.Responsive_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_MMA_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n\r\n // audience ad (mma in msan)\r\n [EPlacementType.Responsive_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.Responsive_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.Responsive_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n [EPlacementType.Responsive_Boost_Windows_Spotlight_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Boost_Discover_Card_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_Boost_Prong1_Prong2_Feed_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_Boost_Coachmark_175x100]: 'ImageMedia178X100',\r\n\r\n // audience ad (mma in msan) V2\r\n [EPlacementType.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100]: 'ImageMedia201X100',\r\n [EPlacementType.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_MsanV2_MSAN_Banner_2x1]: 'ImageMedia200X100',\r\n [EPlacementType.Responsive_MsanV2_MSAN_River_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_MsanV2_MSAN_Rectangle_120x100]: 'ImageMedia120X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.Responsive_MsanV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n\r\n // LinkedIn\r\n [EPlacementType.LinkedIn_Single_Image_Desktop_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Landscape]: 'LandscapeImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Landscape]: 'LandscapeImageMedia',\r\n\r\n [EPlacementType.LinkedIn_Single_Image_Desktop_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Square]: 'SquareImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Square]: 'SquareImageMedia',\r\n\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Medium_Rectangle_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Mobile_Interstitial_Vertical]: 'PortraitImageMedia',\r\n [EPlacementType.LinkedIn_Single_Image_Native_Vertical]: 'PortraitImageMedia',\r\n\r\n // Pmax\r\n [EPlacementType.PMax_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.PMax_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.PMax_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n [EPlacementType.PMax_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.PMax_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.PMax_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.PMax_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n // Pmax v2\r\n [EPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: 'ImageMedia201X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n [EPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.PMax_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n\r\n // Pmax responsive\r\n [EPlacementType.Responsive_PMax_MMA_WideImage_4x1]: 'ImageMedia4X1',\r\n [EPlacementType.Responsive_PMax_MMA_LandscapeImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_PMax_MMA_VerticalImage_1x2]: 'ImageMedia1X2',\r\n [EPlacementType.Responsive_PMax_Audience_Network_WideImage_191x100]: 'LandscapeImageMedia',\r\n [EPlacementType.Responsive_PMax_Audience_Network_SquareImage_1x1]: 'SquareImageMedia',\r\n [EPlacementType.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100]: 'ImageMedia178X100',\r\n [EPlacementType.Responsive_PMax_MSN_InArticle_Ad_150x100]: 'ImageMedia15X10',\r\n [EPlacementType.Responsive_PMax_MSN_Small_Headline_133x100]: 'ImageMedia133X100',\r\n\r\n // unified app preview\r\n [EPlacementType.Unified_App_Ads_Video_Horizontal]: 'Video16x9',\r\n [EPlacementType.Unified_App_Ads_Bing_Search]: 'ImageMedia133X100',\r\n [EPlacementType.Unified_App_Ads_Causal_Games_Dimensions]: 'SquareImageMedia',\r\n [EPlacementType.Unified_App_Ads_MSN_Display]: 'LandscapeImageMedia',\r\n\r\n // Pmax responsive v2\r\n [EPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: 'ImageMedia201X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100]: 'ImageMedia169X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Restoday_124x100]: 'ImageMedia124X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: 'ImageMedia153X100',\r\n [EPlacementType.Responsive_PMax_MMAV2_MSN_River_191x100]: 'LandscapeImageMedia',\r\n};\r\n\r\nconst getExpandedImagePlacementInfo = (placement, hasSmartEffect) => {\r\n const {\r\n imageExpansionType, cropSettings, originalImageCropSettings,\r\n } = placement || {};\r\n const { CroppingType } = cropSettings || {};\r\n\r\n return getExpandedImageInfo({\r\n imageExpansionType,\r\n expandedImageUrl: placement.getExpandedImageUrl(),\r\n expandedImageWidth: placement.expandedImageWidth,\r\n expandedImageHeight: placement.expandedImageHeight,\r\n expandedImageCropSettings: placement.expandedImageCropSettings,\r\n originalImageCropSettings,\r\n extraCheck: () => hasSmartEffect || CroppingType === UAPCroppingType.ManualCrop,\r\n }) || {};\r\n};\r\n\r\nconst convertEffectSettings = (effectSettings) => {\r\n if (!effectSettings) {\r\n return null;\r\n }\r\n const { effectKey, effectOptions, effectSrc } = effectSettings || {};\r\n const { backgroundBlur, backgroundColor, designerEffect } = effectOptions || {};\r\n const imageSmartEffect = effectSrc ? {\r\n effectType: effectKey,\r\n effectValue: backgroundBlur || backgroundColor || designerEffect,\r\n effectSrc,\r\n } : null;\r\n return imageSmartEffect;\r\n};\r\n\r\n// for image extension feature, it supports to replace images for specific placements, which results\r\n// in different images in the 2nd dimension of imageExperienceImageList (placements)\r\n// to handle it, we need to split the 2nd dimension of imageExperienceImageList into multiple parts\r\n// by image src\r\nconst splitPlacementListBySrc = (imageExperienceImageList) => {\r\n // key is src, value is a list of placements with the same src\r\n let changed = false;\r\n const newImageList = [];\r\n _.forEach(imageExperienceImageList, (placementList) => {\r\n // for now, only split 2nd level, in case there may be images (1st dimension) with same URLs\r\n const placementListMap = _.groupBy(placementList, 'src');\r\n const srcList = _.keys(placementListMap);\r\n changed = changed || srcList.length > 1;\r\n srcList.forEach((src) => {\r\n newImageList.push(placementListMap[src]);\r\n });\r\n });\r\n return changed ? newImageList : imageExperienceImageList;\r\n};\r\n\r\n// imageExperienceImageList is a 2-dimensional array of type ImageExperienceImage,\r\n// the first dimension is the 'Image', and the second dimension is the 'Placement' (objects with type of ImageExperienceImage)\r\n// and the settings on image (crop/smart effetc) is presented by using 'baseImage', that is,\r\n// for each 'Placement' list, they should have same 'baseImage' (not the same object, but with the same cropping and smart effects)\r\nconst transformImageExperienceImageList = (placementSetsConfig, imageExperienceImageList, isImageFittingEnabled, isAdPreviewRefreshEnabled) => {\r\n // filter out logos\r\n let imageList = _.compact(_.map(imageExperienceImageList, (imgExpPlacementList) => {\r\n const placements = _.filter(imgExpPlacementList, ({ isLogo }) => !isLogo);\r\n return _.isEmpty(placements) ? null : placements;\r\n })) || [];\r\n\r\n imageList = splitPlacementListBySrc(imageList);\r\n\r\n const PlacementMetaList = isAdPreviewRefreshEnabled ? UAPLPlacementMetaListV2 : UAPLPlacementMetaList;\r\n\r\n const previewImageList = _.map(imageList, (imgExpPlacementList /* [ImageExperienceImage] */) => {\r\n // image level\r\n let imageMeta = null;\r\n let imageCropping = null;\r\n let imageSmartEffect = null;\r\n let hasImageCroppingChanged = false;\r\n\r\n const placementSets = _.map(placementSetsConfig, ({ placementSetName, placementTypes }) => {\r\n const placementList = _.map(placementTypes, (placementType) => {\r\n const placementMeta = PlacementMetaList[placementType] || {};\r\n\r\n // get association type from placement type\r\n const curAssociationType = PlacementType2AssociationTypeMap[placementType] || '';\r\n\r\n // get the ImageExperienceImage object representing the placement\r\n const placement = _.find(imgExpPlacementList, ({ associationType }) => associationType && curAssociationType && (associationType.toLowerCase() === curAssociationType.toLowerCase()));\r\n\r\n if (!placement) {\r\n return {\r\n placementMeta,\r\n placementCropping: null,\r\n placementSmartEffect: null,\r\n hasCroppingChanged: false,\r\n isPlacementIncluded: false,\r\n // mark this placment not initialized\r\n hasImageExperienceData: false,\r\n };\r\n }\r\n\r\n // the BaseImage represents image info (bulk editing on all placements)\r\n const baseImage = placement.BaseImage || {};\r\n\r\n if (!imageMeta) {\r\n imageMeta = {\r\n id: baseImage.IdString || baseImage.Id || placement.Id,\r\n url: placement.Src || placement.OriginalUrl || baseImage.Src || baseImage.OriginalUrl,\r\n width: baseImage.Width || baseImage.OriginalWidth || placement.Width || placement.OriginalWidth,\r\n height: baseImage.Height || baseImage.OriginalHeight || placement.Height || placement.OriginalHeight,\r\n originalUrl: baseImage.OriginalUrl || baseImage.Src || placement.OriginalUrl || placement.Src,\r\n originalWidth: baseImage.OriginalWidth || baseImage.Width || placement.OriginalWidth || placement.Width,\r\n originalHeight: baseImage.OriginalHeight || baseImage.Height || placement.OriginalHeight || placement.Height,\r\n };\r\n }\r\n\r\n // image cropping\r\n if (!imageCropping) {\r\n imageCropping = baseImage.CropSettings;\r\n }\r\n\r\n // image smart effect\r\n if (!imageSmartEffect) {\r\n imageSmartEffect = convertEffectSettings(baseImage.EffectSettings);\r\n }\r\n\r\n // image flag\r\n if (baseImage.isMaunalCropped) {\r\n hasImageCroppingChanged = hasImageCroppingChanged || baseImage.isMaunalCropped();\r\n }\r\n\r\n // only set if there is placement level smart effect\r\n let placementSmartEffect = null;\r\n if (placement.EffectSettings && (!baseImage.EffectSettings || placement.EffectSettings.effectSrc !== baseImage.EffectSettings.effectSrc)) {\r\n placementSmartEffect = convertEffectSettings(placement.EffectSettings);\r\n }\r\n\r\n const {\r\n expandedImageCropSettings,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n } = getExpandedImagePlacementInfo(placement, imageSmartEffect || placementSmartEffect);\r\n\r\n // For some scenarios, such as image annotation, we don't want to use imageFitting for the search preview, because DE doesn't support it for now.\r\n const applyImageFitting = !placementMeta.ignoreImageFitting && isImageFittingEnabled;\r\n\r\n // placement info\r\n return {\r\n placementMeta,\r\n placementCropping: placement.CropSettings || null,\r\n // !baseImage.EffectSettings means smart effect is set on placement level\r\n placementSmartEffect,\r\n hasCroppingChanged: (placement.isMaunalCropped && placement.isMaunalCropped()) || false,\r\n isPlacementIncluded: placement.isIncluded || false,\r\n // mark this placment initialized\r\n hasImageExperienceData: true,\r\n expandedImageUrl: applyImageFitting ? expandedImageUrl : undefined,\r\n expandedImageWidth: applyImageFitting ? expandedImageWidth : undefined,\r\n expandedImageHeight: applyImageFitting ? expandedImageHeight : undefined,\r\n expandedImageCropSettings: applyImageFitting ? expandedImageCropSettings : undefined,\r\n };\r\n });\r\n\r\n // placement set\r\n const placementSet = {\r\n name: placementSetName,\r\n placementList,\r\n };\r\n return placementSet;\r\n });\r\n\r\n const previewImage = {\r\n imageMeta,\r\n imageCropping,\r\n imageSmartEffect,\r\n hasCroppingChanged: hasImageCroppingChanged,\r\n };\r\n\r\n // get previewImage and placementSets\r\n return { previewImage, placementSets };\r\n });\r\n\r\n return previewImageList;\r\n};\r\n\r\n// this hook is a wrapper on useAdPreviewModelCore, to initialize hook state by using imageList\r\n// returned from ImageExperience component\r\n// the imageList is a 2-dimensional array of type ImageExperienceImage, the first dimension is the 'Image',\r\n// and the second dimension is the 'Placement'\r\n//\r\n// @placementConfig: Array\r\nexport const useImageExperienceAdPreviewModel = (placementConfig, placeholderImage, isImageFittingEnabled) => {\r\n const {\r\n resetReducerStates,\r\n setPlacementConfig,\r\n multiImagePlacementSets,\r\n ...rest\r\n } = useAdPreviewModelCore();\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const isPlaceHolderImage = useCallback((imageMeta) => {\r\n const { url } = imageMeta || {};\r\n const placeHolderUrl = placeholderImage && (_.isString(placeholderImage) ? placeholderImage : placeholderImage.url);\r\n return url && placeHolderUrl && url === placeHolderUrl;\r\n }, [placeholderImage]);\r\n\r\n // only return the placementSets with image experience data\r\n const imageExperiencePlacementSets = useMemo(() => {\r\n let changed = false;\r\n const ret = _.map(multiImagePlacementSets, ({ placementSetName, placementList }) => {\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n const { images } = placement || [];\r\n const newImages = _.filter(images, ({ hasImageExperienceData, imageMeta }) => hasImageExperienceData || isPlaceHolderImage(imageMeta)) || [];\r\n changed = changed || newImages.length !== images.length;\r\n return { ...placement, images: newImages };\r\n });\r\n return { placementSetName, placementList: newPlacementList };\r\n });\r\n return changed ? ret : multiImagePlacementSets;\r\n }, [isPlaceHolderImage, multiImagePlacementSets]);\r\n\r\n const onUpdateImageExperienceImageList = useCallback((imageExperienceImageList, activeImageIndices, hasDataChanged) => {\r\n const previewImageListState = transformImageExperienceImageList(placementConfig, imageExperienceImageList, isImageFittingEnabled, isAdPreviewRefreshEnabled);\r\n if (!_.isEmpty(previewImageListState)) {\r\n const activeImageIndexList = previewImageListState && previewImageListState.map((img, index) => index);\r\n resetReducerStates({ previewImageListState, activeImageIndices: activeImageIndices || activeImageIndexList || [0], hasDataChanged });\r\n } else if (placeholderImage) {\r\n // use placeholder image if no image is set\r\n setPlacementConfig([{ image: placeholderImage, placementSets: placementConfig }]);\r\n }\r\n }, [isImageFittingEnabled, placeholderImage, placementConfig, resetReducerStates, setPlacementConfig, isAdPreviewRefreshEnabled]);\r\n\r\n return {\r\n onUpdateImageExperienceImageList,\r\n multiImagePlacementSets,\r\n imageExperiencePlacementSets,\r\n ...rest,\r\n };\r\n};\r\n","import {\r\n AdPreviewGridLayout as GridLayoutCore,\r\n AdPreviewSinglePlacementLayout as SinglePlacementLayoutCore,\r\n UnstyledAdPreviewCarouselLayout as UnstyledCarouselLayoutCore,\r\n //\r\n AdPlacementMmaWideImage4x1 as MmaWideImage4x1,\r\n AdPlacementMmaLandscapeImage191x100 as MmaLandscapeImage191x100,\r\n AdPlacementMmaSquareImage1x1 as MmaSquareImage1x1,\r\n AdPlacementMmaVerticalImage1x2 as MmaVerticalImage1x2,\r\n AdPreviewPlacementContainerBase as AdPreviewPlacementContainerBaseCore,\r\n //\r\n AdPlacementMmaInMsanWideImage191x100 as MmaInMsanWideImage191x100,\r\n AdPlacementMmaInMsanSquareImage1x1 as MmaInMsanSquareImage1x1,\r\n AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 as MmaInMsanMSEdgeSingleCarousel178x100,\r\n AdPlacementMmaInMsanMSNInArticle150x100 as MmaInMsanMSNInArticle150x100,\r\n AdPlacementMmaInMsanMSNSmallHeadline133x100 as MmaInMsanMSNSmallHeadline133x100,\r\n //\r\n AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 as MmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 as MmaInMsanV2MicrosoftEdgeMobile1x1,\r\n AdPlacementMmaInMsanV2MSANBanner2x1 as MmaInMsanV2MSANBanner2x1,\r\n AdPlacementMmaInMsanV2MSANRiver191x100 as MmaInMsanV2MSANRiver191x100,\r\n AdPlacementMmaInMsanV2MSANRectangle191x100 as MmaInMsanV2MSANRectangle191x100,\r\n AdPlacementMmaInMsanV2MSNCarousel169x100 as MmaInMsanV2MSNCarousel169x100,\r\n AdPlacementMmaInMsanV2MSNPartnerStripe153x100 as MmaInMsanV2MSNPartnerStripe153x100,\r\n AdPlacementMmaInMsanV2MSNRestoday124x100 as MmaInMsanV2MSNRestoday124x100,\r\n // Boost\r\n AdPlacementBoostHeroImageCarousel as BoostHeroImageCarousel,\r\n AdPlacementBoostWindowsSpotlight191x100 as BoostWindowsSpotlight191x100,\r\n AdPlacementBoostDiscoverCard1x1 as BoostDiscoverCard1x1,\r\n AdPlacementBoostStartMenu as BoostStartMenu,\r\n AdPlacementBoostActionCenter as BoostActionCenter,\r\n AdPlacementBoostBanner as BoostBanner,\r\n AdPlacementBoostProngFeed191x100 as BoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100 as BoostCoachmark175x100,\r\n //\r\n AdPlacementImgExtWideImage191x100 as ImgExtWideImage191x100,\r\n AdPlacementImgExtMSEdgeSingleCarousel178x100 as MSEdgeSingleCarousel178x100,\r\n AdPlacementImgExtBingDesktopSingleImage178x100 as BingDesktopSingleImage178x100,\r\n AdPlacementImgExtMSEdgeMediumHeadline172x100 as MSEdgeMediumHeadline172x100,\r\n AdPlacementImgExtMSNSingleCarousel169x100 as MSNSingleCarousel169x100,\r\n AdPlacementImgExtMSNMediumHeadline155x100 as MSNMediumHeadline155x100,\r\n AdPlacementImgExtMSNInArticle150x100 as MSNInArticle150x100,\r\n AdPlacementImgExtMSNSmallHeadline133x100 as MSNSmallHeadline133x100,\r\n AdPlacementImgExtBingDesktopMultiImage133x100 as BingDesktopMultiImage133x100,\r\n AdPlacementImgExtBingMobileMultiImage133x100 as BingMobileMultiImage133x100,\r\n AdPlacementImgExtSquareImage1x1 as SquareImage1x1,\r\n AdPlacementImgExtMSNDoubleCarousel93x100 as MSNDoubleCarousel93x100,\r\n //\r\n ResponsiveAdPlacementMmaLandscapeImage191x100 as ResponsiveMmaLandscapeImage191x100,\r\n ResponsiveAdPlacementMmaSquareImage1x1 as ResponsiveMmaSquareImage1x1,\r\n ResponsiveAdPlacementMmaVerticalImage1x2 as ResponsiveMmaVerticalImage1x2,\r\n ResponsiveAdPlacementMmaWideImage4x1 as ResponsiveMmaWideImage4x1,\r\n //\r\n ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 as ResponsiveMmaInMsanMSEdgeSingleCarousel178x100,\r\n ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 as ResponsiveMmaInMsanMSNInArticle150x100,\r\n ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 as ResponsiveMmaInMsanMSNSmallHeadline133x100,\r\n ResponsiveAdPlacementMmaInMsanSquareImage1x1 as ResponsiveMmaInMsanSquareImage1x1,\r\n ResponsiveAdPlacementMmaInMsanWideImage191x100 as ResponsiveMmaInMsanWideImage191x100,\r\n //\r\n ResponsiveAdPlacementBingSearchText as ResponsiveBingSearchText,\r\n ResponsiveAdPlacementOutlookMobile as ResponsiveOutlookMobile,\r\n ResponsiveAdPlacementOutlookWeb as ResponsiveOutlookWeb,\r\n //\r\n UAPPlacementType,\r\n UAPPlacementTypeAlias,\r\n //\r\n getAdPlacementComponent,\r\n //\r\n getPlacementListMetaDataByImageType,\r\n //\r\n UAPAdExtensionType,\r\n AdPreviewStructuredSnippetExtension as StructuredSnippetExtension,\r\n AdPreviewCalloutExtension as CalloutExtension,\r\n AdPreviewPriceExtension as PriceExtension,\r\n AdPreviewPromotionExtension as PromotionExtension,\r\n AdPreviewSitelinkExtension as SitelinkExtension,\r\n //\r\n AdPlacementDynamicSearch as DynamicSearch,\r\n //\r\n AdPlacementResponsiveSearch as ResponsiveSearch,\r\n AdPlacementResponsiveSearchDesktop as ResponsiveSearchDesktop,\r\n AdPlacementResponsiveSearchMobile as ResponsiveSearchMobile,\r\n //\r\n AdPlacementLinkedInSingleImageDesktop as LinkedInSingleImageDesktop,\r\n AdPlacementLinkedInSingleImageMobile as LinkedInSingleImageMobile,\r\n AdPlacementLinkedInSingleImageMediumRectangle as LinkedInSingleImageMediumRectangle,\r\n AdPlacementLinkedInSingleImageMobileInterstitial as LinkedInSingleImageMobileInterstitial,\r\n AdPlacementLinkedInSingleImageNative as LinkedInSingleImageNative,\r\n\r\n // app ads\r\n AppAdsVideoHorizontalPlacement as UnifiedAppAdsVideoHorizontalPlacement,\r\n AppAdsM365OutlookPlacement as UnifiedAppAdsM365OutlookPlacement,\r\n AppAdsCasualGamesDimensionsPlacement as UnifiedAppAdsCasualGamesDimensionsPlacement,\r\n AppAdsMSNDisplayPlacement as UnifiedAppAdsMSNDisplayPlacement,\r\n AppAdsBingSearchPlacement as UnifiedAppAdsBingSearchPlacement,\r\n\r\n getCropSettingsFromRoi,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-core';\r\n\r\nimport {\r\n AdPreviewCarouselLayoutWrapper,\r\n AdPreviewCarouselLayoutWrapperEx,\r\n} from './src/carousel-layout-wrapper';\r\nimport { withCMUITheme } from './with-cmui-theme';\r\n\r\n//\r\nimport { useAdPreviewModel } from './src/use-ad-preview-model-wrapper';\r\n\r\nexport const AdPreviewGridLayout = withCMUITheme(GridLayoutCore);\r\nexport const AdPreviewSinglePlacementLayout = withCMUITheme(SinglePlacementLayoutCore);\r\nexport const AdPreviewCarouselLayout = withCMUITheme(AdPreviewCarouselLayoutWrapper);\r\nexport const AdPreviewCarouselLayoutEx = withCMUITheme(AdPreviewCarouselLayoutWrapperEx);\r\nexport const UnstyledAdPreviewCarouselLayout = withCMUITheme(UnstyledCarouselLayoutCore);\r\n\r\nexport const AdPlacementMmaWideImage4x1 = withCMUITheme(MmaWideImage4x1);\r\nexport const AdPlacementMmaLandscapeImage191x100 = withCMUITheme(MmaLandscapeImage191x100);\r\nexport const AdPlacementMmaSquareImage1x1 = withCMUITheme(MmaSquareImage1x1);\r\nexport const AdPlacementMmaVerticalImage1x2 = withCMUITheme(MmaVerticalImage1x2);\r\nexport const AdPreviewPlacementContainerBase = withCMUITheme(AdPreviewPlacementContainerBaseCore);\r\n\r\nexport const AdPlacementMmaInMsanWideImage191x100 = withCMUITheme(MmaInMsanWideImage191x100);\r\nexport const AdPlacementMmaInMsanSquareImage1x1 = withCMUITheme(MmaInMsanSquareImage1x1);\r\nexport const AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withCMUITheme(MmaInMsanMSEdgeSingleCarousel178x100);\r\nexport const AdPlacementMmaInMsanMSNInArticle150x100 = withCMUITheme(MmaInMsanMSNInArticle150x100);\r\nexport const AdPlacementMmaInMsanMSNSmallHeadline133x100 = withCMUITheme(MmaInMsanMSNSmallHeadline133x100);\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 = withCMUITheme(MmaInMsanV2MicrosoftEdgeCarousel201x100);\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 = withCMUITheme(MmaInMsanV2MicrosoftEdgeMobile1x1);\r\nexport const AdPlacementMmaInMsanV2MSANBanner2x1 = withCMUITheme(MmaInMsanV2MSANBanner2x1);\r\nexport const AdPlacementMmaInMsanV2MSANRiver191x100 = withCMUITheme(MmaInMsanV2MSANRiver191x100);\r\nexport const AdPlacementMmaInMsanV2MSANRectangle191x100 = withCMUITheme(MmaInMsanV2MSANRectangle191x100);\r\nexport const AdPlacementMmaInMsanV2MSNCarousel169x100 = withCMUITheme(MmaInMsanV2MSNCarousel169x100);\r\nexport const AdPlacementMmaInMsanV2MSNPartnerStripe153x100 = withCMUITheme(MmaInMsanV2MSNPartnerStripe153x100);\r\nexport const AdPlacementMmaInMsanV2MSNRestoday124x100 = withCMUITheme(MmaInMsanV2MSNRestoday124x100);\r\n\r\nexport const AdPlacementBoostHeroImageCarousel = withCMUITheme(BoostHeroImageCarousel);\r\nexport const AdPlacementBoostWindowsSpotlight191x100 = withCMUITheme(BoostWindowsSpotlight191x100);\r\nexport const AdPlacementBoostDiscoverCard1x1 = withCMUITheme(BoostDiscoverCard1x1);\r\nexport const AdPlacementBoostStartMenu = withCMUITheme(BoostStartMenu);\r\nexport const AdPlacementBoostActionCenter = withCMUITheme(BoostActionCenter);\r\nexport const AdPlacementBoostBanner = withCMUITheme(BoostBanner);\r\nexport const AdPlacementBoostProngFeed191x100 = withCMUITheme(BoostProngFeed191x100);\r\nexport const AdPlacementBoostCoachmark175x100 = withCMUITheme(BoostCoachmark175x100);\r\n\r\nexport const AdPlacementImgExtWideImage191x100 = withCMUITheme(ImgExtWideImage191x100);\r\nexport const AdPlacementImgExtMSEdgeSingleCarousel178x100 = withCMUITheme(MSEdgeSingleCarousel178x100);\r\nexport const AdPlacementImgExtBingDesktopSingleImage178x100 = withCMUITheme(BingDesktopSingleImage178x100);\r\nexport const AdPlacementImgExtMSEdgeMediumHeadline172x100 = withCMUITheme(MSEdgeMediumHeadline172x100);\r\nexport const AdPlacementImgExtMSNSingleCarousel169x100 = withCMUITheme(MSNSingleCarousel169x100);\r\nexport const AdPlacementImgExtMSNMediumHeadline155x100 = withCMUITheme(MSNMediumHeadline155x100);\r\nexport const AdPlacementImgExtMSNInArticle150x100 = withCMUITheme(MSNInArticle150x100);\r\nexport const AdPlacementImgExtMSNSmallHeadline133x100 = withCMUITheme(MSNSmallHeadline133x100);\r\nexport const AdPlacementImgExtBingDesktopMultiImage133x100 = withCMUITheme(BingDesktopMultiImage133x100);\r\nexport const AdPlacementImgExtBingMobileMultiImage133x100 = withCMUITheme(BingMobileMultiImage133x100);\r\nexport const AdPlacementImgExtSquareImage1x1 = withCMUITheme(SquareImage1x1);\r\nexport const AdPlacementImgExtMSNDoubleCarousel93x100 = withCMUITheme(MSNDoubleCarousel93x100);\r\n\r\nexport const AdPlacementDynamicSearch = withCMUITheme(DynamicSearch);\r\n\r\nexport const AdPlacementResponsiveSearch = withCMUITheme(ResponsiveSearch);\r\nexport const AdPlacementResponsiveSearchDesktop = withCMUITheme(ResponsiveSearchDesktop);\r\nexport const AdPlacementResponsiveSearchMobile = withCMUITheme(ResponsiveSearchMobile);\r\n\r\nexport const ResponsiveAdPlacementMmaLandscapeImage191x100 = withCMUITheme(ResponsiveMmaLandscapeImage191x100);\r\nexport const ResponsiveAdPlacementMmaSquareImage1x1 = withCMUITheme(ResponsiveMmaSquareImage1x1);\r\nexport const ResponsiveAdPlacementMmaVerticalImage1x2 = withCMUITheme(ResponsiveMmaVerticalImage1x2);\r\nexport const ResponsiveAdPlacementMmaWideImage4x1 = withCMUITheme(ResponsiveMmaWideImage4x1);\r\nexport const ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withCMUITheme(ResponsiveMmaInMsanMSEdgeSingleCarousel178x100);\r\nexport const ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 = withCMUITheme(ResponsiveMmaInMsanMSNInArticle150x100);\r\nexport const ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 = withCMUITheme(ResponsiveMmaInMsanMSNSmallHeadline133x100);\r\nexport const ResponsiveAdPlacementMmaInMsanSquareImage1x1 = withCMUITheme(ResponsiveMmaInMsanSquareImage1x1);\r\nexport const ResponsiveAdPlacementMmaInMsanWideImage191x100 = withCMUITheme(ResponsiveMmaInMsanWideImage191x100);\r\nexport const ResponsiveAdPlacementBingSearchText = withCMUITheme(ResponsiveBingSearchText);\r\nexport const ResponsiveAdPlacementOutlookMobile = withCMUITheme(ResponsiveOutlookMobile);\r\nexport const ResponsiveAdPlacementOutlookWeb = withCMUITheme(ResponsiveOutlookWeb);\r\n\r\nexport const AdPlacementLinkedInSingleImageDesktop = withCMUITheme(LinkedInSingleImageDesktop);\r\nexport const AdPlacementLinkedInSingleImageMobile = withCMUITheme(LinkedInSingleImageMobile);\r\nexport const AdPlacementLinkedInSingleImageMediumRectangle = withCMUITheme(LinkedInSingleImageMediumRectangle);\r\nexport const AdPlacementLinkedInSingleImageMobileInterstitial = withCMUITheme(LinkedInSingleImageMobileInterstitial);\r\nexport const AdPlacementLinkedInSingleImageNative = withCMUITheme(LinkedInSingleImageNative);\r\n\r\nexport const AppAdsVideoHorizontalPlacement = withCMUITheme(UnifiedAppAdsVideoHorizontalPlacement);\r\nexport const AppAdsM365OutlookPlacement = withCMUITheme(UnifiedAppAdsM365OutlookPlacement);\r\nexport const AppAdsCasualGamesDimensionsPlacement = withCMUITheme(UnifiedAppAdsCasualGamesDimensionsPlacement);\r\nexport const AppAdsMSNDisplayPlacement = withCMUITheme(UnifiedAppAdsMSNDisplayPlacement);\r\nexport const AppAdsBingSearchPlacement = withCMUITheme(UnifiedAppAdsBingSearchPlacement);\r\n\r\nexport {\r\n UAPPlacementType,\r\n UAPPlacementTypeAlias,\r\n UAPAdExtensionType,\r\n useAdPreviewModel,\r\n getAdPlacementComponent,\r\n getPlacementListMetaDataByImageType,\r\n getCropSettingsFromRoi,\r\n};\r\n\r\nexport { getSmartCropSettingsFactory } from './src/get-smart-cropped-image';\r\n\r\nexport { useImageExperienceAdPreviewModel, PlacementType2AssociationTypeMap } from './src/use-image-experience-ad-preview-model';\r\n\r\nexport const AdPreviewStructuredSnippetExtension = withCMUITheme(StructuredSnippetExtension);\r\nexport const AdPreviewCalloutExtension = withCMUITheme(CalloutExtension);\r\nexport const AdPreviewPriceExtension = withCMUITheme(PriceExtension);\r\nexport const AdPreviewPromotionExtension = withCMUITheme(PromotionExtension);\r\nexport const AdPreviewSitelinkExtension = withCMUITheme(SitelinkExtension);\r\nexport const AdPreviewAdExtensionComponents = {\r\n [UAPAdExtensionType.SiteLink]: AdPreviewSitelinkExtension,\r\n [UAPAdExtensionType.Callout]: AdPreviewCalloutExtension,\r\n [UAPAdExtensionType.Promotion]: AdPreviewPromotionExtension,\r\n [UAPAdExtensionType.StructuredSnippet]: AdPreviewStructuredSnippetExtension,\r\n [UAPAdExtensionType.Price]: AdPreviewPriceExtension,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport { createUseStyles } from 'react-jss';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\n\r\nconst emptyTheme = { components: {}, core: {} };\r\nconst getDisplayName = Component => Component.displayName || Component.name || 'Component';\r\n\r\n// the purpose of the hoc is to deouple the wrapped components with a specific theme provider,\r\n// to make the library as independent as possible\r\n\r\n// use an external theme to decouple the wrapped components with a specific theme provider\r\nexport function withThemedStyles(WrappedComponent, getStyles, options) {\r\n const {\r\n prefixClassName, // the prefix of the class names generated by react-jss\r\n useRawStyles, // also pass down the themed styles to the wrapped component, which may be used in Fluent UI components\r\n componentName, // the description name of WrappedComponent\r\n } = options || {};\r\n\r\n const HOC = (props) => {\r\n // the theme is passed as a prop to the wrapped component, instead of getting if from some theme provider\r\n const { theme } = props;\r\n const { components, core } = theme || emptyTheme;\r\n // handle theme by ourselves instead of using the react-jss theming\r\n const themedStyles = useMemo(() => getStyles(components, core), [components, core]);\r\n const useStyles = useMemo(() => createUseStyles(themedStyles, prefixClassName ? { name: prefixClassName } : undefined), [themedStyles]);\r\n const classes = useStyles() || {};\r\n return (\r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withThemedStyles(${componentName || getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n return HOC;\r\n}\r\n\r\nexport const withUAPLThemedStyles = (WrappedComponent, getStyles, options) => withThemedStyles(WrappedComponent, getStyles, { ...options, prefixClassName: 'UAPL' });\r\n\r\n","const defaultAdsLabelStyles = {\r\n position: 'relative !important',\r\n padding: '.8px 4px !important',\r\n margin: '0 5px 0 0 !important',\r\n background: 'transparent !important',\r\n color: '#78718a !important',\r\n lineHeight: '1.364 !important',\r\n fontSize: '10px !important',\r\n fontWeight: '400 !important',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a !important',\r\n borderRadius: '4px !important',\r\n};\r\n\r\nexport const getMmaInMsanPlacementBaseStyles = () => ({\r\n placementCard: undefined,\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getMmaInMsanWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n // height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n width: '624px !important',\r\n },\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 100,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: '#fff !important',\r\n opacity: '0.7 !important',\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n // height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n // height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n // border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n\r\nexport const getMmaInMsanSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': defaultAdsLabelStyles,\r\n },\r\n});\r\n","const defaultAdsLabelStyles = {\r\n position: 'relative !important',\r\n padding: '.8px 4px !important',\r\n margin: '0 5px 0 0 !important',\r\n background: 'transparent !important',\r\n color: '#78718a !important',\r\n lineHeight: '1.364 !important',\r\n fontSize: '10px !important',\r\n fontWeight: '400 !important',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a !important',\r\n borderRadius: '4px !important',\r\n};\r\n\r\nexport const getMmaInMsanV2PlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: '1px solid #c8c8c8',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -145,\r\n },\r\n '&:hover $placementShortHeadline': {\r\n color: 'white',\r\n textDecoration: 'underline',\r\n },\r\n width: '612px !important',\r\n height: 304,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 55,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n overflow: 'hidden',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 0,\r\n padding: 16,\r\n fontSize: 10,\r\n color: '#bebebe',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n width: 592,\r\n height: 'auto',\r\n fontSize: 28,\r\n maxHeight: 108,\r\n fontWeight: '600',\r\n lineHeight: '36px',\r\n marginBottom: 0,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '4px 0 !important',\r\n margin: '9px 5px 5px 0px !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n background: 'transparent !important',\r\n color: 'rgba(255, 255, 255, 0.7) !important',\r\n borderRadius: '2px !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: 'rgba(255, 255, 255, 0.7) !important',\r\n background: 'transparent !important',\r\n border: '2px solid rgba(255, 255, 255, 0.3) !important',\r\n opacity: '1 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n },\r\n '& .business-name': {\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n padding: '0 0 0 4px !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANBanner2x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '360px !important',\r\n height: 88,\r\n padding: '0px !important',\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 180,\r\n height: 90,\r\n marginRight: 10,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(0, 0, 0, 0.83)',\r\n height: 45,\r\n margin: '8px 8px 8px 0',\r\n overflow: 'hidden',\r\n fontSize: 15,\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '2px 0 !important',\r\n borderRadius: '2px !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: 'rgba(46,46,46,.7) !important',\r\n fontSize: '11px !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANRiver191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n padding: '0px !important',\r\n },\r\n\r\n placementTextContainer: {\r\n width: 300,\r\n height: 147,\r\n padding: 12,\r\n background: 'linear-gradient(112.05deg, #FFFFFF 35.59%, #E1E1E1 100%)',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n position: 'relative',\r\n top: 0,\r\n color: '#1A1A1A',\r\n width: 268,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n fontSize: 20,\r\n lineHeight: 1.1,\r\n fontWeight: 600,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: '#4D4C4C',\r\n width: 268,\r\n fontSize: 14,\r\n fontFamily: 'Segoe UI Variable Static Text',\r\n fontStyle: 'normal',\r\n margin: '4px 0 0 0',\r\n lineHeight: 1.43,\r\n fontWeight: 400,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 270,\r\n padding: '4px 0 !important',\r\n margin: '9px 5px 0px 0px !important',\r\n fontSize: '11px !important',\r\n lineHeight: '15px !important',\r\n borderRadius: '2px !important',\r\n position: 'absolute',\r\n bottom: 11,\r\n background: 'transparent !important',\r\n\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: 'rgba(43,43,43,.8) !important',\r\n opacity: '1 !important',\r\n fontSize: '11px !important',\r\n lineHeight: '15px !important',\r\n fontFamily: 'Segoe UI Variable Static Small !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 0 0 4px !important',\r\n fontFamily: 'Segoe UI Variable Static Small !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 16,\r\n height: 16,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNCarousel169x100Styles = (theme) => {\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -80,\r\n },\r\n width: '628px !important',\r\n height: 372,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 120,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementLongHeadline: {\r\n width: 576,\r\n fontSize: 28,\r\n // maxHeight: 108,\r\n height: 108,\r\n fontWeight: 600,\r\n marginBottom: 0,\r\n color: 'white',\r\n lineHeight: '36px',\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: '#bebebe !important',\r\n opacity: '1 !important',\r\n border: 'unset !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n color: '#bebebe !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 12,\r\n height: 12,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNPartnerStripe153x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '302px !important',\r\n height: 296,\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n width: 282,\r\n height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n top: -6,\r\n color: '#2b2b2b',\r\n width: 282,\r\n height: 40,\r\n margin: 0,\r\n position: 'relative',\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n padding: '4px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n borderRadius: '2px !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n color: '#333 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSNRestoday124x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 100,\r\n padding: 3,\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 108,\r\n height: 84,\r\n margin: '8px 4px 0 8px',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 2,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: '#2b2b2b',\r\n height: 55,\r\n overflow: 'hidden',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n padding: '5px 0',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 177,\r\n padding: '8px 0 1px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 0 0 4px !important',\r\n margin: '9px 0 0 0 !important',\r\n },\r\n '& .ads-icon': {\r\n float: 'right',\r\n widht: 16,\r\n height: 16,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MSANRectangle120x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -200,\r\n },\r\n '&:hover $placementShortHeadline': {\r\n textDecoration: 'underline',\r\n },\r\n width: '300px !important',\r\n height: 250,\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 0,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n width: 268,\r\n fontSize: 20,\r\n fontFamily: 'Segoe UI Semibold',\r\n fontWeight: '200',\r\n lineHeight: '26px',\r\n marginBottom: 20,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n position: 'absolute',\r\n bottom: -10,\r\n fontWeight: '600',\r\n lineHeight: 1.364,\r\n fontSize: 12,\r\n padding: '2px 0 4px 0 !important',\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n fontSize: '12px !important',\r\n fontWeight: '600 !important',\r\n border: '.5px solid hsla(0,0%,100%,.7) !important',\r\n opacity: '1 !important',\r\n },\r\n '& .business-name': {\r\n padding: '0 !important',\r\n margin: '0 !important',\r\n color: 'hsla(0,0%,100%,.7) !important',\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2MicrosoftEdgeMobile1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n color: '#ddd',\r\n width: '240px !important',\r\n height: 90,\r\n padding: 3,\r\n background: '#fff',\r\n flexDirection: 'row !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'right',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n marginLeft: 8,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'black',\r\n height: 45,\r\n margin: '8px 0',\r\n overflow: 'hidden',\r\n fontSize: 14,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n lineHeight: '20px !important',\r\n fontFamily: 'Segoe UI',\r\n padding: '4px 0 !important',\r\n position: 'relative',\r\n top: 0.5,\r\n '& .ads-label': {\r\n ...defaultAdsLabelStyles,\r\n margin: '0 !important',\r\n color: '#2b2b2b !important',\r\n border: '.5px solid rgba(43, 43, 43, .3) !important',\r\n opacity: '1 !important',\r\n fontSize: '11px !important',\r\n },\r\n '& .business-name': {\r\n position: 'relative !important',\r\n padding: '12px !important',\r\n margin: '0 !important',\r\n color: '#2b2b2b !important',\r\n fontSize: '11px !important',\r\n },\r\n },\r\n };\r\n};\r\n","export const getBingSearchPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: {\r\n margin: '4px 8px 0 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 8,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n },\r\n placementLongHeadline: {\r\n height: 28,\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n overflow: 'hidden',\r\n width: '100%',\r\n },\r\n placementFinalUrl: {\r\n height: 20,\r\n fontSize: 14,\r\n color: '#0b6a0b',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'flex',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#767676 !important',\r\n border: '1px solid #ddd !important',\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline',\r\n opacity: '100% !important',\r\n padding: '0 2px !important',\r\n maxHeight: 16,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n borderRadius: '6px !important',\r\n },\r\n placementDescription: {\r\n color: '#333',\r\n display: 'inline-block',\r\n fontSize: 13,\r\n flexGrow: 1,\r\n },\r\n});\r\n\r\nexport const getBingSearchTextPlacementStyles = (theme) => {\r\n const { placementCard, placementTextContainer, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n width: 608,\r\n minHeight: 110,\r\n padding: '8px 16px',\r\n alignItems: 'flex-start',\r\n },\r\n placementTextContainer: {\r\n ...placementTextContainer,\r\n '& .logo-and-text-container .logo-text .logo-business-name': {\r\n color: '#666',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '22px',\r\n },\r\n },\r\n placementLogoContainer: {\r\n paddingRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getBingSearchTextDesktopPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n display: 'block',\r\n width: 530,\r\n height: 110,\r\n top: 0,\r\n padding: '8px 16px',\r\n boxShadow: 'none',\r\n // border: none;\r\n // border-radius: 5.11px;\r\n },\r\n bingSearchDesktopPlacementRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n '& .header-image': {\r\n position: 'relative',\r\n left: -16,\r\n height: 100,\r\n '& img': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getBingSearchTextMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n display: 'block',\r\n width: 608,\r\n border: '0.5px solid #ddd',\r\n height: 110,\r\n padding: '8px 16px',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: 5.11,\r\n },\r\n bingSearchMobilePlacementRoot: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n position: 'relative',\r\n width: 700,\r\n opacity: '100%',\r\n border: '5px solid #605e5c',\r\n borderRadius: '40px 40px 0 0',\r\n borderBottom: 'none',\r\n '& .bing-search-mobile-placement-parent': {\r\n margin: '45px 15px 0 15px',\r\n borderBottom: 'none',\r\n borderRadius: 0,\r\n paddingBottom: 1,\r\n\r\n '&:before': {\r\n position: 'absolute',\r\n top: 20,\r\n left: '50%',\r\n border: '5px solid #605e5c',\r\n content: '\"\"',\r\n borderRadius: 5,\r\n },\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","export const getOutlookPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'block',\r\n border: '1px solid #C8C8C8',\r\n margin: 'auto',\r\n overflow: 'hidden',\r\n position: 'relative !important',\r\n background: '#fff',\r\n boxSizing: 'content-box',\r\n boxShadow: 'none',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n placementShortHeadline: undefined,\r\n placementDescription: undefined,\r\n placementLogoContainer: undefined,\r\n});\r\n\r\nexport const getOutlookMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n width: 340,\r\n height: 80,\r\n borderRadius: '5.11px',\r\n padding: '5px 10px 5px 15px',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n fontSize: '10px !important',\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n color: 'black !important',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n marginTop: '0px !important',\r\n lineHeight: '30px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 15,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block !important',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n position: 'relative !important',\r\n fontSize: '10px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'unset !important',\r\n padding: 'unset !important',\r\n fontSize: 'unset !important',\r\n marginTop: 'unset !important',\r\n lineHeight: 'unset !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n fontSize: 13,\r\n marginTop: 2,\r\n fontWeight: 200,\r\n lineHeight: '19.5px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: 'black',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n\r\n placementLogoContainer: {\r\n paddingTop: 8,\r\n paddingRight: 16,\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getOutlookWebPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n outlookWebCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n margin: 'auto',\r\n },\r\n\r\n placementCard: {\r\n ...placementCard,\r\n minWidth: 500,\r\n borderRadius: 0,\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'inline',\r\n fontSize: '10px !important',\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'inline-block !important',\r\n margin: '0px 40px 0px 0px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 13,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block !important',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n opacity: '90% !important',\r\n top: -2.5,\r\n position: 'relative !important',\r\n fontSize: '10px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'black !important',\r\n fontSize: '10px !important',\r\n lineHeight: '16px !important',\r\n padding: '4px 0px !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n display: 'inline-block',\r\n color: 'blue',\r\n padding: 4,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n '&:before': {\r\n content: '\" \"',\r\n border: 'solid gray',\r\n display: 'inline-block',\r\n padding: '2px',\r\n transform: 'rotate(45deg) translateY(-3px)',\r\n borderWidth: '0 1.5px 1.5px 0',\r\n marginRight: 10,\r\n position: 'relative',\r\n left: -4,\r\n },\r\n '&::after': {\r\n content: '\"*\"',\r\n display: 'inline',\r\n padding: 4,\r\n color: 'gray',\r\n position: 'relative',\r\n left: 4,\r\n },\r\n },\r\n\r\n placementDescription: {\r\n display: 'inline-block',\r\n color: 'black',\r\n padding: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n padding: [2, 8, 2, 8],\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","const getLinkedInSingleImageBaseStyles = () => ({\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n },\r\n placementCardHeader: undefined,\r\n placementCardPreview: undefined,\r\n placementCardFooter: undefined,\r\n placementLogo: undefined,\r\n placementCompanyName: undefined,\r\n placementPromoteText: undefined,\r\n placementImageContainer: undefined,\r\n placementIntroductoryText: undefined,\r\n placementHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementCallToAction: undefined,\r\n});\r\n\r\nexport const getImageExtensionPlacementBaseStyles = () => ({\r\n});\r\nexport const getLinkedInSingleImageDesktopStyles = theme => ({\r\n // base styles\r\n ...getLinkedInSingleImageBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: '100%',\r\n gap: '0px !important',\r\n paddingLeft: '0px !important',\r\n paddingRight: '0px !important',\r\n paddingBottom: '0px !important',\r\n '--fui-Card--size': '9.39px !important',\r\n },\r\n placementCardHeader: {\r\n marginBottom: '4.69px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n flexDirection: 'column', // Stack company name and promote text vertically\r\n alignItems: 'center', // Align to the start of the flex container\r\n '--fui-CardHeader--gap': '4.69px !important',\r\n },\r\n placementLogo: {\r\n width: '20px',\r\n height: '20px',\r\n },\r\n placementCompanyName: {\r\n color: '#323130',\r\n fontFamily: 'Segoe UI',\r\n fontSize: 8.216,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n lineHeight: '11.737px',\r\n letterSpacing: '-0.293px',\r\n },\r\n placementPromoteText: {\r\n fontSize: '7.042px !important',\r\n color: '#323130',\r\n lineHeight: '11.737px !important',\r\n },\r\n placementIntroductoryText: {\r\n marginTop: '0px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n marginBottom: '4.69px',\r\n fontSize: '8.216px !important',\r\n },\r\n placementCardPreview: {\r\n display: 'flex',\r\n },\r\n placementImageContainer: {\r\n },\r\n placementCardFooter: {\r\n display: 'flex',\r\n paddingTop: '4.69px',\r\n paddingBottom: '4.69px',\r\n paddingLeft: '9.39px',\r\n paddingRight: '9.39px',\r\n borderWidth: '1px',\r\n justifyContent: 'space-between',\r\n background: '#ECF1F6',\r\n },\r\n placementHeadline: {\r\n margin: '0px !important',\r\n overflow: 'hidden !important',\r\n display: '-webkit-box !important',\r\n WebkitBoxOrient: 'vertical !important',\r\n WebkitLineClamp: '2 !important',\r\n padding: '0px !important',\r\n fontSize: '8.216px !important',\r\n fontWeight: '600 !important',\r\n color: '#323130 !important',\r\n },\r\n placementFinalUrl: {\r\n margin: '0px',\r\n padding: '0px',\r\n border: '0px',\r\n display: 'block !important',\r\n fontSize: '7.042px !important',\r\n color: '#323130 !important',\r\n },\r\n placementCallToAction: {\r\n cursor: 'pointer !important',\r\n textDecorationLine: 'none !important',\r\n minHeight: '22px !important',\r\n minWidth: '0px !important',\r\n borderRadius: '11.737px !important',\r\n textAlign: 'center !important',\r\n fontSize: '8.216px !important',\r\n fontWeight: '700 !important',\r\n lineHeight: '9.389px !important',\r\n boxShadow: '0 0 0 1px #0a66c2 !important',\r\n color: '#004182 !important',\r\n display: 'flex',\r\n height: 14.084,\r\n padding: '3.521px 7.042px',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: '#ECF1F6 !important',\r\n },\r\n\r\n});\r\n\r\nexport const getLinkedInSingleImageMobileStyles = theme => ({\r\n ...getLinkedInSingleImageDesktopStyles(theme),\r\n});\r\n\r\nexport const getLinkedInSingleImageMediumRectangleStyles = theme => ({\r\n // base styles\r\n ...getLinkedInSingleImageBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: '100%',\r\n '--fui-Card--size': '9.39px !important',\r\n },\r\n placementLogo: {\r\n width: '10px !important',\r\n height: '10px !important',\r\n },\r\n placementCompanyName: {\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '600 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n WebkitLineClamp: '1 !important',\r\n WebkitBoxOrient: 'vertical !important',\r\n marginLeft: '5px !important',\r\n },\r\n placementCardPreview: {\r\n display: 'flex !important',\r\n },\r\n placementCardFooter: {\r\n display: 'flex !important',\r\n flexDirection: 'column !important',\r\n paddingTop: '9.39px',\r\n gap: '9.39px !important',\r\n },\r\n placementHeadline: {\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '700 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n display: '-webkit-box !important',\r\n },\r\n placementCompanyMeta: {\r\n display: '-webkit-flex !important',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n alignItems: 'flex-end',\r\n justifyContent: 'space-between',\r\n },\r\n placementCallToAction: {\r\n display: 'flex !important',\r\n padding: '2.004px 5.344px !important',\r\n justifyContent: 'center !important',\r\n alignItems: 'center !important',\r\n borderRadius: '2.725px !important',\r\n background: '#355996 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '400 !important',\r\n lineHeight: '11px !important',\r\n color: '#FFFFFF !important',\r\n minWidth: '0px !important',\r\n },\r\n});\r\n\r\nexport const getLinkedInSingleImageMobileInterstitialStyles = theme => ({\r\n ...getLinkedInSingleImageMediumRectangleStyles(theme),\r\n\r\n placementIntroductoryText: {\r\n height: '60.891px !important',\r\n flexShrink: '0 !important',\r\n alignSelf: 'stretch !important',\r\n color: '#323130 !important',\r\n fontFamily: 'Segoe UI !important',\r\n fontSize: '8.216px !important',\r\n fontStyle: 'normal !important',\r\n fontWeight: '600 !important',\r\n lineHeight: '11.737px !important',\r\n letterSpacing: '-0.293px !important',\r\n },\r\n placementCompanyMeta: {\r\n display: '-webkit-flex !important',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n gap: '5.87px',\r\n },\r\n});\r\n\r\nexport const getLinkedInSingleImageNativeStyles = theme => ({\r\n ...getLinkedInSingleImageMediumRectangleStyles(theme),\r\n\r\n placementCardHeader: {\r\n alignItems: 'center !important',\r\n flexDirection: 'column !important',\r\n '--fui-CardHeader--gap': '4.69px !important',\r\n },\r\n placementLogo: {\r\n width: '20px',\r\n height: '20px',\r\n },\r\n placementCompanyName: {\r\n color: '#323130',\r\n fontFamily: 'Segoe UI',\r\n fontSize: 8.216,\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n lineHeight: '11.737px',\r\n letterSpacing: '-0.293px',\r\n },\r\n placementHeader: {\r\n display: '-webkit-flex !important',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n gap: '5.87px',\r\n },\r\n placementPromoteText: {\r\n fontSize: '7.042px !important',\r\n color: '#323130',\r\n lineHeight: '11.737px !important',\r\n },\r\n placementIntroductoryText: {\r\n fontSize: '8.216px !important',\r\n },\r\n placementCardFooter: {\r\n paddingTop: '9.39px',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row !important',\r\n },\r\n});\r\n","export const getBoostPlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: '1px solid #c8c8c8',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: {\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getBoostHeroImageCarouselStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n maxWidth: '40%',\r\n minWidth: 100,\r\n top: '25%',\r\n left: '12%',\r\n padding: 15,\r\n borderRadius: 1,\r\n color: '#333',\r\n backgroundColor: 'rgba(255, 255, 255, 0.85)',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontSize: 16,\r\n marginBottom: 4,\r\n fontWeight: 'bold',\r\n },\r\n\r\n placementDescription: {\r\n },\r\n\r\n placementCallToAction: {\r\n color: 'white',\r\n backgroundColor: '#0067b8',\r\n border: 'none',\r\n marginTop: 4,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostWindowsSpotlight191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n /*\r\n todo: setting position and top/left here to make it look exactly same as\r\n current preview but setting loation of placement in this level is not a\r\n good idea, as it may limit the usage of this component in other places\r\n */\r\n position: 'absolute !important',\r\n margin: '0 !important',\r\n left: '50%',\r\n top: '45% !important',\r\n transform: 'translate(-50%, -50%)',\r\n width: '444x !important',\r\n height: '250px !important',\r\n\r\n '& .hardcode-time': {\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n top: 40,\r\n left: '50%',\r\n color: 'white',\r\n transform: 'translate(-50%)',\r\n lineHeight: '22px',\r\n '& .time': {\r\n fontSize: 30,\r\n },\r\n '& .date': {\r\n fontSize: 7,\r\n paddingLeft: 5,\r\n },\r\n },\r\n },\r\n placementTextContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n top: 12,\r\n left: 'unset',\r\n right: 10,\r\n bottom: 'unset',\r\n width: 130,\r\n height: 130,\r\n padding: 10,\r\n color: 'white',\r\n opacity: 0.8,\r\n fontSize: 8,\r\n lineHeight: '16px',\r\n borderRadius: 5,\r\n background: 'transparent',\r\n },\r\n placementCenterSection: {\r\n position: 'absolute',\r\n top: 118,\r\n left: 205,\r\n width: 60,\r\n fontSize: 14,\r\n },\r\n placementSearchIconCenter: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 21,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementHotspotsCenterSection: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementTopRightSection: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 25,\r\n width: 60,\r\n },\r\n placementCameraIcon: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 20,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementLongHeadline: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 2,\r\n lineHeight: '5px',\r\n },\r\n placementTopLeftSection: {\r\n position: 'absolute',\r\n top: 0,\r\n left: -280,\r\n width: 60,\r\n },\r\n placementSearchIconTopLeft: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 20,\r\n width: 18,\r\n height: 18,\r\n },\r\n placementHotspotsLeftSection: {\r\n color: 'white',\r\n fontSize: 5,\r\n textAlign: 'center',\r\n marginTop: 13,\r\n lineHeight: '5px',\r\n },\r\n placementWifiIcon: {\r\n position: 'absolute',\r\n top: 235,\r\n left: 410,\r\n width: 10,\r\n height: 10,\r\n },\r\n placementBatteryIcon: {\r\n position: 'absolute',\r\n top: 235,\r\n left: 425,\r\n width: 9,\r\n height: 9,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostDiscoverCard1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '288px !important',\r\n height: 424,\r\n borderRadius: '5px !important',\r\n\r\n '& .hardcode-discover': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n color: 'rgb(50, 49, 48)',\r\n width: '100%',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n paddingLeft: 10,\r\n borderBottom: '1px solid rgb(232, 232, 232)',\r\n padding: '12px 0px 12px 16px',\r\n lineHeight: 1.4,\r\n },\r\n },\r\n placementImageContainer: {\r\n position: 'absolute',\r\n top: 44,\r\n width: 256,\r\n height: 210,\r\n padding: '0px 24px',\r\n margin: '16px 16px 0px',\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n width: 256,\r\n top: 286,\r\n left: 16,\r\n color: 'black',\r\n fontSize: 16,\r\n fontWeight: 600,\r\n paddingBottom: 10,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n top: 314,\r\n left: 16,\r\n color: 'black',\r\n fontSize: 12,\r\n width: 256,\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 364,\r\n left: 16,\r\n border: 'none',\r\n padding: 0,\r\n fontSize: 12,\r\n borderRadius: 5,\r\n backgroundColor: 'transparent',\r\n height: 60,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostStartMenuStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '244px !important',\r\n height: 68,\r\n backgroundColor: '#262632 !important',\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 40,\r\n left: 4,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n left: 4,\r\n top: 8,\r\n width: 236,\r\n height: 16,\r\n fontSize: 12,\r\n fontWeight: 400,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'absolute',\r\n left: 40,\r\n top: 35,\r\n color: 'white',\r\n fontSize: 12,\r\n width: 204,\r\n height: 32,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostActionStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '360px !important',\r\n height: 216,\r\n backgroundColor: '#e8e9eb !important',\r\n zIndex: 1,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 57,\r\n left: 35,\r\n width: 45,\r\n height: 45,\r\n zIndex: 3,\r\n },\r\n placementSuggestedContainer: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n width: 360,\r\n height: 40,\r\n },\r\n placementVectorIcon: {\r\n position: 'absolute',\r\n color: 'black',\r\n width: 16,\r\n height: 16,\r\n top: 16,\r\n left: 117,\r\n },\r\n placementSuggestedText: {\r\n position: 'absolute',\r\n color: 'black',\r\n fontSize: 14,\r\n lineHeight: '16px',\r\n fontWeight: 600,\r\n width: 81,\r\n height: 20,\r\n top: 15,\r\n left: 135,\r\n textAlign: 'center',\r\n },\r\n placementDetailsContainer: {\r\n position: 'absolute',\r\n left: 16,\r\n top: 40,\r\n width: 328,\r\n height: 160,\r\n backgroundColor: 'white',\r\n zIndex: 2,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n left: 90,\r\n top: 16,\r\n color: 'black',\r\n width: 191,\r\n height: 20,\r\n fontSize: 14,\r\n fontWeight: 600,\r\n lineHeight: '20px',\r\n paddingBottom: 5,\r\n zIndex: 3,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n left: 90,\r\n top: 37,\r\n color: 'black',\r\n fontSize: 12,\r\n width: 191,\r\n height: 67,\r\n fontWeight: 400,\r\n lineHeight: '20px',\r\n zIndex: 3,\r\n },\r\n placementActionContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n position: 'absolute',\r\n top: 150,\r\n left: 28,\r\n width: 305,\r\n height: 30,\r\n // margin: '0 10px',\r\n gap: 7,\r\n zIndex: 3,\r\n },\r\n placementCallToAction: {\r\n color: 'black',\r\n width: 149,\r\n height: 30,\r\n border: '0.93px outset rgba(0, 0, 0, 0.0878)',\r\n borderRadius: '3.72px',\r\n boxShadow: 'rgba(0, 0, 0, 0.2622) 0.1px 0.53px 0.1px 0.1px',\r\n padding: '0.93px',\r\n backgroundColor: 'white',\r\n },\r\n placementDismissAction: {\r\n color: 'black',\r\n width: 149,\r\n height: 30,\r\n border: '0.93px outset rgba(0, 0, 0, 0.0878)',\r\n borderRadius: '3.72px',\r\n boxShadow: 'rgba(0, 0, 0, 0.2622) 0.1px 0.53px 0.1px 0.1px',\r\n padding: '0.93px',\r\n backgroundColor: 'white',\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostBannerStyles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '600px !important',\r\n height: 35,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 10,\r\n transform: 'translateY(-50%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 40,\r\n color: 'black',\r\n width: 220,\r\n fontSize: 12,\r\n transform: 'translateY(-50%)',\r\n paddingBottom: 5,\r\n },\r\n placementActionContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n top: 1,\r\n bottom: 0,\r\n right: 30,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n border: 'none',\r\n padding: '5px 10px',\r\n borderRadius: 10,\r\n backgroundColor: '#0078d4',\r\n marginRight: 10,\r\n },\r\n placementDismissAction: {\r\n color: 'black',\r\n border: 'none',\r\n padding: '5px 10px',\r\n borderRadius: 10,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostProngFeed191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n background: 'linear-gradient(140.53deg, #F5F7E1 9.32%, #CDF0FF 58.45%) !important',\r\n borderRadius: '8px !important',\r\n border: '1px solid rgba(0, 0, 0, 0.0578)',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.04)',\r\n },\r\n placementImageContainer: {\r\n position: 'absolute',\r\n top: 48,\r\n left: 16,\r\n width: 268,\r\n height: 140,\r\n },\r\n placementLogoContainer: {\r\n position: 'absolute',\r\n top: 16,\r\n left: 16,\r\n width: 16,\r\n height: 16,\r\n },\r\n placementBusinessNameContainer: {\r\n position: 'absolute',\r\n top: 16,\r\n left: 40,\r\n width: 28,\r\n height: 20,\r\n color: 'rgba(26, 26, 26, 1) !important',\r\n padding: '0 !important',\r\n },\r\n placementLongHeadline: {\r\n position: 'absolute',\r\n width: '268px !important',\r\n top: 200,\r\n left: 16,\r\n height: 72,\r\n color: 'rgba(26, 26, 26, 1)',\r\n fontSize: 18,\r\n fontWeight: 600,\r\n lineHeight: '23.94px',\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 272,\r\n left: 106,\r\n width: 91,\r\n height: 24,\r\n fontSize: 12,\r\n fontWeight: 400,\r\n color: 'rgba(26, 26, 26, 1)',\r\n background: 'rgba(255, 255, 255, 0.46)',\r\n border: '1px solid',\r\n borderImageSource: 'linear-gradient(180deg, rgba(0, 0, 0, 0.0578) 90.58%, rgba(0, 0, 0, 0.1622) 100%)',\r\n borderRadius: '100px',\r\n marginTop: 4,\r\n },\r\n placementDotsIcon: {\r\n position: 'absolute',\r\n top: 10,\r\n right: 10,\r\n width: 28,\r\n height: 28,\r\n },\r\n };\r\n};\r\n\r\nexport const getBoostCoachmark175x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostPlacementBaseStyles(theme);\r\n\r\n return {\r\n ...baseStyles,\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '280px !important',\r\n height: 300,\r\n },\r\n placementShortHeadline: {\r\n position: 'absolute',\r\n top: 180,\r\n left: 20,\r\n right: 20,\r\n color: 'black',\r\n fontWeight: 'bold',\r\n fontSize: 20,\r\n paddingBottom: 5,\r\n },\r\n placementDescription: {\r\n position: 'absolute',\r\n top: 210,\r\n left: 20,\r\n color: 'black',\r\n fontSize: 20,\r\n },\r\n placementCallToAction: {\r\n position: 'absolute',\r\n top: 260,\r\n left: 20,\r\n fontSize: 15,\r\n color: 'white',\r\n border: 'none',\r\n padding: '8px',\r\n borderRadius: 5,\r\n backgroundColor: '#0078d4',\r\n },\r\n };\r\n};\r\n\r\nexport const getResponsiveBoostWindowsSpotlight191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getBoostWindowsSpotlight191x100Styles(theme);\r\n\r\n return baseStyles;\r\n};\r\n","import { extend } from 'underscore';\r\n\r\nexport const getDisclaimerStyles = ({ styleOverrides }) => (e, { palette = {} }) => (\r\n {\r\n additionalLineDisclaimer: extend({\r\n color: palette.themePrimary,\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n paddingLeft: '2px',\r\n }, styleOverrides.additionalLineDisclaimer),\r\n\r\n popupDisclaimer: extend({\r\n '& .disclaimer-title': {\r\n backgroundColor: 'white',\r\n color: '#767676',\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n textDecoration: 'underline',\r\n paddingLeft: '2px',\r\n border: 'none',\r\n },\r\n }, styleOverrides.popupDisclaimer),\r\n\r\n disclaimerCallout: extend({\r\n '& .ms-Callout-main': {\r\n width: '250px',\r\n padding: '15px',\r\n },\r\n '& button.close': {\r\n backgroundColor: 'white',\r\n border: 'none',\r\n float: 'right',\r\n marginTop: '-7px',\r\n },\r\n '& .title': {\r\n color: '#767676',\r\n marginBottom: '10px',\r\n },\r\n '& .content': {\r\n marginBottom: '3px',\r\n },\r\n '& .disclaimer-url': {\r\n color: palette.themePrimary,\r\n fontSize: '13px',\r\n lineHeight: '24px',\r\n },\r\n }, styleOverrides.disclaimerCallout),\r\n }\r\n);\r\n","import {\r\n getBingSearchTextPlacementStyles,\r\n getBingSearchTextDesktopPlacementStyles,\r\n getBingSearchTextMobilePlacementStyles,\r\n} from './bing-search-ad-placements-styles';\r\n\r\nconst getResponsiveSearchAdPlacementBaseStyles = baseStyles => (\r\n {\r\n ...baseStyles,\r\n\r\n placementContentContainer: {\r\n ...baseStyles.placementContentContainer,\r\n\r\n display: 'flex',\r\n },\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n\r\n height: 'unset',\r\n minHeight: 'unset',\r\n padding: '8px 16px 16px 16px',\r\n },\r\n\r\n placementTextContainer: {\r\n ...baseStyles.placementTextContainer,\r\n\r\n cursor: 'unset',\r\n },\r\n\r\n placementLongHeadline: {\r\n ...baseStyles.placementLongHeadline,\r\n\r\n height: 'unset',\r\n minHeight: '28px',\r\n },\r\n\r\n placementDescriptionContainer: {\r\n ...baseStyles.placementDescriptionContainer,\r\n\r\n marginTop: '4px',\r\n },\r\n\r\n placementInlineItems: {\r\n ...baseStyles.placementInlineItems,\r\n\r\n display: 'block',\r\n\r\n '& *': {\r\n display: 'inline',\r\n },\r\n },\r\n }\r\n);\r\n\r\nexport const getResponsiveSearchAdPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextPlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '530px',\r\n marginBottom: '16px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 4px',\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveSearchAdDesktopPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextDesktopPlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '530px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 16px 8px 4px',\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveSearchAdMobilePlacementStyles = (theme) => {\r\n const { placementCard, bingSearchMobilePlacementRoot, ...baseStyles } = getResponsiveSearchAdPlacementBaseStyles(getBingSearchTextMobilePlacementStyles(theme));\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n\r\n width: '472px',\r\n },\r\n\r\n bingSearchMobilePlacementRoot: {\r\n ...bingSearchMobilePlacementRoot,\r\n\r\n width: '562px',\r\n marginBottom: '16px',\r\n },\r\n\r\n placementImage: {\r\n ...baseStyles.placementImage,\r\n\r\n margin: '8px 0px',\r\n },\r\n };\r\n return styles;\r\n};\r\n","// will replace mma-in-masn-v2-ad-placements-styles after ad preview refreshed GA\r\nexport const getMmaInMsanV2PlacementBaseStyles = () => ({\r\n placementCard: {\r\n // border: '1px solid #c8c8c8',\r\n // boxShadow: 'unset !important',\r\n // borderRadius: '0px !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementInfoContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementLogoContainer: undefined,\r\n placementBusinessNameContainer: undefined,\r\n placementShortHeadline: undefined,\r\n businuessAndLogoContainer: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementCallToActionAsLink: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n businuessAndAdChoiceContainer: undefined,\r\n adsLabelClassName: undefined,\r\n headChoiceIconClassName: undefined,\r\n adsLabelContainerClassName: undefined,\r\n});\r\n\r\nexport const getMmaInMsanV2RefreshedMSANRiver191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 304,\r\n padding: '0px !important',\r\n border: '1px solid rgba(0, 0, 0, 0.05)',\r\n },\r\n\r\n placementImageContainer: {\r\n width: 300,\r\n height: 157,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n width: 300,\r\n height: 147,\r\n },\r\n\r\n placementInfoContainer: {\r\n height: 107,\r\n padding: '12px 16px 0',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(36, 36, 36,1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: '26px',\r\n marginBottom: 4,\r\n height: 52,\r\n },\r\n\r\n placementDescription: {\r\n color: 'rgba(36, 36, 36,1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 40,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n headChoiceIconClassName: {\r\n marginRight: 8,\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n\r\n placementCallToAction: {\r\n border: '1px solid rgba(209, 209, 209, 1)',\r\n padding: '3px 8px',\r\n borderRadius: '4px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n placementCallToActionAsLink: {\r\n border: 'none',\r\n color: 'rgba(35, 92, 207, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNRestoday124x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 100,\r\n borderRadius: '6px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n boxSizing: 'border-box',\r\n width: 112,\r\n height: '100%',\r\n padding: '8px 8px 8px 0',\r\n ...baseStyles.placementImageContainer,\r\n '& .cropped-image-view': {\r\n borderRadius: '4px !important',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n flexGrow: 1,\r\n height: '100%',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n marginBottom: 4,\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementInfoContainer: {\r\n height: 68,\r\n padding: '8px 8px 0',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 32,\r\n boxSizing: 'border-box',\r\n padding: '0px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNCarousel169x100Styles = (theme) => {\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '628px !important',\r\n height: 372,\r\n borderRadius: '6px !important',\r\n boxShadow: 'none !important',\r\n },\r\n\r\n placementImageContainer: {\r\n width: '100%',\r\n height: '100%',\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: '100%',\r\n height: '194px',\r\n background: 'linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.54) 100%)',\r\n },\r\n\r\n placementInfoContainer: {\r\n paddingTop: '80px',\r\n height: '150px',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementLongHeadline: {\r\n padding: '0px 16px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '28px',\r\n lineHeight: '35px',\r\n color: 'rgba(255, 255, 255, 1)',\r\n display: '-webkit-box',\r\n '-webkit-box-orient': 'vertical',\r\n '-webkit-line-clamp': 2, /* Limit to 2 lines */\r\n overflow: 'hidden',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 44,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n marginRight: 8,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n borderColor: 'rgba(255, 255, 255, 0.3) !important',\r\n color: 'white !important',\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n flexGrow: 1,\r\n color: 'white',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n borderRadius: '8px !important',\r\n width: '612px !important',\r\n height: 304,\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: '100%',\r\n height: '280px',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '178px !important',\r\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50.03%, rgba(30, 30, 30, 0.34) 88.85%, rgba(0, 0, 0, 0.44) 100%)',\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '12px 16px 0px',\r\n minHeight: '62px',\r\n boxSizing: 'border-box',\r\n background: 'linear-gradient(360deg, rgba(0, 0, 0, 0.54) 5.47%, rgba(0, 0, 0, 0.54) 55.63%, rgba(0, 0, 0, 0.49) 78.44%, rgba(0, 0, 0, 0.475) 89.43%, rgba(0, 0, 0, 0.44) 100%)',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 8,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'white',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'white',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '20px',\r\n lineHeight: '26px',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 40,\r\n boxSizing: 'border-box',\r\n padding: '0px 16px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: 'var(--backplate-text-backplate-on-image-text-backplate-54451, rgba(0, 0, 0, 0.54))',\r\n },\r\n\r\n headChoiceIconClassName: {\r\n marginRight: 8,\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n borderColor: 'rgba(255, 255, 255, 0.3) !important',\r\n color: 'white !important',\r\n },\r\n\r\n placementCallToAction: {\r\n border: '1px solid',\r\n borderImageSource: 'linear-gradient(180deg, rgba(0, 0, 0, 0.0578) 90.58%, rgba(0, 0, 0, 0.1622) 100%)',\r\n padding: '3px 8px',\r\n borderRadius: '4px',\r\n color: 'rgba(255, 255, 255, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'rgba(255, 255, 255, 0.15)',\r\n },\r\n\r\n placementCallToActionAsLink: {\r\n border: 'none',\r\n color: 'white',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n backgroundColor: 'transparent',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '306px !important',\r\n height: 300,\r\n borderRadius: '4px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n },\r\n\r\n placementImageContainer: {\r\n height: 200,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '8px 8px 0px',\r\n marginBottom: 24,\r\n height: 52,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '16px',\r\n lineHeight: '22px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n padding: '0px 8px',\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSANBanner2x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '396px !important',\r\n height: 100,\r\n borderRadius: '6px !important',\r\n boxShadow: '0px 0px 2.9px 0px rgba(0, 0, 0, 0.11), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n width: 200,\r\n height: 100,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n height: 100,\r\n },\r\n\r\n placementInfoContainer: {\r\n padding: '8px 8px 0',\r\n marginBottom: 20,\r\n height: 48,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 32,\r\n boxSizing: 'border-box',\r\n padding: '0px 8px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n marginRight: 6,\r\n height: 16,\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n\r\n return {\r\n\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '398px !important',\r\n height: 145,\r\n padding: '16px',\r\n background: '#fff',\r\n borderRadius: '4px !important',\r\n border: '0.5px solid var(--Neutral-Stroke-3-Rest, rgba(240, 240, 240, 1))',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.04) !important',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse !important',\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n width: 114,\r\n height: 114,\r\n marginLeft: 16,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n height: 16,\r\n width: 16,\r\n marginRight: 4,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n placementTextContainer: {\r\n flexGrow: 1,\r\n },\r\n\r\n placementInfoContainer: {\r\n marginBottom: 18,\r\n height: 80,\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(36, 36, 36,1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n height: 16,\r\n boxSizing: 'border-box',\r\n padding: '0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n adsLabelContainerClassName: {\r\n flexGrow: 1,\r\n height: 16,\r\n },\r\n\r\n adsLabelClassName: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n };\r\n};\r\n\r\nexport const getMmaInMsanV2RefreshedMSANRectangle191x100Styles = (theme) => {\r\n // base styles\r\n const baseStyles = getMmaInMsanV2PlacementBaseStyles(theme);\r\n return {\r\n placementCard: {\r\n ...baseStyles.placementCard,\r\n width: '300px !important',\r\n height: 250,\r\n borderRadius: '6px !important',\r\n },\r\n\r\n placementImageContainer: {\r\n height: 157,\r\n ...baseStyles.placementImageContainer,\r\n },\r\n\r\n placementTextContainer: {\r\n padding: '8px 16px',\r\n },\r\n\r\n placementInfoContainer: {\r\n width: 224,\r\n paddingTop: '6px',\r\n height: 77,\r\n boxSizing: 'border-box',\r\n },\r\n\r\n businuessAndLogoContainer: {\r\n display: 'flex',\r\n marginBottom: 4,\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 16,\r\n marginRight: 4,\r\n '& .cropped-image-view': {\r\n borderRadius: '2px !important',\r\n '& img': {\r\n verticalAlign: 'top',\r\n },\r\n },\r\n },\r\n\r\n placementBusinessNameContainer: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n color: 'rgba(97, 97, 97, 1)',\r\n },\r\n\r\n placementShortHeadline: {\r\n color: 'rgba(26, 26, 26, 1)',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '18px',\r\n lineHeight: '19px',\r\n },\r\n\r\n smallSizeHeadline: {\r\n fontSize: '14px',\r\n },\r\n\r\n customizedArea: {\r\n position: 'absolute',\r\n right: '16px',\r\n bottom: '28.5px',\r\n },\r\n\r\n placementDescription: {\r\n marginTop: 4,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '400',\r\n fontZize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(26, 26, 26, 1)',\r\n },\r\n\r\n businuessAndAdChoiceContainer: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n width: '16px',\r\n height: '16px',\r\n borderBottomLeftRadius: '5px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\r\n },\r\n };\r\n};\r\n","export const getOutlookMobileRefreshedPlacementStyles = () => {\r\n const styles = {\r\n outlookWebCardRoot: {\r\n margin: 'auto',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflowX: 'auto',\r\n },\r\n\r\n placementCard: {\r\n width: 375,\r\n height: 85,\r\n padding: '10px 16px 10px 0px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: 'rgba(245, 245, 245, 1)',\r\n },\r\n },\r\n\r\n unreadClassName: {\r\n margin: '0px 4px',\r\n height: 8,\r\n width: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n position: 'relative',\r\n height: '100%',\r\n width: 293,\r\n },\r\n\r\n adsLabelClassName: {\r\n position: 'absolute',\r\n right: 26,\r\n top: 3,\r\n width: 24,\r\n height: '18px !important',\r\n borderRadius: '2px !important',\r\n border: '1px solid rgba(0, 120, 212, 1) !important',\r\n padding: '0px 4px !important',\r\n boxSizing: 'border-box !important',\r\n textAlign: 'center !important',\r\n fontWeight: '400 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n color: 'rgba(0, 120, 212, 1) !important',\r\n },\r\n\r\n threeDot: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 3,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontFamily: 'Segoe UI',\r\n fontSize: 14,\r\n fontWeight: 600,\r\n lineHeight: '20px',\r\n color: 'rgba(15, 108, 189, 1)',\r\n },\r\n\r\n descriptionWithAction: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center',\r\n },\r\n\r\n placementCallToAction: {\r\n flexShrink: 0,\r\n height: '24px',\r\n borderRadius: '4px',\r\n border: '1px solid rgba(209, 209, 209, 1)',\r\n backgroundColor: 'transparent',\r\n padding: '0px 8px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: 12,\r\n lineHeight: '22px',\r\n color: 'rgba(36, 36, 36, 1)',\r\n marginLeft: '4px',\r\n boxSizing: 'border-box',\r\n },\r\n\r\n placementDescription: {\r\n color: 'rgba(97, 97, 97, 1)',\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n flexGrow: 1,\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 38,\r\n marginRight: 13,\r\n '& .cropped-image-view': {\r\n borderRadius: '50% !important',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getOutlookWebRefreshedPlacementStyles = () => {\r\n const styles = {\r\n outlookWebCardRoot: {\r\n margin: 'auto',\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n overflowX: 'auto',\r\n },\r\n\r\n placementCard: {\r\n width: 1089,\r\n height: 36,\r\n borderRadius: 0,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n backgroundColor: 'white',\r\n borderBottom: '1px solid var(--Neutral-colors-neutralLight, rgba(240, 240, 240, 1))',\r\n boxShadow: '0px -1px 0px 0px rgba(240, 240, 240, 1) inset',\r\n paddingRight: 28,\r\n boxSizing: 'border-box',\r\n\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n flexGrow: 1,\r\n },\r\n },\r\n\r\n unreadClassName: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n width: 28,\r\n '& .unread-flag': {\r\n height: '100%',\r\n width: '4px',\r\n backgroundColor: 'rgba(15, 108, 189, 1)',\r\n content: '',\r\n display: 'block',\r\n },\r\n\r\n '& .unread-arrow': {\r\n width: 16,\r\n height: 16,\r\n marginLeft: 2,\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n flexGrow: 1,\r\n padding: '8px 4px 8px 8px',\r\n boxSizing: 'border-box',\r\n\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n adsLabelClassName: {\r\n position: 'absolute',\r\n left: 176,\r\n top: 9,\r\n width: 24,\r\n height: '18px !important',\r\n border: '1px solid rgba(0, 120, 212, 1) !important',\r\n padding: '0px 4px !important',\r\n boxSizing: 'border-box !important',\r\n textAlign: 'center !important',\r\n borderRadius: '2px !important',\r\n fontWeight: '400 !important',\r\n fontSize: '12px !important',\r\n lineHeight: '16px !important',\r\n color: 'rgba(0, 120, 212, 1) !important',\r\n },\r\n\r\n threeDot: {\r\n position: 'absolute',\r\n left: 208,\r\n top: 9,\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n width: 224,\r\n marginRight: 16,\r\n },\r\n\r\n placementShortHeadline: {\r\n marginRight: 8,\r\n fontFamily: 'Segoe UI',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(15, 108, 189, 1)',\r\n },\r\n\r\n placementDescription: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(97, 97, 97, 1)',\r\n },\r\n\r\n placementLogoContainer: {\r\n width: 28,\r\n '& .cropped-image-view': {\r\n borderRadius: '50% !important',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPlacementCardStyles } from '../styles';\r\n\r\nconst MMAPlacementCardImpl = ({\r\n isEnabled,\r\n url,\r\n width, // in pixel\r\n height, // in pixel\r\n children,\r\n mmaPlacementCardClassName,\r\n classes,\r\n isAdPreviewRefreshEnabled,\r\n}) => {\r\n const styles = useMemo(() => ((width || height) ? ({\r\n width: width ? `${width}px` : undefined,\r\n height: height ? `${height}px` : undefined,\r\n }) : undefined), [height, width]);\r\n\r\n return (\r\n
\r\n {url && (\r\n \r\n {children}\r\n \r\n )}\r\n {!url && (\r\n \r\n {children}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nMMAPlacementCardImpl.propTypes = {\r\n isEnabled: PropTypes.bool,\r\n url: PropTypes.string,\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n children: PropTypes.node.isRequired,\r\n mmaPlacementCardClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n mmaPlacementCardRoot: PropTypes.string,\r\n mmaPlacementCardDisabled: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nMMAPlacementCardImpl.defaultProps = {\r\n isEnabled: true,\r\n url: undefined,\r\n width: undefined,\r\n height: undefined,\r\n mmaPlacementCardClassName: undefined,\r\n};\r\n\r\nexport const MMAPlacementCard = withUAPLThemedStyles(\r\n MMAPlacementCardImpl,\r\n getPlacementCardStyles,\r\n { componentName: 'MMAPlacementCard ' }\r\n);\r\n","export const getPlacementCardStyles = (/* theme */) => ({\r\n mmaRefreshedPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n // flex: 1,\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n boxShadow: '0px 0px 2px 0px rgba(0, 0, 0, 0.12), 0px 2px 4px 0px rgba(0, 0, 0, 0.14)',\r\n borderRadius: 8,\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n mmaPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n // flex: 1,\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: 5.11,\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n mmaPlacementCardDisabled: {\r\n opacity: 0.5,\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 PlacementContentContainer = ({\r\n finalUrl,\r\n displayUrl,\r\n isClickDisabled,\r\n placementContentContainerClassName,\r\n children,\r\n}) => {\r\n if (isClickDisabled) {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nPlacementContentContainer.propTypes = {\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n isClickDisabled: PropTypes.bool,\r\n placementContentContainerClassName: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nPlacementContentContainer.defaultProps = {\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isClickDisabled: false,\r\n placementContentContainerClassName: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdLabelStyles } from '../styles';\r\n\r\nconst AdLabelImpl = ({\r\n i18n, adsLabelClassName, classes, isAdPreviewRefreshEnabled,\r\n}) => (\r\n
\r\n {i18n.getString('Ad')}\r\n
\r\n);\r\n\r\nAdLabelImpl.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n adsLabelClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n adLabelRoot: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nAdLabelImpl.defaultProps = {\r\n adsLabelClassName: undefined,\r\n};\r\n\r\nexport const AdLabel = withUAPLThemedStyles(\r\n AdLabelImpl,\r\n getAdLabelStyles,\r\n { componentName: 'AdLabel' }\r\n);\r\n","export const getAdLabelStyles = (/* theme */) => ({\r\n adLabelRoot: {\r\n position: 'absolute',\r\n backgroundColor: 'white', // palette.white,\r\n color: 'black', // color: palette.black,\r\n fontSize: 11,\r\n borderRadius: 5,\r\n padding: '1.2px 6px 1.8px 6px',\r\n margin: 7,\r\n opacity: '90%',\r\n },\r\n\r\n adLabelRefreshedRoot: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n borderRadius: '4px',\r\n border: '0.5px solid rgba(26, 26, 26, 0.3)',\r\n padding: '1px 4px',\r\n height: 16,\r\n boxSizing: 'border-box',\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 400,\r\n fontSize: '11px',\r\n lineHeight: '14px',\r\n color: 'rgba(43, 43, 43, 0.8)', // color: palette.black,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getBusinessNameWithAdLabelStyles } from '../styles';\r\n\r\nconst adsIconImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAotJREFUWIW9lrFWGlEQhr+5cEzLG2R9AxBTpMM6jWBSUAlPID4B+ATKE0gqz4mH3Sq1WOWc6EregE2bxjUdJjApUBS4wC4L+bu9d/b+387cnTMCQNtvIBwBIHT4O2zy6V2H/yCh7VcQzi1bHaRfpfg+2CSAwcihfUsL6FYPzz/H++ZsCkBw/XsgEyF0Ixkx0cxhUxkxlrUAzD5pKaC0ZjmorBNEcH2dXNEaxd3m+Pmi6/Bm4IFk55zQgseTVUtjgHBiRc2PiedyLqC0m0OpgsyaJMyIAQmXhwEH+Ralne2lIJd+Iw6I7Q5EBTm2gqSoo1tXXPqN9QJ4XQfPP8W9PXwCOaMvewg2I4cUdVy/N45PBOB1HXTYRamBtMaHlnMBxfwJfbNt/WPAGcXPB4lTgpd+ITJZ43Iu4CBfXQUkGkAxFzylOgDtEJqmNS4OyJfvWQDBveuBvvoiKVDauY4EtkwXXYc36oHae8hguBe9BG2/gevf4/o9zrvR2nc5FyCyx3SveVZKTqMDjOaFDOCQGSy82ZaX5/Qayax2CcGe0ml5NwVUryZL/EpDPUvHAIgu76YAqTqqBVBLgHbANPiYv14vQNuvYORwqXEpP77k6wFo+xVE6qAOGs14PQDe7RFqaqMaxzNOBqAmi3vXQ+cZE4BUFhknA5jXWEadskFp93PUk9KgEWfChQpRzvhtmlRz0eaLF4CpoVSGWcCWunAmNoHxa4BJqdTwbgFxAAcICc0xw0EVY06fmkqI0uLxsUk52Zg+O5RapZVxXb/eveWXPKz6xdNKY0/tpPp/XkryYefnOoyftWwoDUErSdO8GEDUNjiA0uLBbMf5pVZRGkwTHWYR9kE7qHSS3Oq4+gfBZCnchNpiDQAAAABJRU5ErkJggg==';\r\n\r\nexport const BusinessNameWithAdsLabelImpl = ({\r\n businessName,\r\n showAdsLabel,\r\n showAdsIcon,\r\n i18n,\r\n rootClassName,\r\n classes,\r\n isAdPreviewRefreshEnabled,\r\n}) => (\r\n
\r\n {\r\n showAdsLabel && {i18n.getString(_TL_('Ad'))}\r\n }\r\n {\r\n businessName && {businessName}\r\n }\r\n {\r\n showAdsIcon && \"icon\"\r\n }\r\n
\r\n);\r\n\r\nBusinessNameWithAdsLabelImpl.propTypes = {\r\n businessName: PropTypes.string,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showAdsLabel: PropTypes.bool,\r\n rootClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n businessNameWithAdsLabelRoot: PropTypes.string,\r\n }).isRequired,\r\n showAdsIcon: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithAdsLabelImpl.defaultProps = {\r\n businessName: undefined,\r\n rootClassName: undefined,\r\n showAdsLabel: false,\r\n showAdsIcon: false,\r\n};\r\n\r\nexport const BusinessNameWithAdsLabel = withUAPLThemedStyles(\r\n BusinessNameWithAdsLabelImpl,\r\n getBusinessNameWithAdLabelStyles,\r\n { componentName: 'BusinessNameWithAdsLabel ' }\r\n);\r\n","export const getBusinessNameWithAdLabelStyles = (/* theme */) => ({\r\n businessNameWithAdsLabelRoot: {\r\n padding: [1, 0],\r\n overflow: 'hidden',\r\n marginTop: 9,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n color: '#333', // color: palette.black,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n\r\n '& .ads-label': {\r\n position: 'relative',\r\n padding: '.8px 4px',\r\n margin: '0 5px 0 0',\r\n background: 'transparent',\r\n color: '#78718a',\r\n lineHeight: 1.364,\r\n fontSize: '10px',\r\n fontWeight: '400',\r\n fontFamily: 'Segoe UI,Segoe WP,Arial,Sans-Serif',\r\n border: '.5px solid #78718a',\r\n borderRadius: '4px',\r\n },\r\n\r\n '& .business-name': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n color: '#333',\r\n fontSize: 11,\r\n lineHeight: 1.364,\r\n padding: '1px 0',\r\n marginTop: 9,\r\n },\r\n },\r\n\r\n businuessNameRefreshed: {\r\n fontFamily: 'Segoe UI',\r\n fontWeight: 600,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: 'rgba(0, 0, 0, 1)',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPlacementGradientStyles } from '../styles';\r\n\r\nconst GradientImpl = ({\r\n gradientClassName, classes,\r\n}) => (\r\n
\r\n);\r\n\r\nGradientImpl.propTypes = {\r\n gradientClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n placementCardGradientRoot: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nGradientImpl.defaultProps = {\r\n gradientClassName: undefined,\r\n};\r\n\r\nexport const PlacementGradient = withUAPLThemedStyles(\r\n GradientImpl,\r\n getPlacementGradientStyles,\r\n { componentName: 'PlacementGradient ' }\r\n);\r\n","export const getPlacementGradientStyles = (/* theme */) => ({\r\n placementCardGradientRoot: {\r\n display: 'block',\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const withLink = (WrappedComponent) => {\r\n const HoC = React.memo(props => (\r\n \r\n \r\n \r\n ));\r\n\r\n HoC.propTypes = {\r\n finalUrl: PropTypes.string.isRequired,\r\n };\r\n\r\n return HoC;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\nimport { withLink } from './with-link';\r\n\r\nexport const PlacementText = React.forwardRef(({\r\n text,\r\n isMultiLine,\r\n placementTextClassName,\r\n}, ref) => (\r\n isMultiLine ?\r\n : (\r\n
\r\n {text}\r\n
\r\n )\r\n));\r\n\r\nPlacementText.propTypes = {\r\n text: PropTypes.string,\r\n isMultiLine: PropTypes.bool.isRequired,\r\n placementTextClassName: PropTypes.string,\r\n};\r\n\r\nPlacementText.defaultProps = {\r\n placementTextClassName: undefined,\r\n text: undefined,\r\n};\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementHeadline = React.forwardRef(({\r\n headlineText,\r\n isMultiLine,\r\n placementHeadlineClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementHeadline.propTypes = {\r\n headlineText: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementHeadlineClassName: PropTypes.string,\r\n};\r\n\r\nPlacementHeadline.defaultProps = {\r\n headlineText: undefined,\r\n isMultiLine: false,\r\n placementHeadlineClassName: undefined,\r\n};\r\n\r\nexport const PlacementHeadlineWithLink = withLink(PlacementHeadline);\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementFinalUrl = React.forwardRef(({\r\n isMultiLine,\r\n finalUrl,\r\n displayUrl,\r\n placementFinalUrlClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementFinalUrl.propTypes = {\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementFinalUrlClassName: PropTypes.string,\r\n};\r\n\r\nPlacementFinalUrl.defaultProps = {\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n placementFinalUrlClassName: undefined,\r\n isMultiLine: false,\r\n};\r\n\r\nexport const PlacementFinalUrlWithLink = withLink(PlacementFinalUrl);\r\n\r\n\r\n// --------------------------------------------------------------------------------\r\nexport const PlacementDescription = React.forwardRef(({\r\n description,\r\n isMultiLine,\r\n placementDescriptionClassName,\r\n}, ref) => (\r\n \r\n));\r\n\r\nPlacementDescription.propTypes = {\r\n description: PropTypes.string,\r\n isMultiLine: PropTypes.bool,\r\n placementDescriptionClassName: PropTypes.string,\r\n};\r\n\r\nPlacementDescription.defaultProps = {\r\n description: undefined,\r\n placementDescriptionClassName: undefined,\r\n isMultiLine: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nexport const PlacementAction = ({\r\n actionText,\r\n placementActionClassName,\r\n}) => (actionText ?\r\n : null\r\n);\r\n\r\nPlacementAction.propTypes = {\r\n actionText: PropTypes.string,\r\n placementActionClassName: PropTypes.string,\r\n};\r\n\r\nPlacementAction.defaultProps = {\r\n actionText: undefined,\r\n placementActionClassName: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { Image } from '@fluentui/react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nexport const PlacementImage = ({\r\n i18n,\r\n image,\r\n enableCrop,\r\n previewImageAspectRatio,\r\n previewImageHeight,\r\n placementImageClassName,\r\n}) => {\r\n if (image && image.src) {\r\n if (enableCrop) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return ();\r\n }\r\n return null;\r\n};\r\n\r\nPlacementImage.propTypes = {\r\n classes: PropTypes.shape({\r\n placementImage: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n image: PropTypes.shape({\r\n src: PropTypes.string,\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n cropSettings: PropTypes.shape({\r\n SourceWidth: PropTypes.number,\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n }),\r\n }),\r\n enableCrop: PropTypes.bool,\r\n previewImageAspectRatio: PropTypes.number,\r\n previewImageHeight: PropTypes.number,\r\n placementImageClassName: PropTypes.string,\r\n};\r\n\r\nPlacementImage.defaultProps = {\r\n image: {},\r\n enableCrop: false,\r\n previewImageAspectRatio: 1.78,\r\n previewImageHeight: 100,\r\n placementImageClassName: '',\r\n};\r\n","import { first, isEmpty } from 'underscore';\r\nimport React, { useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { Link, Callout, DirectionalHint, getId } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getDisclaimerStyles } from '../styles';\r\n\r\nexport const AdditionalLineDisclaimer = React.forwardRef(({\r\n i18n,\r\n disclaimer,\r\n styleOverrides,\r\n}, ref) => {\r\n const classes = useDefaultStyles(getDisclaimerStyles({ styleOverrides }));\r\n\r\n return !isEmpty(disclaimer) && disclaimer.DisclaimerLayout === 'AdditionalLine' ? (\r\n \r\n {i18n.getString(_TL_('More Info'))}\r\n \r\n ) : null;\r\n});\r\n\r\nAdditionalLineDisclaimer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n styleOverrides: PropTypes.shape({}),\r\n};\r\n\r\nAdditionalLineDisclaimer.defaultProps = {\r\n disclaimer: {},\r\n styleOverrides: {},\r\n};\r\n\r\nexport const PopupDisclaimer = ({\r\n i18n,\r\n disclaimer,\r\n styleOverrides,\r\n}) => {\r\n const classes = useDefaultStyles(getDisclaimerStyles({ styleOverrides }));\r\n const [showCallout, setShowCallout] = useState(false);\r\n const ref = useRef();\r\n\r\n return !isEmpty(disclaimer) && disclaimer.DisclaimerLayout === 'Popup' ? (\r\n
\r\n setShowCallout(!showCallout)}\r\n ref={ref}\r\n >\r\n {disclaimer.Title}\r\n \r\n {showCallout &&\r\n setShowCallout(false)}\r\n >\r\n \r\n
\r\n {i18n.getString(_TL_('Disclaimer'))}\r\n
\r\n
\r\n {disclaimer.PopupText}\r\n
\r\n \r\n {i18n.getString('Learn more')}\r\n \r\n \r\n }\r\n
\r\n ) : null;\r\n};\r\n\r\nPopupDisclaimer.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n Title: PropTypes.string,\r\n PopupText: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n styleOverrides: PropTypes.shape({}),\r\n};\r\n\r\nPopupDisclaimer.defaultProps = {\r\n disclaimer: {},\r\n styleOverrides: {},\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nexport const BusinessNameWithLogo = ({\r\n businessName,\r\n showLogo,\r\n logo,\r\n logoHeight,\r\n classes,\r\n}) => (\r\n
\r\n {showLogo && logo && (\r\n
\r\n \r\n
\r\n )}\r\n {businessName &&
{businessName}
}\r\n
\r\n);\r\n\r\nBusinessNameWithLogo.propTypes = {\r\n businessName: PropTypes.string,\r\n showLogo: PropTypes.bool.isRequired,\r\n classes: PropTypes.shape({\r\n businuessAndLogoContainer: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n placementBusinessNameContainer: PropTypes.string,\r\n }).isRequired,\r\n logoHeight: PropTypes.number,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n};\r\n\r\nBusinessNameWithLogo.defaultProps = {\r\n businessName: undefined,\r\n logoHeight: 16,\r\n logo: undefined,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { PlacementAction } from './placement-action';\r\nimport { AdLabel } from './ad-label';\r\n\r\nconst ChoiceIcon = ({ headChoiceIconClassName }) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst ChoiceIconBright = ({ headChoiceIconClassName }) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport const BusinessNameWithChoiceIcon = ({\r\n businessName,\r\n showBusinessName,\r\n showAdIcon,\r\n showChoiceIcon,\r\n showCallToAction,\r\n callToAction,\r\n showCallToActionAsLink,\r\n classes,\r\n i18n,\r\n showBrightStyleChoiceIcon,\r\n}) => {\r\n const showChoiceIconAhead = showCallToAction && callToAction;\r\n\r\n return (\r\n
\r\n {showChoiceIconAhead && showChoiceIcon && (showBrightStyleChoiceIcon ? : )}\r\n {showAdIcon && (\r\n
\r\n )}\r\n {showBusinessName && businessName &&
{businessName}
}\r\n {!showChoiceIconAhead && showChoiceIcon && (showBrightStyleChoiceIcon ? : )}\r\n {showCallToAction && callToAction && }\r\n
\r\n );\r\n};\r\n\r\nBusinessNameWithChoiceIcon.propTypes = {\r\n businessName: PropTypes.string,\r\n showBusinessName: PropTypes.bool.isRequired,\r\n showAdIcon: PropTypes.bool.isRequired,\r\n showChoiceIcon: PropTypes.bool.isRequired,\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n classes: PropTypes.shape({\r\n adsLabelClassName: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n }).isRequired,\r\n showCallToActionAsLink: PropTypes.bool,\r\n};\r\n\r\nBusinessNameWithChoiceIcon.defaultProps = {\r\n businessName: undefined,\r\n showCallToAction: false,\r\n callToAction: undefined,\r\n showCallToActionAsLink: false,\r\n};\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getLargeAdChoiceIconStyles } from '../styles';\r\n\r\nconst CircleRightArrowImpl = ({ classes, customizedClassName }) => (\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const CircleRightArrow = withUAPLThemedStyles(\r\n CircleRightArrowImpl,\r\n getLargeAdChoiceIconStyles,\r\n { componentName: 'LargeChoiceIcon' }\r\n);\r\n","export const getLargeAdChoiceIconStyles = (/* theme */) => ({\r\n largeIconRoot: {\r\n width: 36,\r\n height: 36,\r\n backgroundColor: 'rgba(33, 105, 235, 1)',\r\n boxShadow: '0px 3px 6px 0px rgba(0, 0, 0, 0.25)',\r\n borderRadius: '50px',\r\n },\r\n arrowIcon: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 'auto',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nexport const ThreeDot = ({ threeDotClassName }) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\n\r\nexport const OutlookPcDesktopUnread = ({ customizedUnreadClassName }) => (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const OutlookMobileWebUnread = ({ customizedUnreadClassName }) => (\r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport { PlacementText } from './placement-text';\r\nimport { PlacementAction } from './placement-action';\r\n\r\nexport const DescriptionWithAction = ({\r\n isMultiLine,\r\n description,\r\n descriptionWithActionClassName,\r\n placementDescriptionClassName,\r\n placementCallToActionClassName,\r\n placementCallToActionAsLinkClassName,\r\n showCallToActionAsLink,\r\n callToAction,\r\n}) => (\r\n
\r\n \r\n {callToAction && }\r\n
\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { isValidUrl } from '@bingads-webui/url-util';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n MMAPlacementCard,\r\n AdLabel,\r\n PlacementGradient,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementAction,\r\n BusinessNameWithAdsLabel,\r\n} from '../shared-components';\r\nimport dotsIcon from './media/dots.svg';\r\n\r\nexport const AdPlacementMmaBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n displayFinalUrlOrigin,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n showAdLabel,\r\n showGradient,\r\n\r\n showBusinessName,\r\n businessName,\r\n showBusinessNameAdLabel,\r\n showAdsIcon,\r\n\r\n showLogo,\r\n logo,\r\n\r\n showDots,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const {\r\n previewHeight, aspectRatio, logoHeight, imageBorderRadius,\r\n } = placementMeta || {};\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n let finalUrlOrigin;\r\n if (displayFinalUrlOrigin && isValidUrl(finalUrl)) {\r\n finalUrlOrigin = new URL(finalUrl).origin;\r\n }\r\n\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {showAdLabel && }\r\n {showGradient && }\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n {showFinalUrl &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {showDots && (\r\n \"\"\r\n )}\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n {showBusinessName && (\r\n \r\n )}\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAdPlacementMmaBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayFinalUrlOrigin: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showAdLabel: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n\r\n showBusinessName: PropTypes.bool,\r\n businessName: PropTypes.string,\r\n showBusinessNameAdLabel: PropTypes.bool,\r\n showAdsIcon: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n showDots: PropTypes.bool,\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n placementBusinessNameContainer: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementGradient: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementDotsIcon: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nAdPlacementMmaBase.defaultProps = {\r\n isEnabled: true,\r\n\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n displayFinalUrlOrigin: false,\r\n showDescription: false,\r\n showCallToAction: false,\r\n showAdLabel: false,\r\n showGradient: false,\r\n showBusinessName: false,\r\n showBusinessNameAdLabel: false,\r\n showLogo: false,\r\n showAdsIcon: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n businessName: undefined,\r\n logo: undefined,\r\n showDots: false,\r\n};\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\nimport {\r\n getMmaWideImage4x1Styles,\r\n getMmaLandScapeImage191x100Styles,\r\n getMmaSquareImage1x1Styles,\r\n getMmaVerticalImage1x2Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaWideImage4x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaWideImage4x1Styles,\r\n { componentName: 'AdPlacementMmaWideImage4x1' }\r\n);\r\n\r\nexport const AdPlacementMmaLandscapeImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaLandScapeImage191x100Styles,\r\n { componentName: 'AdPlacementMmaLandscapeImage191x100' }\r\n);\r\n\r\nexport const AdPlacementMmaSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaSquareImage1x1' }\r\n);\r\n\r\nexport const AdPlacementMmaVerticalImage1x2 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaVerticalImage1x2Styles,\r\n { componentName: 'AdPlacementMmaVerticalImage1x2' }\r\n);\r\n","export const getMmaPlacementBaseStyles = () => ({\r\n placementCard: {\r\n border: 'solid thin #ddd',\r\n },\r\n placementImageContainer: undefined, // { },\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n paddingRight: 20,\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n },\r\n placementAdsLabel: undefined, // { },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 20,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementFinalUrl: {\r\n color: 'white',\r\n bottom: 10,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 5,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '7px 16px 8px 16px',\r\n fontSize: 16,\r\n color: '#666',\r\n backgroundColor: '#EEE',\r\n opacity: '70%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getMmaWideImage4x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementAdsLabel: {\r\n right: 0, // align to right\r\n },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to left, transparent 0, black 100%)',\r\n },\r\n});\r\n\r\nexport const getMmaLandScapeImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n padding: '8px 20px 20px 20px',\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n maxWidth: '-webkit-fill-available',\r\n\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 4,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .logo-business-name': {\r\n color: '#111',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '18px',\r\n },\r\n },\r\n },\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 24,\r\n marginBottom: 8,\r\n fontWeight: '200',\r\n paddingBottom: 5,\r\n },\r\n placementFinalUrl: {\r\n position: 'relative',\r\n color: 'green',\r\n fontSize: 10,\r\n marginBottom: 8,\r\n },\r\n placementDescription: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 14,\r\n maxWidth: 250,\r\n wordWrap: 'break-word',\r\n paddingRight: 16,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n right: 15,\r\n border: 'none',\r\n bottom: 15,\r\n opacity: '90%',\r\n padding: '6px 16px 8px 16px',\r\n position: 'absolute',\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n borderRadius: 32,\r\n backgroundColor: '#a19f9d',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 5,\r\n paddingRight: 6,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n border: 'solid 1px #ECECEC',\r\n },\r\n },\r\n});\r\n\r\nexport const getMmaSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 18,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 8,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n color: 'white',\r\n backgroundColor: '#a19f9d',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getMmaVerticalImage1x2Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 15,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n top: 5,\r\n color: 'white',\r\n border: 'solid 1px #dddddd',\r\n opacity: '90%',\r\n padding: '5px 16px 6px 16px',\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n borderRadius: 3,\r\n backgroundColor: '#a19f9d',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\n\r\nimport {\r\n getMmaInMsanWideImage191x100Styles,\r\n getMmaInMsanSquareImage1x1Styles,\r\n getMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n getMmaInMsanMSNInArticle150x100Styles,\r\n getMmaInMsanMSNSmallHeadline133x100Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaInMsanWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanWideImage191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanWideImage191x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNInArticle150x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const AdPlacementMmaInMsanSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanSquareImage1x1' }\r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { MMAPlacementCard, PlacementHeadline, PlacementDescription, BusinessNameWithLogo, BusinessNameWithChoiceIcon } from '../../shared-components';\r\n\r\nexport const AdPlacementMmaBaseV2 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n showSmallSizeHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n finalUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n businessName,\r\n showBusinessNameWithLogoTop,\r\n showLogo,\r\n logo,\r\n\r\n showAdChoiceIconArea,\r\n showBusinessNameInAdChoiceArea,\r\n showAdIcon,\r\n showChoiceIcon,\r\n showCallToActionAsLink,\r\n showBrightStyleChoiceIcon,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n showGradient,\r\n customizedComponent: CustomizedComponent,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const {\r\n previewHeight, aspectRatio, logoHeight, imageBorderRadius,\r\n } = placementMeta || {};\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showGradient &&
}\r\n
\r\n {showBusinessNameWithLogoTop && (\r\n \r\n )}\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n
\r\n {showAdChoiceIconArea && (\r\n \r\n )}\r\n
\r\n {CustomizedComponent && }\r\n \r\n );\r\n};\r\n","import React, { useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { PermissionsContext, withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { AdPlacementMmaBase } from './mma-ad-placement-base';\r\nimport { AdPlacementMmaBaseV2 } from './mma-ad-placements-v2/mma-ad-placement-base-v2';\r\nimport { CircleRightArrow } from '../shared-components';\r\n\r\nimport {\r\n getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles,\r\n getMmaInMsanV2MSANBanner2x1Styles,\r\n getMmaInMsanV2MSANRiver191x100Styles,\r\n getMmaInMsanV2MSNCarousel169x100Styles,\r\n getMmaInMsanV2MSNPartnerStripe153x100Styles,\r\n getMmaInMsanV2MSNRestoday124x100Styles,\r\n getMmaInMsanV2MSANRectangle120x100Styles,\r\n getMmaInMsanV2MicrosoftEdgeMobile1x1Styles,\r\n getMmaInMsanV2RefreshedMSANRiver191x100Styles,\r\n getMmaInMsanV2RefreshedMSNRestoday124x100Styles,\r\n getMmaInMsanV2RefreshedMSNCarousel169x100Styles,\r\n getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles,\r\n getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles,\r\n getMmaInMsanV2RefreshedMSANBanner2x1Styles,\r\n getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles,\r\n getMmaInMsanV2RefreshedMSANRectangle191x100Styles,\r\n} from '../styles';\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSANBanner2x1 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSANBanner2x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANBanner2x1' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSANBanner2x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANBanner2x1' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSANRiver191x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? (\r\n withUAPLThemedStyles(\r\n props2 => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSANRiver191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRiver191x100' }\r\n )\r\n ) : (\r\n withUAPLThemedStyles(\r\n props2 => (\r\n \r\n ),\r\n getMmaInMsanV2MSANRiver191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRiver191x100' }\r\n )\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNCarousel169x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? (\r\n withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNCarousel169x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNCarousel169x100' }\r\n )\r\n ) : (\r\n withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNCarousel169x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNCarousel169x100' }\r\n )\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNPartnerStripe153x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNPartnerStripe153x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNPartnerStripe153x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNPartnerStripe153x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSNRestoday124x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSNRestoday124x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNRestoday124x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSNRestoday124x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSNRestoday124x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MSANRectangle191x100 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMSANRectangle191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRectangle191x100' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MSANRectangle120x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MSANRectangle120x100' }\r\n );\r\n return ;\r\n});\r\n\r\nexport const AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1 = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']) || _.get(props1, ['extraPermissions', 'dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledBaseComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getMmaInMsanV2MicrosoftEdgeMobile1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1' }\r\n );\r\n return ;\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementMmaBase } from '../mma-ad-placement-base';\r\n\r\nimport {\r\n getImgExtWideImage191x100Styles,\r\n getImgExtMSEdgeSingleCarousel178x100Styles,\r\n getImgExtBingDesktopSingleImage178x100Styles,\r\n getImgExtMSEdgeMediumHeadline172x100Styles,\r\n getImgExtMSNSingleCarousel169x100Styles,\r\n getImgExtMSNMediumHeadline155x100Styles,\r\n getImgExtMSNInArticle150x100Styles,\r\n getImgExtMSNSmallHeadline133x100Styles,\r\n getImgExtSquareImage1x1Styles,\r\n getImgExtMSNDoubleCarousel93x100Styles,\r\n} from '../../styles';\r\n\r\nexport const AdPlacementImgExtWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtWideImage191x100Styles,\r\n { componentName: 'AdPlacementImgExtWideImage191x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementImgExtMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtBingDesktopSingleImage178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtBingDesktopSingleImage178x100Styles,\r\n { componentName: 'AdPlacementImgExtBingDesktopSingleImage178x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSEdgeMediumHeadline172x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSEdgeMediumHeadline172x100Styles,\r\n { componentName: 'AdPlacementImgExtMSEdgeMediumHeadline172x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNSingleCarousel169x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNSingleCarousel169x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNSingleCarousel169x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNMediumHeadline155x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNMediumHeadline155x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNMediumHeadline155x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNInArticle150x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const AdPlacementImgExtSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtSquareImage1x1Styles,\r\n { componentName: 'AdPlacementImgExtSquareImage1x1' }\r\n);\r\n\r\nexport const AdPlacementImgExtMSNDoubleCarousel93x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getImgExtMSNDoubleCarousel93x100Styles,\r\n { componentName: 'AdPlacementImgExtMSNDoubleCarousel93x100' }\r\n);\r\n","export const getImageExtensionPlacementBaseStyles = () => ({\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n },\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getImgExtWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getImgExtMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n borderRadius: '0 !important',\r\n width: '624px !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 100,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtBingDesktopSingleImage178x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '608px !important',\r\n height: 110,\r\n border: '0.5px solid #ddd',\r\n padding: 0,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'right',\r\n width: 100,\r\n margin: 8,\r\n transform: 'translate(20px,20px)',\r\n },\r\n\r\n placementTextContainer: {\r\n margin: '4px 8px 0px 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#0078d4',\r\n height: 28,\r\n overflow: 'hidden',\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n },\r\n\r\n placementFinalUrl: {\r\n color: '#0b6a0b',\r\n height: 20,\r\n overflow: 'hidden',\r\n fontSize: 14,\r\n },\r\n\r\n placementDescription: {\r\n color: '#333',\r\n fontSize: 13,\r\n minHeight: 18,\r\n },\r\n});\r\n\r\nexport const getImgExtMSEdgeMediumHeadline172x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n width: '300px !important',\r\n height: 250,\r\n backgroundColor: 'rgb(46, 46, 46) !important',\r\n borderRadius: '0 !important',\r\n overflow: 'hidden',\r\n position: 'relative',\r\n\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -172,\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n },\r\n\r\n placementLongHeadline: {\r\n fontSize: 10,\r\n lineHeight: '16px !important',\r\n color: '#bebebe !important',\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n\r\n placementGradient: {\r\n position: 'relative',\r\n height: '280px !important',\r\n marginTop: -105,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, rgb(46, 46, 46) 100%)',\r\n },\r\n});\r\n\r\nexport const getImgExtMSNSingleCarousel169x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -80,\r\n },\r\n\r\n width: '622px !important',\r\n height: 368,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '280px !important',\r\n top: 120,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementLongHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtMSNMediumHeadline155x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n display: 'block',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n width: '300px !important',\r\n height: 296,\r\n margin: 'auto',\r\n padding: 0,\r\n borderRadius: '0 !important',\r\n borderWidth: 'thin',\r\n color: '#ddd',\r\n border: 'solid',\r\n },\r\n\r\n placementTextContainer: {\r\n height: 98,\r\n padding: '15px 13px',\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px !important',\r\n },\r\n});\r\n\r\nexport const getImgExtMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n height: 364,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getImgExtMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getImgExtBingDesktopMultiImage133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '548px !important',\r\n height: 242,\r\n color: '#333',\r\n border: '0.5px solid #ddd',\r\n boxShadow: 'none !important',\r\n padding: 10,\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n top: -1,\r\n width: '100% !important',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#003DC1',\r\n fontSize: 20,\r\n fontWeight: 'bold',\r\n lineHeight: '27px',\r\n },\r\n\r\n placementFinalUrl: {\r\n position: 'relative',\r\n top: -1,\r\n color: '#0b6a0b',\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementDescription: {\r\n position: 'relative',\r\n top: -1,\r\n color: '#333',\r\n fontSize: 12,\r\n lineHeight: '16px',\r\n margin: '2px 0px 7px 0px',\r\n },\r\n\r\n placementImageContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n position: 'relative',\r\n left: -4,\r\n top: 3,\r\n\r\n '& .bing-desktop-multi-image-item': {\r\n width: 130,\r\n height: 135,\r\n border: '0.5px solid #ddd',\r\n overflow: 'hidden',\r\n marginRight: 5,\r\n borderRadius: 6,\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtBingMobileMultiImage133x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n display: 'block !important',\r\n borderRadius: '6px !important',\r\n color: '#333',\r\n border: '0.5px solid #ddd',\r\n boxShadow: 'none !important',\r\n },\r\n\r\n placementAdsLabel: {\r\n // position: absolute;\r\n top: 10,\r\n left: 5,\r\n color: '#fff !important',\r\n border: '1px solid #ddd !important',\r\n padding: '5px 1px 7px 1px !important',\r\n lineHeight: '0.1em',\r\n borderRadius: '6px !important',\r\n backgroundColor: '#666 !important',\r\n margin: '0 !important',\r\n fontSize: '14px !important',\r\n opacity: '1 !important',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'relative',\r\n width: '400px !important',\r\n height: 118,\r\n padding: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementLongHeadline: {\r\n color: '#003DC1',\r\n height: 24,\r\n fontSize: 18,\r\n fontWeight: 400,\r\n },\r\n\r\n placementFinalUrl: {\r\n color: '#0b6a0b',\r\n height: 20,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n borderBottom: '1px solid #ddd',\r\n marginBottom: 6,\r\n paddingBottom: 6,\r\n },\r\n\r\n placementDescription: {\r\n height: 40,\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '20px',\r\n margin: '2px 0px 7px 0px',\r\n },\r\n\r\n placementImageContainer: {\r\n '& .multi-image-placement-carousel': {\r\n '& .carousel-inner': {\r\n paddingBottom: '0px !important',\r\n },\r\n '& .carousel-indicators': {\r\n position: 'absolute',\r\n left: 0,\r\n width: 'auto',\r\n bottom: 0,\r\n margin: '20px 24px',\r\n\r\n '& li': {\r\n width: 10,\r\n height: 10,\r\n border: '1px solid #605E5C',\r\n margin: '0 10px 0 0',\r\n background: 'rgba(255, 255, 255, 0.8)',\r\n borderRadius: 10,\r\n\r\n '&.active': {\r\n border: '1px solid #0078d4',\r\n background: '#0078d4',\r\n },\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n position: 'absolute',\r\n top: 'auto',\r\n left: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n width: 16,\r\n height: 32,\r\n margin: '20px 24px',\r\n paddingRight: 4,\r\n color: '#0078d4',\r\n background: 'rgba(255, 255, 255, 0.6)',\r\n textShadow: 'none',\r\n\r\n '&.left': {\r\n marginRight: 76,\r\n },\r\n\r\n '& .glyphicon.glyphicon-chevron-left, & .glyphicon.glyphicon-chevron-right': {\r\n fontSize: 16,\r\n top: 'auto',\r\n left: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n margin: 0,\r\n position: 'relative',\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getImgExtSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n borderRadius: '0 !important',\r\n width: '300px !important',\r\n height: 90,\r\n color: '#ddd',\r\n border: 'solid',\r\n borderWidth: 'thin',\r\n background: '#fff',\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 8px',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getImgExtMSNDoubleCarousel93x100Styles = theme => ({\r\n // base styles\r\n ...getImageExtensionPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -118,\r\n },\r\n\r\n width: '310px !important',\r\n height: 333,\r\n borderRadius: '0 !important',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n height: '280px !important',\r\n top: 83,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementShortHeadline: {\r\n width: 280,\r\n height: 54,\r\n fontSize: 20,\r\n fontWeight: 200,\r\n lineHeight: 1.3,\r\n color: 'white',\r\n paddingBottom: 5,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n// import { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getImgExtBingDesktopMultiImage133x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\n// multi-image placement\r\nconst ImgExtBingDesktopMultiImage133x100 = ({\r\n placementData, // UAPVMPlacement\r\n isEnabled,\r\n longHeadline,\r\n finalUrl,\r\n description,\r\n classes,\r\n}) => {\r\n //\r\n const { placementMeta, images = [] } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n // there are 4 images in the placement, the last 3 are placeholder images\r\n const imagesWithPadding = useMemo(\r\n () => [0, 1, 2, 3].map(index => (images && images[index]) || _.last(images)),\r\n [images]\r\n );\r\n\r\n if (!placementData || !placementMeta || _.isEmpty(images)) {\r\n return null;\r\n }\r\n\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n imagesWithPadding.map(({\r\n imageMeta, placementCropping, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n }, idx) => {\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n return (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n \r\n
);\r\n })\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const AdPlacementImgExtBingDesktopMultiImage133x100 = withUAPLThemedStyles(\r\n ImgExtBingDesktopMultiImage133x100,\r\n getImgExtBingDesktopMultiImage133x100Styles,\r\n { componentName: 'AdPlacementImgExtBingDesktopMultiImage133x100' }\r\n);\r\n","import _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\n\r\nimport { Carousel } from '@bingads-webui-react/primitive-unthemed';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n// import { MultiLineEllipsisText } from '@bingads-webui-react/multiline-ellipsis';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getImgExtBingMobileMultiImage133x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n AdLabel,\r\n} from '../../shared-components';\r\n\r\n// multi-image placement\r\nconst BingMobileMultiImage133x100 = ({\r\n placementData, // UAPVMPlacement\r\n isEnabled,\r\n longHeadline,\r\n finalUrl,\r\n description,\r\n i18n,\r\n classes,\r\n}) => {\r\n //\r\n const [carouselState, setCarouselState] = useState({ index: 0, direction: null });\r\n\r\n const { placementMeta, images = [] } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n // there are 4 images in the placement, the last 3 are placeholder images\r\n const imagesWithPadding = useMemo(\r\n () => [0, 1, 2, 3].map(index => (images && images[index]) || _.last(images)),\r\n [images]\r\n );\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const handleSelect = useCallback((selectedIndex, e) => {\r\n setCarouselState({\r\n index: selectedIndex,\r\n direction: e.direction,\r\n });\r\n }, []);\r\n\r\n if (!placementData || !placementMeta || _.isEmpty(images)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n {\r\n imagesWithPadding.map(({\r\n imageMeta, placementCropping, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n }, idx) => {\r\n const cropping = expandedPlacementCropping || placementCropping;\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\nexport const AdPlacementImgExtBingMobileMultiImage133x100 = withUAPLThemedStyles(\r\n BingMobileMultiImage133x100,\r\n getImgExtBingMobileMultiImage133x100Styles,\r\n { componentName: 'AdPlacementImgExtBingMobileMultiImage133x100' }\r\n);\r\n","export const bingDesktopHeaderImage = 'data:image/png;base64,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';\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getBingSearchTextPlacementStyles,\r\n getBingSearchTextDesktopPlacementStyles,\r\n getBingSearchTextMobilePlacementStyles,\r\n} from '../styles';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n} from '../shared-components';\r\nimport { bingDesktopHeaderImage } from './media/bing-desktop-header';\r\n\r\nconst BingSearchPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n longHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n businessName,\r\n isClickDisabled,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n children,\r\n adExtensionContainerClassName,\r\n}) => (\r\n
\r\n \r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n \r\n
\r\n
\r\n }\r\n \r\n {(!showLogo || !logo) &&\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n
\r\n {children && (\r\n
\r\n {children}\r\n
\r\n )}\r\n
\r\n
\r\n);\r\n\r\nBingSearchPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n longHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n businessName: PropTypes.string,\r\n isClickDisabled: PropTypes.bool,\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n adExtensionContainerClassName: PropTypes.string,\r\n};\r\n\r\nBingSearchPlacementBase.defaultProps = {\r\n longHeadline: undefined,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n businessName: undefined,\r\n isClickDisabled: false,\r\n showLogo: false,\r\n logo: undefined,\r\n adExtensionContainerClassName: undefined,\r\n};\r\n\r\nexport const AdPlacementBingSearchText = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBingSearchTextPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchText' }\r\n);\r\n\r\nexport const AdPlacementBingSearchTextDesktop = withUAPLThemedStyles(\r\n ({ classes, i18n, ...props }) => (\r\n
\r\n
\r\n {i18n.getString(_TL_('Header\r\n
\r\n \r\n
\r\n ),\r\n getBingSearchTextDesktopPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchTextDesktop' }\r\n);\r\n\r\nexport const AdPlacementBingSearchTextMobile = withUAPLThemedStyles(\r\n props => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ),\r\n getBingSearchTextMobilePlacementStyles,\r\n { componentName: 'AdPlacementBingSearchTextMobile' }\r\n);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { PermissionsContext, withPermissions } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { getOutlookMobilePlacementStyles, getOutlookWebPlacementStyles, getOutlookWebRefreshedPlacementStyles, getOutlookMobileRefreshedPlacementStyles } from '../styles';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport {\r\n BusinessNameWithAdsLabel,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n AdLabel,\r\n ThreeDot,\r\n OutlookMobileWebUnread,\r\n OutlookPcDesktopUnread,\r\n DescriptionWithAction,\r\n} from '../shared-components';\r\n\r\nconst OutlookPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => (\r\n
\r\n \r\n {showLogo && logo &&\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\nOutlookPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n businessName: PropTypes.string,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nOutlookPlacementBase.defaultProps = {\r\n businessName: undefined,\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n showLogo: false,\r\n logo: undefined,\r\n};\r\n\r\nconst OutlookRefreshedPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n showThreeDot,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n showDescriptionWithAction,\r\n callToAction,\r\n showCallToActionAsLink,\r\n customizedUnreadComponent: CustomizedUnreadComponent,\r\n}) => (\r\n
\r\n {CustomizedUnreadComponent && }\r\n \r\n {showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n {showThreeDot && }\r\n \r\n \r\n {showDescriptionWithAction ? : }\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const AdPlacementOutlookMobile = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookMobileRefreshedPlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getOutlookMobilePlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n );\r\n\r\n return ;\r\n});\r\n\r\nexport const AdPlacementOutlookWeb = withPermissions((props1) => {\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const StyledComp = isAdPreviewRefreshEnabled ? withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookWebRefreshedPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n ) : withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getOutlookWebPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n );\r\n\r\n return ;\r\n});\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\nimport { Image, Text, Button, Card, CardHeader, CardPreview, CardFooter, FluentProvider, webLightTheme } from '@fluentui/react-components';\r\n\r\n\r\nexport const AdPlacementLinkedInSingleImageBase = ({\r\n i18n,\r\n classes,\r\n // Placement data\r\n placementData,\r\n\r\n // Ad data props\r\n companyPageName,\r\n userProfileImageSrc,\r\n finalUrl,\r\n introductoryText,\r\n headline,\r\n callToAction,\r\n\r\n // State props\r\n // isEnabled\r\n\r\n // Flag props\r\n showHeader,\r\n showIntroductoryText,\r\n showfinalUrl,\r\n showFooter,\r\n showCompanyInFooter,\r\n showIntroductoryTextInFooter,\r\n\r\n // Customization props\r\n // customClassName,\r\n // imagePreviewHeight,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n const renderHeader = () => (\r\n }\r\n header={
{companyPageName}
}\r\n description={{i18n.getString(_TL_('Promoted'))}}\r\n />\r\n );\r\n\r\n const renderImage = () => (\r\n
\r\n {imageMeta && imageMeta.url && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n\r\n const renderCallToAction = () => (\r\n \r\n );\r\n\r\n const renderFooter = () => (\r\n \r\n
\r\n {headline}\r\n {showfinalUrl && {finalUrl}}\r\n
\r\n {callToAction && renderCallToAction()}\r\n
\r\n );\r\n\r\n const renderFooterWithCompany = () => (\r\n \r\n
{headline}
\r\n {showIntroductoryTextInFooter && {introductoryText}}\r\n
\r\n
\r\n {i18n.getString(_TL_('User\r\n
{companyPageName}
\r\n
\r\n {callToAction && renderCallToAction()}\r\n
\r\n
\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n {showHeader && renderHeader()}\r\n\r\n {showIntroductoryText && {introductoryText}}\r\n\r\n
\r\n {renderImage()}\r\n\r\n {showFooter && !showCompanyInFooter && renderFooter()}\r\n {showFooter && showCompanyInFooter && renderFooterWithCompany()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nAdPlacementLinkedInSingleImageBase.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n placementData: PropTypes.shape({}),\r\n companyPageName: PropTypes.string,\r\n userProfileImageSrc: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n introductoryText: PropTypes.string,\r\n headline: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n showHeader: PropTypes.bool,\r\n showIntroductoryText: PropTypes.bool,\r\n showFooter: PropTypes.bool,\r\n showCompanyInFooter: PropTypes.bool,\r\n showIntroductoryTextInFooter: PropTypes.bool,\r\n showfinalUrl: PropTypes.bool,\r\n};\r\n\r\nAdPlacementLinkedInSingleImageBase.defaultProps = {\r\n placementData: {},\r\n companyPageName: undefined,\r\n userProfileImageSrc: undefined,\r\n finalUrl: undefined,\r\n introductoryText: undefined,\r\n headline: undefined,\r\n callToAction: undefined,\r\n showHeader: false,\r\n showIntroductoryText: false,\r\n showFooter: false,\r\n showCompanyInFooter: false,\r\n showIntroductoryTextInFooter: false,\r\n showfinalUrl: false,\r\n};\r\n","\r\nimport React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementLinkedInSingleImageBase } from './li-single-image-ad-placement-base';\r\nimport {\r\n getLinkedInSingleImageDesktopStyles,\r\n getLinkedInSingleImageMobileStyles,\r\n getLinkedInSingleImageMediumRectangleStyles,\r\n getLinkedInSingleImageMobileInterstitialStyles,\r\n getLinkedInSingleImageNativeStyles,\r\n} from '../../styles';\r\n\r\n\r\nexport const AdPlacementLinkedInSingleImageDesktop = withUAPLThemedStyles(\r\n props => (\r\n ),\r\n getLinkedInSingleImageDesktopStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageDesktop' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMobile = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMobileStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMobile' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMediumRectangle = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMediumRectangleStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMediumRectangle' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageMobileInterstitial = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageMobileInterstitialStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageMobileInterstitial' }\r\n);\r\n\r\nexport const AdPlacementLinkedInSingleImageNative = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getLinkedInSingleImageNativeStyles,\r\n { componentName: 'AdPlacementLinkedInSingleImageNative' }\r\n);\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const AppAdsBasePlacement = ({\r\n classes,\r\n children,\r\n}) => (\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n);\r\n\r\nAppAdsBasePlacement.propTypes = {\r\n classes: PropTypes.shape({\r\n placementPreview: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n phoneInnerContent: PropTypes.string,\r\n }),\r\n children: PropTypes.node,\r\n};\r\n\r\nAppAdsBasePlacement.defaultProps = {\r\n classes: {},\r\n children: null,\r\n};\r\n","import { getResponsiveSearchAdMobilePlacementStyles } from '../../styles';\r\n\r\nexport const getAppAdsBasePlacementStyles = () => ({\r\n placementCard: {\r\n width: 300,\r\n height: 600,\r\n border: '10px solid rgba(214, 214, 214, 1)',\r\n borderTopRightRadius: '30px',\r\n borderTopLeftRadius: '30px',\r\n borderBottom: 'none',\r\n },\r\n placementPreview: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n phoneInnerContent: {\r\n marginTop: 30,\r\n marginBottom: 30,\r\n height: '90%',\r\n marginLeft: 10,\r\n marginRight: 10,\r\n borderRadius: 10,\r\n },\r\n videoPlayerRoot: {\r\n height: '100%',\r\n width: '100%',\r\n backgroundColor: 'black',\r\n borderRadius: 10,\r\n },\r\n});\r\n\r\nexport const getAppAdsMobileStyles = () => {\r\n const {\r\n placementCard,\r\n placementTextContainer,\r\n placementContentContainer,\r\n ...rest\r\n } = getResponsiveSearchAdMobilePlacementStyles();\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...rest,\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...placementCard,\r\n ...appAdsPlacementCard,\r\n width: '400px',\r\n height: '300px',\r\n },\r\n placementTextContainer: {\r\n ...placementTextContainer,\r\n flex: '1',\r\n },\r\n placementContentContainer: {\r\n ...placementContentContainer,\r\n marginTop: 10,\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n borderRadius: '5.11px',\r\n border: '0.5px solid #ddd',\r\n background: '#fff',\r\n '&.placement-card-content': {\r\n height: 'auto',\r\n padding: '10px',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsM365MobileStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n display: 'flex',\r\n width: '300px',\r\n height: '300px',\r\n '& .placement-card-content': {\r\n height: '130px',\r\n padding: '10px',\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n marginTop: 30,\r\n border: '0.5px solid #ddd',\r\n background: '#fff',\r\n width: '100%',\r\n },\r\n },\r\n preview: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n previewContent: {\r\n border: '1px solid #C8C8C8',\r\n boxShadow: 'none',\r\n width: 340,\r\n height: 80,\r\n padding: '5px 10px 5px 15px',\r\n marginTop: 150,\r\n },\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'block',\r\n color: 'black',\r\n textDecoration: 'none',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n verticalAlign: 'middle',\r\n lineHeight: '30px',\r\n marginTop: 0,\r\n '& .ads-label': {\r\n backgroundColor: 'blue !important',\r\n borderRadius: 4,\r\n height: 15,\r\n verticalAlign: 'middle',\r\n padding: '0 4px !important',\r\n width: 'auto',\r\n display: 'inline-block',\r\n position: 'static',\r\n margin: '0 4px 0 0',\r\n fontSize: 10,\r\n color: 'white !important',\r\n lineHeight: '15px',\r\n },\r\n '& .business-name': {\r\n fontSize: '20px !important',\r\n },\r\n },\r\n placementShortHeadline: {\r\n display: 'block',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n placementDescription: {\r\n display: 'block',\r\n color: 'black',\r\n textDecoration: 'none',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n },\r\n description: {\r\n display: 'inline-block',\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsMSNMobileStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n height: '300px',\r\n width: '400px',\r\n },\r\n msnDescription: {\r\n paddingTop: '5px',\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n },\r\n msnPlacementImage: {\r\n '& .cropped-image-view': {\r\n borderRadius: '5px',\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const getAppAdsCasualGamesStyles = () => {\r\n const { placementCard: appAdsPlacementCard, ...appAdsStyles } = getAppAdsBasePlacementStyles();\r\n\r\n return {\r\n ...appAdsStyles,\r\n placementCard: {\r\n ...appAdsPlacementCard,\r\n height: '350px',\r\n width: '300px',\r\n },\r\n casualGamesBase: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n };\r\n};\r\n","import React from 'react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\nimport { getAppAdsMSNMobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { PlacementDescription, BusinessNameWithAdsLabel } from '../../shared-components';\r\n\r\nexport const AppAdsMSNDisplayPlacement = withUAPLThemedStyles(\r\n (props) => {\r\n const {\r\n classes,\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n description,\r\n i18n, // may need to set window._TL_ in other platforms\r\n } = props;\r\n\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\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 getAppAdsMSNMobileStyles,\r\n { componentName: 'AppAdsMSNDisplayPlacement' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getResponsiveOutlookMobilePlacementStyles,\r\n getResponsiveOutlookWebPlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport {\r\n BusinessNameWithAdsLabel,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\nexport const OutlookPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n finalUrl,\r\n displayUrl,\r\n description,\r\n isMultiLineDescription,\r\n showLogo,\r\n logo,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n customClassName,\r\n}) => (\r\n
\r\n {showLogo && logo &&\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\nOutlookPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n businessName: PropTypes.string,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n customClassName: PropTypes.string,\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n};\r\n\r\nOutlookPlacementBase.defaultProps = {\r\n businessName: undefined,\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n customClassName: undefined,\r\n showLogo: false,\r\n logo: undefined,\r\n};\r\n\r\nexport const ResponsiveAdPlacementOutlookMobile = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveOutlookMobilePlacementStyles,\r\n { componentName: 'AdPlacementOutlookMobile' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementOutlookWeb = withUAPLThemedStyles(\r\n props => (\r\n
\r\n \r\n
\r\n ),\r\n getResponsiveOutlookWebPlacementStyles,\r\n { componentName: 'AdPlacementOutlookWeb' }\r\n);\r\n","const getOutlookPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'block',\r\n border: '1px solid #C8C8C8',\r\n margin: 'auto',\r\n overflow: 'hidden',\r\n position: 'relative !important',\r\n background: '#fff',\r\n boxSizing: 'content-box',\r\n boxShadow: 'none',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n placementShortHeadline: undefined,\r\n placementDescription: undefined,\r\n placementLogoContainer: undefined,\r\n});\r\n\r\nexport const getResponsiveOutlookMobilePlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n height: 80,\r\n borderRadius: '5.11px',\r\n padding: '5px 10px 5px 15px',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n display: 'block',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n color: 'black !important',\r\n fontSize: '20px !important',\r\n maxWidth: 300,\r\n marginTop: '0px !important',\r\n lineHeight: '30px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 15,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n },\r\n\r\n '& .business-name': {\r\n color: 'unset !important',\r\n padding: 'unset !important',\r\n fontSize: 'unset !important',\r\n marginTop: 'unset !important',\r\n lineHeight: 'unset !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n fontSize: 13,\r\n marginTop: 2,\r\n fontWeight: 200,\r\n lineHeight: '19.5px',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n color: 'black',\r\n fontSize: 13,\r\n marginTop: 2,\r\n lineHeight: '19.5px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 8,\r\n paddingRight: 16,\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n\r\nexport const getResponsiveOutlookWebPlacementStyles = (theme) => {\r\n const { placementCard, ...baseStyles } = getOutlookPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n outlookWebCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n\r\n placementCard: {\r\n ...placementCard,\r\n borderRadius: 0,\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n border: 'none',\r\n '& .placement-card-content': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n minWidth: 0,\r\n border: '1px solid #C8C8C8',\r\n },\r\n },\r\n\r\n placementTextContainer: {\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n whiteSpace: 'nowrap',\r\n minWidth: 0,\r\n '& .logo-and-businessname-container': {\r\n display: 'inline-block',\r\n position: 'relative',\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n display: 'inline-block !important',\r\n margin: '0px 10px 0px 0px !important',\r\n verticalAlign: 'middle',\r\n\r\n '& .ads-label': {\r\n color: 'white !important',\r\n width: 'auto',\r\n height: 13,\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline-block',\r\n padding: '0 4px !important',\r\n lineHeight: '15px !important',\r\n verticalAlign: 'middle',\r\n backgroundColor: 'blue !important',\r\n border: 'unset !important',\r\n borderRadius: '4px !important',\r\n opacity: '90%',\r\n position: 'relative',\r\n top: -2.5,\r\n },\r\n\r\n '& .business-name': {\r\n color: 'black !important',\r\n fontSize: '10px !important',\r\n lineHeight: '16px !important',\r\n padding: '4px 0px !important',\r\n },\r\n },\r\n\r\n placementShortHeadline: {\r\n display: 'inline-block',\r\n color: 'blue',\r\n padding: 4,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n '&:before': {\r\n content: '\" \"',\r\n border: 'solid gray',\r\n display: 'inline-block',\r\n padding: '2px',\r\n transform: 'rotate(45deg) translateY(-3px)',\r\n borderWidth: '0 1.5px 1.5px 0',\r\n marginRight: 10,\r\n position: 'relative',\r\n left: -4,\r\n },\r\n '&::after': {\r\n content: '\"*\"',\r\n display: 'inline',\r\n padding: 4,\r\n color: 'gray',\r\n position: 'relative',\r\n left: 4,\r\n },\r\n },\r\n\r\n placementDescription: {\r\n display: 'inline-block',\r\n color: 'black',\r\n padding: 4,\r\n flex: '1 1 0px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%',\r\n paddingBottom: 5,\r\n },\r\n\r\n placementLogoContainer: {\r\n padding: [2, 8, 2, 8],\r\n '& .cropped-image-view': {\r\n borderRadius: '50%',\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React from 'react';\r\n\r\nimport { getAppAdsM365MobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { OutlookPlacementBase } from '../responsive-ad-placements/responsive-outlook-placements';\r\n\r\nexport const AppAdsM365OutlookPlacement = withUAPLThemedStyles((props) => {\r\n const {\r\n placementData, // UAPVMSingleImagePlacement\r\n businessName,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n description,\r\n isMultiLineDescription,\r\n logo,\r\n finalUrl,\r\n displayUrl,\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n\r\n );\r\n}, getAppAdsM365MobileStyles, { componentName: 'AppAdsM365OutlookPlacement' });\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport {\r\n AdLabel,\r\n AdditionalLineDisclaimer,\r\n PopupDisclaimer,\r\n PlacementHeadlineWithLink,\r\n PlacementFinalUrlWithLink,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n PlacementImage,\r\n} from '../../shared-components';\r\n\r\nexport const AdPlacementResponsiveSearchPropTypes = {\r\n propTypes: {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementContentContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementImage: PropTypes.string,\r\n placementInlineItems: PropTypes.string,\r\n }).isRequired,\r\n decoratorsData: PropTypes.shape({\r\n disclaimer: PropTypes.shape({\r\n DisclaimerLayout: PropTypes.string,\r\n }),\r\n imageExtension: PropTypes.shape({\r\n image: PropTypes.shape({}),\r\n enableCrop: PropTypes.bool,\r\n }),\r\n }),\r\n showAdDisclaimer: PropTypes.bool,\r\n showImageExtension: PropTypes.bool,\r\n previewImageAspectRatio: PropTypes.number,\r\n previewImageHeight: PropTypes.number,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n },\r\n\r\n defaultProps: {\r\n showAdDisclaimer: false,\r\n showImageExtension: false,\r\n previewImageAspectRatio: 1.78,\r\n previewImageHeight: 100,\r\n decoratorsData: {},\r\n },\r\n};\r\n\r\nexport const ResponsiveSearchAdPlacementBase = (props) => {\r\n const {\r\n i18n,\r\n classes,\r\n showAdDisclaimer,\r\n showImageExtension,\r\n previewImageAspectRatio,\r\n previewImageHeight,\r\n decoratorsData,\r\n previewTexts: {\r\n longHeadline,\r\n description,\r\n displayUrl,\r\n url,\r\n },\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n {\r\n showAdDisclaimer && decoratorsData.disclaimer && decoratorsData.disclaimer.DisclaimerLayout === 'Popup' &&\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n {\r\n showAdDisclaimer && decoratorsData.disclaimer && decoratorsData.disclaimer.DisclaimerLayout === 'AdditionalLine' &&\r\n \r\n }\r\n
\r\n
\r\n {\r\n showImageExtension && decoratorsData.imageExtension && decoratorsData.imageExtension.image &&\r\n \r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\nResponsiveSearchAdPlacementBase.propTypes = AdPlacementResponsiveSearchPropTypes.propTypes;\r\n\r\nResponsiveSearchAdPlacementBase.defaultProps = AdPlacementResponsiveSearchPropTypes.defaultProps;\r\n","import React from 'react';\r\n\r\nimport { getAppAdsMobileStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveSearchAdPlacementBase } from '../responsive-search-ad-placements/responsive-search-ad-placement-base';\r\n\r\n\r\nexport const AppAdsBingSearchPlacementBase = (props) => {\r\n const {\r\n shortHeadline,\r\n description,\r\n displayUrl,\r\n url,\r\n placementData,\r\n classes,\r\n showImageExtension,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n placementMeta,\r\n placementCropping,\r\n imageMeta,\r\n effectiveImageUrl,\r\n effectiveImageWidth,\r\n effectiveImageHeight,\r\n expandedPlacementCropping,\r\n imageCropping,\r\n } = placementData || {};\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n\r\n const decoratorsData = showImageExtension && {\r\n imageExtension: {\r\n image: {\r\n src: effectiveImageUrl || imageMeta.url,\r\n width: effectiveImageWidth || imageMeta.width,\r\n height: effectiveImageHeight || imageMeta.height,\r\n cropSettings: {\r\n SourceWidth: cropping.SourceWidth,\r\n SourceX: cropping.SourceX,\r\n SourceY: cropping.SourceY,\r\n },\r\n },\r\n enableCrop: true,\r\n },\r\n enableCrop: imageCropping,\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const AppAdsBingSearchPlacement = withUAPLThemedStyles(\r\n props => ,\r\n getAppAdsMobileStyles,\r\n { componentName: 'AppAdsBingSearchPlacement' }\r\n);\r\n\r\nexport const AppAdsBingSearchPlacementText = withUAPLThemedStyles(\r\n props => ,\r\n getAppAdsMobileStyles,\r\n { componentName: 'AppAdsBingSearchPlacementText' }\r\n);\r\n","import React from 'react';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\nimport { getAppAdsCasualGamesStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { PlacementHeadline } from '../../shared-components';\r\n\r\n\r\nexport const AppAdsCasualGamesDimensionsPlacement = withUAPLThemedStyles(\r\n (props) => {\r\n const {\r\n classes,\r\n placementData, // UAPVMSingleImagePlacement\r\n shortHeadline,\r\n i18n, // may need to set window._TL_ in other platforms\r\n } = props;\r\n\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\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 getAppAdsCasualGamesStyles,\r\n { componentName: 'AppAdsCasualGamesDimensionsPlacement' }\r\n);\r\n","/* eslint-disable jsx-a11y/media-has-caption */\r\nimport React, { useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport { getAppAdsBasePlacementStyles } from '../../styles/ad-placement-components/app-ads-ad-placement-styles';\r\nimport { AppAdsBasePlacement } from './app-ads-base-placement';\r\n\r\n\r\nexport const AppAdsVideoHorizontalPlacementInner = ({\r\n classes,\r\n videos,\r\n}) => {\r\n const { src } = videos && videos.length > 0 ? videos[0] : {};\r\n\r\n const videoRef = useRef();\r\n\r\n useEffect(() => {\r\n if (videoRef.current) {\r\n videoRef.current.load();\r\n }\r\n }, [src]);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nAppAdsVideoHorizontalPlacementInner.propTypes = {\r\n classes: PropTypes.shape({\r\n videoPlayerRoot: PropTypes.string,\r\n }),\r\n videos: PropTypes.arrayOf(PropTypes.shape({\r\n src: PropTypes.string,\r\n })),\r\n};\r\n\r\nAppAdsVideoHorizontalPlacementInner.defaultProps = {\r\n classes: {},\r\n videos: null,\r\n};\r\n\r\nexport const AppAdsVideoHorizontalPlacement = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getAppAdsBasePlacementStyles,\r\n { componentName: 'AppAdsVideo16x9Placement' }\r\n);\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getResponsivePlacementCardStyles } from '../../styles';\r\n\r\nconst MMAPlacementCardImpl = ({\r\n isEnabled,\r\n url,\r\n children,\r\n mmaPlacementCardClassName,\r\n classes,\r\n}) =>\r\n //\r\n (\r\n
\r\n
\r\n {url && (\r\n \r\n {children}\r\n \r\n )}\r\n {!url && (\r\n \r\n {children}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\nMMAPlacementCardImpl.propTypes = {\r\n isEnabled: PropTypes.bool,\r\n url: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n mmaPlacementCardClassName: PropTypes.string,\r\n classes: PropTypes.shape({\r\n mmaPlacementCardRoot: PropTypes.string,\r\n mmaPlacementCardDisabled: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nMMAPlacementCardImpl.defaultProps = {\r\n isEnabled: true,\r\n url: undefined,\r\n mmaPlacementCardClassName: undefined,\r\n};\r\n\r\nexport const ResponsiveMMAPlacementCard = withUAPLThemedStyles(\r\n MMAPlacementCardImpl,\r\n getResponsivePlacementCardStyles,\r\n { componentName: 'MMAPlacementCard ' }\r\n);\r\n","export const getResponsivePlacementCardStyles = () => ({\r\n mmaPlacementCardRoot: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: 'transparent',\r\n margin: 'auto',\r\n\r\n '& .card-parent': {\r\n width: '100%',\r\n '& .placement-card-content': {\r\n boxShadow: '0px 0.511px 1.533px rgb(0 0 0 / 10%), 0px 2.72533px 6.132px rgb(0 0 0 / 13%)',\r\n border: 'solid thin #ddd',\r\n borderRadius: 5.11,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n margin: 'auto',\r\n position: 'relative',\r\n },\r\n },\r\n },\r\n mmaPlacementCardDisabled: {\r\n opacity: 0.5,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementGradient,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n PlacementAction,\r\n BusinessNameWithAdsLabel,\r\n} from '../../shared-components';\r\n\r\nimport { ResponsiveMMAPlacementCard } from './responsive-mma-placement-card';\r\n\r\nexport const ResponsiveAdPlacementMmaBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n customClassName,\r\n imagePreviewHeight,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n\r\n showAdLabel,\r\n showGradient,\r\n\r\n showBusinessName,\r\n businessName,\r\n showBusinessNameAdLabel,\r\n\r\n showLogo,\r\n logo,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio, logoHeight } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n const finalImagePreviewHeight = imagePreviewHeight > 0 ? imagePreviewHeight : previewHeight;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {showAdLabel && }\r\n {showGradient && }\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n {showFinalUrl &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n {showBusinessName && (\r\n \r\n )}\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nResponsiveAdPlacementMmaBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n customClassName: PropTypes.string,\r\n imagePreviewHeight: PropTypes.number,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showAdLabel: PropTypes.bool,\r\n showGradient: PropTypes.bool,\r\n\r\n showBusinessName: PropTypes.bool,\r\n businessName: PropTypes.string,\r\n showBusinessNameAdLabel: PropTypes.bool,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({}),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementGradient: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementCallToAction: PropTypes.string,\r\n placementBusinessNameWithAdsLabel: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nResponsiveAdPlacementMmaBase.defaultProps = {\r\n isEnabled: true,\r\n customClassName: '',\r\n imagePreviewHeight: -1,\r\n\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n showDescription: false,\r\n showCallToAction: false,\r\n showAdLabel: false,\r\n showGradient: false,\r\n showBusinessName: false,\r\n showBusinessNameAdLabel: false,\r\n showLogo: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n businessName: undefined,\r\n logo: undefined,\r\n};\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveAdPlacementMmaBase } from './responsive-mma-ad-placement-base';\r\nimport {\r\n getResponsiveMmaVerticalImage1x2Styles,\r\n getResponsiveMmaSquareImage1x1Styles,\r\n getResponsiveMmaLandScapeImage191x100Styles,\r\n getResponsiveMmaWideImage4x1Styles,\r\n} from '../../styles';\r\n\r\nexport const ResponsiveAdPlacementMmaWideImage4x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaWideImage4x1Styles,\r\n { componentName: 'AdPlacementMmaWideImage4x1' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaLandscapeImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaLandScapeImage191x100Styles,\r\n { componentName: 'AdPlacementMmaLandscapeImage191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaSquareImage1x1' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaVerticalImage1x2 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaVerticalImage1x2Styles,\r\n { componentName: 'AdPlacementMmaVerticalImage1x2' }\r\n);\r\n","const getMmaPlacementBaseStyles = () => ({\r\n placementImageContainer: undefined, // { },\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n },\r\n placementAdsLabel: undefined, // { },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 20,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementLongHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementFinalUrl: {\r\n color: 'white',\r\n bottom: 10,\r\n position: 'relative',\r\n fontSize: 10,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 5,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '7px 16px 8px 16px',\r\n fontSize: 16,\r\n color: '#666',\r\n backgroundColor: '#EEE',\r\n opacity: '70%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaWideImage4x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 0,\r\n bottom: 25,\r\n paddingLeft: 32,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n bottom: 15,\r\n paddingBottom: 5,\r\n fontWeight: '200',\r\n fontSize: 24,\r\n color: 'white',\r\n },\r\n placementAdsLabel: {\r\n right: 0, // align to right\r\n },\r\n placementGradient: {\r\n backgroundImage: 'linear-gradient(to left, transparent 0, black 100%)',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaLandScapeImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementTextContainer: {\r\n padding: '8px 20px 20px 20px',\r\n fontSize: 10,\r\n lineHeight: 1.1,\r\n maxWidth: '-webkit-fill-available',\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 4,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .logo-business-name': {\r\n color: '#111',\r\n fontSize: 14,\r\n fontWeight: 400,\r\n lineHeight: '18px',\r\n },\r\n },\r\n },\r\n },\r\n placementShortHeadline: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 24,\r\n marginBottom: 8,\r\n fontWeight: '200',\r\n paddingBottom: 5,\r\n },\r\n placementFinalUrl: {\r\n position: 'relative',\r\n color: 'green',\r\n fontSize: 10,\r\n marginBottom: 8,\r\n },\r\n placementDescription: {\r\n position: 'relative',\r\n color: 'black',\r\n fontSize: 14,\r\n maxWidth: 250,\r\n wordWrap: 'break-word',\r\n paddingRight: 16,\r\n },\r\n placementCallToAction: {\r\n color: 'white',\r\n right: 15,\r\n border: 'none',\r\n bottom: 15,\r\n opacity: '90%',\r\n padding: '6px 16px 8px 16px',\r\n position: 'absolute',\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n borderRadius: 32,\r\n backgroundColor: '#a19f9d',\r\n },\r\n placementLogoContainer: {\r\n paddingTop: 5,\r\n paddingRight: 6,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n border: 'solid 1px #ECECEC',\r\n },\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 18,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementDescription: {\r\n color: 'white',\r\n bottom: 8,\r\n position: 'relative',\r\n fontSize: 14,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n borderRadius: 32,\r\n border: 'none',\r\n padding: '6px 16px 8px 16px',\r\n fontSize: 16,\r\n color: 'white',\r\n backgroundColor: '#a19f9d',\r\n opacity: '90%',\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaVerticalImage1x2Styles = theme => ({\r\n // base styles\r\n ...getMmaPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementFinalUrl: {\r\n color: 'green',\r\n bottom: 15,\r\n position: 'relative',\r\n fontSize: 10,\r\n },\r\n placementCallToAction: {\r\n position: 'relative',\r\n top: 5,\r\n color: 'white',\r\n border: 'solid 1px #dddddd',\r\n opacity: '90%',\r\n padding: '5px 16px 6px 16px',\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n borderRadius: 3,\r\n backgroundColor: '#a19f9d',\r\n },\r\n});\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { ResponsiveAdPlacementMmaBase } from './responsive-mma-ad-placement-base';\r\n\r\nimport {\r\n getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n getResponsiveMmaInMsanMSNInArticle150x100Styles,\r\n getResponsiveMmaInMsanMSNSmallHeadline133x100Styles,\r\n getResponsiveMmaInMsanSquareImage1x1Styles,\r\n getResponsiveMmaInMsanWideImage191x100Styles,\r\n} from '../../styles';\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanWideImage191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanWideImage191x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanWideImage191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSEdgeSingleCarousel178x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSNInArticle150x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSNInArticle150x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNInArticle150x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanMSNSmallHeadline133x100Styles,\r\n { componentName: 'AdPlacementMmaInMsanMSNSmallHeadline133x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementMmaInMsanSquareImage1x1 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveMmaInMsanSquareImage1x1Styles,\r\n { componentName: 'AdPlacementMmaInMsanSquareImage1x1' }\r\n);\r\n","const getMmaInMsanPlacementBaseStyles = () => ({\r\n placementCard: undefined,\r\n placementImageContainer: undefined,\r\n placementTextContainer: undefined,\r\n placementAdsLabel: undefined,\r\n placementGradient: undefined,\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: undefined,\r\n placementFinalUrl: undefined,\r\n placementDescription: undefined,\r\n placementCallToAction: undefined,\r\n placementBusinessNameWithAdsLabel: undefined,\r\n});\r\n\r\nexport const getResponsiveMmaInMsanWideImage191x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n maxWidth: '-webkit-fill-available',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 18,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSEdgeSingleCarousel178x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n placementImageContainer: {\r\n position: 'relative',\r\n },\r\n\r\n placementCard: {\r\n '&:hover $placementGradient': {\r\n height: '480px !important',\r\n top: -100,\r\n },\r\n },\r\n\r\n // overrides\r\n placementTextContainer: {\r\n position: 'absolute',\r\n left: 20,\r\n bottom: 25,\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#bebebe',\r\n },\r\n\r\n placementGradient: {\r\n display: 'block',\r\n width: '100%',\r\n height: '220px !important',\r\n top: 40,\r\n backgroundImage: 'linear-gradient(to bottom, transparent 0, black 100%)',\r\n },\r\n\r\n placementShortHeadline: {\r\n fontWeight: '200',\r\n fontSize: 28,\r\n lineHeight: '33.99px',\r\n color: 'white',\r\n width: 590,\r\n height: 73,\r\n marginBottom: 20,\r\n\r\n '& .multi-line-processed-text': {\r\n position: 'absolute',\r\n bottom: 30,\r\n },\r\n },\r\n\r\n placementBusinessNameWithAdsLabel: {\r\n '& .ads-label': {\r\n color: '#fff !important',\r\n opacity: 0.7,\r\n border: '.5px solid hsla(0,0%,100%,.3) !important',\r\n },\r\n '& .business-name': {\r\n color: '#bebebe !important',\r\n },\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSNInArticle150x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n background: '#fff',\r\n },\r\n\r\n placementTextContainer: {\r\n padding: 10,\r\n // height: 98,\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n top: -6,\r\n color: '#207697',\r\n height: 60,\r\n position: 'relative',\r\n fontSize: 15,\r\n lineHeight: 1.2,\r\n fontWeight: 200,\r\n paddingBottom: 5,\r\n },\r\n\r\n placementDescription: {\r\n height: 45,\r\n margin: '5px 0 10px 0',\r\n fontSize: 14,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanMSNSmallHeadline133x100Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 90,\r\n background: '#fff',\r\n overflow: 'unset !important',\r\n '& .card-parent': {\r\n '& .placement-card-content': {\r\n flexDirection: 'row !important',\r\n border: 'none !important',\r\n height: 90,\r\n },\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 100,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 52,\r\n margin: '4px 8px 0 0',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n\r\nexport const getResponsiveMmaInMsanSquareImage1x1Styles = theme => ({\r\n // base styles\r\n ...getMmaInMsanPlacementBaseStyles(theme),\r\n\r\n // overrides\r\n placementCard: {\r\n height: 90,\r\n background: '#fff',\r\n '& .card-parent': {\r\n '& .placement-card-content': {\r\n flexDirection: 'row !important',\r\n height: 90,\r\n },\r\n },\r\n },\r\n\r\n placementImageContainer: {\r\n float: 'left',\r\n width: 80,\r\n height: 75,\r\n margin: 8,\r\n },\r\n\r\n placementTextContainer: {\r\n color: '#333',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n },\r\n\r\n placementShortHeadline: {\r\n height: 45,\r\n margin: '8px 8px 0 0',\r\n overflow: 'hidden',\r\n fontSize: 13,\r\n fontWeight: 600,\r\n lineHeight: 1.384,\r\n paddingBottom: 5,\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n getResponsiveBingSearchTextPlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrl,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\n\r\nconst BingSearchPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n showFinalUrl,\r\n showLogo,\r\n logo,\r\n finalUrl,\r\n isMultiLineFinalUrl,\r\n displayUrl,\r\n\r\n description,\r\n businessName,\r\n isMultiLineDescription,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n customClassName,\r\n children,\r\n adExtensionContainerClassName,\r\n}) => (\r\n
\r\n
\r\n \r\n
\r\n {showLogo && logo &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{businessName}
\r\n \r\n
\r\n
\r\n }\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {(!showLogo || !logo) && showFinalUrl && (\r\n \r\n )}\r\n
\r\n \r\n \r\n
\r\n
\r\n {children && (\r\n
\r\n {children}\r\n
\r\n )}\r\n \r\n
\r\n
\r\n);\r\n\r\nBingSearchPlacementBase.propTypes = {\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n showFinalUrl: PropTypes.bool,\r\n finalUrl: PropTypes.string,\r\n isMultiLineFinalUrl: PropTypes.bool,\r\n displayUrl: PropTypes.string,\r\n\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n businessName: PropTypes.string,\r\n placementData: PropTypes.shape({}), // UAPVMSingleImagePlacement\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementShortHeadline: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementFinalUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementLogoContainer: PropTypes.string,\r\n adExtensionContainer: PropTypes.string,\r\n }).isRequired,\r\n customClassName: PropTypes.string,\r\n};\r\n\r\nBingSearchPlacementBase.defaultProps = {\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showFinalUrl: false,\r\n\r\n shortHeadline: undefined,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n displayUrl: undefined,\r\n isMultiLineFinalUrl: false,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n customClassName: undefined,\r\n businessName: undefined,\r\n showLogo: false,\r\n logo: undefined,\r\n placementData: {},\r\n};\r\n\r\nexport const ResponsiveAdPlacementBingSearchText = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveBingSearchTextPlacementStyles,\r\n { componentName: 'AdPlacementBingSearchText' }\r\n);\r\n","const getBingSearchPlacementBaseStyles = () => ({\r\n placementCard: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n position: 'relative',\r\n boxSizing: 'content-box',\r\n overflow: 'hidden',\r\n background: '#fff',\r\n margin: 'auto',\r\n\r\n '& .placement-card-content': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n },\r\n placementTextContainer: {\r\n margin: '4px 8px 0 8px',\r\n fontSize: 10,\r\n lineHeight: '16px',\r\n color: '#0078d4',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n '& .logo-and-text-container': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingBottom: 8,\r\n '& .logo-text': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n },\r\n },\r\n placementShortHeadline: undefined,\r\n placementLongHeadline: {\r\n height: 28,\r\n fontSize: 20,\r\n fontWeight: 400,\r\n lineHeight: '24px',\r\n overflow: 'hidden',\r\n width: '100%',\r\n },\r\n placementFinalUrl: {\r\n height: 20,\r\n fontSize: 14,\r\n color: '#0b6a0b',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'flex',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#767676 !important',\r\n border: '1px solid #ddd !important',\r\n margin: '0 4px 0 0 !important',\r\n display: 'inline',\r\n opacity: '100% !important',\r\n padding: '0 2px !important',\r\n maxHeight: 16,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n borderRadius: '6px !important',\r\n },\r\n placementDescription: {\r\n color: '#333',\r\n display: 'inline-block',\r\n fontSize: 13,\r\n flexGrow: 1,\r\n overflow: 'hidden',\r\n },\r\n});\r\n\r\nexport const getResponsiveBingSearchTextPlacementStyles = (theme) => {\r\n const { placementCard, placementFinalUrl, ...baseStyles } = getBingSearchPlacementBaseStyles(theme);\r\n const styles = {\r\n ...baseStyles,\r\n\r\n placementCard: {\r\n ...placementCard,\r\n height: 110,\r\n padding: '8px 16px',\r\n alignItems: 'flex-start',\r\n background: 'transparent',\r\n '& .card-parent': {\r\n width: '100%',\r\n },\r\n '& .placement-card-content': {\r\n width: '100%',\r\n display: 'block',\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n },\r\n },\r\n\r\n placementFinalUrl: {\r\n ...placementFinalUrl,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementLogoContainer: {\r\n paddingRight: 8,\r\n '& .cropped-image-view': {\r\n borderRadius: 6,\r\n },\r\n },\r\n };\r\n return styles;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostWindowsSpotlight191x100Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n} from '../../shared-components';\r\nimport searchIcon from '../media/search.svg';\r\nimport cameraIcon from '../media/camera.svg';\r\nimport batteryIcon from '../media/battery.svg';\r\nimport wifiIcon from '../media/wifi.svg';\r\n\r\nconst WindowsSpotlight191x100 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n finalUrl,\r\n longHeadline,\r\n description,\r\n hotspots,\r\n i18n,\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
\r\n
{i18n.getString(_TL_('10:36'))}
\r\n
{i18n.getString(_TL_('Tuesday, October 18'))}
\r\n
\r\n
\r\n \"\"\r\n
\r\n {\r\n hotspots && hotspots[0] && hotspots[0].placement === 'Center' &&\r\n (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n
{hotspots[0].title}
\r\n
{hotspots[0].desc}
\r\n
{hotspots[0].actionText}
\r\n
{hotspots[0].uri}
\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 hotspots && hotspots[0] && hotspots[0].placement === 'TopLeft' &&\r\n (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
\r\n
{hotspots[0].title}
\r\n
{hotspots[0].desc}
\r\n
{hotspots[0].actionText}
\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\nWindowsSpotlight191x100.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n hotspots: PropTypes.arrayOf(PropTypes.shape({\r\n placement: PropTypes.string,\r\n title: PropTypes.string,\r\n desc: PropTypes.string,\r\n actionText: PropTypes.string,\r\n })),\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({\r\n placementTextContainer: PropTypes.string,\r\n placementCenterSection: PropTypes.string,\r\n placementHotspotsCenterSection: PropTypes.string,\r\n placementTopRightSection: PropTypes.string,\r\n placementTopLeftSection: PropTypes.string,\r\n placementHotspotsLeftSection: PropTypes.string,\r\n placementImageContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementLongHeadline: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n placementSearchIconCenter: PropTypes.string,\r\n placementSearchIconTopLeft: PropTypes.string,\r\n placementCameraIcon: PropTypes.string,\r\n placementWifiIcon: PropTypes.string,\r\n placementBatteryIcon: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nWindowsSpotlight191x100.defaultProps = {\r\n isEnabled: true,\r\n longHeadline: undefined,\r\n finalUrl: undefined,\r\n description: undefined,\r\n hotspots: [],\r\n};\r\n\r\nexport const AdPlacementBoostWindowsSpotlight191x100 = withUAPLThemedStyles(\r\n WindowsSpotlight191x100,\r\n getBoostWindowsSpotlight191x100Styles,\r\n { componentName: 'AdPlacementBoostWindowsSpotlight191x100' }\r\n);\r\n\r\nexport const UnstyledWindowsSpotlight191x100 = WindowsSpotlight191x100;\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport {\r\n AdPlacementBoostDiscoverCard1x1,\r\n AdPlacementBoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100,\r\n AdPlacementBoostStartMenu,\r\n AdPlacementBoostActionCenter,\r\n AdPlacementBoostBanner,\r\n} from '../index';\r\nimport { UnstyledWindowsSpotlight191x100 } from '../boost-ad-placements/boost-windows-spotlight-placement';\r\nimport { getResponsiveBoostWindowsSpotlight191x100Styles } from '../../styles/ad-placement-components/boost-ad-placements-styles';\r\n\r\nexport const ResponsiveAdPlacementBoostDiscoverCard1x1 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostProngFeed191x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostCoachmark175x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostStartMenu = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostActionCenter = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostBanner = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nconst BoostWindowsSpotlight191x100 = withUAPLThemedStyles(\r\n UnstyledWindowsSpotlight191x100,\r\n getResponsiveBoostWindowsSpotlight191x100Styles,\r\n { componentName: 'ResponsiveAdPlacementBoostWindowsSpotlight191x100' }\r\n);\r\n\r\nexport const ResponsiveAdPlacementBoostWindowsSpotlight191x100 = ({\r\n customClassName,\r\n ...rest\r\n}) => (\r\n
\r\n \r\n
\r\n);\r\n","import React from 'react';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { AdPlacementMmaBase } from '../mma-ad-placement-base';\r\n\r\nimport {\r\n getBoostHeroImageCarouselStyles,\r\n getBoostProngFeed191x100Styles,\r\n getBoostCoachmark175x100Styles,\r\n} from '../../styles';\r\n\r\nexport const AdPlacementBoostHeroImageCarousel = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostHeroImageCarouselStyles,\r\n { componentName: 'AdPlacementBoostHeroImageCarousel' }\r\n);\r\n\r\nexport const AdPlacementBoostProngFeed191x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostProngFeed191x100Styles,\r\n { componentName: 'AdPlacementBoostProngFeed191x100' }\r\n);\r\n\r\nexport const AdPlacementBoostCoachmark175x100 = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostCoachmark175x100Styles,\r\n { componentName: 'AdPlacementBoostCoachmark175x100' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n PlacementAction,\r\n} from '../../shared-components';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostStartMenuStyles, getBoostActionStyles, getBoostBannerStyles } from '../../styles';\r\nimport vectorIcon from '../media/vector.svg';\r\n\r\n\r\nconst BoostTextAdPlacementBase = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n\r\n showSuggested,\r\n\r\n showShortHeadline,\r\n shortHeadline,\r\n isMultiLineShortHeadline,\r\n\r\n showLongHeadline,\r\n longHeadline,\r\n isMultiLineLongHeadline,\r\n\r\n finalUrl,\r\n\r\n showDescription,\r\n description,\r\n isMultiLineDescription,\r\n\r\n showCallToAction,\r\n callToAction,\r\n showDismissAction,\r\n\r\n showLogo,\r\n logo,\r\n\r\n i18n, // may need to set window._TL_ in other platforms\r\n classes,\r\n}) => {\r\n if (!placementData || !placementData.placementMeta) {\r\n return null;\r\n }\r\n const { logoHeight } = placementData.placementMeta;\r\n\r\n return (\r\n \r\n { showLogo && logo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {showSuggested && (\r\n
\r\n \"\"\r\n
{i18n.getString(_TL_('Suggested'))}
\r\n
\r\n )}\r\n
\r\n {showShortHeadline && (\r\n \r\n )}\r\n {showLongHeadline && (\r\n \r\n )}\r\n {showDescription && (\r\n \r\n )}\r\n
\r\n
\r\n {showCallToAction && callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n {showCallToAction && callToAction && showDismissAction && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nBoostTextAdPlacementBase.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n\r\n showSuggested: PropTypes.bool,\r\n\r\n showShortHeadline: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n isMultiLineShortHeadline: PropTypes.bool,\r\n\r\n showLongHeadline: PropTypes.bool,\r\n longHeadline: PropTypes.string,\r\n isMultiLineLongHeadline: PropTypes.bool,\r\n\r\n finalUrl: PropTypes.string,\r\n\r\n showDescription: PropTypes.bool,\r\n description: PropTypes.string,\r\n isMultiLineDescription: PropTypes.bool,\r\n\r\n showDismissAction: PropTypes.bool,\r\n showCallToAction: PropTypes.bool,\r\n callToAction: PropTypes.string,\r\n\r\n showLogo: PropTypes.bool,\r\n logo: PropTypes.shape({\r\n Src: PropTypes.string,\r\n Width: PropTypes.number,\r\n Height: PropTypes.number,\r\n CropSettings: PropTypes.shape({\r\n SourceX: PropTypes.number,\r\n SourceY: PropTypes.number,\r\n SourceWidth: PropTypes.number,\r\n SourceHeight: PropTypes.number,\r\n }),\r\n }),\r\n\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nBoostTextAdPlacementBase.defaultProps = {\r\n isEnabled: true,\r\n showSuggested: false,\r\n showShortHeadline: false,\r\n showLongHeadline: false,\r\n showDescription: false,\r\n showDismissAction: false,\r\n showCallToAction: false,\r\n showLogo: false,\r\n shortHeadline: false,\r\n isMultiLineShortHeadline: false,\r\n longHeadline: undefined,\r\n isMultiLineLongHeadline: false,\r\n finalUrl: undefined,\r\n description: undefined,\r\n isMultiLineDescription: false,\r\n callToAction: undefined,\r\n logo: undefined,\r\n};\r\n\r\nexport const AdPlacementBoostStartMenu = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostStartMenuStyles,\r\n { componentName: 'AdPlacementBoostStartMenu' }\r\n);\r\nexport const AdPlacementBoostActionCenter = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostActionStyles,\r\n { componentName: 'AdPlacementBoostActionCenter' }\r\n);\r\nexport const AdPlacementBoostBanner = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getBoostBannerStyles,\r\n { componentName: 'AdPlacementBoostBanner' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { CroppedImageView } from '@bingads-webui-campaign-react/cropped-image-view';\r\n\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getBoostDiscoverCard1x1Styles } from '../../styles';\r\nimport {\r\n MMAPlacementCard,\r\n PlacementHeadline,\r\n PlacementDescription,\r\n PlacementAction,\r\n} from '../../shared-components';\r\n\r\nconst BoostDiscoverCard1x1 = ({\r\n placementData, // UAPVMSingleImagePlacement\r\n isEnabled,\r\n finalUrl,\r\n shortHeadline,\r\n description,\r\n callToAction,\r\n i18n,\r\n classes,\r\n}) => {\r\n const {\r\n placementMeta, placementCropping, imageMeta, effectiveImageUrl, effectiveImageWidth, effectiveImageHeight, expandedPlacementCropping,\r\n } = placementData || {};\r\n const { previewHeight, aspectRatio } = placementMeta || {};\r\n if (!placementData || !imageMeta) {\r\n return null;\r\n }\r\n\r\n // const srcForCroppedImageView = showImage && this.props.image.FinalSrc;\r\n const imagePreviewWidth = previewHeight * aspectRatio;\r\n\r\n const cropping = expandedPlacementCropping || placementCropping;\r\n\r\n return (\r\n \r\n
\r\n {\r\n imageMeta.url &&\r\n \r\n }\r\n
\r\n
{i18n.getString(_TL_('Discover'))}
\r\n
\r\n \r\n \r\n {callToAction && ( // add a space before each capital letter, e.g. \"ActNow\" => \"Act Now\"\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nBoostDiscoverCard1x1.propTypes = {\r\n placementData: PropTypes.shape({}).isRequired, // UAPVMSingleImagePlacement\r\n isEnabled: PropTypes.bool,\r\n shortHeadline: PropTypes.string,\r\n finalUrl: PropTypes.string,\r\n description: PropTypes.string,\r\n callToAction: PropTypes.string,\r\n i18n: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nBoostDiscoverCard1x1.defaultProps = {\r\n isEnabled: true,\r\n shortHeadline: undefined,\r\n finalUrl: undefined,\r\n description: undefined,\r\n callToAction: undefined,\r\n};\r\n\r\nexport const AdPlacementBoostDiscoverCard1x1 = withUAPLThemedStyles(\r\n BoostDiscoverCard1x1,\r\n getBoostDiscoverCard1x1Styles,\r\n { componentName: 'AdPlacementBoostDiscoverCard1x1' }\r\n);\r\n","import React from 'react';\r\n\r\nimport {\r\n getResponsiveSearchAdPlacementStyles,\r\n getResponsiveSearchAdDesktopPlacementStyles,\r\n getResponsiveSearchAdMobilePlacementStyles,\r\n} from '../../styles';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { bingDesktopHeaderImage } from '../media/bing-desktop-header';\r\nimport { ResponsiveSearchAdPlacementBase } from './responsive-search-ad-placement-base';\r\n\r\nexport const AdPlacementResponsiveSearch = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getResponsiveSearchAdPlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearch' }\r\n);\r\n\r\nexport const AdPlacementResponsiveSearchDesktop = withUAPLThemedStyles(\r\n ({ classes, i18n, ...props }) => (\r\n
\r\n
\r\n {i18n.getString(_TL_('Header\r\n
\r\n \r\n
\r\n ),\r\n getResponsiveSearchAdDesktopPlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearchDesktop' }\r\n);\r\n\r\nexport const AdPlacementResponsiveSearchMobile = withUAPLThemedStyles(\r\n props => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ),\r\n getResponsiveSearchAdMobilePlacementStyles,\r\n { componentName: 'AdPlacementResponsiveSearchMobile' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { withUAPLThemedStyles } from '../../with-themed-styles';\r\nimport { getDynamicSearchAdPlacementStyles } from '../../styles';\r\n\r\nimport {\r\n AdLabel,\r\n PlacementHeadline,\r\n PlacementFinalUrlWithLink,\r\n PlacementDescription,\r\n PlacementContentContainer,\r\n} from '../../shared-components';\r\n\r\nexport const AdPlacementDynamicSearchPropTypes = {\r\n propTypes: {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n placementContentContainer: PropTypes.string,\r\n placementCard: PropTypes.string,\r\n placementTextContainer: PropTypes.string,\r\n placementAdsLabel: PropTypes.string,\r\n placementDisplayUrl: PropTypes.string,\r\n placementDescriptionContainer: PropTypes.string,\r\n placementDescription: PropTypes.string,\r\n }).isRequired,\r\n previewTexts: PropTypes.shape({\r\n longHeadline: PropTypes.string,\r\n description: PropTypes.string,\r\n displayUrl: PropTypes.string,\r\n url: PropTypes.string,\r\n }).isRequired,\r\n },\r\n defaultProps: {\r\n },\r\n};\r\n\r\nexport const DynamicSearchAdPlacementBase = (props) => {\r\n const {\r\n i18n,\r\n classes,\r\n previewTexts: {\r\n headline,\r\n description,\r\n finalUrl,\r\n displayUrl,\r\n },\r\n } = 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 {i18n.getString(_TL_('Dynamically generated ad'))}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nDynamicSearchAdPlacementBase.propTypes = AdPlacementDynamicSearchPropTypes.propTypes;\r\n\r\nDynamicSearchAdPlacementBase.defaultProps = AdPlacementDynamicSearchPropTypes.defaultProps;\r\n\r\nexport const AdPlacementDynamicSearch = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getDynamicSearchAdPlacementStyles,\r\n { componentName: 'AdPlacementDynamicSearch' }\r\n);\r\n","export const getDynamicSearchAdPlacementStyles = () => ({\r\n placementCard: {\r\n background: 'white',\r\n borderRadius: '4px',\r\n boxShadow: '0px 0.3px 0.9px 0px rgba(0, 0, 0, 0.10), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13)',\r\n padding: '20px 16px',\r\n width: '482px',\r\n },\r\n placementTextCardContainer: {\r\n background: '#F5F5F5',\r\n minHeight: '200px',\r\n padding: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n placementTextContainer: {\r\n padding: '20px 10px 20px 20px',\r\n borderRadius: '8px',\r\n border: '1px solid #E1DFDD',\r\n background: 'white',\r\n boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.05)',\r\n fontWeight: '400',\r\n width: '380px',\r\n },\r\n placementInlineItems: {\r\n display: 'inline-flex',\r\n },\r\n placementHeadline: {\r\n color: '#1A0DAB',\r\n fontSize: '18px',\r\n lineHeight: '22px',\r\n },\r\n placementDescriptionContainer: {\r\n display: 'inline-flex',\r\n alignItems: 'baseline',\r\n },\r\n placementDescription: {\r\n color: '#666',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n wordBreak: 'break-word',\r\n },\r\n placementUrl: {\r\n color: '#006621',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n placementAdsLabel: {\r\n position: 'static !important',\r\n color: '#666 !important',\r\n border: '1px solid #ddd !important',\r\n borderRadius: '2px !important',\r\n fontSize: '11px !important',\r\n margin: '0 4px 0 0 !important',\r\n padding: '0 2px !important',\r\n },\r\n placementDisclaimer: {\r\n color: '#323130',\r\n fontSize: '14px',\r\n fontWeight: '600',\r\n lineHeight: '20px',\r\n marginTop: '20px',\r\n textAlign: 'center',\r\n },\r\n});\r\n","/* eslint-disable jsx-a11y/media-has-caption */\r\nimport React, { useEffect, useRef, useMemo } from 'react';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\n\r\nimport { getVideoPlacementStyles } from '../styles/ad-placement-components/video-placement-styles';\r\n\r\n\r\nexport const VideoPlacementInner = ({\r\n classes,\r\n videos,\r\n}) => {\r\n const { src, height, width } = videos && videos.length > 0 ? videos[0] : {};\r\n\r\n const videoRef = useRef();\r\n\r\n // check for vertical video\r\n const isVerticalVideo = useMemo(() => height > width, [height, width]);\r\n const videoPlayerRootClass = isVerticalVideo ? classes.videoPlayerVertical : classes.videoPlayerRoot;\r\n\r\n useEffect(() => {\r\n if (videoRef.current) {\r\n videoRef.current.load();\r\n }\r\n }, [src]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nVideoPlacementInner.propTypes = {\r\n classes: PropTypes.shape({\r\n videoPlayerRoot: PropTypes.string,\r\n }),\r\n videos: PropTypes.arrayOf(PropTypes.shape({\r\n src: PropTypes.string,\r\n })),\r\n};\r\n\r\nVideoPlacementInner.defaultProps = {\r\n classes: {},\r\n videos: null,\r\n};\r\n\r\nexport const VideoPlacement = withUAPLThemedStyles(\r\n props => (\r\n \r\n ),\r\n getVideoPlacementStyles,\r\n { componentName: 'VideoPlacement' }\r\n);\r\n\r\n","export const getVideoPlacementStyles = () => ({\r\n placementCard: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n videoPlayerVertical: {\r\n height: '520px',\r\n width: '300px',\r\n padding: '10px',\r\n borderRadius: 10,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n videoPlayerRoot: {\r\n height: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n padding: '20px',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewContainerBaseStyles, } from '../styles';\r\n\r\nconst ContainerBase = (props) => {\r\n const {\r\n titleText,\r\n isValid,\r\n onRenderHeader,\r\n onRenderPlacement,\r\n onRenderFooter,\r\n children,\r\n classes,\r\n previewContainerClassName,\r\n containerHeaderClassName,\r\n containerTitleClassName,\r\n containerFooterClassName,\r\n placementContainerClassName,\r\n } = props;\r\n\r\n return (\r\n
\r\n
\r\n {onRenderHeader ? onRenderHeader(props) : (\r\n titleText &&
{titleText}
\r\n )}\r\n
\r\n
\r\n {onRenderPlacement ? onRenderPlacement(props) : children}\r\n
\r\n
\r\n {onRenderFooter ? onRenderFooter() : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nContainerBase.propTypes = {\r\n titleText: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n onRenderHeader: PropTypes.func,\r\n onRenderFooter: PropTypes.func,\r\n onRenderPlacement: PropTypes.func,\r\n classes: PropTypes.shape({\r\n adPreviewContainer: PropTypes.string,\r\n adPreviewContainerError: PropTypes.string,\r\n adPreviewContainerHeader: PropTypes.string,\r\n adPreviewContainerTitle: PropTypes.string,\r\n adPreviewPlacementContainer: PropTypes.string,\r\n adPreviewContainerFooter: PropTypes.string,\r\n }).isRequired,\r\n children: PropTypes.node.isRequired,\r\n previewContainerClassName: PropTypes.string,\r\n containerHeaderClassName: PropTypes.string,\r\n containerTitleClassName: PropTypes.string,\r\n containerFooterClassName: PropTypes.string,\r\n placementContainerClassName: PropTypes.string,\r\n};\r\n\r\nContainerBase.defaultProps = {\r\n titleText: undefined,\r\n onRenderHeader: undefined,\r\n onRenderFooter: undefined,\r\n onRenderPlacement: undefined,\r\n isValid: true,\r\n previewContainerClassName: undefined,\r\n containerHeaderClassName: undefined,\r\n containerTitleClassName: undefined,\r\n containerFooterClassName: undefined,\r\n placementContainerClassName: undefined,\r\n};\r\n\r\nexport const AdPreviewPlacementContainerBase = withUAPLThemedStyles(\r\n ContainerBase,\r\n getAdPreviewContainerBaseStyles,\r\n { componentName: 'AdPreviewPlacementContainerBase' }\r\n);\r\n","export const getAdPreviewContainerBaseStyles = (components, { palette = {} } = {}) => ({\r\n adPreviewContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n background: 'white',\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.1), 0px 3.2px 7.2px rgba(0, 0, 0, 0.13)',\r\n borderRadius: 6,\r\n },\r\n adPreviewContainerError: {\r\n border: `1px solid ${palette.orange}`,\r\n },\r\n adPreviewContainerHeader: {\r\n display: 'flex',\r\n padding: [12, 12, 0, 16],\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n },\r\n adPreviewContainerTitle: {\r\n },\r\n adPreviewPlacementContainer: {\r\n margin: 'auto',\r\n },\r\n adPreviewContainerFooter: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n","//\r\n// each placement will use one of the following image types\r\n// the type defines the image size and aspect ratio\r\nexport const UAPImageType = {\r\n Image1x1: 'Image1x1',\r\n Image4x1: 'Image4x1',\r\n Image1x2: 'Image1x2',\r\n Image191x100: 'Image191x100',\r\n Image178x100: 'Image178x100',\r\n Image172x100: 'Image172x100',\r\n Image169x100: 'Image169x100',\r\n Image155x100: 'Image155x100',\r\n Image150x100: 'Image150x100',\r\n Image133x100: 'Image133x100',\r\n Image93x100: 'Image93x100',\r\n Image201x100: 'Image201x100',\r\n Image200x100: 'Image200x100',\r\n Image153x100: 'Image153x100',\r\n Image124x100: 'Image124x100',\r\n Image120x100: 'Image120x100',\r\n Image122x100: 'Image122x100',\r\n Image159x100: 'Image159x100',\r\n Image180x100: 'Image180x100',\r\n Image233x100: 'Image233x100',\r\n Image320x100: 'Image320x100',\r\n Image57x100: 'Image57x100',\r\n};\r\n\r\nexport const UAPVideoType = {\r\n VideoMedia16X9: 'VideoMedia16X9',\r\n VideoMedia5X4: 'VideoMedia5X4',\r\n VideoMedia1X1: 'VideoMedia1X1',\r\n VideoMedia4X5: 'VideoMedia4X5',\r\n VideoMedia9X16: 'VideoMedia9X16',\r\n};\r\n","//\r\n// uniquely identify a placement on supply side channels\r\n// - if a placement is used in more than one supply channels and share the same look,\r\n// then we could use one placement type to represent them all\r\nexport const UAPPlacementType = {\r\n // mma\r\n MMA_WideImage_4x1: 'MMA_WideImage_4x1',\r\n MMA_LandscapeImage_191x100: 'MMA_LandscapeImage_191x100',\r\n MMA_SquareImage_1x1: 'MMA_SquareImage_1x1',\r\n MMA_VerticalImage_1x2: 'MMA_VerticalImage_1x2',\r\n\r\n // audience ad (mma in msan)\r\n Audience_Network_WideImage_191x100: 'Audience_Network_WideImage_191x100',\r\n Audience_Network_SquareImage_1x1: 'Audience_Network_SquareImage_1x1',\r\n Microsoft_Edge_Single_Carousel_178x100: 'Microsoft_Edge_Single_Carousel_178x100',\r\n MSN_InArticle_Ad_150x100: 'MSN_InArticle_Ad_150x100',\r\n MSN_Small_Headline_133x100: 'MSN_Small_Headline_133x100',\r\n\r\n // audience ad (mma in msan) V2\r\n MsanV2_Microsoft_Edge_Carouse_l201x100: 'MsanV2_Microsoft_Edge_Carouse_l201x100',\r\n MsanV2_Microsoft_Edge_Mobile_1x1: 'MsanV2_Microsoft_Edge_Mobile_1x1',\r\n MsanV2_MSAN_Banner_2x1: 'MsanV2_MSAN_Banner_2x1',\r\n MsanV2_MSAN_River_191x100: 'MsanV2_MSAN_River_191x100',\r\n MsanV2_MSAN_Rectangle_120x100: 'MsanV2_MSAN_Rectangle_120x100',\r\n MsanV2_MSN_Carousel_169x100: 'MsanV2_MSN_Carousel_169x100',\r\n MsanV2_MSN_Partner_Stripe_153x100: 'MsanV2_MSN_Partner_Stripe_153x100',\r\n MsanV2_MSN_Restoday_124x100: 'MsanV2_MSN_Restoday_124x100',\r\n\r\n // pmax\r\n PMax_MMA_WideImage_4x1: 'PMax_MMA_WideImage_4x1',\r\n PMax_MMA_LandscapeImage_191x100: 'PMax_MMA_LandscapeImage_191x100',\r\n PMax_MMA_VerticalImage_1x2: 'PMax_MMA_VerticalImage_1x2',\r\n PMax_Audience_Network_WideImage_191x100: 'PMax_Audience_Network_WideImage_191x100',\r\n PMax_Audience_Network_SquareImage_1x1: 'PMax_Audience_Network_SquareImage_1x1',\r\n PMax_Microsoft_Edge_Single_Carousel_178x100: 'PMax_Microsoft_Edge_Single_Carousel_178x100',\r\n PMax_MSN_InArticle_Ad_150x100: 'PMax_MSN_InArticle_Ad_150x100',\r\n PMax_MSN_Small_Headline_133x100: 'PMax_MSN_Small_Headline_133x100',\r\n // pmax v2\r\n PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100: 'PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100',\r\n PMax_MMAV2_MSN_Single_Carousel_169x100: 'PMax_MMAV2_MSN_Single_Carousel_169x100',\r\n PMax_MMAV2_MSN_Restoday_124x100: 'PMax_MMAV2_MSN_Restoday_124x100',\r\n PMax_MMAV2_MSN_Partner_Stripe_153x100: 'PMax_MMAV2_MSN_Partner_Stripe_153x100',\r\n PMax_MMAV2_MSN_River_191x100: 'PMax_MMAV2_MSN_River_191x100',\r\n PMax_Video: 'PMax_Video',\r\n\r\n // Boost\r\n Boost_Hero_Image_Carousel_200x100: 'Boost_Hero_Image_Carousel_200x100',\r\n Boost_Hero_Image_Carousel_122x100: 'Boost_Hero_Image_Carousel_122x100',\r\n Boost_Hero_Image_Carousel_159x100: 'Boost_Hero_Image_Carousel_159x100',\r\n Boost_Hero_Image_Carousel_180x100: 'Boost_Hero_Image_Carousel_180x100',\r\n Boost_Hero_Image_Carousel_233x100: 'Boost_Hero_Image_Carousel_233x100',\r\n Boost_Hero_Image_Carousel_320x100: 'Boost_Hero_Image_Carousel_320x100',\r\n Boost_Hero_Image_Carousel_57x100: 'Boost_Hero_Image_Carousel_57x100',\r\n Boost_Windows_Spotlight_191x100: 'Boost_Windows_Spotlight_191x100',\r\n Boost_Discover_Card_1x1: 'Boost_Discover_Card_1x1',\r\n Boost_Start_Menu: 'Boost_Start_Menu',\r\n Boost_Action_Center: 'Boost_Action_Center',\r\n Boost_Banner: 'Boost_Banner',\r\n Boost_Prong1_Prong2_Feed_191x100: 'Boost_Prong1_Prong2_Feed_191x100',\r\n Boost_Coachmark_175x100: 'Boost_Coachmark_175x100',\r\n\r\n // image extension\r\n ImgExt_MMAV2_MSN_River_191x100: 'ImgExt_MMAV2_MSN_River_191x100',\r\n ImgExt_MMAV2_MSN_Single_Carousel_169x100: 'ImgExt_MMAV2_MSN_Single_Carousel_169x100',\r\n ImgExt_Audience_Network_WideImage_191x100: 'ImgExt_Audience_Network_WideImage_191x100',\r\n ImgExt_Audience_Network_SquareImage_1x1: 'ImgExt_Audience_Network_SquareImage_1x1',\r\n ImgExt_Microsoft_Edge_Single_Carousel_178x100: 'ImgExt_Microsoft_Edge_Single_Carousel_178x100',\r\n ImgExt_Bing_Desktop_SingleImage_Extension_178x100: 'ImgExt_Bing_Desktop_SingleImage_Extension_178x100',\r\n ImgExt_Microsoft_Edge_Medium_Headline_172x100: 'ImgExt_Microsoft_Edge_Medium_Headline_172x100',\r\n ImgExt_MSN_Single_Carousel_169x100: 'ImgExt_MSN_Single_Carousel_169x100',\r\n ImgExt_MSN_Medium_Headline_155x100: 'ImgExt_MSN_Medium_Headline_155x100',\r\n ImgExt_MSN_InArticle_Ad_150x100: 'ImgExt_MSN_InArticle_Ad_150x100',\r\n ImgExt_MSN_Small_Headline_133x100: 'ImgExt_MSN_Small_Headline_133x100',\r\n ImgExt_Bing_Desktop_MultiImage_Extension_133x100: 'ImgExt_Bing_Desktop_MultiImage_Extension_133x100',\r\n ImgExt_Bing_Mobile_MultiImage_Extension_133x100: 'ImgExt_Bing_Mobile_MultiImage_Extension_133x100',\r\n ImgExt_MSN_Double_Carousel_93x100: 'ImgExt_MSN_Double_Carousel_93x100',\r\n\r\n // text ads\r\n Outlook_Text_Mobile: 'TextOutlookMobile',\r\n Outlook_Text_Web: 'TextOutlookWeb',\r\n Bing_Search_Mobile: 'BingTextMobile',\r\n Bing_Search_Desktop: 'BingTextDesktop',\r\n Bing_Search_Text: 'BingText',\r\n\r\n // responsive mma\r\n Responsive_MMA_WideImage_4x1: 'Responsive_MMA_WideImage_4x1',\r\n Responsive_MMA_LandscapeImage_191x100: 'Responsive_MMA_LandscapeImage_191x100',\r\n Responsive_MMA_SquareImage_1x1: 'Responsive_MMA_SquareImage_1x1',\r\n Responsive_MMA_VerticalImage_1x2: 'Responsive_MMA_VerticalImage_1x2',\r\n\r\n // responsive audience ad (mma in msan)\r\n Responsive_Audience_Network_WideImage_191x100: 'Responsive_Audience_Network_WideImage_191x100',\r\n Responsive_Audience_Network_SquareImage_1x1: 'Responsive_Audience_Network_SquareImage_1x1',\r\n Responsive_Microsoft_Edge_Single_Carousel_178x100: 'Responsive_Microsoft_Edge_Single_Carousel_178x100',\r\n Responsive_MSN_InArticle_Ad_150x100: 'Responsive_MSN_InArticle_Ad_150x100',\r\n Responsive_MSN_Small_Headline_133x100: 'Responsive_MSN_Small_Headline_133x100',\r\n\r\n // responsive audience ad (mma in msan) V2\r\n Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100: 'Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100',\r\n Responsive_MsanV2_Microsoft_Edge_Mobile_1x1: 'Responsive_MsanV2_Microsoft_Edge_Mobile_1x1',\r\n Responsive_MsanV2_MSAN_Banner_2x1: 'Responsive_MsanV2_MSAN_Banner_2x1',\r\n Responsive_MsanV2_MSAN_River_191x100: 'Responsive_MsanV2_MSAN_River_191x100',\r\n Responsive_MsanV2_MSAN_Rectangle_120x100: 'Responsive_MsanV2_MSAN_Rectangle_120x100',\r\n Responsive_MsanV2_MSN_Carousel_169x100: 'Responsive_MsanV2_MSN_Carousel_169x100',\r\n Responsive_MsanV2_MSN_Partner_Stripe_153x100: 'Responsive_MsanV2_MSN_Partner_Stripe_153x100',\r\n Responsive_MsanV2_MSN_Restoday_124x100: 'Responsive_MsanV2_MSN_Restoday_124x100',\r\n\r\n // responsive text ads\r\n Responsive_Outlook_Text_Mobile: 'ResponsiveTextOutlookMobile',\r\n Responsive_Outlook_Text_Web: 'ResponsiveTextOutlookWeb',\r\n Responsive_Bing_Search_Text: 'ResponsiveBingText',\r\n\r\n // responsive boost ads\r\n Responsive_Boost_Windows_Spotlight_191x100: 'Responsive_Boost_Windows_Spotlight_191x100',\r\n Responsive_Boost_Discover_Card_1x1: 'Responsive_Boost_Discover_Card_1x1',\r\n Responsive_Boost_Start_Menu: 'Responsive_Boost_Start_Menu',\r\n Responsive_Boost_Action_Center: 'Responsive_Boost_Action_Center',\r\n Responsive_Boost_Banner: 'Responsive_Boost_Banner',\r\n Responsive_Boost_Prong1_Prong2_Feed_191x100: 'Responsive_Boost_Prong1_Prong2_Feed_191x100',\r\n Responsive_Boost_Coachmark_175x100: 'Responsive_Boost_Coachmark_175x100',\r\n\r\n // responsive search ads\r\n Responsive_Search: 'ResponsiveSearch',\r\n Responsive_Search_Desktop: 'ResponsiveSearchDesktop',\r\n Responsive_Search_Mobile: 'ResponsiveSearchMobile',\r\n\r\n // responsive pmax\r\n Responsive_PMax_MMA_WideImage_4x1: 'Responsive_PMax_MMA_WideImage_4x1',\r\n Responsive_PMax_MMA_LandscapeImage_191x100: 'Responsive_PMax_MMA_LandscapeImage_191x100',\r\n Responsive_PMax_MMA_VerticalImage_1x2: 'Responsive_PMax_MMA_VerticalImage_1x2',\r\n Responsive_PMax_Audience_Network_WideImage_191x100: 'Responsive_PMax_Audience_Network_WideImage_191x100',\r\n Responsive_PMax_Audience_Network_SquareImage_1x1: 'Responsive_PMax_Audience_Network_SquareImage_1x1',\r\n Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100: 'Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100',\r\n Responsive_PMax_MSN_InArticle_Ad_150x100: 'Responsive_PMax_MSN_InArticle_Ad_150x100',\r\n Responsive_PMax_MSN_Small_Headline_133x100: 'Responsive_PMax_MSN_Small_Headline_133x100',\r\n // responsive pmax v2\r\n Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100: 'Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100',\r\n Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100: 'Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100',\r\n Responsive_PMax_MMAV2_MSN_Restoday_124x100: 'Responsive_PMax_MMAV2_MSN_Restoday_124x100',\r\n Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100: 'Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100',\r\n Responsive_PMax_MMAV2_MSN_River_191x100: 'Responsive_PMax_MMAV2_MSN_River_191x100',\r\n\r\n // dynamic search ads\r\n Dynamic_Search: 'DynamicSearch',\r\n\r\n // linkedin ads\r\n LinkedIn_Single_Image_Desktop_Landscape: 'LinkedIn_Single_Image_Desktop_Landscape',\r\n LinkedIn_Single_Image_Mobile_Landscape: 'LinkedIn_Single_Image_Mobile_Landscape',\r\n LinkedIn_Single_Image_Medium_Rectangle_Landscape: 'LinkedIn_Single_Image_Medium_Rectangle_Landscape',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Landscape: 'LinkedIn_Single_Image_Mobile_Interstitial_Landscape',\r\n LinkedIn_Single_Image_Native_Landscape: 'LinkedIn_Single_Image_Native_Landscape',\r\n\r\n LinkedIn_Single_Image_Desktop_Square: 'LinkedIn_Single_Image_Desktop_Square',\r\n LinkedIn_Single_Image_Mobile_Square: 'LinkedIn_Single_Image_Mobile_Square',\r\n LinkedIn_Single_Image_Medium_Rectangle_Square: 'LinkedIn_Single_Image_Medium_Rectangle_Square',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Square: 'LinkedIn_Single_Image_Mobile_Interstitial_Square',\r\n LinkedIn_Single_Image_Native_Square: 'LinkedIn_Single_Image_Native_Square',\r\n\r\n LinkedIn_Single_Image_Mobile_Vertical: 'LinkedIn_Single_Image_Mobile_Vertical',\r\n LinkedIn_Single_Image_Medium_Rectangle_Vertical: 'LinkedIn_Single_Image_Medium_Rectangle_Vertical',\r\n LinkedIn_Single_Image_Mobile_Interstitial_Vertical: 'LinkedIn_Single_Image_Mobile_Interstitial_Vertical',\r\n LinkedIn_Single_Image_Native_Vertical: 'LinkedIn_Single_Image_Native_Vertical',\r\n\r\n Unified_App_Ads_Video_Horizontal: 'Unified_App_Ads_Video_Horizontal',\r\n Unified_App_Ads_Bing_Search: 'Unified_App_Ads_Bing_Search',\r\n Unified_App_Ads_Bing_Search_Text: 'Unified_App_Ads_Bing_Search_Text',\r\n Unified_App_Ads_Causal_Games_Dimensions: 'Unified_App_Ads_Causal_Games_Dimensions',\r\n Unified_App_Ads_M365_Outlook: 'Unified_App_Ads_M365_Outlook',\r\n Unified_App_Ads_MSN_Display: 'Unified_App_Ads_MSN_Display',\r\n // todo: video\r\n};\r\n","\r\nexport const UAPAdExtensionType = {\r\n SiteLink: 'SiteLink',\r\n Callout: 'Callout',\r\n Promotion: 'Promotion',\r\n StructuredSnippet: 'StructuredSnippet',\r\n Price: 'Price',\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n UAPImageType,\r\n UAPPlacementType as PT,\r\n UAPVideoType,\r\n // UAPPlacementMeta,\r\n} from '../@types';\r\n\r\nexport const UAPLPlacementMetaList /* : Record */ = {\r\n [PT.MMA_WideImage_4x1]: {\r\n placementType: PT.MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n // used to compare ratio values, use string instead of number to avoid precision issue\r\n aspectRatioStr: '4:1', // refer to: private\\ad-creator-tools\\packages\\media-common-utils\\src\\aspect-ratio-config.js\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.MMA_LandscapeImage_191x100]: {\r\n placementType: PT.MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.MMA_SquareImage_1x1]: {\r\n placementType: PT.MMA_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 400,\r\n minSize: [470, 470],\r\n },\r\n [PT.MMA_VerticalImage_1x2]: {\r\n placementType: PT.MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n\r\n // MMA in MSAN\r\n [PT.Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.MSN_Small_Headline_133x100]: {\r\n placementType: PT.MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n\r\n // pmax\r\n [PT.PMax_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.PMax_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.PMax_MMA_WideImage_4x1]: {\r\n placementType: PT.PMax_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n aspectRatioStr: '4:1',\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.PMax_MMA_VerticalImage_1x2]: {\r\n placementType: PT.PMax_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n [PT.PMax_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.PMax_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.PMax_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.PMax_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.PMax_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.PMax_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.PMax_MSN_Small_Headline_133x100]: {\r\n placementType: PT.PMax_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.PMax_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: {\r\n placementType: PT.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.PMax_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.PMax_MMAV2_MSN_Restoday_124x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.PMax_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n\r\n //\r\n // MMA in MSAN V2\r\n [PT.MsanV2_Microsoft_Edge_Carouse_l201x100]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 90,\r\n minSize: [200, 100],\r\n },\r\n [PT.MsanV2_MSAN_River_191x100]: {\r\n placementType: PT.MsanV2_MSAN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.MsanV2_MSN_Carousel_169x100]: {\r\n placementType: PT.MsanV2_MSN_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.MsanV2_MSN_Restoday_124x100]: {\r\n placementType: PT.MsanV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.2,\r\n aspectRatioStr: '120:100',\r\n previewHeight: 250,\r\n minSize: [300, 250],\r\n },\r\n [PT.MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [114, 114],\r\n },\r\n [PT.PMax_Video]: {\r\n placementType: PT.PMax_Video,\r\n imageType: UAPVideoType.VideoMedia16X9,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n\r\n //\r\n // Boost\r\n [PT.Boost_Hero_Image_Carousel_200x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_200x100,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 320,\r\n minSize: [200, 100],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_122x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_122x100,\r\n imageType: UAPImageType.Image122x100,\r\n aspectRatio: 1.225,\r\n aspectRatioStr: '122:100',\r\n previewHeight: 320,\r\n minSize: [450, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_159x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_159x100,\r\n imageType: UAPImageType.Image159x100,\r\n aspectRatio: 1.59,\r\n aspectRatioStr: '159:100',\r\n previewHeight: 320,\r\n minSize: [585, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_180x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_180x100,\r\n imageType: UAPImageType.Image180x100,\r\n aspectRatio: 1.805,\r\n aspectRatioStr: '180:100',\r\n previewHeight: 320,\r\n minSize: [664, 368],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_233x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_233x100,\r\n imageType: UAPImageType.Image233x100,\r\n aspectRatio: 2.33,\r\n aspectRatioStr: '233:100',\r\n previewHeight: 250,\r\n minSize: [703, 301],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_320x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_320x100,\r\n imageType: UAPImageType.Image320x100,\r\n aspectRatio: 3.20,\r\n aspectRatioStr: '320:100',\r\n previewHeight: 180,\r\n minSize: [703, 219],\r\n },\r\n [PT.Boost_Hero_Image_Carousel_57x100]: {\r\n placementType: PT.Boost_Hero_Image_Carousel_57x100,\r\n imageType: UAPImageType.Image57x100,\r\n aspectRatio: 0.57,\r\n aspectRatioStr: '57:100',\r\n previewHeight: 320,\r\n minSize: [210, 368],\r\n },\r\n [PT.Boost_Windows_Spotlight_191x100]: {\r\n placementType: PT.Boost_Windows_Spotlight_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.9,\r\n aspectRatioStr: '190:100',\r\n previewHeight: 400,\r\n minSize: [268, 140],\r\n },\r\n [PT.Boost_Discover_Card_1x1]: {\r\n placementType: PT.Boost_Discover_Card_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 250,\r\n minSize: [300, 300],\r\n },\r\n [PT.Boost_Start_Menu]: {\r\n placementType: PT.Boost_Start_Menu,\r\n },\r\n [PT.Boost_Action_Center]: {\r\n placementType: PT.Boost_Action_Center,\r\n logoHeight: 48,\r\n },\r\n [PT.Boost_Banner]: {\r\n placementType: PT.Boost_Banner,\r\n logoHeight: 20,\r\n },\r\n [PT.Boost_Prong1_Prong2_Feed_191x100]: {\r\n placementType: PT.Boost_Prong1_Prong2_Feed_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.914,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n minSize: [268, 140],\r\n },\r\n [PT.Boost_Coachmark_175x100]: {\r\n placementType: PT.Boost_Coachmark_175x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.75,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 160,\r\n minSize: [280, 160],\r\n },\r\n\r\n //\r\n // image extension\r\n [PT.ImgExt_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.ImgExt_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.ImgExt_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100]: {\r\n placementType: PT.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 45,\r\n minSize: [624, 350],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Microsoft_Edge_Medium_Headline_172x100]: {\r\n placementType: PT.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n imageType: UAPImageType.Image172x100,\r\n aspectRatio: 1.72,\r\n aspectRatioStr: '172:100',\r\n previewHeight: 174,\r\n minSize: [300, 174],\r\n },\r\n [PT.ImgExt_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.ImgExt_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 368,\r\n minSize: [622, 368],\r\n },\r\n [PT.ImgExt_MSN_Medium_Headline_155x100]: {\r\n placementType: PT.ImgExt_MSN_Medium_Headline_155x100,\r\n imageType: UAPImageType.Image155x100,\r\n aspectRatio: 1.55,\r\n aspectRatioStr: '155:100',\r\n previewHeight: 194,\r\n minSize: [300, 194],\r\n },\r\n [PT.ImgExt_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.ImgExt_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.50,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.ImgExt_MSN_Small_Headline_133x100]: {\r\n placementType: PT.ImgExt_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100]: {\r\n placementType: PT.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 100,\r\n minSize: [100, 75],\r\n hasMultiImages: true,\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100]: {\r\n placementType: PT.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 310,\r\n minSize: [100, 75],\r\n hasMultiImages: true,\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.ImgExt_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.ImgExt_MSN_Double_Carousel_93x100]: {\r\n placementType: PT.ImgExt_MSN_Double_Carousel_93x100,\r\n imageType: UAPImageType.Image93x100,\r\n aspectRatio: 0.93,\r\n aspectRatioStr: '93:100',\r\n previewHeight: 333,\r\n minSize: [311, 333],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.ImgExt_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n ignoreImageFitting: true,\r\n },\r\n [PT.ImgExt_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n ignoreImageFitting: true,\r\n },\r\n\r\n // text ads\r\n [PT.Outlook_Text_Mobile]: {\r\n placementType: PT.Outlook_Text_Mobile,\r\n logoHeight: 32,\r\n },\r\n [PT.Outlook_Text_Web]: {\r\n placementType: PT.Outlook_Text_Web,\r\n logoHeight: 28,\r\n },\r\n [PT.Bing_Search_Mobile]: {\r\n placementType: PT.Bing_Search_Mobile,\r\n },\r\n [PT.Bing_Search_Desktop]: {\r\n placementType: PT.Bing_Search_Desktop,\r\n },\r\n [PT.Bing_Search_Text]: {\r\n placementType: PT.Bing_Search_Text,\r\n logoHeight: 37,\r\n },\r\n\r\n [PT.Responsive_MMA_WideImage_4x1]: {\r\n placementType: PT.Responsive_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n // used to compare ratio values, use string instead of number to avoid precision issue\r\n aspectRatioStr: '4:1', // refer to: private\\ad-creator-tools\\packages\\media-common-utils\\src\\aspect-ratio-config.js\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.Responsive_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.Responsive_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_MMA_SquareImage_1x1]: {\r\n placementType: PT.Responsive_MMA_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 400,\r\n minSize: [470, 470],\r\n },\r\n [PT.Responsive_MMA_VerticalImage_1x2]: {\r\n placementType: PT.Responsive_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n\r\n // MMA in MSAN\r\n [PT.Responsive_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Responsive_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Responsive_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n [PT.Responsive_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.Responsive_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.Responsive_MSN_Small_Headline_133x100]: {\r\n placementType: PT.Responsive_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Responsive_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Responsive_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n\r\n // Responsive MMA in MSAN V2\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 90,\r\n minSize: [200, 100],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_River_191x100]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Carousel_169x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Restoday_124x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.2,\r\n aspectRatioStr: '120:100',\r\n previewHeight: 250,\r\n minSize: [300, 250],\r\n },\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [114, 114],\r\n },\r\n\r\n [PT.Responsive_PMax_MMA_LandscapeImage_191x100]: {\r\n placementType: PT.Responsive_PMax_MMA_LandscapeImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 244,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_PMax_MMA_WideImage_4x1]: {\r\n placementType: PT.Responsive_PMax_MMA_WideImage_4x1,\r\n imageType: UAPImageType.Image4x1,\r\n aspectRatio: 4,\r\n aspectRatioStr: '4:1',\r\n previewHeight: 152,\r\n minSize: [608, 152],\r\n },\r\n [PT.Responsive_PMax_MMA_VerticalImage_1x2]: {\r\n placementType: PT.Responsive_PMax_MMA_VerticalImage_1x2,\r\n imageType: UAPImageType.Image1x2,\r\n aspectRatio: 0.5,\r\n aspectRatioStr: '1:2',\r\n previewHeight: 400,\r\n minSize: [470, 940],\r\n },\r\n [PT.Responsive_PMax_Audience_Network_SquareImage_1x1]: {\r\n placementType: PT.Responsive_PMax_Audience_Network_SquareImage_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 75,\r\n minSize: [300, 300],\r\n },\r\n [PT.Responsive_PMax_Audience_Network_WideImage_191x100]: {\r\n placementType: PT.Responsive_PMax_Audience_Network_WideImage_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 200,\r\n minSize: [703, 368],\r\n },\r\n [PT.Responsive_PMax_MSN_InArticle_Ad_150x100]: {\r\n placementType: PT.Responsive_PMax_MSN_InArticle_Ad_150x100,\r\n imageType: UAPImageType.Image150x100,\r\n aspectRatio: 1.5,\r\n aspectRatioStr: '150:100',\r\n previewHeight: 200,\r\n minSize: [300, 200],\r\n },\r\n [PT.Responsive_PMax_MSN_Small_Headline_133x100]: {\r\n placementType: PT.Responsive_PMax_MSN_Small_Headline_133x100,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 75,\r\n minSize: [100, 75],\r\n },\r\n [PT.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100]: {\r\n placementType: PT.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.78,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 350,\r\n minSize: [624, 350],\r\n },\r\n\r\n [PT.Responsive_Outlook_Text_Mobile]: {\r\n placementType: PT.Responsive_Outlook_Text_Mobile,\r\n logoHeight: 24,\r\n },\r\n [PT.Responsive_Outlook_Text_Web]: {\r\n placementType: PT.Responsive_Outlook_Text_Web,\r\n logoHeight: 24,\r\n },\r\n [PT.Responsive_Bing_Search_Text]: {\r\n placementType: PT.Responsive_Bing_Search_Text,\r\n },\r\n\r\n [PT.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n imageType: UAPImageType.Image201x100,\r\n aspectRatio: 2.01,\r\n aspectRatioStr: '201:100',\r\n previewHeight: 304,\r\n minSize: [612, 304],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n imageType: UAPImageType.Image169x100,\r\n aspectRatio: 1.69,\r\n aspectRatioStr: '169:100',\r\n previewHeight: 372,\r\n minSize: [628, 372],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Restoday_124x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Restoday_124x100,\r\n imageType: UAPImageType.Image124x100,\r\n aspectRatio: 1.24,\r\n aspectRatioStr: '124:100',\r\n previewHeight: 84,\r\n minSize: [104, 84],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 197,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_River_191x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_River_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n\r\n // responsive boost ads\r\n [PT.Responsive_Boost_Windows_Spotlight_191x100]: {\r\n placementType: PT.Responsive_Boost_Windows_Spotlight_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.9,\r\n aspectRatioStr: '190:100',\r\n previewHeight: 250, // use a smaller value for responsive version\r\n minSize: [268, 140],\r\n },\r\n [PT.Responsive_Boost_Discover_Card_1x1]: {\r\n placementType: PT.Responsive_Boost_Discover_Card_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 200,\r\n minSize: [300, 300],\r\n },\r\n [PT.Responsive_Boost_Start_Menu]: {\r\n placementType: PT.Responsive_Boost_Start_Menu,\r\n },\r\n [PT.Responsive_Boost_Action_Center]: {\r\n placementType: PT.Responsive_Boost_Action_Center,\r\n logoHeight: 48,\r\n },\r\n [PT.Responsive_Boost_Banner]: {\r\n placementType: PT.Responsive_Boost_Banner,\r\n logoHeight: 20,\r\n },\r\n [PT.Responsive_Boost_Prong1_Prong2_Feed_191x100]: {\r\n placementType: PT.Responsive_Boost_Prong1_Prong2_Feed_191x100,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.914,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n logoHeight: 16,\r\n imageBorderRadius: 8,\r\n minSize: [268, 140],\r\n },\r\n [PT.Responsive_Boost_Coachmark_175x100]: {\r\n placementType: PT.Responsive_Boost_Coachmark_175x100,\r\n imageType: UAPImageType.Image178x100,\r\n aspectRatio: 1.75,\r\n aspectRatioStr: '178:100',\r\n previewHeight: 160,\r\n minSize: [280, 160],\r\n },\r\n // LinkedIn\r\n [PT.LinkedIn_Single_Image_Desktop_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Desktop_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 180,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 140,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 153,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 99,\r\n minSize: [640, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Landscape]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Landscape,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 144,\r\n minSize: [640, 360],\r\n },\r\n\r\n [PT.LinkedIn_Single_Image_Desktop_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Desktop_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 348,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 188,\r\n minSize: [360, 360],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Square]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Square,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 275,\r\n minSize: [360, 360],\r\n },\r\n\r\n [PT.LinkedIn_Single_Image_Mobile_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 275,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Medium_Rectangle_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Medium_Rectangle_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Mobile_Interstitial_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Mobile_Interstitial_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 150,\r\n minSize: [360, 640],\r\n },\r\n [PT.LinkedIn_Single_Image_Native_Vertical]: {\r\n placementType: PT.LinkedIn_Single_Image_Native_Vertical,\r\n imageType: UAPImageType.Image4x5,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.Unified_App_Ads_Video_Horizontal]: {\r\n placementType: PT.Unified_App_Ads_Video_Horizontal,\r\n imageType: UAPVideoType.VideoMedia16X9,\r\n aspectRatio: 0.8,\r\n aspectRatioStr: '4:5',\r\n previewHeight: 220,\r\n minSize: [360, 640],\r\n },\r\n [PT.Unified_App_Ads_Bing_Search]: {\r\n placementType: PT.Unified_App_Ads_Bing_Search,\r\n imageType: UAPImageType.Image133x100,\r\n aspectRatio: 1.33,\r\n aspectRatioStr: '133:100',\r\n previewHeight: 100,\r\n minSize: [100, 75],\r\n },\r\n [PT.Unified_App_Ads_Bing_Search_Text]: {\r\n placementType: PT.Unified_App_Ads_Bing_Search_Text,\r\n },\r\n [PT.Unified_App_Ads_Causal_Games_Dimensions]: {\r\n placementType: PT.Unified_App_Ads_Causal_Games_Dimensions,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 250,\r\n minSize: [300, 300],\r\n },\r\n [PT.Unified_App_Ads_M365_Outlook]: {\r\n placementType: PT.Unified_App_Ads_M365_Outlook,\r\n },\r\n [PT.Unified_App_Ads_MSN_Display]: {\r\n placementType: PT.Unified_App_Ads_MSN_Display,\r\n imageType: UAPImageType.Image191x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 180,\r\n minSize: [640, 360],\r\n },\r\n // TODO: add configs for vertical and square images\r\n};\r\n\r\nexport const UAPLPlacementMetaListV2 /* : Record */ = {\r\n ...UAPLPlacementMetaList,\r\n [PT.MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n [PT.MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 100,\r\n minSize: [200, 100],\r\n },\r\n [PT.PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1]: {\r\n placementType: PT.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n imageType: UAPImageType.Image1x1,\r\n aspectRatio: 1,\r\n aspectRatioStr: '1:1',\r\n previewHeight: 114,\r\n minSize: [114, 114],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Rectangle_120x100]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Rectangle_120x100,\r\n imageType: UAPImageType.Image120x100,\r\n aspectRatio: 1.91,\r\n aspectRatioStr: '191:100',\r\n previewHeight: 157,\r\n minSize: [300, 157],\r\n },\r\n [PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n [PT.Responsive_MsanV2_MSAN_Banner_2x1]: {\r\n placementType: PT.Responsive_MsanV2_MSAN_Banner_2x1,\r\n imageType: UAPImageType.Image200x100,\r\n aspectRatio: 2,\r\n aspectRatioStr: '2:1',\r\n previewHeight: 100,\r\n minSize: [200, 100],\r\n },\r\n [PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100]: {\r\n placementType: PT.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n imageType: UAPImageType.Image153x100,\r\n aspectRatio: 1.53,\r\n aspectRatioStr: '153:100',\r\n previewHeight: 200,\r\n minSize: [306, 200],\r\n },\r\n};\r\n\r\nexport const getPlacementListMetaData = (placementTypes, isAdPreviewRefreshEnabled) => {\r\n const PlacementMetaList = isAdPreviewRefreshEnabled ? UAPLPlacementMetaListV2 : UAPLPlacementMetaList;\r\n const types = _.compact(placementTypes);\r\n\r\n if (_.isEmpty(types)) {\r\n return [];\r\n }\r\n const ret = _.map(\r\n types,\r\n placementType => PlacementMetaList[placementType]\r\n );\r\n return ret;\r\n};\r\n\r\nexport const getPlacementListMetaDataByImageType = (imageTypes) => {\r\n const types = _.compact(imageTypes);\r\n if (_.isEmpty(types)) {\r\n return [];\r\n }\r\n const placementMetaList = Object.values(UAPLPlacementMetaList);\r\n const ret = _.chain(types)\r\n .map(imgType => _.filter(placementMetaList, ({ imageType }) => imgType && imageType && (imageType.toLowerCase() === imgType.toLowerCase())))\r\n .flatten()\r\n .compact()\r\n .uniq()\r\n .value();\r\n return ret;\r\n};\r\n","import _ from 'underscore';\r\n\r\nfunction mergePlacementList(prevPlacementList, curPlacementList) {\r\n if (!prevPlacementList && !curPlacementList) {\r\n return [false, prevPlacementList];\r\n }\r\n if (!prevPlacementList || !curPlacementList) {\r\n return [true, curPlacementList];\r\n }\r\n\r\n let changed = prevPlacementList.length !== curPlacementList.length;\r\n const newPlacementList = [];\r\n for (let i = 0; i < curPlacementList.length; i += 1) {\r\n const curPlacement = curPlacementList[i];\r\n if (curPlacement) {\r\n const prevPlacement = _.find(prevPlacementList, ({ placementMeta }) => placementMeta.placementType === curPlacement.placementMeta.placementType);\r\n if (prevPlacement && _.isEqual(prevPlacement, curPlacement)) {\r\n // find same placement\r\n newPlacementList.push(prevPlacement);\r\n } else {\r\n newPlacementList.push(curPlacement);\r\n changed = true;\r\n }\r\n }\r\n }\r\n\r\n return [\r\n changed,\r\n changed ? newPlacementList : prevPlacementList,\r\n ];\r\n}\r\n\r\nfunction mergePlacementSets(prevPlacementSets, curPlacementSets) {\r\n if (!prevPlacementSets && !curPlacementSets) {\r\n return [false, prevPlacementSets];\r\n }\r\n if (!prevPlacementSets || !curPlacementSets) {\r\n return [true, curPlacementSets];\r\n }\r\n\r\n let changed = prevPlacementSets.length !== curPlacementSets.length;\r\n const newPlacementSets = [];\r\n for (let i = 0; i < curPlacementSets.length; i += 1) {\r\n const curPlacementSet = curPlacementSets[i];\r\n const prevPlacementSet = _.find(prevPlacementSets, ({ name }) => name === curPlacementSet.name);\r\n if (prevPlacementSet) {\r\n const [isListChanged, newPlacementList] = mergePlacementList(prevPlacementSet.placementList, curPlacementSet.placementList);\r\n newPlacementSets.push(isListChanged ? { ...curPlacementSet, placementList: newPlacementList } : prevPlacementSet);\r\n changed = changed || isListChanged;\r\n } else {\r\n newPlacementSets.push(curPlacementSet);\r\n changed = true;\r\n }\r\n }\r\n\r\n return [changed, changed ? newPlacementSets : prevPlacementSets];\r\n}\r\n\r\nfunction mergePreviewImageAndPlacementSets(prevImageAndPlacementSets, curImageAndPlacementSets) {\r\n if (!prevImageAndPlacementSets && !curImageAndPlacementSets) {\r\n return [false, prevImageAndPlacementSets];\r\n }\r\n if (!prevImageAndPlacementSets || !curImageAndPlacementSets) {\r\n return [true, curImageAndPlacementSets];\r\n }\r\n if (prevImageAndPlacementSets === curImageAndPlacementSets) {\r\n return [false, prevImageAndPlacementSets];\r\n }\r\n\r\n let changed = prevImageAndPlacementSets.length !== curImageAndPlacementSets.length;\r\n const prevImageAndPlacementSetsCopy = [...prevImageAndPlacementSets];\r\n const newImageAndPlacementSets = [];\r\n for (let i = 0; i < curImageAndPlacementSets.length; i += 1) {\r\n const curImageAndPlacementSet = curImageAndPlacementSets[i];\r\n const idx = _.findIndex(prevImageAndPlacementSetsCopy, ({ previewImage }) =>\r\n previewImage.imageMeta && curImageAndPlacementSet.previewImage.imageMeta\r\n && (previewImage.imageMeta.url === curImageAndPlacementSet.previewImage.imageMeta.url));\r\n if (idx >= 0) {\r\n const prevImageAndPlacementSet = prevImageAndPlacementSetsCopy[idx];\r\n const { previewImage: prevPreviewImage, placementSets: prevPlacementSets } = prevImageAndPlacementSet;\r\n const { previewImage: curPreviewImage, placementSets: curPlacementSets } = curImageAndPlacementSet;\r\n\r\n const isPreviewImageChanged = !_.isEqual(prevPreviewImage, curPreviewImage);\r\n const [isPlacementSetsChanged, newPlacementSets] = mergePlacementSets(prevPlacementSets, curPlacementSets);\r\n newImageAndPlacementSets.push(isPreviewImageChanged || isPlacementSetsChanged ? { previewImage: curPreviewImage, placementSets: newPlacementSets } : prevImageAndPlacementSet);\r\n changed = changed || isPlacementSetsChanged || isPreviewImageChanged;\r\n\r\n // remove the matched item\r\n prevImageAndPlacementSetsCopy.splice(idx, 1);\r\n } else {\r\n newImageAndPlacementSets.push(curImageAndPlacementSet);\r\n changed = true;\r\n }\r\n }\r\n\r\n // there are some remaining items in prevImageAndPlacementSetsCopy, which are not in curImageAndPlacementSets\r\n changed = changed || prevImageAndPlacementSetsCopy.length > 0;\r\n\r\n return [changed, changed ? newImageAndPlacementSets : prevImageAndPlacementSets];\r\n}\r\n\r\n// merge reducer states, try to keep previous sub states if values are not changed\r\nexport function mergeReducerStates(prevState, curState) {\r\n if (!prevState && !curState) {\r\n return [false, prevState];\r\n }\r\n\r\n if (!prevState || !curState) {\r\n return [true, curState];\r\n }\r\n\r\n const {\r\n previewImageListState: prevPreviewState,\r\n hasDataChanged: prevHasDatachanged,\r\n activeImageIndices: prevActiveImageIndices,\r\n } = prevState;\r\n\r\n const {\r\n previewImageListState: curPreviewState,\r\n hasDataChanged: curHasDatachanged,\r\n activeImageIndices: curActiveImageIndices,\r\n } = curState;\r\n\r\n const [isPreviewStateChanged, newPreviewState] = mergePreviewImageAndPlacementSets(prevPreviewState, curPreviewState);\r\n const isActiveImageIndicesChanged = !_.isEqual(prevActiveImageIndices, curActiveImageIndices);\r\n const changed = prevHasDatachanged !== curHasDatachanged || isActiveImageIndicesChanged || isPreviewStateChanged;\r\n\r\n return [\r\n changed,\r\n changed ? {\r\n previewImageListState: isPreviewStateChanged ? newPreviewState : prevPreviewState,\r\n hasDataChanged: curHasDatachanged,\r\n activeImageIndices: isActiveImageIndicesChanged ? curActiveImageIndices : prevActiveImageIndices,\r\n } : prevState,\r\n ];\r\n}\r\n","import _ from 'underscore';\r\nimport { useCallback, useReducer } from 'react';\r\n\r\nimport { mergeReducerStates } from './merge-reducer-state-util';\r\n\r\nconst AdPreviewModelActions = {\r\n ACTION_TYPE_RESET_STATE: 'ACTION_TYPE_RESET_STATE',\r\n ACTION_TYPE_UPDATE_IMAGE_CROPPING: 'ACTION_TYPE_UPDATE_IMAGE_CROPPING',\r\n ACTION_TYPE_UPDATE_PLACEMENT_CROPPING: 'ACTION_TYPE_UPDATE_PLACEMENT_CROPPING',\r\n ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE: 'ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE',\r\n ACTION_TYPE_SET_ACTIVE_IMAGES: 'ACTION_TYPE_SET_ACTIVE_IMAGES',\r\n};\r\n\r\n// interface TAdPreviewReducerState {\r\n// // there could be multiple images, each image has multiple placementSets, each placement set has a unique name\r\n// // and each placement set has multiple placements identifyed by placement type\r\n// // to find a placement, the path is [imageIndex][placementSetName][placementType]\r\n// previewImageListState: Array | undefined | null;\r\n// hasDataChanged: boolean | undefined | null;\r\n//\r\n// The activeImageIndices is used to support multiple image scenarios (for both Multi-Image placements and Multiple images to preview mentioned above).\r\n// It is an array because for multi-image placements, there may be more than one active image.\r\n// If this value is not set, all the images are considered as 'active'.\r\n// activeImageIndices: Array | undefined | null;\r\n// }\r\n\r\nconst ADPREVIEW_INIT_STATE /* : TAdPreviewReducerState */ = {\r\n previewImageListState: null,\r\n hasDataChanged: false,\r\n activeImageIndices: null,\r\n};\r\n\r\n// update crop settings for placement specified by placement-set name and placement-type\r\nconst updatePlacementCorpSettings = (\r\n imageAndPlacementSets, // : TImageAndPlacementSets,\r\n placementSetName, // : string,\r\n placementType, // : EPlacementType,\r\n cropping // : TCropRect\r\n) /* : TImageAndPlacementSets */ => {\r\n const { previewImage, placementSets } = imageAndPlacementSets || {};\r\n let changed = false;\r\n // find the placement-set to update\r\n const newPlacementSets = _.map(placementSets, (placementSet) => {\r\n const { name, placementList } = placementSet || {};\r\n if (name === placementSetName) {\r\n // find the placement to update\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n if (placement.placementMeta.placementType === placementType) {\r\n // found the placement to update\r\n if (!_.isEqual(placement.placementCropping, cropping)) {\r\n changed = true;\r\n return {\r\n ...placement, placementCropping: cropping, hasCroppingChanged: true, expandedPlacementCropping: undefined, effectiveImageUrl: undefined, effectiveImageWidth: undefined, effectiveImageHeight: undefined,\r\n };\r\n }\r\n }\r\n return placement;\r\n });\r\n // return a new placement-set with updated placement list\r\n return changed ? { name, placementList: newPlacementList } : placementSet;\r\n }\r\n return placementSet;\r\n });\r\n\r\n return changed ? { previewImage, placementSets: newPlacementSets } : imageAndPlacementSets;\r\n};\r\n\r\n// find all placements with the same image type, and update their crop settings\r\nconst updatePlacementCorpSettingsByImageType = (\r\n imageAndPlacementSets, // : TImageAndPlacementSets,\r\n placementSetName, // : string,\r\n imageType, // : EImageType,\r\n cropping // : TCropRect\r\n) /* : TImageAndPlacementSets */ => {\r\n const { previewImage, placementSets } = imageAndPlacementSets || {};\r\n let changed = false;\r\n // find the placement-set to update\r\n const newPlacementSets = _.map(placementSets, (placementSet) => {\r\n const { name, placementList } = placementSet || {};\r\n if (name === placementSetName) {\r\n // find the placement to update\r\n const newPlacementList = _.map(placementList, (placement) => {\r\n if (placement.placementMeta.imageType === imageType) {\r\n // found the placement to update\r\n if (!_.isEqual(placement.placementCropping, cropping)) {\r\n changed = true;\r\n return {\r\n ...placement, placementCropping: cropping, hasCroppingChanged: true, expandedPlacementCropping: undefined, effectiveImageUrl: undefined, effectiveImageWidth: undefined, effectiveImageHeight: undefined,\r\n };\r\n }\r\n }\r\n return placement;\r\n });\r\n // return new placement-set with updated placement list\r\n return changed ? { name, placementList: newPlacementList } : placementSet;\r\n }\r\n return placementSet;\r\n });\r\n return changed ? { previewImage, placementSets: newPlacementSets } : imageAndPlacementSets;\r\n};\r\n\r\nfunction adPreviewReducer(state, action) {\r\n const { type: actionType, ...actionData } = action;\r\n switch (actionType) {\r\n case AdPreviewModelActions.ACTION_TYPE_RESET_STATE: {\r\n const { newState, forceToReset } = actionData;\r\n if (forceToReset) {\r\n const { previewImageListState, activeImageIndices, hasDataChanged } = newState || {};\r\n const resetState = {\r\n previewImageListState,\r\n hasDataChanged: hasDataChanged || false, // reset to false\r\n activeImageIndices,\r\n };\r\n return resetState;\r\n }\r\n\r\n const [changed, mergedState] = mergeReducerStates(state, newState);\r\n return !changed ? state : {\r\n ...mergedState,\r\n hasDataChanged: mergedState.hasDataChanged || false,\r\n };\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_IMAGE_CROPPING: {\r\n const { newImageAndPlacementSets, imageIndex } = actionData;\r\n const { previewImageListState } = state || {};\r\n if (previewImageListState && previewImageListState[imageIndex]) {\r\n const newState = [...previewImageListState];\r\n newState[imageIndex] = newImageAndPlacementSets;\r\n // mark the cropping data changed\r\n if (newState[imageIndex] && newState[imageIndex].previewImage) {\r\n newState[imageIndex].previewImage.hasCroppingChanged = true;\r\n }\r\n return {\r\n previewImageListState: newState,\r\n hasDataChanged: true,\r\n };\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING: {\r\n const {\r\n placementType, cropping, imageIndex, placementSetName,\r\n } = actionData;\r\n const { previewImageListState: curState } = state || {};\r\n if (curState && curState[imageIndex]) {\r\n const imageAndPlacementSets = curState[imageIndex];\r\n const newImageAndPlacementSets = updatePlacementCorpSettings(imageAndPlacementSets, placementSetName, placementType, cropping);\r\n // check if data changed\r\n if (imageAndPlacementSets !== newImageAndPlacementSets) {\r\n const newState = [...curState];\r\n newState.splice(imageIndex, 1, newImageAndPlacementSets);\r\n return { previewImageListState: newState, hasDataChanged: true };\r\n }\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE: {\r\n const {\r\n imageType, cropping, imageIndex, placementSetName,\r\n } = actionData;\r\n const { previewImageListState: curState } = state || {};\r\n if (curState && curState[imageIndex]) {\r\n const imageAndPlacementSets = curState[imageIndex];\r\n const newImageAndPlacementSets = updatePlacementCorpSettingsByImageType(imageAndPlacementSets, placementSetName, imageType, cropping);\r\n // check if data changed\r\n if (imageAndPlacementSets !== newImageAndPlacementSets) {\r\n const newPreviewImages = [...curState];\r\n newPreviewImages[imageIndex] = newImageAndPlacementSets;\r\n return { previewImageListState: newPreviewImages, hasDataChanged: true };\r\n }\r\n }\r\n return state;\r\n }\r\n\r\n case AdPreviewModelActions.ACTION_TYPE_SET_ACTIVE_IMAGES: {\r\n const { activeImageIndices } = actionData;\r\n const { previewImageListState, activeImageIndices: curActiveImageIndices } = state || {};\r\n const newIndices = _.isEmpty(previewImageListState) ? [] : _.chain(activeImageIndices)\r\n .uniq()\r\n .sortBy()\r\n .filter(i => _.isNumber(i) && i >= 0 && i < previewImageListState.length)\r\n .value();\r\n if (!_.isEqual(newIndices, curActiveImageIndices)) {\r\n return { ...state, activeImageIndices: newIndices };\r\n }\r\n return state;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport const useAdPreviewReducer = (initState = ADPREVIEW_INIT_STATE) => {\r\n const [adPreviewModel, dispatch] = useReducer(adPreviewReducer, initState);\r\n const { previewImageListState, hasDataChanged, activeImageIndices } = adPreviewModel || {};\r\n\r\n // newState: {\r\n // previewImageListState: Array | undefined | null,\r\n // activeImageIndices: Array | undefined | null,\r\n // hasDataChanged: boolean | undefined | null\r\n // }\r\n const resetReducerStates = useCallback((newState, forceToReset = false) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_RESET_STATE, newState, forceToReset });\r\n }, []);\r\n\r\n const updateImageCropping = useCallback((newImageAndPlacementSets /* : TImageAndPlacementSets */, imageIndex = 0) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_UPDATE_IMAGE_CROPPING, newImageAndPlacementSets, imageIndex });\r\n }, []);\r\n\r\n const updatePlacementCropping = useCallback((params) => {\r\n const {\r\n imageIndex = 0, placementSetName, placementType, cropping,\r\n } = params || {};\r\n dispatch({\r\n type: AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING, placementType, cropping, imageIndex, placementSetName,\r\n });\r\n }, []);\r\n\r\n const updatePlacementCroppingByImageType = useCallback((params) => {\r\n const {\r\n imageIndex = 0, placementSetName, imageType, cropping,\r\n } = params || {};\r\n dispatch({\r\n type: AdPreviewModelActions.ACTION_TYPE_UPDATE_PLACEMENT_CROPPING_BY_IMAGE_TYPE, imageType, cropping, imageIndex, placementSetName,\r\n });\r\n }, []);\r\n\r\n const setActiveImageIndices = useCallback((...indices) => {\r\n dispatch({ type: AdPreviewModelActions.ACTION_TYPE_SET_ACTIVE_IMAGES, activeImageIndices: indices });\r\n }, []);\r\n\r\n return {\r\n previewImageListState,\r\n hasDataChanged,\r\n activeImageIndices,\r\n resetReducerStates,\r\n updateImageCropping,\r\n updatePlacementCropping,\r\n updatePlacementCroppingByImageType,\r\n setActiveImageIndices,\r\n };\r\n};\r\n","// copied from private/component-react/packages/image-experience-utils/src/get-cropped-image.js\r\nimport _ from 'underscore';\r\n\r\nconst AspectRatioTolerance = 0.01;\r\n\r\n// Attention!!: DO NOT touch this algorithm unless sync with MT/DE.\r\n// This logic is also implemented on DE side.\r\n// originalBoxToCrop { SourceWidth, SourceHeight, SourceX, SourceY }\r\nexport const getCenterCroppedSettings = (originalBoxToCrop, aspectRatio) => {\r\n const {\r\n SourceWidth: centerContainerWidth,\r\n SourceHeight: centerContainerHeight,\r\n } = originalBoxToCrop;\r\n const originalRatio = centerContainerWidth / centerContainerHeight;\r\n const cropSettings = _.defaults({}, originalBoxToCrop);\r\n\r\n if (Math.abs(originalRatio - aspectRatio) > AspectRatioTolerance) {\r\n // If the target ratio is narrower than the original\r\n if (aspectRatio <= originalRatio) {\r\n // Use the same height, get the width from the original height\r\n const scaledSourceWidth = Math.round(cropSettings.SourceHeight * aspectRatio);\r\n\r\n // Since we use the full height, Y is still 0\r\n // Make sure we crop the middle section horionzontally\r\n const centerX =\r\n Math.round((cropSettings.SourceWidth - scaledSourceWidth) / 2) + cropSettings.SourceX;\r\n\r\n cropSettings.SourceWidth = scaledSourceWidth;\r\n cropSettings.SourceX = centerX;\r\n } else {\r\n // Use the same width, get the height from the original width\r\n const scaledSourceHeight = Math.round(cropSettings.SourceWidth / aspectRatio);\r\n\r\n // We use full width, X is 0.\r\n // Make sure we crop the middle section vertically\r\n const middleY = Math.round((\r\n cropSettings.SourceHeight - scaledSourceHeight) / 2) + cropSettings.SourceY;\r\n\r\n cropSettings.SourceHeight = scaledSourceHeight;\r\n cropSettings.SourceY = middleY;\r\n }\r\n }\r\n\r\n return cropSettings;\r\n};\r\n\r\n// todo: handle included/default option\r\nexport const getCentralCroppedPlacements = ({\r\n imageMeta,\r\n imageCropping,\r\n placementMetaList, // Array\r\n useOriginalImageSize = false,\r\n}) => {\r\n const width = useOriginalImageSize ? imageMeta.originalWidth : imageMeta.width;\r\n const height = useOriginalImageSize ? imageMeta.originalHeight : imageMeta.height;\r\n const maxCropBox = imageCropping || {\r\n SourceWidth: width,\r\n SourceHeight: height,\r\n SourceX: 0,\r\n SourceY: 0,\r\n };\r\n const aspectRatios = _.pluck(placementMetaList, 'aspectRatio');\r\n const placementCroppings = _.map(aspectRatios, (ratio) => {\r\n const cropSettings = getCenterCroppedSettings(maxCropBox, ratio);\r\n return {\r\n placementCropping: cropSettings,\r\n };\r\n });\r\n return placementCroppings;\r\n};\r\n\r\nexport const getCentralCroppedPlacementsFromOrigialImage = (imageMeta, aspectRatios) =>\r\n getCenterCroppedSettings(imageMeta, aspectRatios);\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { useEffect, useCallback, useMemo, useRef, useContext } from 'react';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { loadImageByUrl } from './load-image-by-url';\r\nimport { getPlacementListMetaData } from './placement-meta-list';\r\nimport { useAdPreviewReducer } from './use-ad-preview-reducer';\r\n\r\nimport { getCentralCroppedPlacements } from './get-central-crop-settings';\r\n\r\nexport const pickSingleImageFromImageList = (images) => {\r\n // try to find the included placement first\r\n let selectedImage = _.find(images, img => img && img.isPlacementIncluded && img.imageMeta);\r\n // try to find a valid image if no placement is included\r\n if (!selectedImage) {\r\n selectedImage = _.find(images, img => img && img.imageMeta);\r\n }\r\n if (!selectedImage) {\r\n selectedImage = _.first(images);\r\n }\r\n return selectedImage;\r\n};\r\n\r\n// const getImageInfo = (image: string | TImageParam) : Promise<{\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// }> => {\r\nconst getImageInfo = (image, onError) => {\r\n // if image is url, load it to get image info\r\n const pLoadedImage = _.isString(image)\r\n ? loadImageByUrl(image).then(({ src, width, height }) => ({\r\n url: src, width, height, originalUrl: src, originalWidth: width, originalHeight: height,\r\n }))\r\n : Promise.resolve(image);\r\n\r\n const p$ret = pLoadedImage.then((loadedImage) => {\r\n const {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, imageCropping, placementsCropping, roiInfo, expandedMeta,\r\n } = loadedImage || {};\r\n\r\n // get image meta info, including crop settings\r\n const imageMeta = {\r\n id, url, width, height, originalUrl, originalWidth, originalHeight, roiInfo, expandedMeta,\r\n };\r\n return { imageMeta, imageCropping, manualPlacementCroppings: placementsCropping };\r\n }).catch((err) => {\r\n if (onError) {\r\n onError(err);\r\n }\r\n return null;\r\n });\r\n\r\n return p$ret;\r\n};\r\n\r\n// function getPlacementSet(\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// placementSetParam: TPlacementSetParam\r\n// ) : Promise {\r\nfunction getPlacementSet(imageMeta, imageCropping, manualPlacementCroppings, placementSetParam, isAdPreviewRefreshEnabled) {\r\n //\r\n const { placementSetName, placementTypes, getDefaultPlacementsCropping = getCentralCroppedPlacements } = placementSetParam;\r\n\r\n // get placements' meta info (predefined constants) for selected placements\r\n const placementMetaList = getPlacementListMetaData(placementTypes, isAdPreviewRefreshEnabled);\r\n\r\n // get default placement crop settings, it could be async or sync call\r\n return Promise.resolve(getDefaultPlacementsCropping({ imageMeta, /* maxCropBox */imageCropping, placementMetaList }))\r\n .then((defaultCroppingList = []) => {\r\n // merge placements meta info with crop settings (default or manual placement crop settings)\r\n const placementList = _.map(placementMetaList, (placementMeta, index) => {\r\n // manual placement crop settings (set by users) on UI take higher priority\r\n const { cropping: manualCropping } = _.find(manualPlacementCroppings, item => item.placementType === placementMeta.placementType) || {};\r\n const {\r\n placementCropping, expandedImageHeight, expandedImageWidth, expandedImageUrl, expandedImageCropSettings,\r\n } = defaultCroppingList[index] || {};\r\n return ({\r\n placementMeta,\r\n placementCropping: manualCropping || placementCropping,\r\n\r\n // set initial value to true if there is manual cropping for this placement\r\n // the purpose is to inlucde this placement when sending crop MT api request\r\n hasCroppingChanged: !!manualCropping,\r\n expandedImageUrl: manualCropping ? undefined : expandedImageUrl,\r\n expandedImageHeight: manualCropping ? undefined : expandedImageHeight,\r\n expandedImageWidth: manualCropping ? undefined : expandedImageWidth,\r\n expandedImageCropSettings: manualCropping ? undefined : expandedImageCropSettings,\r\n });\r\n });\r\n return { name: placementSetName, placementList };\r\n });\r\n}\r\n\r\n// function getImageAndPlacementSetList(\r\n// imageMeta: TPreviewImageMeta,\r\n// imageCropping: TCropRect | undefined | null,\r\n// manualPlacementCroppings: Array | undefined | null,\r\n// placementSetsParam: Array\r\n// ) : Promise {\r\nfunction getImageAndPlacementSetList({\r\n imageMeta, imageCropping, manualPlacementCroppings, placementSetsParam, isAdPreviewRefreshEnabled,\r\n}) {\r\n const ret = Promise.map(\r\n placementSetsParam,\r\n param => getPlacementSet(imageMeta, imageCropping, manualPlacementCroppings, param, isAdPreviewRefreshEnabled),\r\n { concurrency: 5 }\r\n ).then((placementSets) => {\r\n const result = {\r\n previewImage: {\r\n imageMeta, // todo: update imageMeta.width & height using image cropping? is it needed?\r\n imageCropping,\r\n\r\n // set initial value to true if there is manual cropping for this image\r\n // the purpose is to inlucde this cropping when sending crop MT api request\r\n hasCroppingChanged: !!imageCropping,\r\n },\r\n placementSets,\r\n };\r\n return result;\r\n });\r\n return ret;\r\n}\r\n\r\n// todo: add a simplified interface to support single placement set\r\n// export const useAdPreviewModel = (placementConfig: Array | undefined | null, onError) => {\r\nexport const useAdPreviewModel = (placementConfig, onError) => {\r\n //\r\n // keep a reference to the current model config\r\n const curPlacementConfigRef = useRef(placementConfig);\r\n\r\n const permissions = useContext(PermissionsContext);\r\n const isAdPreviewRefreshEnabled = _.get(permissions, ['dynamic', 'AdPreviewRefresh']);\r\n\r\n const {\r\n previewImageListState, // Array\r\n hasDataChanged,\r\n resetReducerStates,\r\n updateImageCropping: updateImageCroppingState,\r\n updatePlacementCropping: updatePlacementCroppingState,\r\n updatePlacementCroppingByImageType: updatePlacementCroppingByImageTypeState,\r\n activeImageIndices,\r\n setActiveImageIndices,\r\n } = useAdPreviewReducer();\r\n\r\n const updateImageCropping = useCallback((newImageCropping, imageIndex = 0) => {\r\n // get image to update\r\n const { previewImage } = (previewImageListState && previewImageListState[imageIndex]) || {};\r\n const { imageMeta, imageCropping } = previewImage || {};\r\n\r\n // get placement set param\r\n const { placementSets } = (curPlacementConfigRef.current && curPlacementConfigRef.current[imageIndex]) || {};\r\n\r\n if (placementSets && imageMeta && newImageCropping && !_.isEqual(imageCropping, newImageCropping)) {\r\n getImageAndPlacementSetList({\r\n imageMeta, imageCropping: newImageCropping, manualPlacementCroppings: undefined, placementSetsParam: placementSets, isAdPreviewRefreshEnabled,\r\n }).then((imgAndPlacementSets) => {\r\n updateImageCroppingState(imgAndPlacementSets, imageIndex);\r\n });\r\n }\r\n }, [previewImageListState, updateImageCroppingState]);\r\n\r\n // const updatePlacementCropping = useCallback((params: {\r\n // newPlacementCropping: TCropRect,\r\n // placementSetName: string,\r\n // placementType: EPlacementType,\r\n // imageIndex: number,\r\n // }) => {\r\n const updatePlacementCropping = useCallback((params) => {\r\n const {\r\n newPlacementCropping, placementSetName, placementType, imageIndex = 0,\r\n } = params || {};\r\n\r\n updatePlacementCroppingState({\r\n imageIndex, placementSetName, placementType, cropping: newPlacementCropping,\r\n });\r\n }, [updatePlacementCroppingState]);\r\n\r\n // const updatePlacementCroppingByImageType = useCallback((params: {\r\n // newPlacementCropping: TCropRect,\r\n // placementSetName: string,\r\n // imageType: EImageType,\r\n // imageIndex: number,\r\n // }) => {\r\n const updatePlacementCroppingByImageType = useCallback((params) => {\r\n const {\r\n newPlacementCropping, placementSetName, imageType, imageIndex = 0,\r\n } = params || {};\r\n\r\n updatePlacementCroppingByImageTypeState({\r\n imageIndex, placementSetName, imageType, cropping: newPlacementCropping,\r\n });\r\n }, [updatePlacementCroppingByImageTypeState]);\r\n\r\n // to avoid re-initialize model using same placement config\r\n const prevModelConfigRef = useRef(null);\r\n\r\n // model config could be set by using this method, or passing it in hook parameters\r\n // const initializeModel = useCallback((pNewModelConfig: Array | null | undefined) => {\r\n const initializeModel = useCallback((pNewModelConfig) => {\r\n //\r\n // remove invalid entries\r\n const newModelConfig = _.compact(pNewModelConfig);\r\n if (_.isEmpty(newModelConfig)) {\r\n return;\r\n }\r\n\r\n // avoid initializing again using same config\r\n if (_.isEqual(prevModelConfigRef.current, newModelConfig)) {\r\n return;\r\n }\r\n prevModelConfigRef.current = newModelConfig;\r\n\r\n // keep a reference to the current model config\r\n curPlacementConfigRef.current = newModelConfig;\r\n\r\n const [firstConfig, ...otherConfigs] = newModelConfig;\r\n\r\n // load first image first and then others, to unblock UI rendering\r\n getImageInfo(firstConfig.image, onError).then((firstImageInfo) => {\r\n // stop if the 1st image is invalid\r\n if (!firstImageInfo) {\r\n return null;\r\n }\r\n const { imageMeta, imageCropping, manualPlacementCroppings } = firstImageInfo;\r\n // set the partial loaded image data (without placement cropping), to unblock UI rendering (such as UI only needs image info)\r\n const partialFirstPreviewImage = {\r\n previewImage: { imageMeta, imageCropping, hasCroppingChanged: !!imageCropping },\r\n placementSets: [],\r\n };\r\n resetReducerStates({ previewImageListState: [partialFirstPreviewImage] });\r\n\r\n // get placement sets for the first image\r\n return getImageAndPlacementSetList({\r\n imageMeta, imageCropping, manualPlacementCroppings, placementSetsParam: firstConfig.placementSets, isAdPreviewRefreshEnabled,\r\n }).then((firstPreviewImage) => {\r\n if (firstPreviewImage) {\r\n // set the state for the first image first, so UI can render something quickly\r\n resetReducerStates({ previewImageListState: [firstPreviewImage] });\r\n // get image and placement sets for other images\r\n if (!_.isEmpty(otherConfigs)) {\r\n Promise.map(\r\n otherConfigs,\r\n config => getImageInfo(config.image, onError).then((imgInfo) => {\r\n if (imgInfo) {\r\n return getImageAndPlacementSetList({\r\n imageMeta: imgInfo.imageMeta,\r\n imageCropping: imgInfo.imageCropping,\r\n manualPlacementCroppings: imgInfo.manualPlacementCroppings,\r\n placementSetsParam: config.placementSets,\r\n isAdPreviewRefreshEnabled,\r\n });\r\n }\r\n return null;\r\n }),\r\n { concurrency: 5 }\r\n ).then((ret /* Array */) => {\r\n // set all the images now\r\n const otherPreviewImages = _.compact(ret);\r\n if (!_.isEmpty(otherPreviewImages)) {\r\n resetReducerStates({ previewImageListState: [firstPreviewImage, ...otherPreviewImages] });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }, [onError, resetReducerStates]);\r\n\r\n useEffect(() => {\r\n if (!_.isEmpty(placementConfig)) {\r\n initializeModel(placementConfig);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [placementConfig]);\r\n\r\n //\r\n // transform model state to make it easier to use for rendering components\r\n // const multiImagePlacementSetsViewModel = useMemo((): Array | null => {\r\n const getPlacementSetsViewModel = useCallback((activeImagesOnly) => {\r\n if (_.isEmpty(previewImageListState)) {\r\n return [];\r\n }\r\n\r\n const finalPlacementSets = [];\r\n\r\n // only get active images only\r\n let pickedPreviewImageListState = previewImageListState;\r\n if (activeImagesOnly && !_.isEmpty(activeImageIndices)) {\r\n pickedPreviewImageListState = _.compact(_.map(activeImageIndices, idx => previewImageListState[idx]));\r\n }\r\n\r\n //\r\n // each image in model state\r\n //\r\n _.each(pickedPreviewImageListState, ({ previewImage: pImage, placementSets }) => {\r\n const { imageMeta, imageCropping, imageSmartEffect } = pImage || {};\r\n //\r\n // each placement set\r\n //\r\n _.each(placementSets, ({ name: placementSetName, placementList }) => {\r\n // create a placement set view model if not exist\r\n let placementSetViewModel = finalPlacementSets.find(item => item.placementSetName === placementSetName);\r\n if (!placementSetViewModel) {\r\n placementSetViewModel = { placementSetName, placementList: [] };\r\n finalPlacementSets.push(placementSetViewModel);\r\n }\r\n //\r\n // for each placement\r\n //\r\n _.each(placementList, ({\r\n placementMeta, placementCropping, placementSmartEffect, isPlacementIncluded, expandedImageUrl, expandedImageHeight, expandedImageWidth, expandedImageCropSettings, ...rest\r\n }) => {\r\n const imageViewModel = {\r\n imageMeta,\r\n imageCropping,\r\n imageSmartEffect,\r\n placementCropping,\r\n placementSmartEffect,\r\n effectiveImageUrl: (placementSmartEffect && placementSmartEffect.effectSrc) || (imageSmartEffect && imageSmartEffect.effectSrc) || expandedImageUrl || (imageMeta && (imageMeta.originalUrl || imageMeta.url)),\r\n effectiveImageWidth: expandedImageWidth || (imageMeta && imageMeta.originalWidth),\r\n effectiveImageHeight: expandedImageHeight || (imageMeta && imageMeta.originalHeight),\r\n expandedPlacementCropping: expandedImageCropSettings,\r\n isPlacementIncluded,\r\n ...rest,\r\n };\r\n const fpIndex = _.findIndex(placementSetViewModel.placementList, (item => item.placementMeta.placementType === placementMeta.placementType));\r\n if (fpIndex > -1) {\r\n placementSetViewModel.placementList[fpIndex].images.push(imageViewModel);\r\n placementSetViewModel.placementList[fpIndex].isPlacementIncluded\r\n = isPlacementIncluded || placementSetViewModel.placementList[fpIndex].isPlacementIncluded;\r\n } else {\r\n placementSetViewModel.placementList.push({\r\n placementMeta, isPlacementIncluded, images: [imageViewModel],\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n return finalPlacementSets;\r\n }, [activeImageIndices, previewImageListState]);\r\n\r\n const multiImagePlacementSetsViewModel = useMemo(() => getPlacementSetsViewModel(false), [getPlacementSetsViewModel]);\r\n const activeMultiImagePlacementSetsViewModel = useMemo(() => getPlacementSetsViewModel(true), [getPlacementSetsViewModel]);\r\n\r\n /**\r\n * list of placements to shown, this is a simplified interface for signle image mode\r\n * return type: Array\r\n */\r\n const singleImagePlacementSetsViewModel = useMemo(() => {\r\n const ret = _.map(multiImagePlacementSetsViewModel, ({ placementSetName, placementList }) => {\r\n const ret2 = _.map(placementList, ({ placementMeta, isPlacementIncluded, images }) => {\r\n const selectedImage = pickSingleImageFromImageList(images);\r\n return {\r\n placementMeta,\r\n isPlacementIncluded,\r\n ...selectedImage,\r\n };\r\n });\r\n return { placementSetName, placementList: ret2 };\r\n });\r\n return ret || [];\r\n }, [multiImagePlacementSetsViewModel]);\r\n\r\n const activeSingleImagePlacementSetsViewModel = useMemo(() => {\r\n const ret = _.map(activeMultiImagePlacementSetsViewModel, ({ placementSetName, placementList }) => {\r\n const ret2 = _.map(placementList, ({ placementMeta, isPlacementIncluded, images }) => {\r\n const selectedImage = pickSingleImageFromImageList(images);\r\n return {\r\n placementMeta,\r\n isPlacementIncluded,\r\n ...selectedImage,\r\n };\r\n });\r\n return { placementSetName, placementList: ret2 };\r\n });\r\n return ret || [];\r\n }, [activeMultiImagePlacementSetsViewModel]);\r\n\r\n const firstImage = useMemo(() => {\r\n const { previewImage } = _.first(previewImageListState) || {};\r\n return previewImage;\r\n }, [previewImageListState]);\r\n\r\n const allImages = useMemo(() => {\r\n const imgs = _.map(previewImageListState, ({ previewImage }) => previewImage);\r\n return imgs || [];\r\n }, [previewImageListState]);\r\n\r\n const activeImages = useMemo(() => {\r\n if (_.isEmpty(activeImageIndices)) {\r\n return [];\r\n }\r\n const ret = _.map(activeImageIndices, index => previewImageListState[index] && previewImageListState[index].previewImage);\r\n return _.compact(ret) || [];\r\n }, [previewImageListState, activeImageIndices]);\r\n\r\n // get changed image cropping and placement croppings\r\n // const changedCropSettings: Array<{ image: TPreviewImage, placements: Array }> = useMemo(() => {\r\n const changedCropSettings = useMemo(() => {\r\n // each image in model state\r\n const ret = _.map(previewImageListState, ({ previewImage, placementSets }) => {\r\n const image = { ...previewImage };\r\n const placements = [];\r\n // each placement set\r\n _.each(placementSets, ({ placementList }) => {\r\n // for each placement\r\n _.each(placementList, (placement) => {\r\n if (placement.hasCroppingChanged) {\r\n placements.push(placement);\r\n }\r\n });\r\n });\r\n return { image, placements };\r\n });\r\n return ret || [];\r\n }, [previewImageListState]);\r\n\r\n const resetReducerStatesWrapper = useCallback((newState) => {\r\n resetReducerStates(newState);\r\n prevModelConfigRef.current = null;\r\n }, [resetReducerStates]);\r\n\r\n return {\r\n // previewImageListState,\r\n activeImageIndices,\r\n setActiveImageIndices,\r\n resetReducerStates: resetReducerStatesWrapper,\r\n //\r\n setPlacementConfig: initializeModel, // todo: support partial update? only update one image? or one placement set?\r\n updateImageCropping,\r\n updatePlacementCropping,\r\n updatePlacementCroppingByImageType,\r\n multiImagePlacementSets: activeMultiImagePlacementSetsViewModel,\r\n singleImagePlacementSets: activeSingleImagePlacementSetsViewModel,\r\n multiImagePlacementSetsViewModel,\r\n singleImagePlacementSetsViewModel,\r\n firstImage,\r\n allImages,\r\n activeImages,\r\n hasDataChanged,\r\n changedCropSettings,\r\n };\r\n};\r\n","import Promise from 'bluebird';\r\n\r\n// load an image by url\r\nexport function loadImageByUrl(url) {\r\n return new Promise((resolve, reject) => {\r\n const image = new Image();\r\n image.onload = () => {\r\n const { src, naturalWidth, naturalHeight } = image || {};\r\n resolve({ src, width: naturalWidth, height: naturalHeight });\r\n };\r\n image.onerror = () => {\r\n reject(new Error(`Failed to load image, url: ${url}`));\r\n };\r\n image.src = url;\r\n });\r\n}\r\n","import { UAPPlacementType } from '../@types';\r\n\r\n//\r\n// origanize and alias placement types for easier reference\r\nexport const UAPPlacementTypeAlias = {\r\n MMA: {\r\n WideImage: UAPPlacementType.MMA_WideImage_4x1,\r\n LandscapeImage: UAPPlacementType.MMA_LandscapeImage_191x100,\r\n SquareImage: UAPPlacementType.MMA_SquareImage_1x1,\r\n VerticalImage: UAPPlacementType.MMA_VerticalImage_1x2,\r\n },\r\n\r\n MSAN: {\r\n WideImage: UAPPlacementType.Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.Audience_Network_SquareImage_1x1,\r\n MSEdgeSingleCarousel: UAPPlacementType.Microsoft_Edge_Single_Carousel_178x100,\r\n MSNInArticle: UAPPlacementType.MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.MSN_Small_Headline_133x100,\r\n },\r\n\r\n MSANV2: {\r\n MSEdgeCarousel: UAPPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n MSEdgeMobile: UAPPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n MSANBanner: UAPPlacementType.MsanV2_MSAN_Banner_2x1,\r\n MSANRiver: UAPPlacementType.MsanV2_MSAN_River_191x100,\r\n MSANRectangle: UAPPlacementType.MsanV2_MSAN_Rectangle_120x100,\r\n MSNCarousel: UAPPlacementType.MsanV2_MSN_Carousel_169x100,\r\n MSNPartnerStripe: UAPPlacementType.MsanV2_MSN_Partner_Stripe_153x100,\r\n MSNRestoday: UAPPlacementType.MsanV2_MSN_Restoday_124x100,\r\n },\r\n\r\n PMax: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MSNInArticle: UAPPlacementType.PMax_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.PMax_MSN_Small_Headline_133x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n Video: UAPPlacementType.PMax_Video,\r\n },\r\n\r\n PMaxV2: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n Video: UAPPlacementType.PMax_Video,\r\n },\r\n\r\n Boost: {\r\n HeroImageCarousel200x100: UAPPlacementType.Boost_Hero_Image_Carousel_200x100,\r\n HeroImageCarousel122x100: UAPPlacementType.Boost_Hero_Image_Carousel_122x100,\r\n HeroImageCarousel159x100: UAPPlacementType.Boost_Hero_Image_Carousel_159x100,\r\n HeroImageCarousel180x100: UAPPlacementType.Boost_Hero_Image_Carousel_180x100,\r\n HeroImageCarousel233x100: UAPPlacementType.Boost_Hero_Image_Carousel_233x100,\r\n HeroImageCarousel320x100: UAPPlacementType.Boost_Hero_Image_Carousel_320x100,\r\n HeroImageCarousel57x100: UAPPlacementType.Boost_Hero_Image_Carousel_57x100,\r\n WindowsSpotlight: UAPPlacementType.Boost_Windows_Spotlight_191x100,\r\n DiscoverCard: UAPPlacementType.Boost_Discover_Card_1x1,\r\n StartMenu: UAPPlacementType.Boost_Start_Menu,\r\n ActionCenter: UAPPlacementType.Boost_Action_Center,\r\n Banner: UAPPlacementType.Boost_Banner,\r\n Prong1Prong2Feed: UAPPlacementType.Boost_Prong1_Prong2_Feed_191x100,\r\n Coachmark: UAPPlacementType.Boost_Coachmark_175x100,\r\n },\r\n\r\n ImageExt: {\r\n MMAV2MSNRiver: UAPPlacementType.ImgExt_MMAV2_MSN_River_191x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n\r\n WideImage: UAPPlacementType.ImgExt_Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.ImgExt_Audience_Network_SquareImage_1x1,\r\n\r\n MSEdgeMediumHeadline: UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n\r\n MSNSingleCarousel: UAPPlacementType.ImgExt_MSN_Single_Carousel_169x100,\r\n MSNMediumHeadline: UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n MSNInArticle: UAPPlacementType.ImgExt_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.ImgExt_MSN_Small_Headline_133x100,\r\n MSNDoubleCarousel: UAPPlacementType.ImgExt_MSN_Double_Carousel_93x100,\r\n\r\n BingDesktopSingleImage: UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n BingDesktopMultiImage: UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n BingMobileMultiImage: UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n },\r\n\r\n Outlook: {\r\n Mobile: UAPPlacementType.Outlook_Text_Mobile,\r\n Web: UAPPlacementType.Outlook_Text_Web,\r\n },\r\n\r\n BingSearch: {\r\n Mobile: UAPPlacementType.Bing_Search_Mobile,\r\n Desktop: UAPPlacementType.Bing_Search_Desktop,\r\n Text: UAPPlacementType.Bing_Search_Text,\r\n },\r\n\r\n Responsive: {\r\n MMA: {\r\n WideImage: UAPPlacementType.Responsive_MMA_WideImage_4x1,\r\n LandscapeImage: UAPPlacementType.Responsive_MMA_LandscapeImage_191x100,\r\n SquareImage: UAPPlacementType.Responsive_MMA_SquareImage_1x1,\r\n VerticalImage: UAPPlacementType.Responsive_MMA_VerticalImage_1x2,\r\n },\r\n\r\n MSAN: {\r\n WideImage: UAPPlacementType.Responsive_Audience_Network_WideImage_191x100,\r\n SquareImage: UAPPlacementType.Responsive_Audience_Network_SquareImage_1x1,\r\n MSEdgeSingleCarousel: UAPPlacementType.Responsive_Microsoft_Edge_Single_Carousel_178x100,\r\n MSNInArticle: UAPPlacementType.Responsive_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.Responsive_MSN_Small_Headline_133x100,\r\n },\r\n\r\n MSANV2: {\r\n MSEdgeCarousel: UAPPlacementType.Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n MSEdgeMobile: UAPPlacementType.Responsive_MsanV2_Microsoft_Edge_Mobile_1x1,\r\n MSANBanner: UAPPlacementType.Responsive_MsanV2_MSAN_Banner_2x1,\r\n MSANRiver: UAPPlacementType.Responsive_MsanV2_MSAN_River_191x100,\r\n MSANRectangle: UAPPlacementType.Responsive_MsanV2_MSAN_Rectangle_120x100,\r\n MSNCarousel: UAPPlacementType.Responsive_MsanV2_MSN_Carousel_169x100,\r\n MSNPartnerStripe: UAPPlacementType.Responsive_MsanV2_MSN_Partner_Stripe_153x100,\r\n MSNRestoday: UAPPlacementType.Responsive_MsanV2_MSN_Restoday_124x100,\r\n },\r\n\r\n Outlook: {\r\n Mobile: UAPPlacementType.Responsive_Outlook_Text_Mobile,\r\n Web: UAPPlacementType.Responsive_Outlook_Text_Web,\r\n },\r\n\r\n BingSearch: {\r\n Text: UAPPlacementType.Responsive_Bing_Search_Text,\r\n },\r\n\r\n Boost: {\r\n WindowsSpotlight: UAPPlacementType.Responsive_Boost_Windows_Spotlight_191x100,\r\n DiscoverCard: UAPPlacementType.Responsive_Boost_Discover_Card_1x1,\r\n StartMenu: UAPPlacementType.Responsive_Boost_Start_Menu,\r\n ActionCenter: UAPPlacementType.Responsive_Boost_Action_Center,\r\n Banner: UAPPlacementType.Responsive_Boost_Banner,\r\n Prong1Prong2Feed: UAPPlacementType.Responsive_Boost_Prong1_Prong2_Feed_191x100,\r\n Coachmark: UAPPlacementType.Responsive_Boost_Coachmark_175x100,\r\n },\r\n\r\n PMax: {\r\n AudienceSquareImage: UAPPlacementType.Responsive_PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.Responsive_PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.Responsive_PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.Responsive_PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.Responsive_PMax_MMA_WideImage_4x1,\r\n MSNInArticle: UAPPlacementType.Responsive_PMax_MSN_InArticle_Ad_150x100,\r\n MSNSmallHeadline: UAPPlacementType.Responsive_PMax_MSN_Small_Headline_133x100,\r\n MSEdgeSingleCarousel: UAPPlacementType.Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.Responsive_PMax_MMAV2_MSN_River_191x100,\r\n },\r\n\r\n PMaxV2: {\r\n AudienceSquareImage: UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n AudienceWideImage: UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n MMALandscapeImage: UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n MMAVerticalImage: UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n MMAWideImage: UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n MMAV2MSEdgeCarousel: UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n MMAV2MSNSingleCarousel: UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n MMAV2MSNRestoday: UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n MMAV2MSNPartnerStripe: UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n MMAV2MSNRiver: UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n },\r\n },\r\n\r\n ResponsiveSearch: {\r\n Text: UAPPlacementType.Responsive_Search,\r\n Desktop: UAPPlacementType.Responsive_Search_Desktop,\r\n Mobile: UAPPlacementType.Responsive_Search_Mobile,\r\n },\r\n\r\n DynamicSearch: {\r\n Dynamic: UAPPlacementType.Dynamic_Search,\r\n },\r\n\r\n LinkedIn: {\r\n Landscape: {\r\n SingleImageDesktop: UAPPlacementType.LinkedIn_Single_Image_Desktop_Landscape,\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Landscape,\r\n },\r\n Square: {\r\n SingleImageDesktop: UAPPlacementType.LinkedIn_Single_Image_Desktop_Square,\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Square,\r\n },\r\n Vertical: {\r\n SingleImageMobile: UAPPlacementType.LinkedIn_Single_Image_Mobile_Vertical,\r\n },\r\n },\r\n\r\n UnifiedAppAds: {\r\n VideoHorizontal: UAPPlacementType.Unified_App_Ads_Video_Horizontal,\r\n M365Outlook: UAPPlacementType.Unified_App_Ads_M365_Outlook,\r\n MSNDisplay: UAPPlacementType.Unified_App_Ads_MSN_Display,\r\n CasualGamesDimensions: UAPPlacementType.Unified_App_Ads_Causal_Games_Dimensions,\r\n BingSearch: UAPPlacementType.Unified_App_Ads_Bing_Search,\r\n BingSearchText: UAPPlacementType.Unified_App_Ads_Bing_Search_Text,\r\n },\r\n};\r\n\r\nUAPPlacementTypeAlias.MMA.All = [\r\n UAPPlacementType.MMA_WideImage_4x1,\r\n UAPPlacementType.MMA_LandscapeImage_191x100,\r\n UAPPlacementType.MMA_SquareImage_1x1,\r\n UAPPlacementType.MMA_VerticalImage_1x2,\r\n];\r\n\r\nUAPPlacementTypeAlias.MSAN.All = [\r\n UAPPlacementType.Audience_Network_WideImage_191x100,\r\n UAPPlacementType.Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.MSN_Small_Headline_133x100,\r\n UAPPlacementType.Audience_Network_SquareImage_1x1,\r\n];\r\n\r\nUAPPlacementTypeAlias.MSANV2.All = [\r\n UAPPlacementType.MsanV2_Microsoft_Edge_Carouse_l201x100,\r\n UAPPlacementType.MsanV2_MSAN_Banner_2x1,\r\n UAPPlacementType.MsanV2_MSAN_River_191x100,\r\n UAPPlacementType.MsanV2_MSN_Carousel_169x100,\r\n UAPPlacementType.MsanV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.MsanV2_MSN_Restoday_124x100,\r\n UAPPlacementType.MsanV2_MSAN_Rectangle_120x100,\r\n UAPPlacementType.MsanV2_Microsoft_Edge_Mobile_1x1,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMax.All = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.PMax_MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.PMax_MSN_Small_Headline_133x100,\r\n UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMaxV2.All = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.PMaxV2.AllV2 = [\r\n UAPPlacementType.PMax_MMA_WideImage_4x1,\r\n UAPPlacementType.PMax_MMA_LandscapeImage_191x100,\r\n UAPPlacementType.PMax_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.PMax_MMA_VerticalImage_1x2,\r\n UAPPlacementType.PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Partner_Stripe_153x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_Restoday_124x100,\r\n UAPPlacementType.PMax_MMAV2_MSN_River_191x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ImageExt.All = [\r\n UAPPlacementType.ImgExt_Audience_Network_WideImage_191x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n UAPPlacementType.ImgExt_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n UAPPlacementType.ImgExt_MSN_InArticle_Ad_150x100,\r\n UAPPlacementType.ImgExt_MSN_Small_Headline_133x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.ImgExt_MSN_Double_Carousel_93x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ImageExt.AllV2 = [\r\n UAPPlacementType.ImgExt_MMAV2_MSN_River_191x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_SingleImage_Extension_178x100,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Medium_Headline_172x100,\r\n UAPPlacementType.ImgExt_MMAV2_MSN_Single_Carousel_169x100,\r\n UAPPlacementType.ImgExt_Bing_Desktop_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Bing_Mobile_MultiImage_Extension_133x100,\r\n UAPPlacementType.ImgExt_Audience_Network_SquareImage_1x1,\r\n UAPPlacementType.ImgExt_Microsoft_Edge_Single_Carousel_178x100,\r\n UAPPlacementType.ImgExt_MSN_Medium_Headline_155x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.BingSearch.All = [\r\n UAPPlacementType.Bing_Search_Text,\r\n UAPPlacementType.Bing_Search_Desktop,\r\n UAPPlacementType.Bing_Search_Mobile,\r\n];\r\n\r\nUAPPlacementTypeAlias.Boost.All = [\r\n UAPPlacementType.Boost_Hero_Image_Carousel_200x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_122x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_159x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_180x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_233x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_320x100,\r\n UAPPlacementType.Boost_Hero_Image_Carousel_57x100,\r\n UAPPlacementType.Boost_Windows_Spotlight_191x100,\r\n UAPPlacementType.Boost_Discover_Card_1x1,\r\n UAPPlacementType.Boost_Start_Menu,\r\n UAPPlacementType.Boost_Action_Center,\r\n UAPPlacementType.Boost_Banner,\r\n UAPPlacementType.Boost_Prong1_Prong2_Feed_191x100,\r\n UAPPlacementType.Boost_Coachmark_175x100,\r\n];\r\n\r\nUAPPlacementTypeAlias.ResponsiveSearch.All = [\r\n UAPPlacementType.Responsive_Search,\r\n UAPPlacementType.Responsive_Search_Desktop,\r\n UAPPlacementType.Responsive_Search_Mobile,\r\n];\r\n\r\nUAPPlacementTypeAlias.DynamicSearch.All = [\r\n UAPPlacementType.Dynamic_Search,\r\n];\r\n\r\nUAPPlacementTypeAlias.LinkedIn.All = [\r\n UAPPlacementType.LinkedIn_Single_Image_Desktop_Landscape,\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Landscape,\r\n\r\n UAPPlacementType.LinkedIn_Single_Image_Desktop_Square,\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Square,\r\n\r\n UAPPlacementType.LinkedIn_Single_Image_Mobile_Vertical,\r\n];\r\n\r\n","import _ from 'underscore';\r\nimport { UAPCroppingType, UAPImageExpansionType, setROIInfo } from '@bingads-webui-campaign-react/unified-ad-preview-library-util';\r\nimport { getCenterCroppedSettings } from './get-central-crop-settings';\r\n\r\nexport const getExpandedImageInfo = ({\r\n imageExpansionType,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n originalImageCropSettings,\r\n extraCheck = undefined,\r\n}) => {\r\n if (!imageExpansionType || imageExpansionType === UAPImageExpansionType.None) {\r\n return null;\r\n }\r\n\r\n if (originalImageCropSettings && imageExpansionType !== UAPImageExpansionType.Outpainting && originalImageCropSettings.CroppingType === UAPCroppingType.SmartCrop) {\r\n return null;\r\n }\r\n\r\n if (imageExpansionType === UAPImageExpansionType.SingleColorPadding) {\r\n return null;\r\n }\r\n\r\n if (!expandedImageCropSettings) {\r\n return null;\r\n }\r\n\r\n if (extraCheck && extraCheck()) {\r\n return null;\r\n }\r\n\r\n return {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n expandedImageUrl,\r\n };\r\n};\r\n\r\nexport const getCropSettingsFromRoi = ({\r\n imageMeta,\r\n imageCropping,\r\n placementMetaList, // Array\r\n useOriginalImageSize = false,\r\n}) => {\r\n let expandedInfo = {};\r\n if (imageMeta.expandedMeta) {\r\n const { expandedMeta } = imageMeta;\r\n expandedInfo = {\r\n expandedImageUrl: expandedMeta.expandedImageUrl,\r\n expandedImageWidth: expandedMeta.expandedImageWidth,\r\n expandedImageHeight: expandedMeta.expandedImageHeight,\r\n expandedImageCropSettings: expandedMeta.expandedImageCropSettings,\r\n originalImageCropSettings: expandedMeta.originalImageCropSettings,\r\n imageExpansionType: expandedMeta.imageExpansionType,\r\n };\r\n } else if (imageMeta.roiInfo) {\r\n expandedInfo = setROIInfo(imageMeta.roiInfo, imageMeta.url);\r\n } else {\r\n return [];\r\n }\r\n\r\n const {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings: expandedImageCropSettingsOriginal,\r\n originalImageCropSettings,\r\n expandedImageUrl,\r\n imageExpansionType,\r\n } = expandedInfo;\r\n\r\n const aspectRatios = _.pluck(placementMetaList, 'aspectRatio');\r\n const width = useOriginalImageSize ? imageMeta.originalWidth : imageMeta.width;\r\n const height = useOriginalImageSize ? imageMeta.originalHeight : imageMeta.height;\r\n const maxCropBox = imageCropping || {\r\n SourceWidth: width,\r\n SourceHeight: height,\r\n SourceX: 0,\r\n SourceY: 0,\r\n };\r\n\r\n const expandedImageCropSettingsMap = _.map(aspectRatios, (ratio) => {\r\n const cropSetting = _.find(expandedImageCropSettingsOriginal, ({ AspectRatio }) => AspectRatio === ratio);\r\n return cropSetting ? cropSetting.CropSetting : undefined;\r\n });\r\n\r\n const originalImageCropSettingsMap = _.map(aspectRatios, (ratio) => {\r\n const cropSetting = _.find(originalImageCropSettings, ({ AspectRatio }) => AspectRatio === ratio);\r\n return cropSetting ? cropSetting.CropSetting : { ...getCenterCroppedSettings(maxCropBox, ratio), CroppingType: UAPCroppingType.CenterCrop };\r\n });\r\n\r\n const placementList = _.map(expandedImageCropSettingsMap, (expandedCropSetting, index) => {\r\n const expandedImageInfo = getExpandedImageInfo({\r\n imageExpansionType,\r\n expandedImageUrl,\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings: expandedCropSetting,\r\n originalImageCropSettings: originalImageCropSettingsMap[index],\r\n });\r\n\r\n if (expandedImageInfo) {\r\n return {\r\n ...expandedImageInfo,\r\n placementCropping: originalImageCropSettingsMap[index],\r\n };\r\n }\r\n\r\n return {\r\n placementCropping: originalImageCropSettingsMap[index],\r\n };\r\n });\r\n\r\n return placementList;\r\n};\r\n","import { UAPPlacementTypeAlias as PT } from '../ad-preview-model';\r\nimport {\r\n // MMA\r\n AdPlacementMmaLandscapeImage191x100,\r\n AdPlacementMmaSquareImage1x1,\r\n AdPlacementMmaVerticalImage1x2,\r\n AdPlacementMmaWideImage4x1,\r\n\r\n // MMA in MSAN\r\n AdPlacementMmaInMsanWideImage191x100,\r\n AdPlacementMmaInMsanSquareImage1x1,\r\n AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n AdPlacementMmaInMsanMSNInArticle150x100,\r\n AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n // MMA in MSAN V2\r\n AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n AdPlacementMmaInMsanV2MSANBanner2x1,\r\n AdPlacementMmaInMsanV2MSANRiver191x100,\r\n AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // Image Extension\r\n AdPlacementImgExtWideImage191x100,\r\n AdPlacementImgExtMSEdgeSingleCarousel178x100,\r\n AdPlacementImgExtBingDesktopSingleImage178x100,\r\n AdPlacementImgExtMSEdgeMediumHeadline172x100,\r\n AdPlacementImgExtMSNSingleCarousel169x100,\r\n AdPlacementImgExtMSNMediumHeadline155x100,\r\n AdPlacementImgExtMSNInArticle150x100,\r\n AdPlacementImgExtMSNSmallHeadline133x100,\r\n AdPlacementImgExtBingDesktopMultiImage133x100,\r\n AdPlacementImgExtBingMobileMultiImage133x100,\r\n AdPlacementImgExtSquareImage1x1,\r\n AdPlacementImgExtMSNDoubleCarousel93x100,\r\n\r\n //\r\n AdPlacementBingSearchText,\r\n AdPlacementBingSearchTextDesktop,\r\n AdPlacementBingSearchTextMobile,\r\n AdPlacementOutlookMobile,\r\n AdPlacementOutlookWeb,\r\n\r\n // Responsive\r\n ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n ResponsiveAdPlacementMmaSquareImage1x1,\r\n ResponsiveAdPlacementMmaVerticalImage1x2,\r\n ResponsiveAdPlacementMmaWideImage4x1,\r\n ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n ResponsiveAdPlacementBingSearchText,\r\n ResponsiveAdPlacementOutlookMobile,\r\n ResponsiveAdPlacementOutlookWeb,\r\n ResponsiveAdPlacementBoostWindowsSpotlight191x100,\r\n ResponsiveAdPlacementBoostDiscoverCard1x1,\r\n ResponsiveAdPlacementBoostProngFeed191x100,\r\n ResponsiveAdPlacementBoostCoachmark175x100,\r\n ResponsiveAdPlacementBoostStartMenu,\r\n ResponsiveAdPlacementBoostActionCenter,\r\n ResponsiveAdPlacementBoostBanner,\r\n\r\n // Responsive Search Ad\r\n AdPlacementResponsiveSearch,\r\n AdPlacementResponsiveSearchDesktop,\r\n AdPlacementResponsiveSearchMobile,\r\n\r\n // Dynamic Search Ad\r\n AdPlacementDynamicSearch,\r\n\r\n // boost\r\n AdPlacementBoostHeroImageCarousel,\r\n AdPlacementBoostWindowsSpotlight191x100,\r\n AdPlacementBoostDiscoverCard1x1,\r\n AdPlacementBoostStartMenu,\r\n AdPlacementBoostActionCenter,\r\n AdPlacementBoostBanner,\r\n AdPlacementBoostProngFeed191x100,\r\n AdPlacementBoostCoachmark175x100,\r\n\r\n // LinkedIn\r\n AdPlacementLinkedInSingleImageDesktop,\r\n AdPlacementLinkedInSingleImageMobile,\r\n\r\n // Unified App Ads\r\n AppAdsVideoHorizontalPlacement,\r\n AppAdsBingSearchPlacement,\r\n AppAdsBingSearchPlacementText,\r\n AppAdsCasualGamesDimensionsPlacement,\r\n AppAdsM365OutlookPlacement,\r\n AppAdsMSNDisplayPlacement,\r\n\r\n VideoPlacement,\r\n} from '../ad-placement-components';\r\n\r\nconst PlacementType2Component = {\r\n // MMA\r\n [PT.MMA.WideImage]: AdPlacementMmaWideImage4x1,\r\n [PT.MMA.LandscapeImage]: AdPlacementMmaLandscapeImage191x100,\r\n [PT.MMA.SquareImage]: AdPlacementMmaSquareImage1x1,\r\n [PT.MMA.VerticalImage]: AdPlacementMmaVerticalImage1x2,\r\n\r\n // MMA in MSAN (Audience Network)\r\n [PT.MSAN.WideImage]: AdPlacementMmaInMsanWideImage191x100,\r\n [PT.MSAN.SquareImage]: AdPlacementMmaInMsanSquareImage1x1,\r\n [PT.MSAN.MSEdgeSingleCarousel]: AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.MSAN.MSNInArticle]: AdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.MSAN.MSNSmallHeadline]: AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n [PT.MSANV2.MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.MSANV2.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n [PT.MSANV2.MSANBanner]: AdPlacementMmaInMsanV2MSANBanner2x1,\r\n [PT.MSANV2.MSANRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.MSANV2.MSANRectangle]: AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n [PT.MSANV2.MSNCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.MSANV2.MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.MSANV2.MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // pmax\r\n [PT.PMax.AudienceSquareImage]: AdPlacementMmaInMsanSquareImage1x1,\r\n [PT.PMax.AudienceWideImage]: AdPlacementMmaInMsanWideImage191x100,\r\n [PT.PMax.MMALandscapeImage]: AdPlacementMmaLandscapeImage191x100,\r\n [PT.PMax.MMAVerticalImage]: AdPlacementMmaVerticalImage1x2,\r\n [PT.PMax.MMAWideImage]: AdPlacementMmaWideImage4x1,\r\n [PT.PMax.MSNInArticle]: AdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.PMax.MSNSmallHeadline]: AdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n [PT.PMax.MSEdgeSingleCarousel]: AdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.PMax.MMAV2MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.PMax.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.PMax.MMAV2MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n [PT.PMax.MMAV2MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.PMax.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.PMax.Video]: VideoPlacement,\r\n\r\n // Image Extension\r\n [PT.ImageExt.WideImage]: AdPlacementImgExtWideImage191x100,\r\n [PT.ImageExt.MSEdgeSingleCarousel]: AdPlacementImgExtMSEdgeSingleCarousel178x100,\r\n [PT.ImageExt.BingDesktopSingleImage]: AdPlacementImgExtBingDesktopSingleImage178x100,\r\n [PT.ImageExt.MSEdgeMediumHeadline]: AdPlacementImgExtMSEdgeMediumHeadline172x100,\r\n [PT.ImageExt.MSNSingleCarousel]: AdPlacementImgExtMSNSingleCarousel169x100,\r\n [PT.ImageExt.MSNMediumHeadline]: AdPlacementImgExtMSNMediumHeadline155x100,\r\n [PT.ImageExt.MSNInArticle]: AdPlacementImgExtMSNInArticle150x100,\r\n [PT.ImageExt.MSNSmallHeadline]: AdPlacementImgExtMSNSmallHeadline133x100,\r\n [PT.ImageExt.BingDesktopMultiImage]: AdPlacementImgExtBingDesktopMultiImage133x100,\r\n [PT.ImageExt.BingMobileMultiImage]: AdPlacementImgExtBingMobileMultiImage133x100,\r\n [PT.ImageExt.SquareImage]: AdPlacementImgExtSquareImage1x1,\r\n [PT.ImageExt.MSNDoubleCarousel]: AdPlacementImgExtMSNDoubleCarousel93x100,\r\n [PT.ImageExt.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.ImageExt.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n\r\n //\r\n [PT.Outlook.Mobile]: AdPlacementOutlookMobile,\r\n [PT.Outlook.Web]: AdPlacementOutlookWeb,\r\n [PT.BingSearch.Mobile]: AdPlacementBingSearchTextMobile,\r\n [PT.BingSearch.Desktop]: AdPlacementBingSearchTextDesktop,\r\n [PT.BingSearch.Text]: AdPlacementBingSearchText,\r\n\r\n // responsive MMA\r\n [PT.Responsive.MMA.WideImage]: ResponsiveAdPlacementMmaWideImage4x1,\r\n [PT.Responsive.MMA.LandscapeImage]: ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n [PT.Responsive.MMA.SquareImage]: ResponsiveAdPlacementMmaSquareImage1x1,\r\n [PT.Responsive.MMA.VerticalImage]: ResponsiveAdPlacementMmaVerticalImage1x2,\r\n\r\n // responsive MMA in MSAN (Audience Network)\r\n [PT.Responsive.MSAN.WideImage]: ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n [PT.Responsive.MSAN.SquareImage]: ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n [PT.Responsive.MSAN.MSEdgeSingleCarousel]: ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.Responsive.MSAN.MSNInArticle]: ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.Responsive.MSAN.MSNSmallHeadline]: ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n\r\n [PT.Responsive.MSANV2.MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.Responsive.MSANV2.MSEdgeMobile]: AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1,\r\n [PT.Responsive.MSANV2.MSANBanner]: AdPlacementMmaInMsanV2MSANBanner2x1,\r\n [PT.Responsive.MSANV2.MSANRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n [PT.Responsive.MSANV2.MSANRectangle]: AdPlacementMmaInMsanV2MSANRectangle191x100,\r\n [PT.Responsive.MSANV2.MSNCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.Responsive.MSANV2.MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.Responsive.MSANV2.MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n\r\n // responsive text\r\n [PT.Responsive.Outlook.Mobile]: ResponsiveAdPlacementOutlookMobile,\r\n [PT.Responsive.Outlook.Web]: ResponsiveAdPlacementOutlookWeb,\r\n [PT.Responsive.BingSearch.Text]: ResponsiveAdPlacementBingSearchText,\r\n\r\n // dynamic search ad\r\n [PT.DynamicSearch.Dynamic]: AdPlacementDynamicSearch,\r\n\r\n // responsive search ad\r\n [PT.ResponsiveSearch.Text]: AdPlacementResponsiveSearch,\r\n [PT.ResponsiveSearch.Desktop]: AdPlacementResponsiveSearchDesktop,\r\n [PT.ResponsiveSearch.Mobile]: AdPlacementResponsiveSearchMobile,\r\n\r\n // responsive boost\r\n [PT.Responsive.Boost.WindowsSpotlight]: ResponsiveAdPlacementBoostWindowsSpotlight191x100,\r\n [PT.Responsive.Boost.DiscoverCard]: ResponsiveAdPlacementBoostDiscoverCard1x1,\r\n [PT.Responsive.Boost.StartMenu]: ResponsiveAdPlacementBoostStartMenu,\r\n [PT.Responsive.Boost.ActionCenter]: ResponsiveAdPlacementBoostActionCenter,\r\n [PT.Responsive.Boost.Banner]: ResponsiveAdPlacementBoostBanner,\r\n [PT.Responsive.Boost.Prong1Prong2Feed]: ResponsiveAdPlacementBoostProngFeed191x100,\r\n [PT.Responsive.Boost.Coachmark]: ResponsiveAdPlacementBoostCoachmark175x100,\r\n\r\n // responsive pmax\r\n [PT.Responsive.PMax.AudienceSquareImage]: ResponsiveAdPlacementMmaInMsanSquareImage1x1,\r\n [PT.Responsive.PMax.AudienceWideImage]: ResponsiveAdPlacementMmaInMsanWideImage191x100,\r\n [PT.Responsive.PMax.MMALandscapeImage]: ResponsiveAdPlacementMmaLandscapeImage191x100,\r\n [PT.Responsive.PMax.MMAVerticalImage]: ResponsiveAdPlacementMmaVerticalImage1x2,\r\n [PT.Responsive.PMax.MMAWideImage]: ResponsiveAdPlacementMmaWideImage4x1,\r\n [PT.Responsive.PMax.MSNInArticle]: ResponsiveAdPlacementMmaInMsanMSNInArticle150x100,\r\n [PT.Responsive.PMax.MSNSmallHeadline]: ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100,\r\n [PT.Responsive.PMax.MSEdgeSingleCarousel]: ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100,\r\n [PT.Responsive.PMax.MMAV2MSEdgeCarousel]: AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100,\r\n [PT.Responsive.PMax.MMAV2MSNSingleCarousel]: AdPlacementMmaInMsanV2MSNCarousel169x100,\r\n [PT.Responsive.PMax.MMAV2MSNRestoday]: AdPlacementMmaInMsanV2MSNRestoday124x100,\r\n [PT.Responsive.PMax.MMAV2MSNPartnerStripe]: AdPlacementMmaInMsanV2MSNPartnerStripe153x100,\r\n [PT.Responsive.PMax.MMAV2MSNRiver]: AdPlacementMmaInMsanV2MSANRiver191x100,\r\n\r\n // Boost\r\n [PT.Boost.HeroImageCarousel200x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel122x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel159x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel180x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel233x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel320x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.HeroImageCarousel57x100]: AdPlacementBoostHeroImageCarousel,\r\n [PT.Boost.WindowsSpotlight]: AdPlacementBoostWindowsSpotlight191x100,\r\n [PT.Boost.DiscoverCard]: AdPlacementBoostDiscoverCard1x1,\r\n [PT.Boost.StartMenu]: AdPlacementBoostStartMenu,\r\n [PT.Boost.ActionCenter]: AdPlacementBoostActionCenter,\r\n [PT.Boost.Banner]: AdPlacementBoostBanner,\r\n [PT.Boost.Prong1Prong2Feed]: AdPlacementBoostProngFeed191x100,\r\n [PT.Boost.Coachmark]: AdPlacementBoostCoachmark175x100,\r\n\r\n // LinkedIn\r\n [PT.LinkedIn.Landscape.SingleImageDesktop]: AdPlacementLinkedInSingleImageDesktop,\r\n [PT.LinkedIn.Landscape.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n [PT.LinkedIn.Square.SingleImageDesktop]: AdPlacementLinkedInSingleImageDesktop,\r\n [PT.LinkedIn.Square.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n [PT.LinkedIn.Vertical.SingleImageMobile]: AdPlacementLinkedInSingleImageMobile,\r\n\r\n // Unified App Ads\r\n [PT.UnifiedAppAds.VideoHorizontal]: AppAdsVideoHorizontalPlacement,\r\n [PT.UnifiedAppAds.BingSearch]: AppAdsBingSearchPlacement,\r\n [PT.UnifiedAppAds.BingSearchText]: AppAdsBingSearchPlacementText,\r\n [PT.UnifiedAppAds.CasualGamesDimensions]: AppAdsCasualGamesDimensionsPlacement,\r\n [PT.UnifiedAppAds.M365Outlook]: AppAdsM365OutlookPlacement,\r\n [PT.UnifiedAppAds.MSNDisplay]: AppAdsMSNDisplayPlacement,\r\n};\r\n\r\nexport const getAdPlacementComponent = placementType => PlacementType2Component[placementType];\r\n","/* eslint-disable react/prop-types */\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewGridLayoutStyles } from '../styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\n\r\n// import {\r\n// UAPVMSingleImagePlacement as TSingleImageViewModel,\r\n// UAPVMPlacement as TMultiImageViewModel,\r\n// } from '../@types';\r\n\r\n// interface GridLayoutProps {\r\n// placementList: Array | undefined | null;\r\n// onRenderPlacement: Function;\r\n// onRenderEmptyView?: Function | undefined | null;\r\n// gridLayoutContainerClassName?: String | undefined | null;\r\n// classes: {\r\n// adPreviewGridLayoutContainer: string;\r\n// };\r\n// }\r\n\r\nconst GridLayout /* : React.FC */ = ({\r\n placementList,\r\n onRenderPlacement,\r\n onRenderEmptyView,\r\n gridLayoutContainerClassName,\r\n classes,\r\n}) => {\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementList);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementList]);\r\n\r\n const placementComponentList = useMemo(() => {\r\n const ret = _.map(placementList, (placement, index) => {\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { placementType, hasMultiImages } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !_.isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return onRenderPlacement(newPlacement, AdPlacementComponent, index);\r\n }\r\n return null;\r\n });\r\n return ret;\r\n }, [onRenderPlacement, placementList]);\r\n\r\n return !_.isEmpty(placementComponentList) ? (\r\n
\r\n {placementComponentList}\r\n
\r\n ) : emptyView;\r\n};\r\n\r\nexport const AdPreviewGridLayout = withUAPLThemedStyles(\r\n GridLayout,\r\n getAdPreviewGridLayoutStyles,\r\n { componentName: 'AdPreviewGridLayout' }\r\n);\r\n","export const getAdPreviewGridLayoutStyles = (/* components, { palette = {} } = {} */) => ({\r\n adPreviewGridLayoutContainer: {\r\n display: 'grid',\r\n },\r\n});\r\n","/* eslint-disable react/prop-types */\r\n\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPreviewSinglePlacementLayoutStyles } from '../styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\n\r\n// import {\r\n// UAPVMSingleImagePlacement as TSingleImageViewModel,\r\n// UAPVMPlacement as TMultiImageViewModel,\r\n// } from '../@types';\r\n\r\n// interface SinglePlacementLayoutProps {\r\n// placementData: TSingleImageViewModel | TMultiImageViewModel | undefined | null;\r\n// onRenderPlacement: Function;\r\n// onRenderEmptyView?: Function | undefined | null;\r\n// layoutContainerClassName?: String | undefined | null;\r\n// classes: {\r\n// adPreviewLayoutContainer: string;\r\n// };\r\n// }\r\n\r\nconst SinglePlacementLayout = ({\r\n placementData, // SinglePlacementLayoutProps\r\n onRenderPlacement,\r\n onRenderEmptyView,\r\n layoutContainerClassName,\r\n hasContainer = true,\r\n classes,\r\n}) => {\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementData);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementData]);\r\n\r\n const placementComponent = useMemo(() => {\r\n const { placementMeta, images, ...rest } = placementData || {};\r\n const { placementType, hasMultiImages = false } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n if (!hasMultiImages && !_.isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n const newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n return onRenderPlacement(newPlacement, AdPlacementComponent);\r\n }\r\n return onRenderPlacement(placementData, AdPlacementComponent);\r\n }\r\n return null;\r\n }, [onRenderPlacement, placementData]);\r\n\r\n return hasContainer ? (\r\n
\r\n {placementComponent || emptyView}\r\n
\r\n ) : (\r\n <>\r\n {placementComponent || emptyView}\r\n \r\n );\r\n};\r\n\r\nexport const AdPreviewSinglePlacementLayout = withUAPLThemedStyles(\r\n SinglePlacementLayout,\r\n getAdPreviewSinglePlacementLayoutStyles,\r\n { componentName: 'AdPreviewSinglePlacementLayout' }\r\n);\r\n","export const getAdPreviewSinglePlacementLayoutStyles = (/* components, { palette = {} } = {} */) => ({\r\n adPreviewLayoutContainer: {\r\n },\r\n});\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Carousel as BsCarousel } from 'react-bootstrap';\r\n\r\nconst bsProps = {\r\n bsClass: 'carousel',\r\n};\r\n\r\n// custom the Carousel component from react-bootstrap to put the\r\n// controls (left/right arrows) and indicators (dots) within a same\r\n// parent div, to make it easy to align them, like this: \"< .... >\"\r\n//\r\n// !!NOTE!!\r\n// The implementation is highly coupled with the internal implementation\r\n// of react-bootstrap Carousel, it calls the internal methods of BsCarousel\r\n// by using reference\r\nexport const CustomCarousel = (props) => {\r\n const carouselRef = useRef(null);\r\n const {\r\n controls, // ignore this prop\r\n indicators, // ignore this prop\r\n activeIndex,\r\n children,\r\n InjectedControls,\r\n carouselWrapperClassName,\r\n ...rest\r\n } = props;\r\n\r\n const [carouselInstance, setCarouselInstance] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!carouselInstance) {\r\n setCarouselInstance(carouselRef.current);\r\n }\r\n }, [carouselInstance]);\r\n\r\n const [leftArrowControl, rightArrowControl] = useMemo(() => {\r\n if (carouselInstance) {\r\n return carouselInstance.renderControls({ ...props, bsProps });\r\n }\r\n return [undefined, undefined];\r\n }, [carouselInstance, props]);\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n
\r\n {/* render custom controls and indicators in the same parent div */}\r\n {leftArrowControl}\r\n {carouselInstance ? carouselInstance.renderIndicators(children, activeIndex, bsProps) : null}\r\n {rightArrowControl}\r\n {\r\n InjectedControls ? <> {InjectedControls} : null\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nCustomCarousel.propTypes = {\r\n activeIndex: PropTypes.number.isRequired,\r\n controls: PropTypes.bool,\r\n indicators: PropTypes.bool,\r\n children: PropTypes.node,\r\n InjectedControls: PropTypes.element,\r\n carouselWrapperClassName: PropTypes.string,\r\n};\r\n\r\nCustomCarousel.defaultProps = {\r\n // use the default props from react-bootstrap Carousel, including default icons\r\n ...BsCarousel.defaultProps,\r\n //\r\n controls: false,\r\n indicators: false,\r\n children: null,\r\n InjectedControls: null,\r\n carouselWrapperClassName: null,\r\n};\r\n\r\nCustomCarousel.Caption = BsCarousel.Caption;\r\nCustomCarousel.Item = BsCarousel.Item;\r\n","import _, { map, isEmpty } from 'underscore';\r\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\n\r\nimport { Carousel } from '@bingads-webui-react/primitive-unthemed';\r\nimport { PlayPauseButtons } from '@bingads-webui-campaign-react/play-pause-buttons';\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getAdPlacementComponent } from './get-ad-placement-component';\r\nimport { getCarouselLayoutStyles } from '../styles/layout-components/carousel-layout-styles';\r\nimport { pickSingleImageFromImageList } from '../ad-preview-model/use-ad-preview-model';\r\nimport { CustomCarousel } from './custom-carousel-component';\r\n\r\nconst autoRotateInterval = 3000;\r\n\r\nexport const CarouselLayout = ({\r\n activeIndex,\r\n setActiveIndex,\r\n classes,\r\n customCarouselRootClassName,\r\n customCarouselLayoutStyles,\r\n customPlayPauseButtonsStyles,\r\n enableAutoRotate,\r\n startAutoRotating,\r\n i18n,\r\n onRenderEmptyView,\r\n onRenderPlacement,\r\n onActiveIndexChange,\r\n onRenderHeader,\r\n placementList,\r\n disableDefaultStyles,\r\n useCustomCarousel,\r\n customCarouselWrapperClassName,\r\n}) => {\r\n const [index, setIndex] = useState(0);\r\n\r\n // if external activeIndex is provided, use it, otherwise use the internal state\r\n const curActiveIndex = !_.isUndefined(activeIndex) ? activeIndex : index;\r\n const curSetIndex = setActiveIndex || setIndex;\r\n\r\n const [direction, setDirection] = useState('next');\r\n const [auto, setAuto] = useState(enableAutoRotate && startAutoRotating);\r\n const [startAutoRotateListner, setStartAutoRotateListner] = useState(false);\r\n\r\n const autoRotateListener = useRef(null);\r\n\r\n const emptyView = useMemo(() => {\r\n if (onRenderEmptyView) {\r\n return onRenderEmptyView(placementList);\r\n }\r\n return null;\r\n }, [onRenderEmptyView, placementList]);\r\n\r\n const placementComponentList = useMemo(() => {\r\n const ret = map(placementList, (placement, i) => {\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { placementType, hasMultiImages } = placementMeta || {};\r\n const AdPlacementComponent = getAdPlacementComponent(placementType);\r\n if (AdPlacementComponent) {\r\n // convert multi-image model to single-image model if needed\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return [onRenderPlacement(newPlacement, AdPlacementComponent, i), placement];\r\n }\r\n return [null, placement];\r\n });\r\n return ret;\r\n }, [onRenderPlacement, placementList]);\r\n\r\n const onRenderCarouselHeader = useCallback(() => {\r\n if (onRenderHeader) {\r\n const placement = placementList ? placementList[curActiveIndex] : null;\r\n const { placementMeta, images, ...rest } = placement || {};\r\n const { hasMultiImages } = placementMeta || {};\r\n let newPlacement = placement;\r\n if (!hasMultiImages && !isEmpty(images)) {\r\n const selectedImage = pickSingleImageFromImageList(images) || {};\r\n newPlacement = { placementMeta, ...selectedImage, ...rest };\r\n }\r\n return onRenderHeader(newPlacement, curActiveIndex);\r\n }\r\n return null;\r\n }, [curActiveIndex, onRenderHeader, placementList]);\r\n\r\n const clearAutoRotateListener = useCallback(() => {\r\n if (autoRotateListener.current) {\r\n clearTimeout(autoRotateListener.current);\r\n autoRotateListener.current = null;\r\n }\r\n }, []);\r\n\r\n const autoRotate = useCallback((currentIndex) => {\r\n if (!auto || isEmpty(placementList)) {\r\n // eslint-disable-next-line no-useless-return\r\n return;\r\n }\r\n\r\n setStartAutoRotateListner(true);\r\n\r\n const previewCount = placementList.length;\r\n let nextIndex = currentIndex + 1;\r\n if (nextIndex >= previewCount) {\r\n nextIndex = 0;\r\n }\r\n\r\n autoRotateListener.current = setTimeout(() => {\r\n curSetIndex(nextIndex);\r\n setDirection('next');\r\n autoRotate(nextIndex);\r\n }, (autoRotateInterval));\r\n }, [auto, curSetIndex, placementList]);\r\n\r\n const start = useCallback(() => {\r\n setDirection('next');\r\n setAuto(true);\r\n }, []);\r\n\r\n const stop = useCallback(() => {\r\n if (auto) {\r\n setAuto(false);\r\n clearAutoRotateListener();\r\n setStartAutoRotateListner(false);\r\n }\r\n }, [clearAutoRotateListener, auto]);\r\n\r\n const onSelect = useCallback((selectedIndex, e) => {\r\n stop();\r\n curSetIndex(selectedIndex || 0);\r\n setDirection(e.direction);\r\n }, [curSetIndex, stop]);\r\n\r\n // auto rotate at initialisation when auto rotate is enabled\r\n useEffect(() => {\r\n if (auto && !startAutoRotateListner) {\r\n autoRotate(curActiveIndex);\r\n }\r\n }, [autoRotate, auto, startAutoRotateListner, curActiveIndex]);\r\n\r\n useEffect(() => {\r\n if (onActiveIndexChange) {\r\n onActiveIndexChange(curActiveIndex);\r\n }\r\n }, [curActiveIndex, onActiveIndexChange]);\r\n\r\n useEffect(() => () => {\r\n clearAutoRotateListener();\r\n }, [clearAutoRotateListener]);\r\n\r\n useEffect(() => {\r\n if (placementList && placementList.length > 0 && curActiveIndex >= placementList.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [curActiveIndex, placementList, setActiveIndex]);\r\n\r\n const CarouselComponent = useCustomCarousel ? CustomCarousel : Carousel;\r\n const moreCarouselProps = useMemo(\r\n () => (useCustomCarousel ? {\r\n carouselWrapperClassName: classnames(customCarouselWrapperClassName, classes.customCarouselWrapper),\r\n } : {}),\r\n [classes.customCarouselWrapper, customCarouselWrapperClassName, useCustomCarousel]\r\n );\r\n\r\n return !isEmpty(placementComponentList) ? (\r\n
\r\n
\r\n {onRenderCarouselHeader()}\r\n
\r\n : null}\r\n nextLabel={i18n.getString(_TL_('Next ad preview'))}\r\n prevLabel={i18n.getString(_TL_('Previous ad preview'))}\r\n className={classnames(!disableDefaultStyles && classes.adPreviewCarousel, customCarouselLayoutStyles || classes.baseCarouselLayoutStyles, 'ad-placement-preview')}\r\n {...moreCarouselProps}\r\n >\r\n {\r\n placementComponentList.map(([placementComponent, placement], idx) => {\r\n const { placementMeta, effectiveImageUrl } = placement || {};\r\n return (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n {placementComponent}\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n ) : emptyView;\r\n};\r\n\r\nCarouselLayout.propTypes = {\r\n activeIndex: PropTypes.number,\r\n setActiveIndex: PropTypes.func,\r\n classes: PropTypes.shape({\r\n carouselLayoutContainer: PropTypes.string.isRequired,\r\n adPreviewCarousel: PropTypes.string.isRequired,\r\n baseCarouselLayoutStyles: PropTypes.string.isRequired,\r\n playPauseButtons: PropTypes.string.isRequired,\r\n }),\r\n customCarouselRootClassName: PropTypes.string,\r\n customCarouselLayoutStyles: PropTypes.string,\r\n customPlayPauseButtonsStyles: PropTypes.string,\r\n enableAutoRotate: PropTypes.bool,\r\n startAutoRotating: PropTypes.bool,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onRenderEmptyView: PropTypes.func,\r\n onRenderHeader: PropTypes.func,\r\n onRenderPlacement: PropTypes.func.isRequired,\r\n placementList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n onActiveIndexChange: PropTypes.func,\r\n disableDefaultStyles: PropTypes.bool,\r\n useCustomCarousel: PropTypes.bool,\r\n customCarouselWrapperClassName: PropTypes.string,\r\n};\r\n\r\nCarouselLayout.defaultProps = {\r\n activeIndex: undefined,\r\n setActiveIndex: undefined,\r\n customCarouselRootClassName: null,\r\n customCarouselLayoutStyles: null,\r\n customPlayPauseButtonsStyles: null,\r\n enableAutoRotate: false,\r\n startAutoRotating: true,\r\n onRenderEmptyView: null,\r\n onActiveIndexChange: null,\r\n onRenderHeader: null,\r\n disableDefaultStyles: false,\r\n useCustomCarousel: false,\r\n customCarouselWrapperClassName: null,\r\n classes: {},\r\n};\r\n\r\nexport const AdPreviewCarouselLayout = withUAPLThemedStyles(CarouselLayout, getCarouselLayoutStyles, { componentName: 'AdPreviewCarouselLayout' });\r\n\r\nexport const UnstyledAdPreviewCarouselLayout = CarouselLayout;\r\n\r\n// when trying to reuse the Carousel instance with different children count, the carousel behaves\r\n// abnormal, seems its internal states are messed up, fix it by creating a new component when the\r\n// resetOn prop changes\r\nexport const AdPreviewCarouselLayoutEx = (props) => {\r\n const { resetOn } = props;\r\n const LayoutComponent = useCallback(\r\n props2 => ,\r\n [resetOn]\r\n );\r\n return ;\r\n};\r\n\r\n// todo: in addition to above issue, another issue is that the left and right buttons and\r\n// the indicator dots are not in the same parent element, which make it hard to align them,\r\n// need to refactor the Carousel component to fix it\r\n","export const getCarouselLayoutStyles = (components, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' } = {}) => ({\r\n carouselLayoutContainer: {\r\n position: 'relative',\r\n width: '100%',\r\n },\r\n\r\n adPreviewCarousel: {\r\n position: 'relative',\r\n\r\n '& .carousel-inner': {\r\n paddingBottom: 64,\r\n\r\n // '& > .item.active': {\r\n // paddingLeft: 24,\r\n // paddingRight: 24,\r\n // },\r\n },\r\n '& ol.carousel-indicators': {\r\n position: 'absolute',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'none',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-controls': {\r\n display: 'none',\r\n },\r\n\r\n '& .carousel-control': {\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n left: 'auto',\r\n top: 'auto',\r\n right: 0,\r\n bottom: 0,\r\n height: 32,\r\n width: 20,\r\n margin: '20px 24px',\r\n textShadow: 'none',\r\n background: 'white',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&.left': {\r\n position: 'absolute',\r\n },\r\n\r\n '&.right': {\r\n position: 'absolute',\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n },\r\n baseCarouselLayoutStyles: {\r\n '& ol.carousel-indicators': {\r\n bottom: 0,\r\n left: 20,\r\n margin: '20px 24px',\r\n },\r\n '& .carousel-control.left': {\r\n left: -5,\r\n bottom: -7,\r\n },\r\n '& .carousel-control.right': {\r\n left: 105,\r\n bottom: -7,\r\n },\r\n },\r\n playPauseButtons: {\r\n position: 'absolute',\r\n left: 156,\r\n bottom: 13.5,\r\n display: 'initial !important',\r\n\r\n '& span': {\r\n color: palette.themePrimary,\r\n },\r\n },\r\n\r\n customCarouselWrapper: {\r\n '& .custom-carousel-controls-and-indicators': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n bottom: 3,\r\n margin: [10, 15],\r\n\r\n '& ol.carousel-indicators': {\r\n position: 'relative !important',\r\n top: 'unset !important',\r\n left: 'unset !important',\r\n right: 'unset !important',\r\n bottom: '2px !important',\r\n margin: '0px 0px 0px 10px !important',\r\n padding: 'unset !important',\r\n width: 'auto',\r\n\r\n '& li': {\r\n background: 'none',\r\n border: '1px solid #605E5C',\r\n borderRadius: 10,\r\n margin: '0 10px 0 0',\r\n height: 10,\r\n width: 10,\r\n },\r\n '& li.active': {\r\n background: palette.themePrimary,\r\n border: `1px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n position: 'relative !important',\r\n margin: '0px !important',\r\n background: 'white',\r\n top: 'unset !important',\r\n left: 'unset !important',\r\n right: 'unset !important',\r\n bottom: 'unset !important',\r\n color: palette.themePrimary,\r\n\r\n height: 32,\r\n width: 20,\r\n textShadow: 'none',\r\n\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '& .glyphicon-chevron-left, & .glyphicon-chevron-right': {\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 'auto',\r\n right: 'auto',\r\n bottom: 'auto',\r\n left: 'auto',\r\n margin: 0,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n verticalAlign: 0,\r\n },\r\n },\r\n\r\n '& $playPauseButtons': {\r\n position: 'relative !important',\r\n display: 'initial !important',\r\n left: 'unset !important',\r\n top: 'unset !important',\r\n bottom: '1px !important',\r\n },\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getStructuredSnippetExtensionStyles } from '../styles';\r\n\r\nconst StructuredSnippetExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {extensionData.map(({ Category, Texts }) => (\r\n
\r\n {Category && {`${Category}: `}}\r\n {Texts && {Texts.join(', ')}}\r\n
\r\n ))}\r\n
\r\n);\r\n\r\nStructuredSnippetExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n structuredSnippetExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Category: PropTypes.string,\r\n Texts: PropTypes.string,\r\n })),\r\n};\r\n\r\nStructuredSnippetExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewStructuredSnippetExtension = withUAPLThemedStyles(\r\n StructuredSnippetExtension,\r\n getStructuredSnippetExtensionStyles, { componentName: 'AdPreviewStructuredSnippetExtension' }\r\n);\r\n","export const getCalloutExtensionStyles = () => ({\r\n calloutExtensionContainer: {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n});\r\n\r\nexport const getPriceExtensionStyles = () => ({\r\n priceExtensionContainer: {\r\n color: '#4007A2',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n '& a': {\r\n color: '#4007A2',\r\n },\r\n '& div': {\r\n display: 'inline-block',\r\n },\r\n },\r\n});\r\n\r\nexport const getPromotionExtensionStyles = () => ({\r\n promotionExtensionContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .promotion-info': {\r\n '& span': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n '& .discount': {\r\n color: '#1A0DAB',\r\n },\r\n },\r\n '& .promotion-rate': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '3px',\r\n '& span': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n fontWeight: '700',\r\n lineHeight: '22px',\r\n },\r\n '& .rating-icons': {\r\n marginTop: '-2px',\r\n display: 'flex',\r\n },\r\n '& .reviews': {\r\n color: '#767676',\r\n fontWeight: '400',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getSitelinkExtensionStyles = () => ({\r\n sitelinkExtensionContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .sitelink-row': {\r\n display: 'flex',\r\n gap: '48px',\r\n marginTop: '12px',\r\n '& .sitelink-tile': {\r\n width: '270px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '3px',\r\n '& .title': {\r\n color: '#4007A2',\r\n fontFamily: 'Roboto',\r\n fontSize: '20px',\r\n lineHeight: '24px',\r\n },\r\n '& .text': {\r\n color: '#666',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const getStructuredSnippetExtensionStyles = () => ({\r\n structuredSnippetExtensionContainer: {\r\n '& .category': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n fontWeight: '700',\r\n lineHeight: '22px',\r\n },\r\n '& .texts': {\r\n color: '#767676',\r\n fontFamily: 'Roboto',\r\n lineHeight: '22px',\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getCalloutExtensionStyles } from '../styles';\r\n\r\nconst CalloutExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {extensionData.map(({ Text }) => Text).join(' · ')}\r\n
\r\n);\r\n\r\nCalloutExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n calloutExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Text: PropTypes.string,\r\n })),\r\n};\r\n\r\nCalloutExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewCalloutExtension = withUAPLThemedStyles(\r\n CalloutExtension,\r\n getCalloutExtensionStyles, { componentName: 'AdPreviewCalloutExtension' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPriceExtensionStyles } from '../styles';\r\n\r\nconst PriceExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n
\r\n {\r\n extensionData.map(({\r\n Header, Description, Currency, Price, FinalUrls,\r\n }, index) => (\r\n \r\n {Header}\r\n {` - ${Description} `}\r\n
{`${Currency + Price}`}
\r\n {index < extensionData.length - 1 && {' · '}}\r\n
\r\n ))\r\n }\r\n
\r\n);\r\n\r\nPriceExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n priceExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Header: PropTypes.string,\r\n Description: PropTypes.string,\r\n Currency: PropTypes.string,\r\n Price: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n};\r\n\r\nPriceExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewPriceExtension = withUAPLThemedStyles(\r\n PriceExtension,\r\n getPriceExtensionStyles, { componentName: 'AdPreviewPriceExtension' }\r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getPromotionExtensionStyles } from '../styles';\r\nimport star from './media/star.svg';\r\n\r\nconst PromotionExtension = ({\r\n classes,\r\n extensionData,\r\n}) => (\r\n extensionData.map(({\r\n Occasion, PromotionType, PromotionItem, PromotionDetail, DateRange, hasOccasion, hasPromotionDetail, hasDateRange,\r\n }) => (\r\n
\r\n
\r\n {hasOccasion && {`${Occasion}: `}}\r\n {PromotionType}\r\n {` · ${PromotionItem}`}\r\n {hasPromotionDetail && {` · ${PromotionDetail}`}}\r\n {hasDateRange && {` · ${DateRange}`}}\r\n
\r\n
\r\n 5/5\r\n
\r\n {[...Array(5)].map(() => (\r\n \"star\"\r\n ))}\r\n
\r\n (1,000 reviews)\r\n
\r\n
\r\n ))\r\n);\r\n\r\nPromotionExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n promotionExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n Occasion: PropTypes.string,\r\n PromotionType: PropTypes.string,\r\n PromotionItem: PropTypes.string,\r\n PromotionDetail: PropTypes.string,\r\n DateRange: PropTypes.string,\r\n hasOccasion: PropTypes.bool,\r\n hasPromotionDetail: PropTypes.bool,\r\n hasDateRange: PropTypes.bool,\r\n })),\r\n};\r\n\r\nPromotionExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewPromotionExtension = withUAPLThemedStyles(\r\n PromotionExtension,\r\n getPromotionExtensionStyles, { componentName: 'AdPreviewPromotionExtension' }\r\n);\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\n// import classnames from 'classnames';\r\n\r\nimport { withUAPLThemedStyles } from '../with-themed-styles';\r\nimport { getSitelinkExtensionStyles } from '../styles';\r\n\r\nconst SitelinkExtension = ({\r\n classes,\r\n extensionData,\r\n}) => {\r\n const onRenderTile = useCallback(({\r\n DisplayText, Description1, Description2, DestinationUrl, FinalUrls,\r\n }) => {\r\n let distUrl;\r\n if (DestinationUrl) {\r\n distUrl = DestinationUrl;\r\n } else if (FinalUrls && FinalUrls.length > 0) {\r\n [distUrl] = FinalUrls;\r\n } else {\r\n distUrl = '';\r\n }\r\n if (distUrl && distUrl.indexOf('http') !== 0) {\r\n distUrl = `http://${distUrl}`;\r\n }\r\n\r\n return (\r\n
\r\n {DisplayText}\r\n {Description1 &&
{Description1}
}\r\n {Description2 &&
{Description2}
}\r\n
\r\n );\r\n }, []);\r\n\r\n const tiles = [];\r\n for (let i = 0; i < extensionData.length; i += 2) {\r\n const current = extensionData[i];\r\n const next = i + 1 < extensionData.length ? extensionData[i + 1] : null;\r\n tiles.push((\r\n
\r\n {onRenderTile(current)}\r\n {next && onRenderTile(next)}\r\n
\r\n ));\r\n }\r\n\r\n return (\r\n
\r\n {tiles}\r\n
\r\n );\r\n};\r\n\r\nSitelinkExtension.propTypes = {\r\n classes: PropTypes.shape({\r\n sitelinkExtensionContainer: PropTypes.string,\r\n }),\r\n extensionData: PropTypes.arrayOf(PropTypes.shape({\r\n DisplayText: PropTypes.string,\r\n Description1: PropTypes.string,\r\n Description2: PropTypes.string,\r\n DestinationUrl: PropTypes.string,\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n};\r\n\r\nSitelinkExtension.defaultProps = {\r\n classes: {},\r\n extensionData: [],\r\n};\r\n\r\nexport const AdPreviewSitelinkExtension = withUAPLThemedStyles(\r\n SitelinkExtension,\r\n getSitelinkExtensionStyles, { componentName: 'AdPreviewSitelinkExtension' }\r\n);\r\n","export const UAPImageExpansionType = {\r\n None: 'None',\r\n WhitePadding: 'WhitePadding',\r\n // Blur: 'Blur',\r\n Outpainting: 'Outpainting',\r\n SingleColorPadding: 'SingleColorPadding',\r\n};\r\n\r\nexport const UAPCroppingType = {\r\n ManualCrop: 'ManualCrop', // 1\r\n CenterCrop: 'CenterCrop', // 2\r\n SmartCrop: 'SmartCrop', // 3\r\n Unknown: 'Unknown', // 4\r\n};\r\n","import _ from 'underscore';\r\nimport { UAPImageExpansionType, UAPCroppingType } from './constants';\r\n\r\nexport const getExpandedImageUrl = (imageExpansionType, src, paddingColor, expandedImageWidth, expandedImageHeight) => {\r\n if (!imageExpansionType || imageExpansionType === UAPImageExpansionType.None) {\r\n // no expanded image\r\n return null;\r\n }\r\n\r\n const hasQuery = !_.isEmpty(src) && src.indexOf('?') > 0;\r\n const srcWithQuery = hasQuery ? src : `${src}?`;\r\n let queryParams = '';\r\n if (imageExpansionType === UAPImageExpansionType.Outpainting) {\r\n queryParams = hasQuery ? '&ustim=1' : 'ustim=1';\r\n } else if (imageExpansionType === UAPImageExpansionType.WhitePadding\r\n || imageExpansionType === UAPImageExpansionType.SingleColorPadding\r\n ) {\r\n queryParams = `${hasQuery ? '&' : ''}w=${expandedImageWidth}&h=${expandedImageHeight}`;\r\n if (paddingColor) {\r\n const idx = paddingColor.indexOf('#');\r\n queryParams += `&pcl=${paddingColor.slice(idx + 1)}`;\r\n }\r\n }\r\n\r\n return `${srcWithQuery}${queryParams}`;\r\n};\r\n\r\nexport const setROIInfo = (roiInfo, imageUrl) => {\r\n if (!roiInfo || !imageUrl) {\r\n return {};\r\n }\r\n try {\r\n const ROIInfoObj = JSON.parse(roiInfo);\r\n const imageExpansionType = ROIInfoObj.ImageExpansionType;\r\n const expandedImageWidth = imageExpansionType === UAPImageExpansionType.Outpainting ? ROIInfoObj.ThumbnailWidth : ROIInfoObj.PaddingImageWidth;\r\n const expandedImageHeight = imageExpansionType === UAPImageExpansionType.Outpainting ? ROIInfoObj.ThumbnailHeight : ROIInfoObj.PaddingImageHeight;\r\n const paddingColor = ROIInfoObj.PaddingColor;\r\n const expandedImageCropSettings = ROIInfoObj.ImageCropSetting ? _.map(ROIInfoObj.ImageCropSetting, ({ aspectRatio, cropSetting: cs }) => ({\r\n AspectRatio: aspectRatio,\r\n CropSetting: {\r\n SourceHeight: cs.sourceHeight, SourceWidth: cs.sourceWidth, SourceX: cs.sourceX, SourceY: cs.sourceY,\r\n },\r\n })) : null;\r\n const croppingType = imageExpansionType === UAPImageExpansionType.Outpainting ? UAPCroppingType.CenterCrop : UAPCroppingType.SmartCrop;\r\n const originalImageCropSettings = ROIInfoObj.OriginalImageCropSetting ? _.map(ROIInfoObj.OriginalImageCropSetting, ({ aspectRatio, cropSetting: cs }) => ({\r\n AspectRatio: aspectRatio,\r\n CropSetting: {\r\n SourceHeight: cs.sourceHeight, SourceWidth: cs.sourceWidth, SourceX: cs.sourceX, SourceY: cs.sourceY, CroppingType: croppingType,\r\n },\r\n })) : null;\r\n const expandedImageUrl = getExpandedImageUrl(imageExpansionType, imageUrl, paddingColor, expandedImageWidth, expandedImageHeight);\r\n\r\n return {\r\n expandedImageWidth,\r\n expandedImageHeight,\r\n expandedImageCropSettings,\r\n originalImageCropSettings,\r\n expandedImageUrl,\r\n imageExpansionType,\r\n paddingColor,\r\n };\r\n } catch (e) {\r\n return {};\r\n }\r\n};\r\n","import React, { useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Wizard,\r\n LayoutContainer,\r\n Layout,\r\n StepContainer,\r\n} from '@bingads-webui-react/wizard';\r\nimport {\r\n SaveBlocker,\r\n DefaultTemplate,\r\n CancelWizardDialog,\r\n} from '@bingads-webui-react/wizard-ui-library';\r\nimport { FluentSwitcherContext } from '@bingads-webui-react/fluent-version-switcher';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { WizardPerfMarker } from '@bingads-webui-campaign/wizard-performance-marker';\r\nimport { Scenario, Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { PerformanceMarkerProvider } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport { setClarityTag } from '@bingads-webui-universal/clarity';\r\n\r\nexport const UnifiedAppWizard = ({\r\n action, storeType, wizardConfig, perfMarker, children,\r\n}) => {\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const wizardName = useMemo(() => `UnifiedAppCampaign${action}-${storeType}`, [action, storeType]);\r\n\r\n const wizardPerfMarker = useMemo(() => (\r\n perfMarker.createChild(wizardName)\r\n ), [perfMarker, wizardName]);\r\n\r\n useEffect(() => {\r\n setClarityTag({ [`UnifiedAppCampaign${action}`]: storeType });\r\n }, [action, storeType]);\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 {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppWizard.propTypes = {\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n action: PropTypes.string.isRequired,\r\n storeType: PropTypes.string.isRequired,\r\n wizardConfig: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n};\r\n\r\nUnifiedAppWizard.defaultProps = {\r\n children: null,\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst IndicatorWidth = 10;\r\nconst IndicatorsGap = 8;\r\n\r\nconst getIndicatorsWidth = placements => (placements * IndicatorWidth) + ((placements - 1) * IndicatorsGap);\r\n\r\nexport const getAssetStepStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n width: '100%',\r\n gap: '32px',\r\n\r\n '& .title-item': {\r\n width: 'unset !important',\r\n },\r\n },\r\n 'container-l': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n imageExperience: {\r\n '& .image-experience-content': {\r\n minWidth: 'unset !important',\r\n },\r\n },\r\n formContainer: {\r\n width: '100%',\r\n '& .text-assets-collection-container': {\r\n width: 'auto',\r\n },\r\n '& .asset-group-name-section .error-string-wrapper': {\r\n right: 'unset !important',\r\n position: 'unset !important',\r\n },\r\n\r\n '& .text-input-container': {\r\n width: '100%',\r\n },\r\n '& .date-settings table': {\r\n width: 'unset !important',\r\n },\r\n },\r\n 'formContainer-xxl': {\r\n width: '530px',\r\n },\r\n 'formContainer-xl': {\r\n width: '430px',\r\n },\r\n previewerContainer: {\r\n marginTop: 150,\r\n '& > div': {\r\n top: 124,\r\n },\r\n flexGrow: '1',\r\n },\r\n 'previewerContainer-l': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n 'previewerContainer-m': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n 'previewerContainer-s': {\r\n width: 'calc(100% - 64px)',\r\n },\r\n adPreview: {\r\n '& .new-preview-carousel-container-adprelib': {\r\n maxWidth: '550px !important',\r\n },\r\n marginTop: '140px',\r\n },\r\n windowsAdPreview: {\r\n position: 'sticky',\r\n width: 420,\r\n marginTop: '140px',\r\n top: '0px',\r\n '& .ad-placement-preview': {\r\n height: 450,\r\n },\r\n '& .new-preview-carousel-container-adprelib': {\r\n // backgroundColor: '#ffffff',\r\n border: '1px solid #C8C8C8 !important',\r\n // borderRadius: '4px',\r\n // boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.10)',\r\n // maxWidth: '420px',\r\n minWidth: 'unset !important',\r\n\r\n '& .preview-string': {\r\n display: 'none',\r\n },\r\n\r\n '& .ad-preview-actions': {\r\n display: 'flex',\r\n },\r\n '& .carousel-inner': {\r\n height: 450,\r\n },\r\n\r\n '& .carousel-indicators': {\r\n display: 'flex',\r\n gap: '8px',\r\n left: '50% !important',\r\n margin: '48px 0 !important',\r\n transform: 'translateX(-50%)',\r\n\r\n '& li': {\r\n margin: '0',\r\n },\r\n },\r\n\r\n '& .carousel-control': {\r\n display: 'flex',\r\n width: '12px',\r\n margin: '12px 0 !important',\r\n left: '50% !important',\r\n },\r\n\r\n '& .carousel-control.left': {\r\n transform: ({ placements }) => {\r\n const transformations = [];\r\n\r\n // Move left arrow to the center\r\n transformations.push('translateX(-50%)');\r\n\r\n // Move left arrow to the left of the indicators\r\n const indicatorsWidth = getIndicatorsWidth(placements);\r\n transformations.push(`translateX(-${indicatorsWidth / 2}px)`);\r\n\r\n // Add extra space between the left arrow and the indicators\r\n transformations.push('translateX(-47px)');\r\n\r\n return transformations.join(' ');\r\n },\r\n bottom: 16,\r\n },\r\n\r\n '& .carousel-control.right': {\r\n transform: ({ placements }) => {\r\n const transformations = [];\r\n\r\n // Move right arrow to the center\r\n transformations.push('translateX(-50%)');\r\n\r\n // Move right arrow to the right of the indicators\r\n const indicatorsWidth = getIndicatorsWidth(placements);\r\n transformations.push(`translateX(${indicatorsWidth / 2}px)`);\r\n\r\n // Add extra space between the right arrow and the indicators\r\n transformations.push('translateX(43px)');\r\n\r\n return transformations.join(' ');\r\n },\r\n bottom: 16,\r\n },\r\n\r\n '& .ad-preview-title': {\r\n height: '24px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n\r\n '& .preview-title-string-key': {\r\n color: '#323130',\r\n fontSize: '14px',\r\n fontWeight: 700,\r\n marginRight: '8px',\r\n },\r\n\r\n '& .preview-title-preview-type': {\r\n fontSize: '14px',\r\n },\r\n },\r\n\r\n '& .ad-placement-preview': {\r\n overflow: 'hidden',\r\n\r\n '& .card-parent': {\r\n width: '100%',\r\n },\r\n\r\n '& .responsive-ad-preview-content': {\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n },\r\n },\r\n '& .ad-placement-preview.app-ad-windows': {\r\n '& .card-parent': {\r\n '& .responsive-ad-preview-content': {\r\n height: 'fit-content',\r\n width: 'fit-content',\r\n maxWidth: '100%',\r\n '& .text-container-apl': {\r\n maxWidth: 'calc(100% - 25px)',\r\n },\r\n },\r\n },\r\n },\r\n '& .ad-placement-preview.app-ad-start-menu': {\r\n '& .new-responsive-ad-preview-container': {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n },\r\n },\r\n },\r\n 'windowsAdPreview-xxl': {\r\n '@media (min-width: 1400px)': {\r\n width: 530,\r\n },\r\n width: 420,\r\n },\r\n 'windowsAdPreview-xl': {\r\n width: 420,\r\n },\r\n});\r\n\r\nexport const useAssetsStepStyles = () => useResponsiveStyleWrapper(getAssetStepStyles);\r\n","import { platforms } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport {\r\n UAPPlacementTypeAlias as EPT,\r\n} from '@bingads-webui-campaign-react/unified-ad-preview-library-cmui';\r\n\r\nexport const flowToPlatform = {\r\n [FLOWS.IOS]: platforms.IOS,\r\n [FLOWS.ANDROID]: platforms.ANDROID,\r\n [FLOWS.WINDOWS]: platforms.WINDOWS,\r\n};\r\n\r\nexport const unifiedAppAdsSurfaces = {\r\n VideoGaming: {\r\n key: 'VideoGaming',\r\n title: _TL_('Video Gaming'),\r\n placements: [\r\n 'VideoHorizontal',\r\n ],\r\n },\r\n M365: {\r\n key: 'M365',\r\n title: _TL_('M365'),\r\n placements: [\r\n 'M365Outlook',\r\n ],\r\n },\r\n MsnDisplay: {\r\n key: 'MsnDisplay',\r\n title: _TL_('MSN & Display'),\r\n placements: [\r\n 'MSNDisplay',\r\n ],\r\n },\r\n MicrosoftCasualGames: {\r\n key: 'MicrosoftCasualGames',\r\n title: _TL_('Microsoft Casual Games'),\r\n placements: [\r\n 'CasualGamesDimensions',\r\n ],\r\n },\r\n BingSearch: {\r\n key: 'BingSearch',\r\n title: _TL_('Bing Search'),\r\n placements: [\r\n 'BingSearch',\r\n 'BingSearchText',\r\n ],\r\n },\r\n};\r\n\r\nexport const adPreviewConfig = [{\r\n placementSetName: unifiedAppAdsSurfaces.VideoGaming.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.VideoHorizontal,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.M365.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.M365Outlook,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.MsnDisplay.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.MSNDisplay,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.MicrosoftCasualGames.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.CasualGamesDimensions,\r\n ],\r\n}, {\r\n placementSetName: unifiedAppAdsSurfaces.BingSearch.key,\r\n placementTypes: [\r\n EPT.UnifiedAppAds.BingSearch,\r\n EPT.UnifiedAppAds.BingSearchText,\r\n ],\r\n}];\r\n\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n ValidatedFixedPanel,\r\n getPanelErrorProps,\r\n TextTitle,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n ServerValidatedRemainingCharsValidatedTextField,\r\n GroupInfoImg,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\nimport { StoreAppSelector } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { CampaignValidationGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { flowToPlatform } from '../model/constants';\r\n\r\nexport const AssetGroupNameSection = (props) => {\r\n const {\r\n flow, i18n, isValidating, onDataChange, campaign,\r\n } = props;\r\n\r\n const onRenderAdGroupNameLabel = useCallback(() => (\r\n \r\n ), []);\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n {...props}\r\n >\r\n
{campaign && !campaign.AppSetting && i18n.getString(_TL_('Choose the app you want to promote'))}
\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAssetGroupNameSection.propTypes = {\r\n flow: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n isValidating: PropTypes.bool.isRequired,\r\n onDataChange: PropTypes.func.isRequired,\r\n campaign: PropTypes.shape({\r\n AppSetting: PropTypes.shape({}),\r\n AppSettingReadOnly: PropTypes.bool,\r\n }).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext, useMemo, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Text, Subtitle1 } from '@fluentui/react-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ShortHeadlinesPanel,\r\n DescriptionsPanel,\r\n PANEL_KEYS,\r\n ImagesPanel,\r\n BaseImagePanel,\r\n LogosPanel,\r\n DateSettingsPanel,\r\n AudienceSignalSection } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { VideoPanel, AudienceSignalPanel } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport {\r\n useCollapseState,\r\n Collapse,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n TextAssetsImg,\r\n ImageAssetsImg,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { useVideoAdsCopilot } from '@bingads-webui-campaign-react/xandr-video-campaign-shared-components';\r\nimport { TaskManager } from '@bingads-webui-universal/task-manager';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { getHeadlinesCardSummaryDetails, getDescriptionsCardSummaryDetails } from '@bingads-webui-campaign-react/validated-text-collection';\r\n\r\nexport const AssetsSection = ({\r\n imageExperiencePortalContainerState,\r\n transparentLogoExperiencePortalContainerState,\r\n imageExpereienceProngPortalContainerState,\r\n imageExperienceSpotLightPortalContainerState,\r\n prongImageExperienceAddNewImageCallback,\r\n imageSpotlightExperienceAddNewImageCallback,\r\n transparentLogoContainerRef,\r\n logosContainerRef,\r\n imageExperienceAddNewImageCallback,\r\n imagesContainerRef,\r\n imageSpotlightContainerRef,\r\n imageProngContainerRef,\r\n setAddNewDescriptionCallback,\r\n setAddNewShortHeadlinesCallback,\r\n perfMarker,\r\n mergedI18n,\r\n data,\r\n assetPanels,\r\n setSelectedVideoId,\r\n selectedVideoId,\r\n}) => {\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const {\r\n Headlines,\r\n Descriptions,\r\n } = data || {};\r\n\r\n const headlinesCardSummaryDetails = useMemo(() => getHeadlinesCardSummaryDetails(i18n, Headlines), [Headlines, i18n]);\r\n const descriptionsCardSummaryDetails = useMemo(() => getDescriptionsCardSummaryDetails(i18n, Descriptions), [Descriptions, i18n]);\r\n\r\n const [\r\n allSections,\r\n allSectionsExpandedSections,\r\n setAllSectionsExpandedSections,\r\n ] = useCollapseState(\r\n assetPanels /* all sections */,\r\n assetPanels /* initially expanded sections */\r\n );\r\n\r\n const [\r\n moreSettings,\r\n moreSettingsExpandedSections,\r\n setMoreSettingsExpandedSections,\r\n ] = useCollapseState(\r\n PANEL_KEYS.START_END_DATES /* all sections */,\r\n [] /* initially expanded sections */\r\n );\r\n\r\n const allAssetsExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setAllSectionsExpandedSections }),\r\n [setAllSectionsExpandedSections]\r\n );\r\n\r\n const { fetch } = useVideoAdsCopilot();\r\n\r\n const copilotFetchTaskManager = useMemo(() => new TaskManager(), []);\r\n\r\n useEffect(() => {\r\n fetch(copilotFetchTaskManager);\r\n // setClarityTag({ VideoCopilotGeneration: true });\r\n }, [copilotFetchTaskManager, fetch]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Add assets'))}\r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Provide your assets and we\\'ll automatically determine what your ads look like, where and when they appear, and who sees them.'))}\r\n \r\n
\r\n
\r\n
\r\n \r\n {}}\r\n icon={ImageAssetsImg}\r\n imagesContainerRef={imagesContainerRef}\r\n imageExperiencePortalContainerState={imageExperiencePortalContainerState}\r\n imageExperienceAddNewImageCallback={imageExperienceAddNewImageCallback}\r\n images={data && data.Images}\r\n topicKey=\"pop_BA_Apps_Images\"\r\n />\r\n {}}\r\n icon={ImageAssetsImg}\r\n titleKey={_TL_('Large image')}\r\n iconAltText={_TL_('\"Images\" panel\\'s image')}\r\n imagesData={data && data.ImageSPOTLIGHT}\r\n containerRef={imageSpotlightContainerRef}\r\n portalContainerState={imageExperienceSpotLightPortalContainerState}\r\n addNewImageCallback={imageSpotlightExperienceAddNewImageCallback}\r\n maxUploadNum={1}\r\n />\r\n {}}\r\n icon={ImageAssetsImg}\r\n titleKey={_TL_('Small image')}\r\n iconAltText={_TL_('\"Images\" panel\\'s image')}\r\n imagesData={data && data.ImagePRONG}\r\n containerRef={imageProngContainerRef}\r\n portalContainerState={imageExpereienceProngPortalContainerState}\r\n addNewImageCallback={prongImageExperienceAddNewImageCallback}\r\n maxUploadNum={1}\r\n />\r\n \r\n \r\n \r\n {flow !== FLOWS.WINDOWS && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n {\r\n _.contains(assetPanels, PANEL_KEYS.AUDIENCE_SIGNAL) && (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('More Settings'))} \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nAssetsSection.propTypes = {\r\n imageExperiencePortalContainerState: PropTypes.shape({}).isRequired,\r\n imageExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n imageProngContainerRef: PropTypes.shape({}).isRequired,\r\n imageSpotlightContainerRef: PropTypes.shape({}).isRequired,\r\n imageExpereienceProngPortalContainerState: PropTypes.shape({}).isRequired,\r\n imageExperienceSpotLightPortalContainerState: PropTypes.shape({}).isRequired,\r\n logosContainerRef: PropTypes.shape({}).isRequired,\r\n imagesContainerRef: PropTypes.shape({}).isRequired,\r\n setAddNewDescriptionCallback: PropTypes.func.isRequired,\r\n setAddNewShortHeadlinesCallback: PropTypes.func.isRequired,\r\n perfMarker: PropTypes.string.isRequired,\r\n mergedI18n: PropTypes.shape({}).isRequired,\r\n prongImageExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n imageSpotlightExperienceAddNewImageCallback: PropTypes.func.isRequired,\r\n data: PropTypes.shape({\r\n videos: PropTypes.shape([]),\r\n Images: PropTypes.shape([]),\r\n ImageSPOTLIGHT: PropTypes.shape([]),\r\n ImagePRONG: PropTypes.shape([]),\r\n logos: PropTypes.shape([]),\r\n }).isRequired,\r\n transparentLogoContainerRef: PropTypes.shape({}).isRequired,\r\n transparentLogoExperiencePortalContainerState: PropTypes.shape({}).isRequired,\r\n assetPanels: PropTypes.shape({}).isRequired,\r\n setSelectedVideoId: PropTypes.func.isRequired,\r\n selectedVideoId: PropTypes.string.isRequired,\r\n};\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { noop, isArray, union } from 'underscore';\r\nimport React, { useContext, useMemo, useCallback, useRef, useState, useEffect } from 'react';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withBannerService, CopilotRepositoryProvider } from '@bingads-webui/inline-copilot';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { RecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { mergeI18n } from '@bingads-webui-campaign-react/i18n-merger';\r\nimport { useWizardService, matchStepState, STEP_STATES } from '@bingads-webui-react/wizard';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { getGenericImageObjectAsync } from '@bingads-webui-campaign/image-experience-utils';\r\nimport {\r\n FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport { AssetScenario } from '@bingads-webui-react/copilot-event-provider';\r\nimport { AssetEventFeature } from '@bingads-webui-campaign-react/copilot-common';\r\nimport { useCopilot } from '@bingads-webui-campaign-react/copilot-experience';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport { useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { useResponsiveStyles } from '@bingads-webui-campaign-react/common-hooks';\r\nimport { legacyI18nOfListingGroup } from '@bingads-webui-campaign-react/listing-groups-page';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { SystemErrors, AssetGroupValidationGroup, FLOWS, AppAdsPreview } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport {\r\n ValidatedImageExperienceWrapper,\r\n PerfMaxResponsiveAdPreviewUAPL\r\n} from '@bingads-webui-campaign-react/pmax-image-experience';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\n\r\nimport { getAssetStepStyles } from '../use-assets-step-styles';\r\n\r\nimport { AssetGroupNameSection } from './asset-group-name-section';\r\nimport { AssetsSection } from './assets-section';\r\nimport { adPreviewConfig, unifiedAppAdsSurfaces } from '../model/constants';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\nconst MaxImageCount = 1;\r\n\r\nconst AssetsStepFormInternal = ({\r\n data,\r\n onDataChange: onDataChangeProp,\r\n error,\r\n scope,\r\n assetPanels,\r\n}) => {\r\n const isMounted = useIsMounted();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const serverContext = useContext(ServerContext);\r\n const instrumentation = useContext(InstrumentationContext);\r\n const [recommendationContext] = useContext(RecommendationContext);\r\n\r\n const imagesContainerRef = useRef(null);\r\n const logosContainerRef = useRef(null);\r\n const transparentLogoContainerRef = useRef(null);\r\n const ImageSPOTLIGHTContainerRef = useRef(null);\r\n const ImagePRONGContainerRef = useRef(null);\r\n const portraitContainerRef = useRef(null);\r\n\r\n const stylingProps = useMemo(() =>\r\n ({ component: { placements: 3 } }), []);\r\n\r\n const getStyles = useResponsiveStyles(getAssetStepStyles, stylingProps);\r\n\r\n const { cid, aid } = scope.values || {};\r\n\r\n const [selectedVideoId, setSelectedVideoId] = useState(0);\r\n\r\n const [imageExperiencePortalContainerState, setImageExperiencePortalContainerState] = useState({});\r\n const [ImageSPOTLIGHTExperiencePortalContainerState, setImageSPOTLIGHTExperiencePortalContainerState] = useState({});\r\n const [ImagePRONGExperiencePortalContainerState, setImagePRONGExperiencePortalContainerState] = useState({});\r\n\r\n const [imageExperienceAddNewImageCallback, setImageExperienceAddNewImageCallback] = useState(noop);\r\n const [prongImageExperienceAddNewImageCallback, setProngImageExperienceAddNewImageCallback] = useState(noop);\r\n const [imageSpotlightExperienceAddNewImageCallback, setImageSpotlightExperienceAddNewImageCallback] = useState(noop);\r\n\r\n const [addNewDescriptionCallback, setAddNewDescriptionCallback] = useState(noop);\r\n const [addNewShortHeadlinesCallback, setAddNewShortHeadlinesCallback] = useState(noop);\r\n const [transparentLogoExperiencePortalContainerState, setTransparentLogoExperiencePortalContainerState] = useState({});\r\n const [previewTransparentLogoSharedState, setPreviewTransparentLogoSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [previewImageSPOTLIGHTSharedState, setPreviewImageSPOTLIGHTSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [previewImagePRONGSharedState, setPreviewImagePRONGSharedState] = useState({ previewImageId: null, cropImageObj: null });\r\n const [appLogo, setAppLogo] = useState(null);\r\n\r\n const {\r\n assetGroup,\r\n campaign,\r\n } = data || {};\r\n\r\n const {\r\n AppSetting,\r\n } = campaign || {};\r\n\r\n const {\r\n Images,\r\n CallToAction,\r\n LongHeadlines,\r\n Descriptions,\r\n Headlines,\r\n videos = [],\r\n ImageSPOTLIGHT,\r\n ImagePRONG,\r\n TransparentLogo,\r\n } = assetGroup || {};\r\n\r\n const onDataChange = useCallback((result) => {\r\n if (!isMounted.current) return;\r\n onDataChangeProp({ ...result });\r\n }, [isMounted, onDataChangeProp]);\r\n\r\n const onReset = useCallback(() => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n Images: {\r\n ...assetGroup.Images,\r\n ImageList: [],\r\n ImageAssets: null,\r\n },\r\n Headlines: {\r\n Headline0: '',\r\n Headline1: '',\r\n Headline2: '',\r\n },\r\n LongHeadlines: {\r\n LongHeadline0: '',\r\n },\r\n Descriptions: {\r\n Description0: '',\r\n Description1: '',\r\n },\r\n },\r\n }),\r\n isValid: false,\r\n });\r\n }, [assetGroup, onDataChange]);\r\n\r\n const onUpdateImageList = useCallback((newImageList) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n Images: {\r\n ...prevData.assetGroup.Images,\r\n ImageList: newImageList,\r\n ImageAssets: null,\r\n },\r\n },\r\n }),\r\n });\r\n }, [onDataChange]);\r\n\r\n const {\r\n serverErrors = [],\r\n systemErrors = [],\r\n } = error || {};\r\n\r\n const i18n = useContext(I18nContext);\r\n const legacyGlobalI18n = useMemo(() => window.globalLegacyI18n.get('$/i18n!legacy/global'), []);\r\n\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap, legacyI18nOfListingGroup]), [i18n]);\r\n\r\n const mergedI18n = useMemo(() => {\r\n const mergedTempI18n = mergeI18n(\r\n legacyI18n,\r\n i18n\r\n );\r\n\r\n return mergeI18n(\r\n legacyGlobalI18n,\r\n mergedTempI18n\r\n );\r\n }, [i18n, legacyI18n, legacyGlobalI18n]);\r\n\r\n const { state: { context: { saveFailed } } } = useFormService();\r\n\r\n const isSaving = matchStepState(state, STEP_STATES.SAVING);\r\n const isCanceling = matchStepState(state, STEP_STATES.CANCELING);\r\n\r\n const perfMarker = useContext(PerformanceMarkerContext);\r\n\r\n const [previewImagesSharedState, setPreviewImagesSharedState] = useState({\r\n previewImageId: null,\r\n previewLogoId: null,\r\n cropImageObj: null,\r\n editingPlacementType: '',\r\n });\r\n\r\n const { postAssetEventLog } = recommendationContext || noop;\r\n\r\n const maxUploadNum = useMemo(() => {\r\n const imageListLength = Images && Images.ImageList && isArray(Images.ImageList) ? Images.ImageList.length : 0;\r\n return 20 - imageListLength;\r\n }, [Images]);\r\n\r\n const finalUrlFromApp = useMemo(() => {\r\n if (AppSetting) {\r\n if (flow === FLOWS.WINDOWS) {\r\n return `https://apps.microsoft.com/detail/${AppSetting.AppId}`;\r\n }\r\n return AppSetting.AppUrl;\r\n }\r\n return null;\r\n }, [AppSetting, flow]);\r\n\r\n const {\r\n copilotBanner,\r\n suggestionPoller,\r\n } = useCopilot({\r\n maxUploadNum,\r\n addNewShortHeadlinesCallback,\r\n addNewLongHeadlinesCallback: noop,\r\n addNewDescriptionCallback,\r\n imageExperienceAddNewImageCallback,\r\n // newCTACallback,\r\n currentCTA: CallToAction,\r\n onReset,\r\n cid,\r\n aid,\r\n serverContext,\r\n instrumentation,\r\n data: {\r\n ...assetGroup,\r\n finalUrls: [finalUrlFromApp],\r\n FinalUrlForRecommendation: finalUrlFromApp,\r\n },\r\n isSaving,\r\n isCanceling,\r\n enableCopilotRecommendations: true,\r\n feature: AssetEventFeature.PMAX, // TODO Feature name\r\n assetScenario: AssetScenario.CREATE_WORK_FLOW,\r\n });\r\n\r\n const imageExperienceComponents = useMemo(() => (\r\n
\r\n {}} // TODO\r\n isLogoEnabled={false}\r\n previewImagesSharedState={previewImagesSharedState}\r\n setPreviewImagesSharedState={setPreviewImagesSharedState}\r\n updatePortalContainerState={setImageExperiencePortalContainerState}\r\n setImageExperienceAddNewImageCallback={setImageExperienceAddNewImageCallback}\r\n validationProps={{ data: assetGroup, initialValue: assetGroup }}\r\n suggestionPoller={suggestionPoller}\r\n wizardPerfMarker={perfMarker}\r\n postAssetEventLog={postAssetEventLog}\r\n UAPLPMaxIntegration\r\n showCopilotOptionForImage={permissions.IsBackgroundSceneEnabled}\r\n // currently there is implementation in image experience to unify prong and spotlight images for windows store.\r\n // but we will not use it for now. We will keep two separate panels for prong and spotlight images.\r\n // Later when we want to unify this behaviour we can turn on this flag and undo this change.\r\n // isUnifiedAppCampaignWindowsStore={flow === FLOWS.WINDOWS}\r\n imageAssetsOptional={flow === FLOWS.WINDOWS}\r\n />\r\n
), [i18n, permissions, postAssetEventLog, suggestionPoller, previewImagesSharedState, assetGroup, perfMarker, flow]);\r\n\r\n const transparentLogoComponent = useMemo(() => (\r\n
\r\n \r\n
), [i18n, permissions, perfMarker, assetGroup, previewTransparentLogoSharedState]);\r\n\r\n const validatedImageSPOTLIGHTExperienceWrapper = useMemo(() => (\r\n \r\n ), [i18n, permissions, previewImageSPOTLIGHTSharedState, assetGroup, perfMarker]);\r\n\r\n const validatedImagePRONGExperienceWrapper = useMemo(() => (\r\n \r\n ), [i18n, permissions, previewImagePRONGSharedState, assetGroup, perfMarker]);\r\n\r\n const adPreview = useMemo(() => {\r\n const previewProps = {\r\n i18n,\r\n imageList: Images && Images.ImageList,\r\n updateImageList: onUpdateImageList,\r\n shortHeadline: (Headlines && Headlines.Headline0 !== '' && Headlines.Headline0) || undefined,\r\n longHeadline: (LongHeadlines && LongHeadlines.LongHeadline0 !== '' && LongHeadlines.LongHeadline0) || undefined,\r\n description: (Descriptions && Descriptions.Description0 !== '' && Descriptions.Description0) || undefined,\r\n businessName: AppSetting && AppSetting.AppTitle,\r\n callToAction: CallToAction,\r\n videos: (videos.length > selectedVideoId && selectedVideoId !== null) ? [videos[selectedVideoId]] : [],\r\n displayUrl: finalUrlFromApp,\r\n url: finalUrlFromApp,\r\n previewImagesSharedState,\r\n setPreviewImagesSharedState,\r\n adPreviewConfig,\r\n autoHeightCarousel: true,\r\n customSurfaceKeys: unifiedAppAdsSurfaces,\r\n appLogo,\r\n };\r\n return (\r\n \r\n );\r\n }, [i18n, Images, videos, appLogo, AppSetting, selectedVideoId, finalUrlFromApp, onUpdateImageList, Headlines, LongHeadlines, Descriptions, CallToAction, previewImagesSharedState]);\r\n\r\n const windowsAppAdsPreivew = useMemo(() => (\r\n \r\n ), [i18n, Headlines, ImageSPOTLIGHT, ImagePRONG, TransparentLogo, AppSetting, previewImageSPOTLIGHTSharedState]);\r\n\r\n useEffect(() => {\r\n if (AppSetting && AppSetting.IconUrl) {\r\n getGenericImageObjectAsync(AppSetting.IconUrl).then((iconImage) => {\r\n setAppLogo({\r\n ...iconImage,\r\n CropSettings: {},\r\n });\r\n });\r\n }\r\n }, [AppSetting]);\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 {copilotBanner}\r\n \r\n {flow !== FLOWS.WINDOWS && imageExperienceComponents}\r\n {flow === FLOWS.WINDOWS && transparentLogoComponent}\r\n {flow === FLOWS.WINDOWS && validatedImageSPOTLIGHTExperienceWrapper}\r\n {flow === FLOWS.WINDOWS && validatedImagePRONGExperienceWrapper}\r\n \r\n \r\n
\r\n
\r\n {\r\n flow === FLOWS.WINDOWS ?\r\n
\r\n {windowsAppAdsPreivew}\r\n
\r\n :\r\n
\r\n {adPreview}\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nAssetsStepFormInternal.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({\r\n Id: PropTypes.number,\r\n TimeZone: PropTypes.string,\r\n }),\r\n assetGroup: PropTypes.shape({\r\n FinalUrls: PropTypes.arrayOf(PropTypes.string),\r\n Images: PropTypes.shape({\r\n ImageList: PropTypes.arrayOf(PropTypes.string),\r\n ImageAssets: PropTypes.shape({}),\r\n }),\r\n CallToAction: PropTypes.shape({\r\n cta: PropTypes.string,\r\n }),\r\n FinalUrlForRecommendation: PropTypes.string,\r\n BusinessName: PropTypes.string,\r\n Headlines: PropTypes.shape({}),\r\n LongHeadlines: PropTypes.shape({}),\r\n Descriptions: PropTypes.shape({}),\r\n }),\r\n }).isRequired,\r\n onDataChange: PropTypes.func.isRequired,\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.string),\r\n systemErrors: PropTypes.arrayOf(PropTypes.string),\r\n }),\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.string,\r\n aid: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n assetPanels: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nAssetsStepFormInternal.defaultProps = {\r\n error: {},\r\n};\r\n\r\nexport const AssetsStepForm = withBannerService(withScope(AssetsStepFormInternal));\r\n","import React, { useMemo } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { AdAssetsFormShimmer, AdAssetsPreviewerShimmer } from '@bingads-webui-campaign-react/pmax-lite-shimmers';\r\nimport { getAssetsPanels } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { AssetsStepForm } from './components';\r\nimport { useAssetsStepStyles } from './use-assets-step-styles';\r\n\r\nexport const AssetsStepShell = (props) => {\r\n const { data } = props || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n const getStyles = useAssetsStepStyles();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const assetPanels = useMemo(() => getAssetsPanels(flow), [flow]);\r\n\r\n return (\r\n <>\r\n {\r\n isLoading ?\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\nAssetsStepShell.propTypes = {\r\n data: propTypes.shape({}),\r\n};\r\n\r\nAssetsStepShell.defaultProps = {\r\n data: {},\r\n};\r\n","\r\nimport { generateNameSuggestionSuffix } from '@bingads-webui-campaign/audience-campaign-shared';\r\nimport { getBudgetRange } from '@bingads-webui-campaign-legacy/common-grid-config/budget/get-budget-range';\r\nimport { getDefaultLocationTargetsViewModel, getDefaultLanguagesViewModel } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { URL_RULES_OPTIONS } from '@bingads-webui-campaign-react/url-rules';\r\nimport { FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst platformToAppStore = {\r\n Windows: 'MicrosoftAppStore',\r\n Android: 'GoogleAppStore',\r\n iOS: 'AppleAppStore',\r\n};\r\n\r\nconst getBiddingScheme = (flow) => {\r\n const isFlowApps = flow !== FLOWS.WINDOWS;\r\n if (isFlowApps) {\r\n return {\r\n Type: 'ManualCpc',\r\n ManualCpc: 5,\r\n };\r\n }\r\n return {\r\n Type: 'ManualCpa',\r\n ManualCpi: 5,\r\n };\r\n};\r\n\r\nexport const getDefaultCampaignData = ({\r\n serverContext,\r\n cnMarketAccount,\r\n AppSetting,\r\n flow,\r\n}) => {\r\n let platformNamePrefix;\r\n if (flow !== FLOWS.WINDOWS) {\r\n platformNamePrefix = flow === FLOWS.ANDROID ? 'Android' : 'iOS';\r\n }\r\n return ({\r\n Name: `${generateNameSuggestionSuffix(flow === FLOWS.WINDOWS ? 'Windows Store Campaign' : `${platformNamePrefix} Mobile App Campaign`)}-${Math.floor(Math.random() * 100)}`,\r\n Status: 'Paused',\r\n Languages: getDefaultLanguagesViewModel(cnMarketAccount),\r\n Budget: {\r\n Amount: getBudgetRange(serverContext.CurrentAccount.CurrencyCode).Daily.Default,\r\n Type: 'DailyStandard',\r\n },\r\n BiddingScheme: getBiddingScheme(flow),\r\n CampaignType: 'App',\r\n CampaignSubType: 'AppInstall',\r\n locationTargets: getDefaultLocationTargetsViewModel(cnMarketAccount),\r\n AppStore: platformToAppStore[AppSetting?.AppPlatform],\r\n AppId: AppSetting?.AppStoreId,\r\n TrackingUrlTemplate: 'http://www.trackingtool.com/tracking?url={lpurl}&type=1',\r\n AppSetting,\r\n });\r\n};\r\n\r\nexport const getDefaultAssetGroup = ({ i18n, businessName, storeFinalUrl = null }) => ({\r\n Name: generateNameSuggestionSuffix(i18n.getString(_TL_('AssetGroup'))),\r\n Status: 'Paused',\r\n Images: {\r\n ImageList: [],\r\n IsOptional: true,\r\n },\r\n BusinessName: businessName,\r\n FinalUrls: [storeFinalUrl],\r\n FinalUrlForRecommendation: storeFinalUrl,\r\n UrlRulesOption: URL_RULES_OPTIONS.All,\r\n});\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { saveAssetGroup, loadCampaignAsViewModel, FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { loadAssetGroupWithVideos, loadAssetGroupForWindowsStore } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { newVideoFromMTObject } from '@bingads-webui-campaign-react/image-experience-video-part';\r\nimport cacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\n\r\nimport {\r\n getLoggerWithoutPageInfo,\r\n createVideoRepository,\r\n createImageRepository,\r\n createFolderRepository,\r\n uploadVideoMetadata,\r\n} from '@bingads-webui-campaign-react/asset-library-services';\r\nimport { getLogVersion } from '@bingads-webui-campaign-react/asset-library-model';\r\n\r\nimport { createDefaultCampaign, getDefaultAssetGroup } from './model';\r\nimport { flowToPlatform } from './model/constants';\r\n\r\nexport const useAssetsStepRepository = () => {\r\n const scenarioContext = useContext(ScenarioContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const versionForLog = getLogVersion(permissions);\r\n\r\n const logger = getLoggerWithoutPageInfo(activity, versionForLog, 'UnifiedAppAdsStep');\r\n\r\n const serverContext = useContext(ServerContext);\r\n\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const { aid, cid } = scope.values;\r\n\r\n const { searchAppById, oDataConfig } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const videoRepository = createVideoRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const folderRepository = createFolderRepository({\r\n i18n,\r\n logger,\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const imageRepository = createImageRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n logger,\r\n i18n,\r\n activity,\r\n });\r\n\r\n const uploadVideoIfNeeded = useCallback(({ assetGroup }) => {\r\n const videoPromises = [];\r\n\r\n if (!assetGroup.videos) {\r\n return Promise.resolve(assetGroup);\r\n }\r\n\r\n // check for videos in the assetGroup that dont have an id.\r\n assetGroup.videos.forEach((video) => {\r\n if (!video.id) {\r\n videoPromises.push(uploadVideoMetadata({\r\n videoMetadata: video,\r\n newVideoFromMTObject,\r\n folderRepository,\r\n imageRepository,\r\n videoRepository,\r\n }).then((newVideo) => {\r\n _.extend(video, newVideo);\r\n }));\r\n }\r\n });\r\n\r\n if (_.isEmpty(videoPromises)) {\r\n return Promise.resolve(assetGroup);\r\n }\r\n\r\n return Promise.all(videoPromises).then(() => assetGroup);\r\n }, [folderRepository, imageRepository, videoRepository]);\r\n\r\n const load = useCallback(() => {\r\n const { assetGroup: savedAssetGroup, campaign: savedCampaign } = state.context.wizardData;\r\n\r\n const campaignId = savedCampaign ? savedCampaign.Id : null;\r\n const assetGroupId = savedAssetGroup ? savedAssetGroup.Id : null;\r\n\r\n const saveCampaignsPromise = campaignId\r\n ? loadCampaignAsViewModel(cid, aid, campaignId)\r\n : Promise.resolve({});\r\n\r\n const assetGroupPromise = flow === FLOWS.WINDOWS ? loadAssetGroupForWindowsStore : loadAssetGroupWithVideos;\r\n\r\n const savedAssetGroupPromise = assetGroupId\r\n ? assetGroupPromise(cid, aid, campaignId, assetGroupId, i18n, false, false, videoRepository)\r\n : Promise.resolve(getDefaultAssetGroup({ i18n }));\r\n\r\n return Promise.props({ campaign: saveCampaignsPromise, assetGroup: savedAssetGroupPromise })\r\n .then(({ campaign, assetGroup }) => {\r\n if (_.has(campaign, 'data')) {\r\n // since the view model conversion adds a data parameter, we dont need it in this wizard.\r\n // eslint-disable-next-line no-param-reassign\r\n campaign = campaign.data;\r\n }\r\n if (_.has(assetGroup, 'data')) {\r\n // since the view model conversion adds a data parameter, we dont need it in this wizard.\r\n // eslint-disable-next-line no-param-reassign\r\n assetGroup = assetGroup.data;\r\n }\r\n\r\n return ({\r\n campaign,\r\n assetGroup,\r\n });\r\n }).then(({ campaign, assetGroup }) => {\r\n if (campaign && campaign.CampaignSettings && campaign.CampaignSettings.length > 0) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings || {};\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSetting = appInfo;\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSettingReadOnly = true;\r\n\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n });\r\n }\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, i18n, state.context.wizardData, aid, cid, searchAppById, videoRepository]);\r\n\r\n const save = useCallback(({\r\n data,\r\n initialData,\r\n }) => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n\r\n const { assetGroup: assetGroupToSave, campaign: campaignToSave } = data;\r\n const { assetGroup: initialAssetGroup } = initialData;\r\n\r\n const { AppSetting } = campaignToSave;\r\n\r\n const saveCampaignsPromise = savedCampaign\r\n ? Promise.resolve({\r\n campaign: {\r\n data: savedCampaign,\r\n },\r\n }) :\r\n createDefaultCampaign({\r\n i18n,\r\n serverContext,\r\n scenarioContext,\r\n AppSetting,\r\n flow,\r\n });\r\n\r\n return saveCampaignsPromise.then((result) => {\r\n const { campaign } = result;\r\n\r\n activity.trace('[UnifiedAppWizard] - Default Campaign saved');\r\n activity.signal(`[UnifiedAppWizard] - Default Campaign saved, campaignId: ${campaign.data.Id}`);\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: result.campaign.data });\r\n\r\n cacheManager.invalidate('AssetGroup');\r\n cacheManager.invalidate('Campaign');\r\n\r\n return {\r\n campaign: result.campaign.data,\r\n };\r\n }).then((result) => {\r\n const assetGroupChanges = {\r\n assetGroup: {\r\n data: assetGroupToSave,\r\n },\r\n originalAssetGroup: {\r\n data: initialAssetGroup,\r\n },\r\n campaign: result.campaign,\r\n };\r\n\r\n const saveContext = {\r\n scenario: scenarioContext.name,\r\n activity,\r\n activityLogger: scenarioContext.createActivity('saveAssets'),\r\n i18n,\r\n serverContext,\r\n cid,\r\n aid,\r\n };\r\n\r\n return Promise.props({\r\n campaign: Promise.resolve(result.campaign),\r\n savedAssetGroup: uploadVideoIfNeeded({ assetGroup: assetGroupToSave })\r\n .then(() => saveAssetGroup(assetGroupChanges, saveContext)),\r\n });\r\n }).then((result) => {\r\n const { savedAssetGroup } = result;\r\n\r\n activity.trace(`[PmaxWizard] saveData succeeded. Assets count: ${result}`);\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { assetGroup: savedAssetGroup.assetGroup.data });\r\n\r\n // TODO: Uncomment this when copilot recommendations are ready\r\n // logCopilotRecommendations({\r\n // recommendationContext,\r\n // assetGroup: savedAssetGroup.assetGroup.data,\r\n // campaignId: result.campaign.Id,\r\n // });\r\n\r\n return {\r\n campaign: result.campaign,\r\n assetGroup: savedAssetGroup.assetGroup.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] saveData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, flow, i18n, scenarioContext, send, serverContext, state.context.wizardData.campaign, uploadVideoIfNeeded]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { saveCampaign } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { getDefaultCampaignData } from './default-data';\r\n\r\nexport const createDefaultCampaign = ({\r\n i18n,\r\n serverContext,\r\n scenarioContext,\r\n AppSetting,\r\n flow,\r\n}) => {\r\n const permissions = serverContext.Permissions || {};\r\n\r\n const initialCampaignViewModel = {\r\n data: getDefaultCampaignData({\r\n i18n,\r\n serverContext,\r\n cnMarketAccount: permissions.IsDomesticSimplifiedChineseEnabled,\r\n AppSetting,\r\n flow,\r\n }),\r\n };\r\n\r\n return saveCampaign({\r\n campaign: initialCampaignViewModel,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('saveDefaultCampaign'),\r\n });\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { AdAssetsFormShimmer, AdAssetsPreviewerShimmer } from '@bingads-webui-campaign-react/pmax-lite-shimmers';\r\nimport { getAssetsSettingsPanels } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { AssetsStepForm } from './components';\r\nimport { useAssetsStepStyles } from './use-assets-step-styles';\r\n\r\nexport const AssetsStepSettingsShell = (props) => {\r\n const { data } = props || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n const getStyles = useAssetsStepStyles();\r\n\r\n const { state } = useWizardService();\r\n\r\n const {\r\n wizardData: { flow },\r\n } = state.context;\r\n\r\n const assetPanels = useMemo(() => getAssetsSettingsPanels(flow), [flow]);\r\n\r\n return (\r\n <>\r\n {\r\n isLoading ?\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\nAssetsStepSettingsShell.propTypes = {\r\n data: propTypes.shape({}),\r\n};\r\n\r\nAssetsStepSettingsShell.defaultProps = {\r\n data: {},\r\n};\r\n","\r\nimport { getLocationTargetingStyles } from '@bingads-webui-campaign-react/location-targeting';\r\nimport { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n maxWidth: 680,\r\n },\r\n ...getLocationTargetingStyles(),\r\n});\r\n\r\nexport const useTargetingStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { isEmpty } from 'underscore';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { PerformanceMarkerContext } from '@bingads-webui-campaign-react/performance-marker-provider';\r\nimport {\r\n FormErrorGroup, UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { LanguageTargetPanel, AudienceSignalSection, PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { LocationTargetingSettingPanel, AudienceSignalPanel, useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { CampaignValidationGroup, AssetGroupValidationGroup, SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { PlacementTargetPanel, PANEL_KEYS as PANEL_KEYS_V2 } from '@bingads-webui-campaign-react/wizard-shared-components-v2';\r\n\r\nimport { useTargetingStepStyles } from './use-targeting-step-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nexport const TargetingStepShell = ({\r\n data: targetingInfo = {},\r\n onDataChange,\r\n error,\r\n}) => {\r\n const isLoading = useMemo(() => isEmpty(targetingInfo), [targetingInfo]);\r\n const isMounted = useIsMounted();\r\n\r\n const getStyles = useTargetingStepStyles();\r\n\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state: { context: { saveFailed } } } = useFormService();\r\n const i18n = useContext(I18nContext);\r\n const perfMarker = useContext(PerformanceMarkerContext);\r\n\r\n const {\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n campaign = {},\r\n assetGroup = {},\r\n } = targetingInfo || {};\r\n\r\n const [\r\n allSections,\r\n expandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(\r\n // PANEL_KEYS_V2.PLACEMENT_TARGET should be added to these arrays once it's ready to enable it\r\n [PANEL_KEYS.LOCATIONS, PANEL_KEYS.LANGUAGE_TARGET, PANEL_KEYS.AUDIENCE_SIGNAL],\r\n [PANEL_KEYS.LOCATIONS, PANEL_KEYS.LANGUAGE_TARGET, PANEL_KEYS.AUDIENCE_SIGNAL]\r\n );\r\n\r\n const targetingExpand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setExpandedSections }),\r\n [setExpandedSections]\r\n );\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 \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nTargetingStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n locationTargets: PropTypes.shape({}),\r\n bundleCountries: PropTypes.arrayOf(PropTypes.shape({})),\r\n bundleLocationCriterions: PropTypes.arrayOf(PropTypes.shape({})),\r\n campaign: PropTypes.shape({}),\r\n assetGroup: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nTargetingStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n formContainer: {\r\n maxWidth: 800,\r\n '& .advanced-scheduling-grid': {\r\n width: 'unset !important',\r\n\r\n '& .ad-scheduling-grid': {\r\n minWidth: 'unset !important',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const useCampaignDetailsStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { LocationTargetingSettingPanel, useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { buildLegacyI18n } from '@bingads-webui/build-legacy-i18n';\r\nimport { ValidationStringMap } from '@bingads-webui/validation-string-map';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport {\r\n CampaignNamePanel,\r\n BudgetPanel,\r\n BidStrategyPanel,\r\n BidValuePanel,\r\n LanguageTargetPanel,\r\n AdSchedulePanel,\r\n UrlOptionsPanel,\r\n AppDetailsPanel,\r\n PANEL_KEYS,\r\n} from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { CampaignValidationGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { MANUAL_CPA, MANUAL_CPC } from '@bingads-webui-campaign-react/bid-strategy-component';\r\n\r\nimport { useCampaignDetailsStepStyles } from './use-campaign-details-step-styles';\r\n\r\nexport const CampaignDetailsForm = ({\r\n data: campaignInfo,\r\n onDataChange,\r\n allSectionsKeys,\r\n initiallyExpandedSectionsKeys,\r\n}) => {\r\n const {\r\n campaign,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n } = campaignInfo || {};\r\n\r\n const isLoading = useMemo(() => _.isEmpty(campaignInfo), [campaignInfo]);\r\n\r\n const getStyles = useCampaignDetailsStepStyles();\r\n\r\n const i18n = useContext(I18nContext);\r\n const isMounted = useIsMounted();\r\n const legacyI18n = useMemo(() => buildLegacyI18n(i18n, [ValidationStringMap]), [i18n]);\r\n\r\n const [\r\n allSections,\r\n expandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(allSectionsKeys, initiallyExpandedSectionsKeys);\r\n\r\n const expand = useMemo(\r\n () => collapseExpander({ setActiveKeys: setExpandedSections }),\r\n [setExpandedSections]\r\n );\r\n\r\n const isBidStrategyCPC = useMemo(() => !isLoading && campaign?.BiddingScheme.Type === 'ManualCpc', [isLoading, campaign]);\r\n const getBidStrategyOptions = useMemo(() => (isBidStrategyCPC ? [MANUAL_CPC] : [MANUAL_CPA]), [isBidStrategyCPC]);\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\r\nCampaignDetailsForm.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n allSectionsKeys: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n initiallyExpandedSectionsKeys: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n};\r\n\r\nCampaignDetailsForm.defaultProps = {\r\n data: {},\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport { CampaignDetailsForm } from './campaign-details-form';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst ALL_SECTIONS_KEYS = [PANEL_KEYS.CAMPAIGN_NAME, PANEL_KEYS.AD_SCHEDULE, PANEL_KEYS.URL_OPTIONS];\r\nconst INITIALLY_EXPANDED_SECTIONS_KEYS = ALL_SECTIONS_KEYS;\r\n\r\nexport const CampaignDetailsStepShell = ({\r\n data,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state } = useFormService();\r\n const { saveFailed } = state.context;\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\nCampaignDetailsStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nCampaignDetailsStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { withControlErrorHandling } from '@bingads-webui-campaign-react/error-handling';\r\nimport { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { SystemErrors } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nimport { CampaignDetailsForm } from './campaign-details-form';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nconst ALL_SECTIONS_KEYS = [\r\n PANEL_KEYS.CAMPAIGN_NAME,\r\n PANEL_KEYS.AD_SCHEDULE,\r\n PANEL_KEYS.URL_OPTIONS,\r\n PANEL_KEYS.BID_STRATEGY,\r\n PANEL_KEYS.BID_VALUE,\r\n PANEL_KEYS.BUDGET,\r\n PANEL_KEYS.LOCATIONS,\r\n PANEL_KEYS.LANGUAGE_TARGET,\r\n PANEL_KEYS.APP,\r\n];\r\nconst INITIALLY_EXPANDED_SECTIONS_KEYS = [\r\n PANEL_KEYS.CAMPAIGN_NAME,\r\n PANEL_KEYS.AD_SCHEDULE,\r\n PANEL_KEYS.URL_OPTIONS,\r\n PANEL_KEYS.BUDGET,\r\n PANEL_KEYS.BID_VALUE,\r\n PANEL_KEYS.LOCATIONS,\r\n PANEL_KEYS.LANGUAGE_TARGET,\r\n PANEL_KEYS.APP,\r\n];\r\n\r\nexport const CampaignDetailsEditStepShell = ({\r\n data,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const { state } = useFormService();\r\n const { saveFailed } = state.context;\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\nCampaignDetailsEditStepShell.propTypes = {\r\n data: PropTypes.shape({\r\n campaign: PropTypes.shape({}),\r\n }),\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nCampaignDetailsEditStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport {\r\n loadCampaign,\r\n loadBundleCountries,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport {\r\n readLocationCriterions,\r\n readDayTimeCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { saveCampaign, useBudgetModel } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { flowToPlatform } from '@bingads-webui-campaign-react/unified-app-assets';\r\n\r\nexport const useCampaignDetailsStepRepository = (props) => {\r\n const { state, send } = useWizardService();\r\n const serverContext = useContext(ServerContext);\r\n const scenarioContext = useContext(ScenarioContext);\r\n const activity = useContext(ActivityContext);\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n const { cid, aid } = scope.values;\r\n const { budgetModelToViewModel, budgetViewModelToModel, isBudgetInputValid } = useBudgetModel();\r\n\r\n const { isBudgetAndBiddingEnabled = false } = props || {};\r\n\r\n const { flow } = state.context.wizardData;\r\n const { searchAppById } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const load = useCallback(() => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n dayTimeCriterions: readDayTimeCriterions(cid, aid, campaignId),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n campaign,\r\n locationTargets,\r\n bundleCountriesAndLocationCriterions,\r\n dayTimeCriterions,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n dayTimeCriterionsModel: dayTimeCriterions ? dayTimeCriterions.value : [],\r\n });\r\n\r\n const commonCampaignData = data => ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: {\r\n ...data,\r\n ManualCPC: _.get(campaign, ['BiddingScheme', 'ManualCPC']) || null,\r\n ManualCPI: _.get(campaign, ['BiddingScheme', 'ManualCPI']) || null,\r\n },\r\n ...(isBudgetAndBiddingEnabled ? budgetModelToViewModel(campaign) : {}),\r\n });\r\n\r\n if (campaignData.data && campaignData.data.CampaignSettings && campaignData.data.CampaignSettings.length > 0) {\r\n const appSettings = campaignData.data.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings || {};\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n campaignData.data.AppSetting = appInfo;\r\n campaignData.data.AppSettingReadOnly = true;\r\n\r\n return commonCampaignData(campaignData.data);\r\n });\r\n }\r\n\r\n return commonCampaignData(campaignData.data);\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, budgetModelToViewModel, cid, isBudgetAndBiddingEnabled, serverContext, state.context.wizardData.campaign, searchAppById]);\r\n\r\n const save = useCallback(({\r\n data,\r\n }) => {\r\n const {\r\n campaign: campaignData,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n budgetAmount,\r\n bidStrategy,\r\n ManualCPC,\r\n ManualCPI,\r\n isBudgetValid,\r\n isMarketingMetricValid,\r\n } = data;\r\n\r\n let campaignToSave = campaignData;\r\n\r\n if (isBudgetAndBiddingEnabled) {\r\n if (!isBudgetInputValid(isBudgetValid, isMarketingMetricValid)) {\r\n return Promise.reject();\r\n }\r\n\r\n campaignToSave = {\r\n ...campaignToSave,\r\n ...budgetViewModelToModel(bidStrategy, budgetAmount, ManualCPC, ManualCPI),\r\n };\r\n }\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: campaignToSave },\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings updated in campaign details step');\r\n activity.signal('[UnifiedAppWizard] - campaign settings updated in campaign details step');\r\n\r\n const { campaign } = campaignResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: campaign.data });\r\n\r\n return {\r\n campaign: campaign.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings update failed in campaign details step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, budgetViewModelToModel, i18n, isBudgetAndBiddingEnabled, isBudgetInputValid, scenarioContext, send]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useResponsiveStyleWrapper } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst getStyles = () => ({\r\n formContainer: {\r\n maxWidth: 680,\r\n minWidth: 300,\r\n flex: '1',\r\n },\r\n});\r\n\r\nexport const useBudgetStepStyles = () => useResponsiveStyleWrapper(getStyles);\r\n","import React, { useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { AttentionBeaconGroup } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { ActuationGroup } from '@bingads-webui-campaign-react/actuator';\r\nimport { useIsMounted } from '@bingads-webui-campaign-react/step-wizard-controls';\r\nimport { BudgetPanel, BidStrategyPanel, BidValuePanel, PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n FormErrorGroup,\r\n UnmappedFormErrors as OriginalUnmappedFormErrors,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport {\r\n apiErrorMapper,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport {\r\n withControlErrorHandling,\r\n} from '@bingads-webui-campaign-react/error-handling';\r\nimport { useFormService } from '@bingads-webui-react/form';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { CampaignValidationGroup, SystemErrors, FLOWS } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport {\r\n Collapse,\r\n useCollapseState,\r\n collapseExpander,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { MANUAL_CPA, MANUAL_CPC } from '@bingads-webui-campaign-react/bid-strategy-component';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\n\r\nimport { useBudgetStepStyles } from './use-budget-step-styles';\r\n\r\nconst UnmappedFormErrors = withControlErrorHandling(OriginalUnmappedFormErrors);\r\n\r\nexport const BudgetStepShell = ({\r\n data: budgetInfo,\r\n onDataChange,\r\n error,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const isMounted = useIsMounted();\r\n const { state } = useFormService();\r\n const { state: wizardState } = useWizardService();\r\n const { saveFailed } = state.context;\r\n const isLoading = useMemo(() => _.isEmpty(budgetInfo), [budgetInfo]);\r\n\r\n const getStyles = useBudgetStepStyles();\r\n\r\n const { serverErrors, systemErrors } = error || {};\r\n\r\n const [\r\n allSections,\r\n allExpandedSections,\r\n setExpandedSections,\r\n ] = useCollapseState(\r\n [PANEL_KEYS.BID_STRATEGY, PANEL_KEYS.BUDGET, PANEL_KEYS.BID_VALUE],\r\n [PANEL_KEYS.BUDGET, PANEL_KEYS.BID_VALUE]\r\n );\r\n\r\n const expandSections = useMemo(() =>\r\n collapseExpander({ setActiveKeys: setExpandedSections }), [setExpandedSections]);\r\n\r\n const {\r\n wizardData: { flow },\r\n } = wizardState.context;\r\n\r\n const isBidStrategyCPC = useMemo(() => flow !== FLOWS.WINDOWS, [flow]);\r\n const getBidStrategyOptions = useMemo(() => (isBidStrategyCPC ? [MANUAL_CPC] : [MANUAL_CPA]), [isBidStrategyCPC]);\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
\r\n );\r\n};\r\n\r\nBudgetStepShell.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n error: PropTypes.shape({\r\n serverErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n systemErrors: PropTypes.arrayOf(PropTypes.shape({})),\r\n }),\r\n};\r\n\r\nBudgetStepShell.defaultProps = {\r\n data: {},\r\n error: {},\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport {\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { saveCampaign, useBudgetModel } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { readLocationCriterions } from '@bingads-webui-campaign-react/perf-max-data';\r\n\r\nexport const useBudgetStepRepository = () => {\r\n const { state, send } = useWizardService();\r\n const { campaign: savedCampaign } = state.context.wizardData;\r\n const { scope } = useContext(ScopeContext) || {};\r\n const scenarioContext = useContext(ScenarioContext);\r\n const activity = useContext(ActivityContext);\r\n const i18n = useContext(I18nContext);\r\n const { cid, aid } = scope.values;\r\n const { budgetModelToViewModel, budgetViewModelToModel, isBudgetInputValid } = useBudgetModel();\r\n\r\n const load = useCallback(() => {\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n campaign,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n });\r\n\r\n return {\r\n ...budgetModelToViewModel(campaign),\r\n campaign: campaignData.data,\r\n };\r\n });\r\n }, [aid, cid, budgetModelToViewModel, savedCampaign]);\r\n\r\n const save = useCallback(({ data }) => {\r\n const {\r\n campaign: updatedCampaign,\r\n budgetAmount,\r\n bidStrategy,\r\n ManualCPC,\r\n ManualCPI,\r\n isBudgetValid,\r\n isMarketingMetricValid,\r\n } = data || {};\r\n\r\n if (!isBudgetInputValid(isBudgetValid, isMarketingMetricValid)) {\r\n return Promise.reject();\r\n }\r\n\r\n const newCampaign = {\r\n ...updatedCampaign,\r\n ...budgetViewModelToModel(bidStrategy, budgetAmount, ManualCPC, ManualCPI),\r\n };\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: newCampaign },\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings updated in budget step');\r\n activity.signal('[UnifiedAppWizard] - campaign settings updated in budget step');\r\n\r\n const { campaign } = campaignResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, {\r\n campaign: {\r\n ...campaign.data,\r\n },\r\n });\r\n\r\n return {\r\n campaign: campaign.data,\r\n ...budgetModelToViewModel(campaign.data),\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign settings update failed in budget step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({ error: { ...errorData } });\r\n });\r\n }, [isBudgetInputValid, budgetViewModelToModel, scenarioContext, i18n, activity, send, budgetModelToViewModel]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useState, useEffect, useContext, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport _preferencesService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, getFlowFactors } from '@bingads-webui-react/wizard';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst buildSchemaData = ({\r\n data,\r\n timeDisplayType,\r\n serverContext,\r\n cid,\r\n aid,\r\n i18n,\r\n}) => {\r\n const locations = _.map(\r\n _.filter(\r\n data.campaign && data.campaign.locationTargets && data.campaign.locationTargets.currentLevelSettings.currentLocations,\r\n loc => loc.SelectionStatus === 'Included'\r\n ),\r\n loc => loc.location\r\n );\r\n\r\n return ({\r\n campaignName: {\r\n data: data.campaign.Name,\r\n },\r\n assetGroupName: {\r\n data: data.assetGroup.data.Name,\r\n },\r\n appName: {\r\n data: data.campaign.AppSetting.name,\r\n },\r\n appPlatform: {\r\n data: data.campaign.AppSetting.AppPlatform,\r\n },\r\n autoGeneratedAssets: {\r\n data: {\r\n finalUrlExpansionOptOut: data.campaign.finalUrlExpansionOptOut,\r\n finalUrlExpansions: data.campaign.finalUrlExpansions,\r\n autoGeneratedTextOptOut: data.campaign.autoGeneratedTextOptOut,\r\n autoGeneratedImageOptOut: data.campaign.autoGeneratedImageOptOut,\r\n },\r\n },\r\n budget: {\r\n data: data.campaign.Budget,\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n bidStrategy: {\r\n data: data.campaign.BiddingScheme,\r\n },\r\n bidValue: {\r\n data: data.campaign.BiddingScheme.ManualCPC,\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n costPerSale: {\r\n data: {\r\n costPerSaleOptOut: data.campaign.costPerSaleOptOut,\r\n },\r\n },\r\n conversionGoals: {\r\n conversionGoals: data.campaign.conversionGoals,\r\n },\r\n locationTargeting: {\r\n locations,\r\n targetOption: data.campaign && data.campaign.locationTargets && data.campaign.locationTargets.currentLevelSettings.targetOption,\r\n },\r\n languages: {\r\n data: data.campaign.Languages,\r\n },\r\n audienceSignal: {\r\n data: data.assetGroup.data.AudienceGroup,\r\n },\r\n searchThemes: {\r\n data: data.assetGroup.data.AssetGroupSearchThemes,\r\n },\r\n images: {\r\n data: data.assetGroup.data.Images,\r\n shouldFetchFromMT: true,\r\n cid,\r\n aid,\r\n },\r\n logos: {\r\n data: data.assetGroup.data.Images,\r\n shouldFetchFromMT: true,\r\n cid,\r\n aid,\r\n label: _TL_('Logos'),\r\n isLogo: true,\r\n },\r\n headlines: {\r\n data: data.assetGroup.data.Headlines,\r\n },\r\n descriptions: {\r\n data: data.assetGroup.data.Descriptions,\r\n },\r\n videos: {\r\n data: data.assetGroup.data.videos,\r\n },\r\n adScheduleCampaign: {\r\n startDate: data.assetGroup.data.StartDate,\r\n endDate: data.assetGroup.data.EndDate,\r\n adSchedules: data.campaign && data.campaign.adSchedules && data.campaign.adSchedules.dayTimeRanges,\r\n useSearcherTimeZone: data.campaign.AdScheduleUseSearcherTimeZone,\r\n timeDisplayType,\r\n },\r\n urlOptions: {\r\n data: {\r\n TrackingUrlTemplate: data.campaign.TrackingUrlTemplate,\r\n FinalUrlSuffix: data.campaign.FinalUrlSuffix,\r\n UrlCustomParameters: data.campaign.UrlCustomParameters,\r\n },\r\n },\r\n finalUrlExpansions: {\r\n data: {\r\n finalUrlExpansions: data.campaign.finalUrlExpansions,\r\n },\r\n },\r\n urlRules: {\r\n data: {\r\n i18n,\r\n finalUrls: data.assetGroup.data.FinalUrls,\r\n path1: data.assetGroup.data.Path1,\r\n path2: data.assetGroup.data.Path2,\r\n mobileFinalUrls: data.assetGroup.data.MobileFinalUrls,\r\n urlRules: data.assetGroup.data.AssetGroupUrlTargets,\r\n },\r\n },\r\n newCustomerAcquisition: {\r\n data: {\r\n newCustomerAcquisitionOptOut: data.campaign.newCustomerAcquisitionOptOut,\r\n newCustomerAcquisition: data.campaign.newCustomerAcquisition,\r\n },\r\n currencyCode: serverContext.CurrentAccount.CurrencyCode,\r\n },\r\n });\r\n};\r\n\r\nexport const useSummarySchemaData = ({ data }) => {\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const { cid, aid } = scope.values;\r\n\r\n const [timeDisplayType, setTimeDisplayType] = useState('12-hour');\r\n\r\n const serverContext = useContext(ServerContext);\r\n const { Permissions, DynamicPermissions } = serverContext || {};\r\n const permissions = useMemo(() => ({ dynamic: { ...DynamicPermissions }, ...Permissions }), [DynamicPermissions, Permissions]);\r\n\r\n const { state } = useWizardService();\r\n\r\n const { loadedStoresData, savedProductFilter, savedListingGroup } = state.context.wizardData;\r\n\r\n const { flow } = getFlowFactors(state);\r\n\r\n useEffect(() => {\r\n const preferencesService = _preferencesService.default || _preferencesService;\r\n preferencesService.initialize().then(() => {\r\n const isTwelveHourDisplay = preferencesService.findByName('WebApp.CampaignUI.isTwelveHourDisplay') || {};\r\n setTimeDisplayType(_.isUndefined(isTwelveHourDisplay.Data) || isTwelveHourDisplay.Data ? '12-hour' : '24-hour');\r\n });\r\n }, []);\r\n\r\n return (data && data.campaign && data.assetGroup && buildSchemaData({\r\n data,\r\n timeDisplayType,\r\n serverContext,\r\n cid,\r\n aid,\r\n flow,\r\n loadedStoresData,\r\n savedProductFilter,\r\n savedListingGroup,\r\n i18n,\r\n permissions,\r\n })) || {};\r\n};\r\n","import React, { useEffect, useMemo, useCallback } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { StepHeader } from '@bingads-webui-campaign-react/pmax-common';\r\nimport { GeneratedUI } from '@bingads-webui-campaign-react/ui-generator';\r\nimport { summaryPageComponentTypes } from '@bingads-webui-campaign-react/summary-page';\r\nimport { WIZARD_EVENTS, getCurrentFlow, useWizardService } from '@bingads-webui-react/wizard';\r\nimport { STEP_PATHS } from '@bingads-webui-campaign-react/unified-app-campaign-wizard';\r\nimport { SummaryShimmer } from '@bingads-webui-campaign-react/perf-max-wizard-north-star';\r\n\r\nimport { useSummarySchemaData } from './use-summary-schema-data';\r\nimport { buildSchema } from './schema';\r\n\r\nexport const SummaryStepShell = ({\r\n data,\r\n onDataChange,\r\n}) => {\r\n const schemaData = useSummarySchemaData({ data });\r\n const isLoading = useMemo(() => _.isEmpty(data), [data]);\r\n\r\n const appPlatformString = useMemo(() => {\r\n if (schemaData.appPlatform && schemaData.appPlatform.data) {\r\n if (schemaData.appPlatform.data === 'Android') {\r\n return _TL_('Android mobile app name');\r\n } else if (schemaData.appPlatform.data === 'iOS') {\r\n return _TL_('iOS mobile app name');\r\n } else if (schemaData.appPlatform.data === 'Windows') {\r\n return _TL_('Windows app name');\r\n }\r\n }\r\n return _TL_('App name');\r\n }, [schemaData.appPlatform]);\r\n\r\n const { send, state } = useWizardService();\r\n\r\n const currentFlow = getCurrentFlow(state);\r\n const { wizardData } = state.context;\r\n const { flow } = wizardData;\r\n\r\n const onAssetsHeaderActionClick = useCallback(() => {\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.ASSETS,\r\n });\r\n }, [send]);\r\n\r\n const onTargetingHeaderActionClick = useCallback(() => send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.TARGETING,\r\n }), [send]);\r\n\r\n const onCampaignSettingsHeaderActionClick = useCallback(() =>\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.CAMPAIGN_DETAILS,\r\n }), [send]);\r\n\r\n const onBudgetSettingsHeaderActionClick = useCallback(() =>\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: STEP_PATHS.BUDGET,\r\n }), [send]);\r\n\r\n const options = useMemo(() => ({\r\n onAssetsHeaderActionClick,\r\n onTargetingHeaderActionClick,\r\n onCampaignSettingsHeaderActionClick,\r\n onBudgetSettingsHeaderActionClick,\r\n appPlatformString,\r\n flow,\r\n }), [onAssetsHeaderActionClick, onTargetingHeaderActionClick, onCampaignSettingsHeaderActionClick, onBudgetSettingsHeaderActionClick, appPlatformString, flow]);\r\n\r\n const schema = buildSchema(options);\r\n\r\n useEffect(() => (\r\n onDataChange({\r\n data,\r\n isValid: true,\r\n })\r\n ), [data, onDataChange]);\r\n\r\n return (\r\n
\r\n \r\n {isLoading ?\r\n :\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nSummaryStepShell.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n};\r\n\r\nSummaryStepShell.defaultProps = {\r\n data: {},\r\n};\r\n","import { buildDefaultDataProperty } from '@bingads-webui-campaign-react/ui-generator';\r\n\r\nexport const buildSchema = options => ({\r\n separatorStyles: {\r\n marginBottom: 20,\r\n },\r\n assets: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Assets'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onAssetsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n assetGroupName: buildDefaultDataProperty({\r\n label: _TL_('Asset group name'),\r\n dynamicProps: props => props.assetGroupName,\r\n }),\r\n appName: buildDefaultDataProperty({\r\n label: options.appPlatformString,\r\n dynamicProps: props => props.appName,\r\n }),\r\n hd1: {\r\n type: 'horizontal-divider',\r\n },\r\n images: {\r\n type: 'images',\r\n dynamicProps: props => props.images,\r\n },\r\n hd2: {\r\n type: 'horizontal-divider',\r\n isRendered: options.flow !== 'WINDOWS',\r\n },\r\n videos: {\r\n type: 'videos',\r\n dynamicProps: props => props.videos,\r\n isRendered: options.flow !== 'WINDOWS',\r\n },\r\n hd3: {\r\n type: 'horizontal-divider',\r\n },\r\n headlines: {\r\n type: 'headlines',\r\n dynamicProps: props => props.headlines,\r\n },\r\n descriptions: {\r\n type: 'descriptions',\r\n dynamicProps: props => props.descriptions,\r\n },\r\n },\r\n },\r\n targeting: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Targeting'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onTargetingHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n locationTargeting: {\r\n type: 'location-targeting',\r\n dynamicProps: props => props.locationTargeting,\r\n },\r\n languages: {\r\n type: 'languages',\r\n dynamicProps: props => props.languages,\r\n },\r\n audienceSignal: {\r\n type: 'audience-signal',\r\n dynamicProps: props => props.audienceSignal,\r\n },\r\n },\r\n },\r\n campaignSettings: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Campaign Details'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onCampaignSettingsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n campaignName: buildDefaultDataProperty({\r\n label: _TL_('Campaign name'),\r\n dynamicProps: props => props.campaignName,\r\n }),\r\n adScheduleCampaign: {\r\n type: 'ad-schedule',\r\n dynamicProps: props => props.adScheduleCampaign,\r\n },\r\n conversionGoals: {\r\n type: 'conversion-goals',\r\n dynamicProps: props => props.conversionGoals,\r\n },\r\n },\r\n },\r\n budget: {\r\n type: 'panel',\r\n header: {\r\n title: _TL_('Budget'),\r\n actionButton: {\r\n label: _TL_('Edit'),\r\n iconName: 'Edit',\r\n ariaLabel: _TL_('Edit'),\r\n onClick: options.onBudgetSettingsHeaderActionClick,\r\n },\r\n },\r\n components: {\r\n separatorStyles: {\r\n marginBottom: 8,\r\n },\r\n budget: {\r\n type: 'budget',\r\n dynamicProps: props => props.budget,\r\n },\r\n bidStrategy: {\r\n type: 'bid-strategy',\r\n dynamicProps: props => props.bidStrategy,\r\n },\r\n bidValue: {\r\n type: 'bid-value',\r\n dynamicProps: props => props.bidValue,\r\n },\r\n },\r\n },\r\n});\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport {\r\n loadBundleCountries,\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n loadAssetGroupWithVideos,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService } from '@bingads-webui-react/wizard';\r\nimport {\r\n readLocationCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { flowToPlatform } from '@bingads-webui-campaign-react/unified-app-assets';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { createVideoRepository } from '@bingads-webui-campaign-react/asset-library-services';\r\nimport { useAppStoreRepository } from '@bingads-webui-campaign-react/app-store-selector';\r\nimport { updateAssetGroupAndCampaignStatus } from '@bingads-webui-campaign-react/perf-max-wizard-north-star';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const useSummaryStepRepository = () => {\r\n const serverContext = useContext(ServerContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n const { cid, aid } = scope.values;\r\n const { state } = useWizardService();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const {\r\n wizardData: {\r\n flow,\r\n isPublishing,\r\n campaign: savedCampaign,\r\n assetGroup: savedAssetGroup,\r\n },\r\n } = state.context;\r\n\r\n const { searchAppById, oDataConfig } = useAppStoreRepository({ platform: flowToPlatform[flow] });\r\n\r\n const videoRepository = createVideoRepository({\r\n oDataConfig,\r\n aid,\r\n cid,\r\n });\r\n\r\n const load = useCallback(() => {\r\n const campaignId = savedCampaign ? savedCampaign.Id : null;\r\n const assetGroupId = savedAssetGroup ? savedAssetGroup.Id : null;\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n assetGroup: loadAssetGroupWithVideos(cid, aid, campaignId, assetGroupId, i18n, false, false, videoRepository),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n };\r\n return Promise.props(loadPromises).then(({\r\n bundleCountriesAndLocationCriterions,\r\n campaign,\r\n assetGroup,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n });\r\n\r\n return ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: campaignData.data,\r\n assetGroup,\r\n });\r\n }).then(({ campaign, assetGroup }) => {\r\n if (campaign && campaign.CampaignSettings && campaign.CampaignSettings.length > 0) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n const { AppId } = appSettings;\r\n\r\n return searchAppById(AppId).then((appInfo) => {\r\n // eslint-disable-next-line no-param-reassign\r\n campaign.AppSetting = appInfo;\r\n\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n });\r\n }\r\n return {\r\n campaign,\r\n assetGroup,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace(`[UnifiedAppWizard] loadData failed. Error: ${errorData}`);\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, i18n, savedAssetGroup, savedCampaign, searchAppById, serverContext, videoRepository]);\r\n\r\n const save = useCallback(({\r\n data,\r\n }) => {\r\n const { Id: campaignId } = savedCampaign || {};\r\n const { Id: assetGroupId } = savedAssetGroup || {};\r\n\r\n if (isPublishing) {\r\n updateAssetGroupAndCampaignStatus({ campaignId, assetGroupId }).then(() => ({\r\n campaign: data.campaign,\r\n assetGroup: data.assetGroup,\r\n })).catch(errorData => (\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n Promise.reject({ error: { ...errorData } })));\r\n }\r\n\r\n // no update necessary if not publishing.\r\n return Promise.resolve({\r\n campaign: data.campaign,\r\n assetGroup: data.assetGroup,\r\n });\r\n }, [isPublishing, savedAssetGroup, savedCampaign]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","export const UNIFIED_APP_CAMPAIGN_WIZARD_ID = 'UNIFIED_APP_CAMPAIGN_WIZARD_ID';\r\nexport const UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID = 'UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID';\r\nexport const UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID = 'UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID';\r\n\r\nexport const STEP_PATHS = {\r\n ASSETS: 'ASSETS',\r\n TARGETING: 'TARGETING',\r\n CAMPAIGN_DETAILS: 'CAMPAIGN_DETAILS',\r\n CAMPAIGN_DETAILS_EDIT: 'CAMPAIGN_DETAILS_EDIT',\r\n ASSETS_GROUP_EDIT: 'ASSETS_GROUP_EDIT',\r\n BUDGET: 'BUDGET',\r\n SUMMARY: 'SUMMARY',\r\n};\r\n","import React from 'react';\r\nimport { Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { AssetsStepShell, AssetsStepSettingsShell, useAssetsStepRepository } from '@bingads-webui-campaign-react/unified-app-assets';\r\nimport { TargetingStepShell, useTargetingStepRepository } from '@bingads-webui-campaign-react/unified-app-targeting';\r\nimport { CampaignDetailsStepShell, CampaignDetailsEditStepShell, useCampaignDetailsStepRepository, useCampaignDetailsEditStepRepository } from '@bingads-webui-campaign-react/unified-app-campaign-details';\r\nimport { BudgetStepShell, useBudgetStepRepository } from '@bingads-webui-campaign-react/unified-app-budget';\r\nimport { SummaryStepShell, useSummaryStepRepository } from '@bingads-webui-campaign-react/unified-app-summary';\r\n\r\nimport { STEP_PATHS } from './step-constants';\r\n\r\nexport const UnifiedAppCampaignStepsConfig = [\r\n {\r\n id: STEP_PATHS.ASSETS,\r\n view: props => ,\r\n repository: useAssetsStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.TARGETING,\r\n view: props => ,\r\n repository: useTargetingStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS,\r\n view: props => ,\r\n repository: useCampaignDetailsStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.BUDGET,\r\n view: props => ,\r\n repository: useBudgetStepRepository,\r\n },\r\n {\r\n id: STEP_PATHS.SUMMARY,\r\n view: props => ,\r\n repository: useSummaryStepRepository,\r\n },\r\n];\r\n\r\nexport const UnifiedAppEditCampaignSettingsStepsConfig = [\r\n {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS_EDIT,\r\n view: props => ,\r\n repository: useCampaignDetailsEditStepRepository,\r\n },\r\n];\r\n\r\nexport const UnifiedAppEditAssetGroupSettingsStepConfig = [\r\n {\r\n id: STEP_PATHS.ASSETS_GROUP_EDIT,\r\n view: props => ,\r\n repository: useAssetsStepRepository,\r\n },\r\n];\r\n\r\nexport const getStepListConfig = ({ i18n }) => {\r\n const stepListConfig = [{\r\n id: STEP_PATHS.ASSETS,\r\n title: i18n.getString(_TL_('Assets')),\r\n }, {\r\n id: STEP_PATHS.TARGETING,\r\n title: i18n.getString(_TL_('Targeting')),\r\n }, {\r\n id: STEP_PATHS.CAMPAIGN_DETAILS,\r\n title: i18n.getString(_TL_('Campaign details')),\r\n }, {\r\n id: STEP_PATHS.BUDGET,\r\n title: i18n.getString(_TL_('Budget')),\r\n }, {\r\n id: STEP_PATHS.SUMMARY,\r\n title: i18n.getString(_TL_('Summary')),\r\n }];\r\n\r\n return stepListConfig;\r\n};\r\n","import { useCallback, useContext } from 'react';\r\nimport Promise from 'bluebird';\r\nimport {\r\n loadBundleCountries,\r\n loadCampaign,\r\n modelToViewModelForCampaign,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useWizardService, WIZARD_EVENTS } from '@bingads-webui-react/wizard';\r\nimport { ScenarioContext, ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n readLocationCriterions,\r\n} from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { saveCampaign, saveAssetGroup } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nexport const useTargetingStepRepository = () => {\r\n const serverContext = useContext(ServerContext);\r\n const scenarioContext = useContext(ScenarioContext);\r\n const { scope } = useContext(ScopeContext) || {};\r\n\r\n const { cid, aid } = scope.values;\r\n\r\n const { state, send } = useWizardService();\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const load = useCallback(() => {\r\n const savedCampaign = state.context.wizardData.campaign;\r\n const savedAssetGroup = state.context.wizardData.assetGroup;\r\n const { Id: campaignId } = savedCampaign || {};\r\n\r\n const loadPromises = {\r\n campaign: loadCampaign(cid, aid, campaignId),\r\n locationTargets: readLocationCriterions(cid, aid, campaignId),\r\n assetGroup: Promise.resolve(savedAssetGroup),\r\n bundleCountriesAndLocationCriterions: loadBundleCountries({\r\n cid,\r\n aid,\r\n serverContext,\r\n }),\r\n };\r\n\r\n return Promise.props(loadPromises).then(({\r\n bundleCountriesAndLocationCriterions,\r\n campaign,\r\n assetGroup,\r\n locationTargets,\r\n }) => {\r\n const campaignData = modelToViewModelForCampaign({\r\n campaignModel: { ...campaign, Status: savedCampaign.status }, // MT sends UserPaused, if we send this back they mark it as active. So we just use Paused from the saved ad model\r\n locationCriterionsModel: locationTargets ? locationTargets.value : [],\r\n bundleCountries: bundleCountriesAndLocationCriterions.bundleCountries,\r\n });\r\n\r\n return ({\r\n ...bundleCountriesAndLocationCriterions,\r\n campaign: campaignData.data,\r\n assetGroup,\r\n });\r\n });\r\n }, [aid, cid, serverContext, state.context.wizardData.assetGroup, state.context.wizardData.campaign]);\r\n\r\n const save = useCallback(({\r\n data,\r\n initialData,\r\n }) => {\r\n const {\r\n campaign: campaignToSave,\r\n assetGroup: assetGroupToSave,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n } = data || {};\r\n\r\n const { assetGroup: initialAssetGroup } = initialData;\r\n\r\n const savePromises = {\r\n campaign: saveCampaign({\r\n campaign: { data: campaignToSave },\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateCampaign'),\r\n }),\r\n assetGroup: saveAssetGroup({\r\n assetGroup: { data: assetGroupToSave },\r\n originalAssetGroup: { data: initialAssetGroup },\r\n campaign: campaignToSave,\r\n }, {\r\n scenario: scenarioContext.name,\r\n i18n,\r\n activityLogger: scenarioContext.createActivity('updateAssetGroup'),\r\n serverContext,\r\n cid,\r\n aid,\r\n activity,\r\n }),\r\n };\r\n\r\n return Promise.props(savePromises).then(({\r\n campaign: campaignResults,\r\n assetGroup: assetGroupResults,\r\n }) => {\r\n activity.trace('[UnifiedAppWizard] - campaign/assetgroup settings updated in targeting step');\r\n activity.signal('[UnifiedAppWizard] - campaign/assetgroup settings updated in targeting step');\r\n\r\n const {\r\n campaign,\r\n } = campaignResults;\r\n\r\n const {\r\n assetGroup,\r\n } = assetGroupResults;\r\n\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { campaign: campaign.data });\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { assetGroup: assetGroup.data });\r\n\r\n return {\r\n campaign: campaign.data,\r\n assetGroup: assetGroup.data,\r\n };\r\n }).catch((errorData) => {\r\n activity.trace('[UnifiedAppWizard] - campaign/assetgroup settings update failed in targeting step');\r\n\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n error: {\r\n ...errorData,\r\n },\r\n });\r\n });\r\n }, [activity, aid, cid, i18n, scenarioContext, send, serverContext]);\r\n\r\n return {\r\n load,\r\n save,\r\n };\r\n};\r\n","import { useCampaignDetailsStepRepository } from './use-campaign-details-step-repository';\r\n\r\nexport const useCampaignDetailsEditStepRepository = () =>\r\n useCampaignDetailsStepRepository({ isBudgetAndBiddingEnabled: true });\r\n","import React, { useContext, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack, PrimaryButton, DefaultButton } from '@bingads-webui-react/fluent-controls';\r\nimport {\r\n useWizardService,\r\n getIsFirstStep,\r\n getIsLastStep,\r\n getCurrentStepId,\r\n matchStepState,\r\n STEP_STATES,\r\n WIZARD_EVENTS,\r\n} from '@bingads-webui-react/wizard';\r\nimport { CancelButton } from '@bingads-webui-fluent-component/wizard-ui-library';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { STEP_PATHS } from '../steps/step-constants';\r\n\r\nconst SaveAndPublish = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n if (activity) {\r\n activity.signal('onSaveAndPublishClicked');\r\n }\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isPublishing: true });\r\n send(WIZARD_EVENTS.SAVE_AND_EXIT);\r\n }, [activity, send]);\r\n\r\n const buttonText = useMemo(() => {\r\n const currentStep = getCurrentStepId(state);\r\n\r\n if (currentStep === STEP_PATHS.SUMMARY) {\r\n return i18n.getString(_TL_('Go live'));\r\n }\r\n\r\n return i18n.getString(_TL_('Save & go live'));\r\n }, [i18n, state]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n\r\nconst SaveAsDraft = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const activity = useContext(ActivityContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n if (activity) {\r\n activity.signal('onSaveAsDraftClicked');\r\n }\r\n send(WIZARD_EVENTS.UPDATE_WIZARD_DATA, { isPublishing: false });\r\n send(WIZARD_EVENTS.SAVE_AND_EXIT);\r\n }, [activity, send]);\r\n\r\n const buttonText = useMemo(() => {\r\n const currentStep = getCurrentStepId(state);\r\n\r\n if (currentStep === STEP_PATHS.SUMMARY) {\r\n return i18n.getString(_TL_('Don\\'t go live'));\r\n }\r\n\r\n return i18n.getString(_TL_('Save & don\\'t go live'));\r\n }, [i18n, state]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n\r\nexport const NextButton = ({ buttonText, disabled }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onNextClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.SAVE_AND_NEXT);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {buttonText ? i18n.getString(buttonText) : i18n.getString(_TL_('Next'))}\r\n \r\n );\r\n};\r\n\r\nexport const BackButton = ({ buttonText }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n const { state, send } = useWizardService();\r\n const isBlocking = matchStepState(state, STEP_STATES.FETCHING) || matchStepState(state, STEP_STATES.LOADING) || matchStepState(state, STEP_STATES.SAVING);\r\n\r\n const onBackClicked = useCallback(() => {\r\n send(WIZARD_EVENTS.BACK);\r\n }, [send]);\r\n\r\n return (\r\n \r\n {buttonText ? i18n.getString(buttonText) : i18n.getString(_TL_('Back'))}\r\n \r\n );\r\n};\r\nBackButton.propTypes = {\r\n buttonText: PropTypes.string,\r\n};\r\nBackButton.defaultProps = {\r\n buttonText: undefined,\r\n};\r\n\r\nNextButton.propTypes = {\r\n buttonText: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n};\r\nNextButton.defaultProps = {\r\n buttonText: undefined,\r\n disabled: false,\r\n};\r\n\r\nexport const UnifiedAppCampaignFooter = ({\r\n nextButtonText,\r\n nextDisabled,\r\n backButtonText,\r\n cancelButtonText,\r\n hideBackButton,\r\n}) => {\r\n const { state } = useWizardService();\r\n const isFirstStep = getIsFirstStep(state);\r\n const isLastStep = getIsLastStep(state);\r\n\r\n return (\r\n \r\n {(!isFirstStep && !hideBackButton) && }\r\n {(!isLastStep ? : )}\r\n {isLastStep && }\r\n {isFirstStep && }\r\n \r\n );\r\n};\r\nUnifiedAppCampaignFooter.propTypes = {\r\n nextButtonText: PropTypes.string,\r\n nextDisabled: PropTypes.bool,\r\n backButtonText: PropTypes.string,\r\n cancelButtonText: PropTypes.string,\r\n hideBackButton: PropTypes.bool,\r\n};\r\nUnifiedAppCampaignFooter.defaultProps = {\r\n nextButtonText: undefined,\r\n nextDisabled: false,\r\n backButtonText: undefined,\r\n cancelButtonText: undefined,\r\n hideBackButton: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport { Stack } from '@fluentui/react';\r\nimport {\r\n SaveAndExitButton,\r\n CancelButton,\r\n} from '@bingads-webui-react/wizard-ui-library';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nexport const EditFooter = () => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useMemo, useCallback, useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { ResponsiveStepList } from '@bingads-webui-react/step-progress-indicator';\r\nimport { useResponsiveSize } from '@bingads-webui-react/with-responsive-size';\r\nimport {\r\n useWizardService,\r\n getCurrentStepId,\r\n getCurrentFlow,\r\n WIZARD_EVENTS,\r\n} from '@bingads-webui-react/wizard';\r\n\r\nimport { getStepListConfig } from '../steps/step-config';\r\n\r\nexport const StepList = () => {\r\n const { state, send } = useWizardService();\r\n const i18n = useContext(I18nContext);\r\n\r\n const currentStepId = getCurrentStepId(state);\r\n const currentFlow = getCurrentFlow(state);\r\n const displayMode = useResponsiveSize(Constants.ResponsiveSizeBreakpoints);\r\n const { flow } = state.context.wizardData;\r\n\r\n const stepListConfig = useMemo(() => getStepListConfig({ i18n, flow, currentStepId }), [currentStepId, flow, i18n]);\r\n\r\n const getDefaultOnItemClickFn = useCallback((step) => {\r\n let toStep;\r\n if (currentFlow.includes(step.id)) {\r\n toStep = step;\r\n } else if (!_.isEmpty(step.steps)) {\r\n const firstSubStep = _.find(step.steps, s => currentFlow.includes(s.id));\r\n if (firstSubStep) {\r\n toStep = firstSubStep;\r\n }\r\n }\r\n if (toStep && toStep.isBehind) {\r\n return () => {\r\n send(WIZARD_EVENTS.NAVIGATE_TO, {\r\n stepId: toStep.id,\r\n });\r\n };\r\n }\r\n return undefined;\r\n }, [currentFlow, send]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n","import appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport localStorage from '@bingads-webui-component-legacy/storage/localStorage';\r\nimport { LocalStorageKeys } from '@bingads-webui-campaign-react/campaign-onboarding-v2';\r\nimport { APP_STORE_TO_STORE_TYPE } from '@bingads-webui-campaign-react/unified-app-shared';\r\n\r\nconst localStorageKey = LocalStorageKeys.UnifiedAppCampaignAdType;\r\n\r\nexport const useLocalStorageStoreType = (defaultStoreType) => {\r\n let unifiedAppCampaignStoreType = appConfig.get(localStorageKey);\r\n if (!unifiedAppCampaignStoreType) {\r\n if (localStorage && localStorage.supportsStorage()) {\r\n unifiedAppCampaignStoreType = localStorage.get(localStorageKey);\r\n appConfig.set(localStorageKey, unifiedAppCampaignStoreType);\r\n }\r\n }\r\n\r\n return unifiedAppCampaignStoreType || defaultStoreType;\r\n};\r\n\r\nexport const useCampaignStoreType = (campaign, defaultStoreType) => {\r\n if (campaign && campaign.CampaignSettings) {\r\n const appSettings = campaign.CampaignSettings.find(settings => settings['@odata.type'] === '#Model.AppSetting');\r\n\r\n if (appSettings && appSettings.AppStore) {\r\n return APP_STORE_TO_STORE_TYPE[appSettings.AppStore];\r\n }\r\n }\r\n return defaultStoreType;\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { StoreTypes, STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withRecommendationContext } from '@bingads-webui-campaign-react/perf-max-recommendation';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nimport { UnifiedAppCampaignStepsConfig } from '../steps/step-config';\r\nimport { UnifiedAppCampaignFooter, StepList } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_CAMPAIGN_WIZARD_ID } from '../steps/step-constants';\r\nimport { useLocalStorageStoreType } from './use-store-type';\r\n\r\nexport const UnifiedAppCampaignWizardInternal = ({\r\n perfMarker, scope, siteMap,\r\n}) => {\r\n const storeType = useLocalStorageStoreType(StoreTypes.AndroidPlayStore);\r\n\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'campaigns');\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_CAMPAIGN_WIZARD_ID,\r\n initialStep: STEP_PATHS.ASSETS,\r\n steps: UnifiedAppCampaignStepsConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [routeToNavigateToWhenDone, scope, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppCampaignWizardInternal.propTypes = {\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const UnifiedAppCampaignWizard = withSiteMap(withScope(withRecommendationContext(UnifiedAppCampaignWizardInternal)));\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nimport { UnifiedAppEditCampaignSettingsStepsConfig } from '../steps/step-config';\r\nimport { EditFooter } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID } from '../steps/step-constants';\r\nimport { useCampaignStoreType } from './use-store-type';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nconst UnifiedAppEditCampaignSettingsWizardInternal = ({\r\n currentCampaign, perfMarker, siteMap, scope,\r\n}) => {\r\n const storeType = useCampaignStoreType(currentCampaign);\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'overview');\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_EDIT_CAMPAIGN_SETTINGS_WIZARD_ID,\r\n initialStep: STEP_PATHS.CAMPAIGN_DETAILS_EDIT,\r\n steps: UnifiedAppEditCampaignSettingsStepsConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n campaign: currentCampaign,\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [currentCampaign, routeToNavigateToWhenDone, scope, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppEditCampaignSettingsWizardInternal.propTypes = {\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const UnifiedAppEditCampaignSettingsWizard = withScope(withSiteMap(UnifiedAppEditCampaignSettingsWizardInternal));\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Layout } from '@bingads-webui-react/wizard';\r\nimport { STORE_TYPE_TO_FLOW } from '@bingads-webui-campaign-react/unified-app-shared';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\n\r\nimport { UnifiedAppEditAssetGroupSettingsStepConfig } from '../steps/step-config';\r\nimport { EditFooter } from '../components';\r\nimport { STEP_PATHS, UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID } from '../steps/step-constants';\r\nimport { useCampaignStoreType } from './use-store-type';\r\nimport { UnifiedAppWizard } from './wizard';\r\n\r\nconst UnifiedAppEditAssetGroupSettingsWizardInternal = ({\r\n currentCampaign, perfMarker, siteMap, scope,\r\n}) => {\r\n const storeType = useCampaignStoreType(currentCampaign);\r\n const wizardFlow = useMemo(() => STORE_TYPE_TO_FLOW[storeType], [storeType]);\r\n\r\n const routeToNavigateToWhenDone = getRoutePathById(siteMap, 'appads-asset-groups');\r\n\r\n const { assetGroupId } = scope.values;\r\n\r\n const config = useMemo(() => ({\r\n id: UNIFIED_APP_EDIT_ASSET_GROUP_SETTINGS_WIZARD_ID,\r\n initialStep: STEP_PATHS.ASSETS_GROUP_EDIT,\r\n steps: UnifiedAppEditAssetGroupSettingsStepConfig,\r\n initialFlowFactors: { flow: wizardFlow },\r\n initialWizardData: {\r\n campaign: currentCampaign,\r\n assetGroup: { Id: assetGroupId },\r\n flow: wizardFlow,\r\n },\r\n actions: {\r\n onDone: () => scope.save(routeToNavigateToWhenDone),\r\n onExited: () => scope.save(routeToNavigateToWhenDone),\r\n },\r\n }), [currentCampaign, routeToNavigateToWhenDone, scope, assetGroupId, wizardFlow]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnifiedAppEditAssetGroupSettingsWizardInternal.propTypes = {\r\n currentCampaign: PropTypes.shape({}).isRequired,\r\n scope: PropTypes.shape({\r\n save: PropTypes.func.isRequired,\r\n values: PropTypes.shape({\r\n assetGroupId: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n perfMarker: PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n }).isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const UnifiedAppEditAssetGroupSettingsWizard = withScope(withSiteMap(UnifiedAppEditAssetGroupSettingsWizardInternal));\r\n","import React from 'react';\r\nimport propTypes from 'prop-types';\r\nimport { ErrorMessages } from '@bingads-webui-react/validation';\r\n\r\nexport const SystemErrors = ({ errors }) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nSystemErrors.propTypes = {\r\n errors: propTypes.arrayOf(propTypes.string),\r\n};\r\n\r\nSystemErrors.defaultProps = {\r\n errors: [],\r\n};\r\n","import React, { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ValidationGroup } from '@bingads-webui-react/validation';\r\nimport { Campaign, AssetGroup } from '@bingads-webui/campaign-odata-schemas';\r\n\r\nexport const CampaignValidationGroup = ({\r\n data, onDataChange, i18n, children, stopPropagation,\r\n}) => {\r\n const onValidate = useCallback((results) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n campaign: {\r\n ...prevData.campaign,\r\n ...results.data,\r\n },\r\n }),\r\n isValid: results.isValid,\r\n isDirty: results.isDirty,\r\n });\r\n }, [onDataChange]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nCampaignValidationGroup.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n stopPropagation: PropTypes.bool,\r\n};\r\n\r\nCampaignValidationGroup.defaultProps = {\r\n data: {},\r\n children: null,\r\n stopPropagation: false,\r\n};\r\n\r\nexport const AssetGroupValidationGroup = ({\r\n data, onDataChange, i18n, children,\r\n}) => {\r\n const onValidate = useCallback((results) => {\r\n onDataChange({\r\n data: prevData => ({\r\n ...prevData,\r\n assetGroup: {\r\n ...prevData.assetGroup,\r\n ...results.data,\r\n },\r\n }),\r\n isValid: results.isValid,\r\n isDirty: results.isDirty,\r\n });\r\n }, [onDataChange]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nAssetGroupValidationGroup.propTypes = {\r\n data: PropTypes.shape({}),\r\n onDataChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n children: PropTypes.node,\r\n};\r\n\r\nAssetGroupValidationGroup.defaultProps = {\r\n data: {},\r\n children: null,\r\n};\r\n","import React, { useCallback, useMemo, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Pivot, PivotItem } from '@fluentui/react';\r\n\r\nexport const AppAdPreviewControls = (props) => {\r\n const {\r\n onSurfaceChange,\r\n onPlacementFilterChange,\r\n showStart,\r\n } = props;\r\n\r\n const [surfaceChoice, setSurfaceChoice] = useState('Windows');\r\n\r\n const surfaceMap = useMemo(() => ({\r\n Windows: showStart ? ['Windows11StartLight', 'Windows11StartDark', 'Windows10StartLight', 'Windows10StartDark', 'WindowsProngLight', 'WindowsProngDark'] : ['Windows11ProngLight', 'WindowsProngDark'],\r\n Store: ['WindowsStoreSpotLight'],\r\n }), []);\r\n\r\n const placementFilterByPreviewControlState = useCallback((placement) => {\r\n const { type: previewTemplateType } = placement;\r\n const surfaceList = surfaceMap[surfaceChoice];\r\n\r\n return _.contains(surfaceList, previewTemplateType);\r\n }, [surfaceChoice, surfaceMap]);\r\n\r\n useEffect(() => {\r\n onPlacementFilterChange(placementFilterByPreviewControlState);\r\n }, [onPlacementFilterChange, placementFilterByPreviewControlState]);\r\n\r\n useEffect(() => {\r\n onSurfaceChange(surfaceChoice);\r\n }, [onSurfaceChange, surfaceChoice]);\r\n\r\n return (\r\n
\r\n setSurfaceChoice(item.props.itemKey)}>\r\n \r\n \r\n \r\n
);\r\n};\r\n\r\nAppAdPreviewControls.propTypes = {\r\n onSurfaceChange: PropTypes.func.isRequired,\r\n onPlacementFilterChange: PropTypes.func.isRequired,\r\n showStart: PropTypes.bool.isRequired,\r\n};\r\n","export const getAdPreviewStyles = (components, { palette = {} }) => ({\r\n adPreviewContainer: {\r\n '& .new-preview-carousel-container-adprelib': {\r\n border: 0,\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n borderRadius: '2px',\r\n backgroundColor: `${palette.white}`,\r\n },\r\n '& .ad-preview-controls-container': {\r\n paddingBottom: 10,\r\n },\r\n '& .ad-preview-actions': {\r\n '& button': {\r\n marginRight: 8,\r\n },\r\n },\r\n '& .ad-preview-title': {\r\n '& .preview-title-string-key': {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .preview-title-preview-type': {\r\n fontSize: 14,\r\n },\r\n },\r\n '& .preview-type-string': {\r\n visibility: 'hidden',\r\n },\r\n '& .carousel-wrapper': {\r\n '& .carousel-inner': {\r\n height: 515,\r\n merginTop: 10,\r\n },\r\n '& .carousel-control': {\r\n background: 'transparent',\r\n },\r\n },\r\n },\r\n\r\n carouselLayoutClassName: {\r\n border: 0,\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n borderRadius: '2px',\r\n backgroundColor: `${palette.white}`,\r\n\r\n '& .carousel-wrapper': {\r\n '& .carousel-inner': {\r\n height: 515,\r\n },\r\n '& .carousel-control.left, .carousel-control.right': {\r\n left: 0,\r\n bottom: -7,\r\n background: 'transparent',\r\n zIndex: 20,\r\n },\r\n },\r\n },\r\n carouselControlsMsn: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 200,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 430,\r\n },\r\n '& .carousel-indicators': {\r\n marginLeft: 240,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n carouselControlsOthers: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 270,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 357,\r\n },\r\n '& .carousel-indicators': {\r\n marginLeft: 310,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n customCarouselRoot: {\r\n '& .custom-carousel-controls-and-indicators': {\r\n transform: 'translateX(-15px) translateX(-50%)',\r\n left: '50%',\r\n\r\n '& .carousel-control.left': {\r\n marginRight: '10px !important',\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: '5px !important',\r\n },\r\n },\r\n },\r\n adExtensionContainer: {\r\n // todo: add styles for ad extension preview components if needed\r\n margin: 10,\r\n },\r\n placementContainerClassName: {\r\n minWidth: 669,\r\n border: '0 !important',\r\n boxShadow: 'unset !important',\r\n borderRadius: '0 !important',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n\r\n '& .placement-validation-message': {\r\n display: 'inline-block',\r\n width: '100%',\r\n fontSize: 14,\r\n textAlign: 'center',\r\n lineHeight: 2,\r\n marginRight: 16,\r\n },\r\n },\r\n carouselLayoutHeader: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n\r\n '& .carousel-header-texts': {\r\n display: 'inline-block',\r\n margin: '20px 8px 16px 24px',\r\n fontSize: 18,\r\n lineHeight: '24px',\r\n\r\n '& .carousel-header-ratio': {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n marginRight: 8,\r\n },\r\n '& .carousel-header-title': {\r\n fontSize: 14,\r\n },\r\n },\r\n '& .ad-preview-actions': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n marginRight: 16,\r\n '& button': {\r\n marginRight: 8,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst geCarouselStyleForMsan = {\r\n root: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 200,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 430,\r\n },\r\n },\r\n },\r\n previewCarousel: {\r\n bottomCarouselNavigation: {\r\n '& .carousel-indicators': {\r\n marginLeft: 240,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n};\r\n\r\nconst geCarouselStyleForOthers = {\r\n root: {\r\n '& .carousel-wrapper': {\r\n '& .carousel-control.left': {\r\n marginLeft: 270,\r\n },\r\n '& .carousel-control.right': {\r\n marginLeft: 357,\r\n },\r\n },\r\n },\r\n previewCarousel: {\r\n bottomCarouselNavigation: {\r\n '& .carousel-indicators': {\r\n marginLeft: 310,\r\n margin: '20px 24px',\r\n left: 0,\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const getCarouselControlsAndIndicatorsStyleBySurface = (surface) => {\r\n switch (surface) {\r\n case 'Bing':\r\n case 'Edge':\r\n case 'Outlook':\r\n return geCarouselStyleForOthers;\r\n case 'Msn':\r\n default:\r\n return geCarouselStyleForMsan;\r\n }\r\n};\r\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { usePreviewCarouselLayout } from '@bingads-webui-campaign-react/ad-placement-factory';\r\nimport { AdPlacementsGroupType } from '@bingads-webui-campaign-react/ad-placement-consts';\r\nimport { AppAdPreviewControls } from './preview-controls';\r\nimport previewPlaceholder from '../media/preview-placeholder.png';\r\nimport { getAdPreviewStyles, getCarouselControlsAndIndicatorsStyleBySurface } from './preview-styles';\r\n\r\nconst shortHeadlineMaxLength = 30;\r\nconst longHeadlineMaxLength = 90;\r\nconst descriptionMaxLength = 90;\r\n\r\nexport const AppAdsPreview = (props) => {\r\n const {\r\n imageList,\r\n updateImageList,\r\n previewImagesSharedState,\r\n setPreviewImagesSharedState,\r\n placementCustomizationPredicate,\r\n hideHeaderButtons,\r\n isAppCampaignPreview,\r\n showStart,\r\n } = props;\r\n\r\n const adDataProps = ['shortHeadline', 'longHeadline', 'description', 'url', 'displayUrl', 'callToAction', 'businessName'];\r\n const currentAdData = _.pick(props, adDataProps);\r\n const [adData, setAdData] = React.useState(currentAdData);\r\n\r\n const isAdDataUpdated = useCallback(newAdData => (newAdData.length !== adData.length || !_.isMatch(newAdData, adData)), [adData]);\r\n const debouncedSetAdData = useMemo(() => _.debounce(setAdData, 500), []);\r\n if (isAdDataUpdated(currentAdData)) {\r\n debouncedSetAdData.cancel();\r\n debouncedSetAdData(currentAdData);\r\n }\r\n\r\n const getImageIndexFromId = useCallback((id) => {\r\n const index = _.findIndex(imageList, placement => _.first(placement).id === id && !_.first(placement).isLogo && !_.first(placement).isPortrait);\r\n return index >= 0 ? index : null;\r\n }, [imageList]);\r\n\r\n const getPreviewImageIndex = useCallback((idRequestedByImageExperience) => {\r\n let index = getImageIndexFromId(idRequestedByImageExperience);\r\n\r\n if (!index) {\r\n const firstImageIndex = _.findIndex(imageList, placement => !_.first(placement).isLogo && !_.first(placement).isPortrait);\r\n index = firstImageIndex >= 0 ? firstImageIndex : null;\r\n }\r\n\r\n return index;\r\n }, [getImageIndexFromId, imageList]);\r\n\r\n const { previewImageId } = previewImagesSharedState;\r\n\r\n let imagesToDisplay = [];\r\n let previewImageIndex = null;\r\n if (imageList && isAppCampaignPreview) {\r\n // for app campaign, always send all images for preview\r\n imagesToDisplay = imageList.flat();\r\n } else if (imageList && imageList.length > 0) {\r\n previewImageIndex = getPreviewImageIndex(previewImageId);\r\n imagesToDisplay = _.isNumber(previewImageIndex) ? imageList[previewImageIndex] : [];\r\n }\r\n\r\n const onAddAspectRatio = useCallback((type) => {\r\n const newImageList = [...imageList];\r\n _.find(newImageList[previewImageIndex], imagePlacement => imagePlacement.type === type).isIncluded = true;\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, isImageListUpdatedByPreview: true });\r\n updateImageList(newImageList);\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState, updateImageList]);\r\n\r\n const onRemoveAspectRatio = useCallback((type) => {\r\n const newImageList = [...imageList];\r\n _.find(newImageList[previewImageIndex], imagePlacement => imagePlacement.type === type).isIncluded = false;\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, isImageListUpdatedByPreview: true });\r\n updateImageList(newImageList);\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState, updateImageList]);\r\n\r\n const onEdit = useCallback((type) => {\r\n const cropImageObj = _.find(imageList[previewImageIndex], imagePlacement => imagePlacement.type === type);\r\n setPreviewImagesSharedState({ ...previewImagesSharedState, cropImageObj });\r\n }, [imageList, previewImageIndex, previewImagesSharedState, setPreviewImagesSharedState]);\r\n\r\n const truncatedAdData = useMemo(() => {\r\n const validAdData = { ...adData };\r\n\r\n if (validAdData.shortHeadline && validAdData.shortHeadline.length > shortHeadlineMaxLength) {\r\n validAdData.shortHeadline = validAdData.shortHeadline.substring(0, shortHeadlineMaxLength - 1);\r\n }\r\n\r\n if (validAdData.longHeadline && validAdData.longHeadline.length > longHeadlineMaxLength) {\r\n validAdData.longHeadline = validAdData.longHeadline.substring(0, longHeadlineMaxLength - 1);\r\n }\r\n\r\n if (validAdData.description && validAdData.description.length > descriptionMaxLength) {\r\n validAdData.description = validAdData.description.substring(0, descriptionMaxLength - 1);\r\n }\r\n\r\n return validAdData;\r\n }, [adData]);\r\n\r\n const [placementFilter, setPlacementFilter] = useState({ func: () => true });\r\n\r\n const getFirstElement = useCallback((item) => {\r\n if (_.isArray(item)) {\r\n return _.first(item);\r\n }\r\n return item;\r\n }, []);\r\n\r\n const getLogo = useCallback(() => {\r\n const logos = _.filter(imageList, imageArr =>\r\n // reuse the selected TransparentLogo for the Logo property in preview\r\n // for Prong previews where we need both smallImage and Logo scenario\r\n getFirstElement(imageArr).associationType === 'TransparentLogo');\r\n\r\n return _.first(logos);\r\n }, [getFirstElement, imageList]);\r\n\r\n const { PreviewCarouselLayout } = usePreviewCarouselLayout({\r\n groupType: showStart ? AdPlacementsGroupType.appAdStart : AdPlacementsGroupType.appAd,\r\n placementFilterPredicate: placementFilter.func,\r\n customDefaultImage: previewPlaceholder,\r\n placementCustomizationPredicate: placementCustomizationPredicate || null,\r\n });\r\n\r\n const classes = useDefaultStyles(getAdPreviewStyles);\r\n const [surfaceChoice, setSurfaceChoice] = useState({});\r\n const styleOverrides = useMemo(() => getCarouselControlsAndIndicatorsStyleBySurface(surfaceChoice), [surfaceChoice]);\r\n\r\n const onPlacementFilterChange = useCallback((newPlacementFilter) => {\r\n setPlacementFilter({ func: newPlacementFilter });\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n logo.isIncluded)}\r\n headerButtonProps={{\r\n onAddAspectRatio,\r\n onRemoveAspectRatio,\r\n onEdit,\r\n }}\r\n adData={truncatedAdData}\r\n getIsRequiredByIndex={() => true}\r\n enableAutoPlay={false}\r\n styleOverrides={styleOverrides}\r\n hideHeaderButtons={hideHeaderButtons}\r\n />\r\n
);\r\n};\r\n\r\nAppAdsPreview.propTypes = {\r\n imageList: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.shape({}))),\r\n updateImageList: PropTypes.func.isRequired,\r\n previewImagesSharedState: PropTypes.shape({\r\n previewImageId: PropTypes.shape({}),\r\n }).isRequired,\r\n setPreviewImagesSharedState: PropTypes.func.isRequired,\r\n placementCustomizationPredicate: PropTypes.func,\r\n hideHeaderButtons: PropTypes.bool,\r\n isAppCampaignPreview: PropTypes.bool,\r\n showStart: PropTypes.bool,\r\n};\r\n\r\nAppAdsPreview.defaultProps = {\r\n imageList: null,\r\n placementCustomizationPredicate: null,\r\n hideHeaderButtons: false,\r\n isAppCampaignPreview: false,\r\n showStart: false,\r\n};\r\n","import { pick, extend, isString } from 'underscore';\r\nimport { loadCampaignAsViewModel, bulkModelToViewModelForLocationTargets, bulkModelToViewModelForDayTimeTargets } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\n\r\nconst whitelistedSchemaPropertyKeysForModel = [\r\n 'Notes', 'Budget', 'Id', 'Name', 'TimeZone', 'BidStrategyName', 'Status',\r\n 'DeliveryStatus', 'DeliveryStatusDetails', 'CampaignType', 'CampaignSubType',\r\n 'HasAuctionInsight', 'IsBidLandscapeAvailable', 'TrackingUrlTemplate',\r\n 'FinalUrlSuffix', 'UrlCustomParameters', 'BiddingScheme', 'NativeBidAdjustment',\r\n 'CampaignSettings', 'DisplayBiddingStrategyType',\r\n 'DisplayBiddingStrategyMaxCpc', 'DisplayBiddingStrategyTargetCpa', 'Languages',\r\n 'ExperimentId', 'BaseCampaignName', 'TargetSetting',\r\n 'AdScheduleUseSearcherTimeZone', 'AvailableInsightTypeIds',\r\n 'MultiMediaAdBidAdjustment', 'AppStore', 'AppId',\r\n];\r\n\r\nexport const viewModelToBulkModelForCampaign = (campaignViewModel) => {\r\n const data = pick(campaignViewModel.data, whitelistedSchemaPropertyKeysForModel);\r\n\r\n if (campaignViewModel.data\r\n && campaignViewModel.data.BiddingScheme\r\n && (campaignViewModel.data.BiddingScheme.ManualCPC || campaignViewModel.data.BiddingScheme.ManualCPI)\r\n ) {\r\n // Get Campaigns call returns it as ManualCPC.\r\n // Bulk upsert expects it as ManualCpc in lower case.\r\n data.BiddingScheme = {\r\n ...campaignViewModel.data.BiddingScheme,\r\n ManualCpc: campaignViewModel.data.BiddingScheme.ManualCPC,\r\n ManualCpi: campaignViewModel.data.BiddingScheme.ManualCPI,\r\n };\r\n }\r\n\r\n return data;\r\n};\r\n\r\nexport const bulkModelToViewModelForCampaign = ({\r\n campaignModel,\r\n bundleCountries,\r\n originalCampaignViewModel,\r\n}) => {\r\n let data = pick(campaignModel, whitelistedSchemaPropertyKeysForModel);\r\n if (data.Id && isString(data.Id)) {\r\n // eslint-disable-next-line no-param-reassign\r\n data.Id = parseInt(data.Id, 10);\r\n }\r\n data = extend(data, bulkModelToViewModelForLocationTargets({\r\n locationTargetsModel: campaignModel.CampaignCriterions,\r\n bundleCountries,\r\n }));\r\n\r\n data = extend(data, bulkModelToViewModelForDayTimeTargets({\r\n criterions: campaignModel.CampaignCriterions,\r\n }));\r\n\r\n data = extend(data, {\r\n AppSetting: originalCampaignViewModel && originalCampaignViewModel.data && originalCampaignViewModel.data.AppSetting,\r\n });\r\n\r\n const campaignViewModel = {\r\n data,\r\n isValid: true,\r\n isDirty: false,\r\n };\r\n return campaignViewModel;\r\n};\r\n\r\nexport { loadCampaignAsViewModel };\r\n","import _ from 'underscore';\r\nimport { createOrUpdateCampaign } from '@bingads-webui-campaign-react/perf-max-data';\r\nimport { Campaign } from '@bingads-webui/campaign-odata-schemas';\r\nimport { ERROR_ENTITY } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport {\r\n viewModelToBulkModelForLocationTargets,\r\n viewModelToBulkModelForAdSchedules,\r\n getBulkUploadErrorType, modelToViewModelForBulkErrors, removeReferencedEntityInvalidIdErrors, unexpectedBulkErrorToString,\r\n isBulkWrappedResponse,\r\n genericApiError,\r\n} from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\nimport { viewModelToBulkModelForCampaign, bulkModelToViewModelForCampaign } from './campaign';\r\n\r\nconst bulkUpsertCampaignSettingsEntityErrorMap = {\r\n [getBulkUploadErrorType(Campaign)]: ERROR_ENTITY.Campaign,\r\n 'Campaign Location Criterion Error': ERROR_ENTITY.CampaignLocation,\r\n 'Campaign Radius Criterion Error': ERROR_ENTITY.CampaignRadius,\r\n 'Campaign Negative Location Criterion Error': ERROR_ENTITY.CampaignNegativeLocation,\r\n 'Campaign Location Intent Criterion Error': ERROR_ENTITY.CampaignLocationIntent,\r\n 'Campaign Day Time Criterion Error': ERROR_ENTITY.CampaignDayTimeCriterion,\r\n};\r\n\r\nexport const getErrorsPlaceholders = () => ({\r\n serverErrors: [],\r\n systemErrors: [],\r\n});\r\n\r\nexport const saveCampaign = ({\r\n campaign: campaignViewModel,\r\n bundleCountries,\r\n bundleLocationCriterions,\r\n}, { scenario, i18n, activityLogger }) => {\r\n const campaignModel = viewModelToBulkModelForCampaign(campaignViewModel);\r\n const locationTargetsModel = viewModelToBulkModelForLocationTargets(campaignViewModel, bundleLocationCriterions);\r\n const adSchedulesModel = viewModelToBulkModelForAdSchedules(campaignViewModel);\r\n\r\n const modelToSave = {\r\n ...campaignModel,\r\n CampaignCriterions: [\r\n ...locationTargetsModel,\r\n ...adSchedulesModel,\r\n ],\r\n };\r\n\r\n return createOrUpdateCampaign(modelToSave)\r\n // with bulk the result will have shape of:\r\n // - { ...entityData } - in case of success;\r\n // - { entity: { ...entityData }, errors: [(EditorialError|MTError)] } - in case of error(s).\r\n .then((result) => {\r\n const campaign = bulkModelToViewModelForCampaign({\r\n campaignModel: result,\r\n originalCampaignViewModel: campaignViewModel,\r\n bundleCountries,\r\n });\r\n\r\n const data = {\r\n campaign,\r\n ...getErrorsPlaceholders(),\r\n };\r\n\r\n return data;\r\n }, (bulkOrSystemError) => {\r\n if (isBulkWrappedResponse(bulkOrSystemError)) {\r\n const { entity, errors } = bulkOrSystemError;\r\n const campaign = entity ?\r\n bulkModelToViewModelForCampaign({\r\n campaignModel: entity,\r\n bundleCountries,\r\n }) :\r\n campaignViewModel;\r\n\r\n let filteredErrors = errors;\r\n if (campaign.data.Id <= 0) {\r\n filteredErrors = removeReferencedEntityInvalidIdErrors(filteredErrors);\r\n }\r\n const serverErrors = modelToViewModelForBulkErrors(\r\n filteredErrors,\r\n bulkUpsertCampaignSettingsEntityErrorMap,\r\n scenario,\r\n i18n,\r\n activityLogger\r\n );\r\n\r\n const data = {\r\n campaign,\r\n ...getErrorsPlaceholders(),\r\n serverErrors,\r\n };\r\n\r\n return _.isEmpty(filteredErrors) ? data : Promise.reject(data);\r\n }\r\n\r\n // Activity\r\n // eslint-disable-next-line no-console\r\n console.warn(`Campaign bulk upsert system error: ${unexpectedBulkErrorToString(bulkOrSystemError)}`);\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n return Promise.reject({\r\n campaign: campaignViewModel,\r\n ...getErrorsPlaceholders(),\r\n serverErrors: [genericApiError],\r\n // TODO: We would want to return the criterions with Ids, but UI's bulk drops them\r\n });\r\n });\r\n};\r\n","import { saveCampaign as UnifiedAppCampaignSave } from './campaign-bulk';\r\n\r\nexport const saveCampaign = UnifiedAppCampaignSave;\r\n","import { saveAssetGroupAndLinkedData } from '@bingads-webui-campaign-react/perf-max-step-wizard';\r\n\r\nexport const saveAssetGroup = saveAssetGroupAndLinkedData;\r\n","import { useCallback, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { useLocalizeBudget } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { usePreference, preferenceNames } from '@bingads-webui-campaign-react/pmax-lite-data';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nexport const roasMtToUI = roas => (_.isNumber(roas) ? roas * 100 : null);\r\nexport const roasUiToMt = roas => (_.isNumber(roas) ? (roas / 100).toFixed(4) : null);\r\n\r\nexport const useBudgetModel = () => {\r\n const i18n = useContext(I18nContext);\r\n const { localizeBudget } = useLocalizeBudget();\r\n const [{ value: currencyPreference }] = usePreference(preferenceNames.SelectedCurrency);\r\n\r\n const budgetModelToViewModel = useCallback((campaign) => {\r\n const budgetAmount = _.get(campaign, ['Budget', 'Amount']);\r\n const bidStrategy = _.get(campaign, ['BiddingScheme', 'Type']);\r\n const bidValueCpc = _.get(campaign, ['BiddingScheme', 'ManualCPC']) || null;\r\n const bidValueCpi = _.get(campaign, ['BiddingScheme', 'ManualCPI']) || null;\r\n const cpa = _.get(campaign, ['BiddingScheme', 'TargetCpa']);\r\n const roas = parseFloat(_.get(campaign, ['BiddingScheme', 'TargetRoas'])) || null;\r\n const isInitialAdditionalDetailsChecked = _.isNumber(cpa) || _.isNumber(roas) || _.isNumber(bidValueCpc) || _.isNumber(bidValueCpi);\r\n\r\n return {\r\n budgetAmount: localizeBudget(budgetAmount, 'USD'),\r\n bidStrategy,\r\n ManualCPI: bidValueCpi,\r\n ManualCPC: bidValueCpc,\r\n currency: currencyPreference,\r\n cpa,\r\n roas: roasMtToUI(roas),\r\n isInitialAdditionalDetailsChecked,\r\n isMarketingMetricValid: true,\r\n };\r\n }, [currencyPreference, localizeBudget]);\r\n\r\n const budgetViewModelToModel = useCallback((bidStrategy, budgetAmount, bidValueCpc = null, bidValueCpi = null) => (\r\n {\r\n BiddingScheme: {\r\n Type: bidStrategy,\r\n ...(bidStrategy === 'ManualCpc' && bidValueCpc !== null && { ManualCpc: bidValueCpc }),\r\n ...(bidStrategy === 'ManualCpa' && bidValueCpi !== null && { ManualCpi: bidValueCpi }),\r\n },\r\n Budget: {\r\n Amount: i18n.parseDecimal(budgetAmount),\r\n Type: 'DailyStandard',\r\n },\r\n }), [i18n]);\r\n\r\n const isBudgetInputValid = (isBudgetValid, isMarketingMetricValid) =>\r\n isBudgetValid && isMarketingMetricValid;\r\n\r\n return {\r\n budgetModelToViewModel,\r\n budgetViewModelToModel,\r\n isBudgetInputValid,\r\n };\r\n};\r\n","import classNames from 'classnames';\r\nimport { useResponsiveStyles } from '@bingads-webui-campaign-react/common-hooks';\r\n\r\nexport const useResponsiveStyleWrapper = (getStylesFunction) => {\r\n const getResponsiveStyles = useResponsiveStyles(getStylesFunction);\r\n\r\n return className => classNames(getResponsiveStyles(className));\r\n};\r\n","export const StoreTypes = {\r\n WindowsAppStore: 'WindowsAppStore',\r\n AndroidPlayStore: 'AndroidPlayStore',\r\n IosAppStore: 'IosAppStore',\r\n};\r\n\r\nexport const FLOWS = {\r\n ANDROID: 'ANDROID',\r\n IOS: 'IOS',\r\n WINDOWS: 'WINDOWS',\r\n};\r\n\r\nexport const AppStoreTypes = {\r\n GoogleAppStore: 'GoogleAppStore',\r\n AppleAppStore: 'AppleAppStore',\r\n MicrosoftAppStore: 'MicrosoftAppStore',\r\n};\r\n\r\nexport const APP_STORE_TO_STORE_TYPE = {\r\n [AppStoreTypes.GoogleAppStore]: StoreTypes.AndroidPlayStore,\r\n [AppStoreTypes.AppleAppStore]: StoreTypes.IosAppStore,\r\n [AppStoreTypes.MicrosoftAppStore]: StoreTypes.WindowsAppStore,\r\n};\r\n\r\nexport const STORE_TYPE_TO_FLOW = {\r\n [StoreTypes.WindowsAppStore]: FLOWS.WINDOWS,\r\n [StoreTypes.AndroidPlayStore]: FLOWS.ANDROID,\r\n [StoreTypes.IosAppStore]: FLOWS.IOS,\r\n};\r\n","import { PANEL_KEYS } from '@bingads-webui-campaign-react/wizard-shared-components';\r\nimport { FLOWS } from './constants';\r\n\r\nexport const getAssetsPanels = (flow) => {\r\n const defaultPanels = [\r\n PANEL_KEYS.SHORT_HEADLINES,\r\n PANEL_KEYS.VIDEOS,\r\n ];\r\n\r\n if (flow === FLOWS.WINDOWS) {\r\n defaultPanels.push(PANEL_KEYS.PRONG_IMAGES);\r\n defaultPanels.push(PANEL_KEYS.SPOTLIGHT_IMAGES);\r\n defaultPanels.push(PANEL_KEYS.LOGOS);\r\n }\r\n\r\n if (flow === FLOWS.ANDROID || flow === FLOWS.IOS) {\r\n defaultPanels.push(PANEL_KEYS.DESCRIPTIONS);\r\n defaultPanels.push(PANEL_KEYS.IMAGES);\r\n }\r\n\r\n return defaultPanels;\r\n};\r\n\r\nexport const getAssetsSettingsPanels = (flow) => {\r\n const panels = getAssetsPanels(flow);\r\n\r\n panels.push(PANEL_KEYS.AUDIENCE_SIGNAL);\r\n\r\n return panels;\r\n};\r\n","export const parseFileName = (nameWithExtension) => {\r\n let nameWithoutExt = null;\r\n let ext = null;\r\n\r\n if (nameWithExtension) {\r\n const index = nameWithExtension.lastIndexOf('.');\r\n if (index > 0) {\r\n nameWithoutExt = nameWithExtension.slice(0, index);\r\n ext = nameWithExtension.slice(index);\r\n } else {\r\n nameWithoutExt = nameWithExtension;\r\n ext = '';\r\n }\r\n }\r\n\r\n return {\r\n nameWithoutExt,\r\n ext,\r\n };\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nimport { FileDragger } from '@bingads-webui-campaign-react/file-dragger';\r\nimport { FilePicker as BackboneFilePicker } from '@bingads-webui/file-picker';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { parseFileName } from '../utils/parse-file';\r\n\r\nexport class FilePicker extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n,\r\n enableMultiple,\r\n allowedFileExtensions,\r\n showExtensionError,\r\n useButton,\r\n } = props;\r\n const filePickerOptions = {\r\n allowedFileExtensions,\r\n i18n,\r\n isNative: false,\r\n displayFilePath: 'filename',\r\n enableMultiple,\r\n useButton,\r\n };\r\n\r\n // This dependency injection is only for test purpose\r\n // For the implementation is coupled tightly with BackboneFilePicker\r\n this.filePicker = this.props.filePicker ? this.props.filePicker : new BackboneFilePicker(filePickerOptions);\r\n\r\n this.filePicker.on('validated', this.readFile);\r\n this.filePicker.on('error.extension', () => { showExtensionError(); });\r\n\r\n this.filePicker.render();\r\n this.filePicker.$('.remove-file').remove();\r\n this.filePicker.$('.file-text').hide();\r\n\r\n this.state = {\r\n isFileDraging: false,\r\n };\r\n\r\n // Only for test purpose\r\n if (this.props.testRef) {\r\n this.props.testRef.current = {\r\n filePicker: this.filePicker,\r\n readFile: this.readFile.bind(this),\r\n getReachFileSizeLimitErrorMessage: this.props.getReachFileSizeLimitErrorMessage.bind(this),\r\n };\r\n }\r\n }\r\n\r\n readFile = (fileObjects) => {\r\n const {\r\n onFileRead,\r\n showErrors,\r\n onFileSelected,\r\n maximumFileSizeMB,\r\n isReachFileSizeLimit,\r\n getReachFileSizeLimitErrorMessage,\r\n } = this.props;\r\n\r\n const selectedFiles = !_.isUndefined(fileObjects) && fileObjects.length > 0 ? fileObjects :\r\n this.filePicker.fileObjects;\r\n\r\n if (selectedFiles) {\r\n const selectedFilesCount = selectedFiles.length;\r\n let fileIndex;\r\n const errorArr = [];\r\n\r\n for (fileIndex = 0; fileIndex < selectedFilesCount; fileIndex += 1) {\r\n const fileObj = selectedFiles[fileIndex];\r\n const fileSizeMB = (fileObj.size / 1024 / 1024).toFixed(3);\r\n let reachLimit;\r\n\r\n if (isReachFileSizeLimit) {\r\n const { ext } = parseFileName(fileObj.name);\r\n reachLimit = isReachFileSizeLimit({ ext, fileSizeMB });\r\n } else {\r\n reachLimit = maximumFileSizeMB > 0 && fileSizeMB > maximumFileSizeMB;\r\n }\r\n\r\n if (reachLimit) {\r\n errorArr.push(getReachFileSizeLimitErrorMessage(_.extend({\r\n fileSizeMB,\r\n }, !isReachFileSizeLimit && { maximumFileSizeMB })));\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (_.isEmpty(errorArr)) {\r\n if (_.isFunction(onFileSelected)) {\r\n onFileSelected(selectedFiles);\r\n }\r\n\r\n return onFileRead(selectedFiles);\r\n }\r\n\r\n showErrors(errorArr);\r\n } // else no media picked, so do nothing\r\n\r\n return ''; // for testability\r\n };\r\n\r\n handleDraging = (isDraging) => {\r\n this.setState({\r\n isFileDraging: isDraging,\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n i18n,\r\n enableDrag,\r\n hideDescription,\r\n allowedFileExtensions,\r\n showExtensionError,\r\n fileDraggerLabel,\r\n fileDraggerTip,\r\n fileDraggerDropDescription,\r\n useLargeStyling,\r\n } = this.props;\r\n\r\n const {\r\n isFileDraging,\r\n } = this.state;\r\n\r\n const fileButton = (\r\n
\r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n {!hideDescription &&\r\n
\r\n {i18n.getString('ImageExperience_Choose_File_Description')}\r\n
\r\n }\r\n {\r\n !enableDrag ?\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\nFilePicker.propTypes = {\r\n onFileRead: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n showErrors: PropTypes.func.isRequired,\r\n enableMultiple: PropTypes.bool,\r\n enableDrag: PropTypes.bool,\r\n hideDescription: PropTypes.bool,\r\n fileDraggerLabel: PropTypes.string,\r\n fileDraggerTip: PropTypes.string,\r\n fileDraggerDropDescription: PropTypes.string,\r\n onFileSelected: PropTypes.func,\r\n allowedFileExtensions: PropTypes.arrayOf(PropTypes.string),\r\n showExtensionError: PropTypes.func,\r\n\r\n maximumFileSizeMB: PropTypes.number,\r\n isReachFileSizeLimit: PropTypes.func,\r\n getReachFileSizeLimitErrorMessage: PropTypes.func,\r\n useLargeStyling: PropTypes.bool,\r\n useButton: PropTypes.bool,\r\n};\r\n\r\nFilePicker.defaultProps = {\r\n enableMultiple: false,\r\n enableDrag: false,\r\n hideDescription: false,\r\n onFileSelected: _.noop(),\r\n allowedFileExtensions: [],\r\n showExtensionError: _.noop,\r\n\r\n fileDraggerLabel: '',\r\n fileDraggerTip: '',\r\n fileDraggerDropDescription: '',\r\n\r\n // below two are conflict and isReachFileSizeLimit takes higher priority\r\n isReachFileSizeLimit: undefined,\r\n maximumFileSizeMB: undefined,\r\n getReachFileSizeLimitErrorMessage: _.noop,\r\n useLargeStyling: false,\r\n useButton: false,\r\n};\r\n","import Promise from 'bluebird';\r\n\r\nexport const readFileAsDataURLAsync = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.addEventListener('load', (e) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n reader.onerror = reject;\r\n\r\n reader.readAsDataURL(file);\r\n});\r\n","export const MaximumImageFileSizeMB = 50;\r\nexport const MaximumVideoFileSizeMB = 1e4;\r\n\r\n// Refer to https://docs.microsoft.com/en-us/azure/media-services/latest/encode-media-encoder-standard-formats-reference\r\n// Plus some additional video formats supported by Xandr confirmed by Weiyuan to work with AMS\r\nexport const allowedVideoFileExtensions = [\r\n '.flv',\r\n '.mxf',\r\n '.gxf',\r\n '.ts',\r\n '.ps',\r\n '.3gp',\r\n '.3gpp',\r\n '.mpg',\r\n '.wmv',\r\n '.asf',\r\n '.avi',\r\n '.mp4',\r\n '.m4a',\r\n '.m4v',\r\n '.isma',\r\n '.ismv',\r\n '.dvr-ms',\r\n '.mkv',\r\n '.wav',\r\n '.mov',\r\n '.vob',\r\n '.ogv',\r\n '.qt',\r\n '.mpv',\r\n '.m2v',\r\n '.3g2',\r\n '.swf',\r\n '.mpeg',\r\n '.mpe',\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nimport { FilePicker } from './file-picker';\r\nimport { readFileAsDataURLAsync } from '../utils/read-file';\r\nimport { MaximumImageFileSizeMB } from '../utils/constants';\r\n\r\n// Refer to https://docs.microsoft.com/en-us/azure/media-services/latest/encode-media-encoder-standard-formats-reference\r\nconst defaultAllowedImageExtensions = ['.png', '.jpg', '.jpeg', '.gif'];\r\n\r\n// to reuse existing test coverage, still keep class format\r\nexport class ImageFilePicker extends React.PureComponent {\r\n onFileReadInternal = (selectedFiles) => {\r\n const { onFileRead } = this.props;\r\n\r\n return Promise.map(\r\n selectedFiles,\r\n fileObj => readFileAsDataURLAsync(fileObj)\r\n ).then((imageSources) => {\r\n onFileRead(imageSources, selectedFiles);\r\n });\r\n };\r\n\r\n getReachFileSizeLimitErrorMessage = ({ fileSizeMB, maximumFileSizeMB }) => {\r\n const { enableMultiple, i18n } = this.props;\r\n let errorMsg;\r\n\r\n if (enableMultiple) {\r\n errorMsg = i18n.getString('ImageExperience_MultipleUpload_FileSize_TooBig', {\r\n maximumFileSize: maximumFileSizeMB,\r\n });\r\n } else {\r\n errorMsg = i18n.getString('ImageExperience_FileSize_Too_Big_Template', {\r\n fileSize: fileSizeMB,\r\n maximumFileSize: maximumFileSizeMB,\r\n });\r\n }\r\n\r\n return errorMsg;\r\n };\r\n\r\n showExtensionError = () => {\r\n const {\r\n i18n, showErrors, enableMultiple, isMultimediaAd, isAudienceAd,\r\n } = this.props;\r\n\r\n let errorLinkText;\r\n let errorTopic;\r\n\r\n if (isMultimediaAd) {\r\n errorLinkText = i18n.getString(_TL_('About multimedia ads'));\r\n errorTopic = 'app54810';\r\n } else if (isAudienceAd) {\r\n errorLinkText = i18n.getString('ImageExperience_BestPracticeHelp');\r\n errorTopic = 'app54718';\r\n } else {\r\n errorLinkText = i18n.getString(_TL_('About image guidelines and policies'));\r\n errorTopic = 'app54718';\r\n }\r\n\r\n showErrors([\r\n \r\n {i18n.getString(`ImageExperience_${enableMultiple ? 'MultipleUpload_' : ''}Error_MediaFormatNotSupported`)}\r\n \r\n ,\r\n ]);\r\n };\r\n\r\n render() {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n onFileRead, minimumSize, maxUploadNum, ...rest\r\n } = this.props;\r\n const { i18n } = rest;\r\n let fileDraggerTip = maxUploadNum >= 0 ? i18n.getString('ImageExperience_Drag_File_Maximum_Upload_Num', { maxCount: maxUploadNum }) : '';\r\n if (!_.isUndefined(minimumSize) && _.isArray(minimumSize) && minimumSize.length > 1) {\r\n if (fileDraggerTip) {\r\n fileDraggerTip += ' ';\r\n }\r\n fileDraggerTip += i18n.getString('ImageExperience_Drag_File_Minimum_Size_Tip', { width: minimumSize[0], height: minimumSize[1] });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nImageFilePicker.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onFileRead: PropTypes.func.isRequired,\r\n isMultimediaAd: PropTypes.bool,\r\n isAudienceAd: PropTypes.bool,\r\n showErrors: PropTypes.func.isRequired,\r\n minimumSize: PropTypes.arrayOf(PropTypes.number),\r\n maxUploadNum: PropTypes.number,\r\n enableMultiple: PropTypes.bool,\r\n};\r\n\r\nImageFilePicker.defaultProps = {\r\n isMultimediaAd: false,\r\n isAudienceAd: false,\r\n minimumSize: [],\r\n maxUploadNum: -1,\r\n enableMultiple: false,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\n\r\nimport { FilePicker } from './file-picker';\r\nimport { MaximumVideoFileSizeMB, allowedVideoFileExtensions } from '../utils/constants';\r\n\r\n// to reuse existing test coverage, still keep class format\r\nexport class VideoFilePicker extends React.PureComponent {\r\n onFileReadInternal = (selectedFiles) => {\r\n const { onFileRead, enableMultiple } = this.props;\r\n\r\n return onFileRead(enableMultiple ? selectedFiles: _.first(selectedFiles));\r\n };\r\n\r\n\r\n getReachFileSizeLimitErrorMessage = () => {\r\n const { i18n } = this.props;\r\n\r\n return i18n.getString(\r\n 'ImageExperience_Video_FileSize_Too_Big_Template',\r\n {\r\n maximumFileSize: MaximumVideoFileSizeMB / 1000,\r\n }\r\n );\r\n };\r\n\r\n showExtensionError = () => {\r\n const {\r\n i18n, showErrors, enableMultiple,\r\n } = this.props;\r\n\r\n const errorLinkText = i18n.getString('ImageExperience_BestPracticeHelp_Video');\r\n const errorTopic = 'app54794';\r\n\r\n showErrors([\r\n \r\n {i18n.getString(`ImageExperience_${enableMultiple ? 'MultipleUpload_' : ''}Error_MediaFormatNotSupported`)}\r\n \r\n ,\r\n ]);\r\n };\r\n\r\n render() {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { onFileRead, enableMultiple, ...rest } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nVideoFilePicker.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n enableMultiple: PropTypes.bool,\r\n onFileRead: PropTypes.func,\r\n showErrors: PropTypes.func.isRequired,\r\n};\r\n\r\nVideoFilePicker.defaultProps = {\r\n enableMultiple: false,\r\n onFileRead: _.noop,\r\n};\r\n","export const baseStyles = {\r\n imageItemBox: {\r\n marginBottom: '16px',\r\n marginRight: '16px',\r\n width: '298px',\r\n height: '274px',\r\n borderRadius: '4px',\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.1), 0px 1.6px 3.6px rgba(0, 0, 0, 0.13)',\r\n overflow: 'hidden',\r\n },\r\n imageContent: {\r\n width: '100%',\r\n height: '200px',\r\n objectFit: 'contain',\r\n },\r\n};\r\n\r\nexport const uploadPreviewStyle = (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n uploadPreviewContainer: {\r\n width: '100%',\r\n },\r\n uploadTitle: {\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: palette.neutralSecondary,\r\n textAlign: 'center',\r\n },\r\n imagePreviewContainer: {\r\n marginTop: '16px',\r\n width: '100%',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n maxHeight: '637px',\r\n overflowY: 'scroll',\r\n scrollBar: 'none',\r\n '&::-webkit-scrollbar': {\r\n width: '0',\r\n display: 'none',\r\n },\r\n },\r\n imageItemBox: {\r\n ...baseStyles.imageItemBox,\r\n backgroundColor: palette.neutralLighterAlt,\r\n },\r\n imageItemBoxRight: {\r\n marginRight: '0',\r\n },\r\n imageItemErrBox: {\r\n backgroundColor: '#FDE7E9', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n position: 'relative',\r\n },\r\n imageContent: {\r\n ...baseStyles.imageContent,\r\n },\r\n imageName: {\r\n marginTop: '12px',\r\n marginLeft: '18px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n color: palette.neutralPrimary,\r\n width: '206px',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n progressBox: {\r\n margin: '0 18px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n progressLine: {\r\n marginTop: '8px',\r\n width: '206px',\r\n height: '2px',\r\n backgroundColor: palette.neutralLight,\r\n overflow: 'hidden',\r\n },\r\n statusIcon: {\r\n fontFamily: iconFontFamily,\r\n lineHeight: '16px',\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n },\r\n completeIcon: {\r\n color: palette.green,\r\n display: 'block',\r\n '&:before': {\r\n content: '\"\\\\EC61\"',\r\n },\r\n transition: 'all 0.6s ease',\r\n },\r\n ongoingIcon: {\r\n color: palette.themePrimary,\r\n '&:before': {\r\n content: '\"\\\\E898\"',\r\n },\r\n },\r\n errorIcon: {\r\n position: 'absolute',\r\n bottom: '32px',\r\n right: '18px',\r\n color: '#A80000', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n '&:before': {\r\n content: '\"\\\\EA39\"',\r\n },\r\n },\r\n errorMsg: {\r\n marginTop: '8px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#A80000', // hardcoded; not exported from fluent/theme package, but is used by fluent ui (see Messaging Colors)\r\n marginLeft: '18px',\r\n },\r\n imageSize: {\r\n marginTop: '2px',\r\n marginLeft: '18px',\r\n fontFamily: 'Segoe UI',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n },\r\n});\r\n","import React, { useContext, useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Progress } from '@bingads-webui-react/progress';\r\n\r\nimport { uploadPreviewStyle } from './styles/upload-assets-preview-style';\r\n\r\nexport const UploadPreviewWithCustomPreview = ({\r\n assetList,\r\n maxUploadNum,\r\n PreviewComponent,\r\n customClasses,\r\n showTitle,\r\n}) => {\r\n const classes = useDefaultStyles(uploadPreviewStyle);\r\n const i18n = useContext(I18nContext);\r\n\r\n const getFileSize = useCallback((fileSize) => {\r\n let size = fileSize;\r\n let fileSizeStr = '';\r\n if ((fileSize / 1024) < 1024) {\r\n size = fileSize / 1024;\r\n fileSizeStr = i18n.getString(_TL_('{{fileSize}} KB'), { fileSize: size.toFixed(2) });\r\n } else {\r\n size = fileSize / 1024 / 1024;\r\n fileSizeStr = i18n.getString(_TL_('{{fileSize}} MB'), { fileSize: size.toFixed(2) });\r\n }\r\n\r\n return fileSizeStr;\r\n }, [i18n]);\r\n\r\n const normalInfoBox = item => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
{getFileSize(item.size)}
\r\n
\r\n );\r\n\r\n const errorInfoBox = () => (\r\n
\r\n \r\n
{i18n.getString(_TL_('Upload failed. Maximum limit reached.'))}
\r\n
\r\n );\r\n\r\n const uploadTitle = i18n.getString(_TL_('Uploading {{uploadingNum}} files...'), { uploadingNum: maxUploadNum ? Math.min(maxUploadNum, assetList.length) : assetList.length });\r\n\r\n const previewComponentClasses = useMemo(() => ({\r\n imageContent: classnames(classes.imageContent, customClasses.imageContent),\r\n imageContentText: classnames(customClasses.imageContentText),\r\n }), [customClasses, classes]);\r\n\r\n return (\r\n assetList && assetList.length > 0 ?\r\n
\r\n {\r\n showTitle && (\r\n
\r\n {uploadTitle}\r\n
\r\n )\r\n }\r\n
\r\n {\r\n assetList.map((item, index) => {\r\n const exceedMaxUploadNum = maxUploadNum && index >= maxUploadNum;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { progress, ...rest } = item;\r\n\r\n return (\r\n \r\n \r\n
{item.name}
\r\n {\r\n exceedMaxUploadNum ? errorInfoBox() : normalInfoBox(item)\r\n }\r\n
\r\n );\r\n })\r\n }\r\n
\r\n
: null\r\n );\r\n};\r\nUploadPreviewWithCustomPreview.propTypes = {\r\n assetList: PropTypes.arrayOf(PropTypes.shape({\r\n url: PropTypes.string,\r\n progress: PropTypes.number,\r\n name: PropTypes.string,\r\n size: PropTypes.number,\r\n })).isRequired,\r\n maxUploadNum: PropTypes.number,\r\n PreviewComponent: PropTypes.func.isRequired,\r\n customClasses: PropTypes.shape({}),\r\n showTitle: PropTypes.bool,\r\n};\r\n\r\nUploadPreviewWithCustomPreview.defaultProps = {\r\n customClasses: {},\r\n showTitle: true,\r\n maxUploadNum: undefined,\r\n};\r\n\r\nexport const SimpleImagePreview = ({ className, url, alt }) => (\r\n {alt}\r\n);\r\n\r\nSimpleImagePreview.propTypes = {\r\n className: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n alt: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const UploadPreview = props => (\r\n \r\n);\r\n","/* eslint-disable max-len */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Progress, RadialProgress } from '@bingads-webui-react/progress';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getCircleProgressStyle } from '@bingads-webui-campaign/shared-image-experience-styles';\r\n\r\nconst BarUploadProgress = (props) => {\r\n const uploadProcessText = `${((100 * props.uploadedBytes) / props.totalBytes).toFixed(1)} %`;\r\n\r\n return (\r\n
\r\n \r\n
{uploadProcessText}
\r\n
);\r\n};\r\n\r\nconst CircleUploadProgress = (props) => {\r\n const styles = useDefaultStyles(getCircleProgressStyle);\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const UploadProgress = (props) => {\r\n switch (props.type) {\r\n case 'bar':\r\n return ;\r\n case 'circle':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nUploadProgress.propTypes = {\r\n totalBytes: PropTypes.number.isRequired,\r\n uploadedBytes: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n parseDecimal: PropTypes.func.isRequired,\r\n }).isRequired,\r\n type: PropTypes.string,\r\n};\r\n\r\nBarUploadProgress.propTypes = UploadProgress.propTypes;\r\nCircleUploadProgress.propTypes = UploadProgress.propTypes;\r\n\r\nUploadProgress.defaultProps = {\r\n type: 'bar',\r\n};\r\n","import { map } from 'underscore';\r\n\r\n// for uploading image during crud-ad workflow, there are additional\r\n// async operations needed after the asset upload to MT is complete\r\n// so the default boundary on the progress bar is set to 80% to account\r\n// for the additional time needed to process the image for crud-ad\r\nexport const defaultUploadProgressBoundary = 0.8;\r\n\r\n/**\r\n * Helper to update the state of the progress bar based on current upload progress\r\n * @param {function} setProgress - function to update progress of files being uploaded\r\n * @param {number} index - index of the image being uploading within the array of images\r\n * to be uploaded\r\n * @param {number} uploadProgressBoundary - custom upload progress boundary for use in cases\r\n * where the amount of processing happening after upload to MT is complete is different than\r\n * default case used by crud-ad workflow. 1 is 100% (show full progress bar when upload is done).\r\n * @returns {function} event handler function which will take an event with loaded/total properties\r\n * and update progress based on the loaded state\r\n */\r\nexport const updateProgress = ({ setProgress, index, uploadProgressBoundary }) => (evt) => {\r\n const boundary = uploadProgressBoundary || defaultUploadProgressBoundary;\r\n const progress = (evt.loaded / evt.total) * boundary;\r\n\r\n setProgress(index, progress);\r\n};\r\n\r\n/**\r\n * Helper to update the progress of files in the array of files to be uploaded. Returns\r\n * a function which can directly be passed into setState if maintaining previewImageArr\r\n * via class component state.\r\n * @param {number} index - index of the file being uploading within the array of files\r\n * to be uploaded\r\n * @param {number} progress - current progress of uploading.\r\n * @returns {function} takes array of files to be uploaded as argument, will update the\r\n * progress of the file specified by index in the upload preview array\r\n */\r\nexport const updateFilePreviewArrayUploadProgress = (index, progress) => ({ previewArr }) => {\r\n const newPreviewArr = map(previewArr, (previous, i) => {\r\n if (i === index) {\r\n return {\r\n ...previous,\r\n progress,\r\n };\r\n }\r\n return previous;\r\n });\r\n\r\n return { previewArr: newPreviewArr };\r\n};\r\n\r\n/**\r\n * Helper to generate an array of files to be uploaded with properties used by the\r\n * upload progress UI.\r\n * @param {array} selectedFiles - array containing file objects\r\n * @param {array} fileSources - array of file data encoded as string.\r\n * @param {array} parsedInfos - array of object containing parsed info of each file.\r\n * @returns {array} array of files to be uploaded with properties\r\n * url (file data encoded), progress (0 for now, will be updated as file starts uploading),\r\n * size, name\r\n */\r\nexport const generatePreviewArray = ({ files = [], fileSources, customizedOptions = [] }) => {\r\n const previewArr = map(fileSources, (source, index) => {\r\n const uploadInfo = {\r\n url: source,\r\n progress: 0,\r\n size: files[index] ? files[index].size : 0,\r\n name: files[index] ? files[index].name : '',\r\n ...(customizedOptions[index] || {}),\r\n };\r\n return uploadInfo;\r\n });\r\n\r\n return previewArr;\r\n};\r\n","import { validateImageSyncAsyncWithDimensionParams } from '@bingads-webui-campaign/image-experience-utils';\r\n\r\n// Put all validations in this package along with the view\r\nexport const validateImageAsync = ({\r\n imageSource,\r\n minimumWidth,\r\n minimumHeight,\r\n}) => validateImageSyncAsyncWithDimensionParams({\r\n imageSource,\r\n minimumWidth,\r\n minimumHeight,\r\n});\r\n\r\n// currently there is no client side check, so here leave an empty interface\r\nexport const validateVideoAsync = () => Promise.resolve(true);\r\n","import _ from 'underscore';\r\n\r\nconst defaultProtocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport const buildUrl = ({ protocol = '', url = '', protocols = defaultProtocols } = {}) => {\r\n const prefix = (_.findWhere(\r\n protocols,\r\n { value: protocol }\r\n ) || { text: '' }).text;\r\n return `${prefix}${url}`;\r\n};\r\n","export const parseUrl = (url) => {\r\n const urlRegex = new RegExp('^(?:\\\\s*(?:(\\\\S+):\\\\/\\\\/)?(?:(.+))?)?', 'i');\r\n const regexResult = urlRegex.exec(url);\r\n return { protocol: regexResult && regexResult[1], url: regexResult && regexResult[2] };\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { Input, Select } from '@bingads-webui-react/primitive';\r\nimport { buildUrl } from './build-url';\r\nimport { parseUrl } from './parse-url';\r\n\r\nconst protocols = [{\r\n value: 'https',\r\n text: 'https://',\r\n}, {\r\n value: 'http',\r\n text: 'http://',\r\n}];\r\n\r\nexport class UrlEditor extends React.Component {\r\n static propTypes = {\r\n id: PropTypes.string,\r\n containerClassName: PropTypes.string,\r\n selectClassName: PropTypes.string,\r\n inputClassName: PropTypes.string,\r\n url: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n protocols: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n })),\r\n ariaProtocolLabelledBy: PropTypes.string,\r\n ariaUrlLabelledBy: PropTypes.string,\r\n ariaProtocolLabel: PropTypes.string,\r\n ariaUrlLabel: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n id: undefined,\r\n containerClassName: undefined,\r\n selectClassName: undefined,\r\n inputClassName: undefined,\r\n url: '',\r\n protocols,\r\n ariaProtocolLabelledBy: undefined,\r\n ariaUrlLabelledBy: undefined,\r\n ariaProtocolLabel: undefined,\r\n ariaUrlLabel: undefined,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let { protocol, url } = parseUrl(props.url);\r\n protocol = protocol || _.first(props.protocols).value;\r\n url = url || '';\r\n this.state = { protocol, url };\r\n }\r\n\r\n onUrlChange = (url) => {\r\n this.props.onChange(url);\r\n }\r\n\r\n onUrlPartChange = (e) => {\r\n const rawInput = e.target.value;\r\n let { protocol, url } = parseUrl(rawInput);\r\n if (!protocol || (protocol && !_.findWhere(this.props.protocols, { value: protocol }))) {\r\n // ignoring not supported protocols\r\n // and keeping URL input's value\r\n protocol = null;\r\n url = rawInput;\r\n }\r\n\r\n const newUrl = url || '';\r\n const newProtocol = protocol || this.state.protocol;\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol: newProtocol,\r\n url: newUrl.trim(),\r\n }) : '';\r\n\r\n this.setState({ url: newUrl, protocol: newProtocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n onProtocolPartChange = (e) => {\r\n e.stopPropagation();\r\n const protocol = e.target.value;\r\n const url = this.state.url.trim();\r\n\r\n const fullUrl = url ? this.buildFullUrl({\r\n protocol,\r\n url,\r\n }) : '';\r\n\r\n this.setState({ protocol });\r\n this.onUrlChange(fullUrl);\r\n }\r\n\r\n buildFullUrl = ({ protocol, url }) => buildUrl({ protocol, url, protocols: this.props.protocols })\r\n\r\n render() {\r\n const { protocol, url } = this.state;\r\n\r\n return (\r\n
\r\n \r\n {this.props.protocols.map(option => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst UrlEditorValidationAdapter = AdapterFactory({\r\n valueToInject: 'url',\r\n});\r\n\r\nexport const UrlEditorWithValidation = withError(withValidation(\r\n UrlEditor,\r\n UrlEditorValidationAdapter\r\n));\r\n","import _ from 'underscore';\r\nimport React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { UrlEditorWithValidation } from './url-editor';\r\n\r\nexport function UrlEditorForArray(props) {\r\n const [url, setUrl] = useState(_.first(props.value[props.field]));\r\n const urlSchema = {\r\n properties: {\r\n url: {\r\n ...props.schema.properties[props.field],\r\n type: 'string',\r\n },\r\n },\r\n };\r\n\r\n const onUrlChange = (newUrl) => {\r\n setUrl(newUrl);\r\n const urls = newUrl ? [newUrl] : [];\r\n props.onChange({\r\n [props.field]: urls,\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nUrlEditorForArray.propTypes = {\r\n value: PropTypes.shape({}),\r\n onChange: PropTypes.func.isRequired,\r\n schema: PropTypes.shape({\r\n properties: PropTypes.shape({}),\r\n }).isRequired,\r\n field: PropTypes.string.isRequired,\r\n};\r\n\r\nUrlEditorForArray.defaultProps = {\r\n value: undefined,\r\n};\r\n","\r\nimport _ from 'underscore';\r\nimport { isValidUrl, getUrlProtocolAndDomain } from '@bingads-webui/url-util';\r\n\r\nconst isValidCustomUrlProtocol = (url) => {\r\n const uriRegex = /^(\\S+:(\\/\\/)?)(\\S+)/;\r\n return uriRegex.test(url);\r\n};\r\n\r\nconst doesUrlContainUnsafeCharacters = (url) => {\r\n const specialCharactersRegex = /[\\s<>{}]/;\r\n return specialCharactersRegex.test(url);\r\n};\r\n\r\nexport const UrlLengthLimit = 2048;\r\n/**\r\n * Validate a URL.\r\n * @param {String} url - Fully qualified ad HTTP/S URL, including the prefix.\r\n * @param {String} requiredUrlProtocolAndDomain - Protocol and domain name that the ad URL must use.\r\n * @param {Object} [i18n] - i18n library.\r\n * @param {Number} [urlLengthLimit] - Maximum number of characters allowed in the URL.\r\n * @param {Boolean} [customUrlProtocol] - Whether the URL can have a custom protocol.\r\n * @param {Boolean} [enableSpecialCharactersValidation] - Whether to validate special characters in the URL.\r\n * @returns {String} - Null if URL is valid. Otherwise an error message.\r\n */\r\nexport function validateAdUrl(url, requiredUrlProtocolAndDomain, i18n = { getString: _.identity }, urlLengthLimit = UrlLengthLimit, customUrlProtocol = false, enableSpecialCharactersValidation = false) {\r\n if (!url) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (enableSpecialCharactersValidation && doesUrlContainUnsafeCharacters(url)) {\r\n return i18n.getString(_TL_('The URL contains invalid characters.'));\r\n }\r\n\r\n if (_.size(url) > urlLengthLimit) {\r\n return i18n.getString(_TL_('The number of characters in this field cannot exceed {{lengthLimit}}'), { lengthLimit: urlLengthLimit });\r\n }\r\n\r\n if ((customUrlProtocol && !isValidCustomUrlProtocol(url)) || (!customUrlProtocol && !isValidUrl(url))) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (!_.isEmpty(requiredUrlProtocolAndDomain)) {\r\n // Google requires search ads in the same ad group have the same display URL domain\r\n // See: https://support.google.com/adspolicy/answer/6088505?hl=en-GB\r\n const adUrlProtocolAndDomain = getUrlProtocolAndDomain(url);\r\n if (requiredUrlProtocolAndDomain !== adUrlProtocolAndDomain) {\r\n return i18n.getString(_TL_('This ad\\'s final URL must have the same domain as the other ads in this campaign.'));\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nconst pathLengthLimitErrorMessages = [\r\n _TL_('Path 1 cannot exceed 15 characters.'),\r\n _TL_('Path 2 cannot exceed 15 characters.'),\r\n];\r\nconst pathLengthLimit = 15;\r\n\r\nexport function validatePath(values, i18n) {\r\n const errors = [];\r\n const path1 = _.isEmpty(values[0]) ? '' : values[0].trim();\r\n const path2 = _.isEmpty(values[1]) ? '' : values[1].trim();\r\n if (_.isEmpty(path1) && !_.isEmpty(path2)) {\r\n errors.push(i18n.getString(_TL_('In order to use path 2, path 1 must also be used.')));\r\n }\r\n\r\n _.each(values, (field, index) => {\r\n if (field && _.size(field) > pathLengthLimit) {\r\n errors.push(i18n.getString(pathLengthLimitErrorMessages[index]));\r\n }\r\n });\r\n\r\n return errors;\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useStyles = makeStyles({\r\n urlInputContainer: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n width: 'auto',\r\n height: 'auto',\r\n boxSizing: 'border-box',\r\n '> *': {\r\n textOverflow: 'ellipsis',\r\n },\r\n ...shorthands.gap('16px'),\r\n },\r\n urlInput: {\r\n height: 'auto',\r\n width: 'auto',\r\n flexGrow: 1,\r\n },\r\n urlProtocol: {\r\n minWidth: 'unset',\r\n },\r\n customUrlProtocol: {\r\n width: '100px',\r\n },\r\n urlPath: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n wordBreak: 'break-all',\r\n alignItems: 'baseline',\r\n ...shorthands.gap('6px'),\r\n },\r\n});\r\n","import { noop, isString } from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, mergeClasses } from '@fluentui/react-components';\r\nimport { getDomain } from '@bingads-webui/url-util';\r\n\r\nimport { validatePath } from './validation';\r\nimport { useStyles } from './styles';\r\n\r\nexport function UrlPathFluent({\r\n value,\r\n url,\r\n i18n,\r\n onChange,\r\n}) {\r\n const [Path1, Path2] = value;\r\n const urlDomain = useMemo(() => getDomain(url), [url]);\r\n const onPathChange = useCallback((path, { value: newValue }) => {\r\n const errors = validatePath([path === 'Path1' ? newValue : Path1, path === 'Path2' ? newValue : Path2], i18n);\r\n onChange(errors, { [path]: newValue });\r\n }, [Path1, Path2, i18n, onChange]);\r\n\r\n const onPath1Change = useCallback((event, newValue) => {\r\n onPathChange('Path1', newValue);\r\n }, [onPathChange]);\r\n\r\n const onPath2Change = useCallback((event, newValue) => {\r\n onPathChange('Path2', newValue);\r\n }, [onPathChange]);\r\n\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n {isString(urlDomain) && urlDomain.length > 0 ?\r\n urlDomain :\r\n 'www.example.com'\r\n }\r\n
\r\n
/
\r\n \r\n
/
\r\n \r\n
\r\n );\r\n}\r\n\r\nUrlPathFluent.propTypes = {\r\n config: PropTypes.shape({\r\n }).isRequired,\r\n value: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nUrlPathFluent.defaultProps = {\r\n onChange: noop,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const URL_COLON_SLASH_SLASH = '://';\r\nexport const DEFAULT_URL_PREFIX = 'https';\r\n\r\nexport function getUrlPrefixAndDestination(finalUrl, defaultUrlPrefix = DEFAULT_URL_PREFIX) {\r\n const index = _.isString(finalUrl) ? finalUrl.indexOf(URL_COLON_SLASH_SLASH) : -1;\r\n if (index >= 0) {\r\n const prefix = finalUrl.substring(0, index).toLowerCase();\r\n const destination = finalUrl.substring(index + URL_COLON_SLASH_SLASH.length).trim();\r\n\r\n return [prefix, destination];\r\n }\r\n\r\n return [defaultUrlPrefix, ''];\r\n}\r\n\r\nexport const getUpdatedFullUrlOnPrefixUpdate =\r\n (urlWithoutPrefix, newPrefix) => {\r\n let slash = '';\r\n if (!newPrefix.includes(URL_COLON_SLASH_SLASH)) {\r\n slash = URL_COLON_SLASH_SLASH;\r\n }\r\n\r\n return `${newPrefix}${slash}${urlWithoutPrefix}`;\r\n };\r\n\r\nexport const getUpdatedFullUrlOnTextUpdate = (urlPrefix, newValue) => {\r\n if (newValue.includes(URL_COLON_SLASH_SLASH)) {\r\n // detect if the user is entering a URL and update the URL prefix\r\n const [prefix, destination] = getUrlPrefixAndDestination(newValue);\r\n\r\n if (prefix === 'http' || prefix === 'https') {\r\n return `${prefix}${URL_COLON_SLASH_SLASH}${destination}`;\r\n }\r\n }\r\n\r\n return `${urlPrefix}${URL_COLON_SLASH_SLASH}${newValue.trim()}`;\r\n};\r\n\r\nexport const isEmptyUrl = (finalUrls) => {\r\n // FinalUrlWithCustomValidation contol always specifies prefix. If destination is empty\r\n // then treat this as empty final URL. This is needed for when final URL is optional and\r\n // we want to avoid specifying prefixed empty URL.\r\n const [, dest] = getUrlPrefixAndDestination(_.first(finalUrls));\r\n return _.isEmpty(dest);\r\n};\r\n","import { noop } from 'underscore';\r\nimport React, { useCallback, useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, Option, Input, mergeClasses } from '@fluentui/react-components';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n getUrlPrefixAndDestination,\r\n getUpdatedFullUrlOnPrefixUpdate,\r\n getUpdatedFullUrlOnTextUpdate,\r\n} from './utils';\r\nimport { validateAdUrl, UrlLengthLimit } from './validation';\r\nimport { useStyles } from './styles';\r\n\r\nconst urlPrefixOptions = [\r\n { key: 'https', text: 'https://', title: 'https://' },\r\n { key: 'http', text: 'http://', title: 'http://' },\r\n];\r\n\r\nexport function UrlInputFluent({\r\n url,\r\n i18n,\r\n onChange,\r\n containerClassName,\r\n additionalValidation,\r\n prepopulateUrl,\r\n dropdownOptionAriaLabel,\r\n propertyKey,\r\n validateOnRender,\r\n additionalProperties,\r\n textFieldAriaLabel,\r\n customUrlProtocol,\r\n enableSpecialCharactersValidation,\r\n hideProtocol,\r\n}) {\r\n const activity = useContext(ActivityContext);\r\n\r\n const [urlPrefix, urlWithoutPrefix] = useMemo(\r\n () => getUrlPrefixAndDestination(url),\r\n [url]\r\n );\r\n\r\n const selectedOptionText = useMemo(() => {\r\n const selectedOption = urlPrefixOptions.filter(option => option.key === urlPrefix)[0] || urlPrefixOptions[0];\r\n return selectedOption.text;\r\n }, [urlPrefix]);\r\n\r\n const validateAndUpdateUrl = useCallback((currentURL) => {\r\n // first check URL validity. If valid then validate domain by need.\r\n let finalUrlValidatorError = validateAdUrl(currentURL, '', i18n, UrlLengthLimit, customUrlProtocol, enableSpecialCharactersValidation);\r\n if (!finalUrlValidatorError && additionalValidation) {\r\n finalUrlValidatorError = additionalValidation(currentURL);\r\n }\r\n\r\n onChange(finalUrlValidatorError ? [finalUrlValidatorError] : [], currentURL);\r\n if (activity) {\r\n activity.signal(`on${propertyKey}Change - ${JSON.stringify(currentURL)} - isValid: ${!finalUrlValidatorError}}`);\r\n }\r\n }, [activity, additionalValidation, customUrlProtocol, i18n, onChange, propertyKey]);\r\n\r\n const onUrlPrefixChanged = useCallback(\r\n (event, newItem) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, newItem.optionValue)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onCustomUrlProtocolChanged = useCallback(\r\n (event, { value }) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, value)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onTextChange = useCallback((event, { value }) => {\r\n const newValue = getUpdatedFullUrlOnTextUpdate(urlPrefix, value);\r\n\r\n if (newValue) {\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, value));\r\n }\r\n }, [validateAndUpdateUrl, urlPrefix]);\r\n\r\n useEffect(() => {\r\n if (!url && prepopulateUrl) {\r\n // Prepopulate final url with prepopulate on load if no value is provided.\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, prepopulateUrl));\r\n } else if (validateOnRender) {\r\n validateAndUpdateUrl(url);\r\n }\r\n // only validate on render and prepopulate on load\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [url]);\r\n\r\n const styles = useStyles();\r\n\r\n return (\r\n
\r\n {\r\n !hideProtocol && customUrlProtocol &&\r\n \r\n }\r\n {\r\n !hideProtocol && !customUrlProtocol && (\r\n \r\n {urlPrefixOptions.map(option => (\r\n \r\n ))}\r\n \r\n )\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nUrlInputFluent.propTypes = {\r\n containerClassName: PropTypes.string,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n onClick: PropTypes.func,\r\n additionalValidation: PropTypes.func,\r\n prepopulateUrl: PropTypes.string,\r\n dropdownOptionAriaLabel: PropTypes.string,\r\n propertyKey: PropTypes.string,\r\n validateOnRender: PropTypes.bool,\r\n additionalProperties: PropTypes.shape({}),\r\n textFieldAriaLabel: PropTypes.string.isRequired,\r\n customUrlProtocol: PropTypes.bool,\r\n enableSpecialCharactersValidation: PropTypes.bool,\r\n hideProtocol: PropTypes.bool,\r\n};\r\n\r\nUrlInputFluent.defaultProps = {\r\n onChange: noop,\r\n onClick: noop,\r\n containerClassName: '',\r\n additionalValidation: noop,\r\n prepopulateUrl: '',\r\n dropdownOptionAriaLabel: '',\r\n propertyKey: '',\r\n validateOnRender: false,\r\n additionalProperties: {},\r\n customUrlProtocol: false,\r\n enableSpecialCharactersValidation: false,\r\n hideProtocol: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { getUrlPrefixAndDestination } from './utils';\r\n\r\nexport const withNoProtocol = (WrappedComponent) => {\r\n const URLInputWithNoProtocol = (props) => {\r\n const { url, onChange, ...rest } = props;\r\n\r\n const urlWithProtocol = url ? `https://${url}` : url;\r\n\r\n const onChangeWithProtocol = (errors, currentURL) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [urlPrefix, urlWithoutPrefix] = getUrlPrefixAndDestination(currentURL);\r\n return onChange(errors, urlWithoutPrefix);\r\n };\r\n\r\n return ;\r\n };\r\n\r\n URLInputWithNoProtocol.propTypes = {\r\n url: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired.isRequired,\r\n };\r\n\r\n return URLInputWithNoProtocol;\r\n};\r\n","\r\nimport _ from 'underscore';\r\nimport { isValidUrl, getUrlProtocolAndDomain } from '@bingads-webui/url-util';\r\n\r\n\r\nconst isValidCustomUrlProtocol = (url) => {\r\n const uriRegex = /^(\\S+:(\\/\\/)?)(\\S+)/;\r\n return uriRegex.test(url);\r\n};\r\n\r\nconst doesUrlContainUnsafeCharacters = (url) => {\r\n const specialCharactersRegex = /[\\s<>{}]/;\r\n return specialCharactersRegex.test(url);\r\n};\r\n\r\nexport const UrlLengthLimit = 2048;\r\n/**\r\n * Validate a URL.\r\n * @param {String} url - Fully qualified ad HTTP/S URL, including the prefix.\r\n * @param {String} requiredUrlProtocolAndDomain - Protocol and domain name that the ad URL must use.\r\n * @param {Object} [i18n] - i18n library.\r\n * @param {Number} [urlLengthLimit] - Maximum number of characters allowed in the URL.\r\n * @param {Boolean} [customUrlProtocol] - Whether the URL can have a custom protocol.\r\n * @param {Boolean} [validateSpecialCharacters] - Whether to validate special characters in the URL.\r\n * @returns {String} - Null if URL is valid. Otherwise an error message.\r\n */\r\nexport function validateAdUrl(url, requiredUrlProtocolAndDomain, i18n = { getString: _.identity }, urlLengthLimit = UrlLengthLimit, customUrlProtocol = false, validateSpecialCharacters = false) {\r\n if (!url) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (validateSpecialCharacters && doesUrlContainUnsafeCharacters(url)) {\r\n return i18n.getString(_TL_('The URL contains invalid characters.'));\r\n }\r\n\r\n if (_.size(url) > urlLengthLimit) {\r\n return i18n.getString(_TL_('The number of characters in this field cannot exceed {{lengthLimit}}'), { lengthLimit: urlLengthLimit });\r\n }\r\n\r\n if ((customUrlProtocol && !isValidCustomUrlProtocol(url)) || (!customUrlProtocol && !isValidUrl(url))) {\r\n return i18n.getString(_TL_('Please enter a valid URL'));\r\n }\r\n\r\n if (!_.isEmpty(requiredUrlProtocolAndDomain)) {\r\n // Google requires search ads in the same ad group have the same display URL domain\r\n // See: https://support.google.com/adspolicy/answer/6088505?hl=en-GB\r\n const adUrlProtocolAndDomain = getUrlProtocolAndDomain(url);\r\n if (requiredUrlProtocolAndDomain !== adUrlProtocolAndDomain) {\r\n return i18n.getString(_TL_('This ad\\'s final URL must have the same domain as the other ads in this campaign.'));\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nconst pathLengthLimitErrorMessages = [\r\n _TL_('Path 1 cannot exceed 15 characters.'),\r\n _TL_('Path 2 cannot exceed 15 characters.'),\r\n];\r\nconst pathLengthLimit = 15;\r\n\r\nexport function validatePath(values, i18n) {\r\n const errors = [];\r\n const path1 = _.isEmpty(values[0]) ? '' : values[0].trim();\r\n const path2 = _.isEmpty(values[1]) ? '' : values[1].trim();\r\n if (_.isEmpty(path1) && !_.isEmpty(path2)) {\r\n errors.push(i18n.getString(_TL_('In order to use path 2, path 1 must also be used.')));\r\n }\r\n\r\n _.each(values, (field, index) => {\r\n if (field && _.size(field) > pathLengthLimit) {\r\n errors.push(i18n.getString(pathLengthLimitErrorMessages[index]));\r\n }\r\n });\r\n\r\n return errors;\r\n}\r\n","import { noop, isString } from 'underscore';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, TextField } from '@fluentui/react';\r\nimport { getDomain } from '@bingads-webui/url-util';\r\n\r\nimport { validatePath } from './validation';\r\n\r\nconst urlPathStyle = {\r\n root: {\r\n flexFlow: 'row wrap',\r\n wordBreak: 'break-all',\r\n },\r\n};\r\n\r\nexport function UrlPathFluent({\r\n value,\r\n url,\r\n i18n,\r\n onChange,\r\n}) {\r\n const [Path1, Path2] = value;\r\n const urlDomain = useMemo(() => getDomain(url), [url]);\r\n const onPathChange = useCallback((path, newValue) => {\r\n const errors = validatePath([path === 'Path1' ? newValue : Path1, path === 'Path2' ? newValue : Path2], i18n);\r\n onChange(errors, { Path1, Path2, [path]: newValue });\r\n }, [Path1, Path2, i18n, onChange]);\r\n\r\n const onPath1Change = useCallback((event, newValue) => {\r\n onPathChange('Path1', newValue);\r\n }, [onPathChange]);\r\n\r\n const onPath2Change = useCallback((event, newValue) => {\r\n onPathChange('Path2', newValue);\r\n }, [onPathChange]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {isString(urlDomain) && urlDomain.length > 0 ?\r\n urlDomain :\r\n 'www.example.com'\r\n }\r\n
\r\n
/
\r\n \r\n
/
\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nUrlPathFluent.propTypes = {\r\n config: PropTypes.shape({\r\n }).isRequired,\r\n value: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n};\r\n\r\nUrlPathFluent.defaultProps = {\r\n onChange: noop,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const URL_COLON_SLASH_SLASH = '://';\r\nexport const DEFAULT_URL_PREFIX = 'https';\r\n\r\nexport function getUrlPrefixAndDestination(finalUrl, defaultUrlPrefix = DEFAULT_URL_PREFIX) {\r\n const index = _.isString(finalUrl) ? finalUrl.indexOf(URL_COLON_SLASH_SLASH) : -1;\r\n if (index >= 0) {\r\n const prefix = finalUrl.substring(0, index).toLowerCase();\r\n const destination = finalUrl.substring(index + URL_COLON_SLASH_SLASH.length).trim();\r\n\r\n return [prefix, destination];\r\n }\r\n\r\n return [defaultUrlPrefix, ''];\r\n}\r\n\r\nexport const getUpdatedFullUrlOnPrefixUpdate =\r\n (urlWithoutPrefix, newPrefix) => {\r\n let slash = '';\r\n if (!newPrefix.includes(URL_COLON_SLASH_SLASH)) {\r\n slash = URL_COLON_SLASH_SLASH;\r\n }\r\n\r\n return `${newPrefix}${slash}${urlWithoutPrefix}`;\r\n };\r\n\r\nexport const getUpdatedFullUrlOnTextUpdate = (urlPrefix, newValue) => {\r\n if (newValue.includes(URL_COLON_SLASH_SLASH)) {\r\n // detect if the user is entering a URL and update the URL prefix\r\n const [prefix, destination] = getUrlPrefixAndDestination(newValue);\r\n\r\n if (prefix === 'http' || prefix === 'https') {\r\n return `${prefix}${URL_COLON_SLASH_SLASH}${destination}`;\r\n }\r\n }\r\n\r\n return `${urlPrefix}${URL_COLON_SLASH_SLASH}${newValue.trim()}`;\r\n};\r\n\r\nexport const isEmptyUrl = (finalUrls) => {\r\n // FinalUrlWithCustomValidation contol always specifies prefix. If destination is empty\r\n // then treat this as empty final URL. This is needed for when final URL is optional and\r\n // we want to avoid specifying prefixed empty URL.\r\n const [, dest] = getUrlPrefixAndDestination(_.first(finalUrls));\r\n return _.isEmpty(dest);\r\n};\r\n","import { noop } from 'underscore';\r\nimport React, { useCallback, useMemo, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dropdown, Stack, TextField } from '@fluentui/react';\r\nimport { ActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nimport {\r\n getUrlPrefixAndDestination,\r\n getUpdatedFullUrlOnPrefixUpdate,\r\n getUpdatedFullUrlOnTextUpdate,\r\n} from './utils';\r\nimport { validateAdUrl, UrlLengthLimit } from './validation';\r\n\r\nconst urlPrefixOptions = [\r\n { key: 'https', text: 'https://', title: 'https://' },\r\n { key: 'http', text: 'http://', title: 'http://' },\r\n];\r\n\r\nexport function UrlInputFluent({\r\n url,\r\n i18n,\r\n onChange,\r\n containerClassName,\r\n additionalValidation,\r\n customizedValidation,\r\n prepopulateUrl,\r\n dropdownOptionAriaLabel,\r\n propertyKey,\r\n validateOnRender,\r\n additionalProperties,\r\n textFieldAriaLabel,\r\n customUrlProtocol,\r\n enableSpecialCharactersValidation,\r\n hideProtocol,\r\n}) {\r\n const activity = useContext(ActivityContext);\r\n const [urlPrefix, urlWithoutPrefix] = useMemo(\r\n () => getUrlPrefixAndDestination(url),\r\n [url]\r\n );\r\n\r\n const validateAndUpdateUrl = useCallback((currentURL) => {\r\n // first check URL validity. If valid then validate domain by need.\r\n const validateFun = customizedValidation || validateAdUrl;\r\n let finalUrlValidatorError = validateFun(currentURL, '', i18n, UrlLengthLimit, customUrlProtocol, enableSpecialCharactersValidation);\r\n if (!finalUrlValidatorError && additionalValidation) {\r\n finalUrlValidatorError = additionalValidation(currentURL);\r\n }\r\n\r\n onChange(finalUrlValidatorError ? [finalUrlValidatorError] : [], currentURL);\r\n if (activity) {\r\n activity.signal(`on${propertyKey}Change - ${JSON.stringify(currentURL)} - isValid: ${!finalUrlValidatorError}}`);\r\n }\r\n }, [activity, additionalValidation, customUrlProtocol, customizedValidation, i18n, onChange, propertyKey]);\r\n\r\n const onUrlPrefixChanged = useCallback(\r\n (event, newItem) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, newItem.key)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onCustomUrlProtocolChanged = useCallback(\r\n (event, value) =>\r\n validateAndUpdateUrl(getUpdatedFullUrlOnPrefixUpdate(urlWithoutPrefix, value)),\r\n [urlWithoutPrefix, validateAndUpdateUrl]\r\n );\r\n\r\n const onTextChange = useCallback((event, value) => {\r\n const newValue = getUpdatedFullUrlOnTextUpdate(urlPrefix, value);\r\n\r\n if (newValue) {\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, value));\r\n }\r\n }, [validateAndUpdateUrl, urlPrefix]);\r\n\r\n useEffect(() => {\r\n if (!url && prepopulateUrl) {\r\n // Prepopulate final url with prepopulate on load if no value is provided.\r\n validateAndUpdateUrl(getUpdatedFullUrlOnTextUpdate(urlPrefix, prepopulateUrl));\r\n } else if (validateOnRender) {\r\n validateAndUpdateUrl(url);\r\n }\r\n // only validate on render and prepopulate on load\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [url]);\r\n\r\n return (\r\n \r\n {\r\n !hideProtocol && customUrlProtocol &&\r\n \r\n }\r\n {\r\n !hideProtocol && !customUrlProtocol &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nUrlInputFluent.propTypes = {\r\n containerClassName: PropTypes.string,\r\n url: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func,\r\n onClick: PropTypes.func,\r\n additionalValidation: PropTypes.func,\r\n customizedValidation: PropTypes.func,\r\n prepopulateUrl: PropTypes.string,\r\n dropdownOptionAriaLabel: PropTypes.string,\r\n propertyKey: PropTypes.string,\r\n validateOnRender: PropTypes.bool,\r\n additionalProperties: PropTypes.shape({}),\r\n textFieldAriaLabel: PropTypes.string.isRequired,\r\n customUrlProtocol: PropTypes.bool,\r\n enableSpecialCharactersValidation: PropTypes.bool,\r\n hideProtocol: PropTypes.bool,\r\n};\r\n\r\nUrlInputFluent.defaultProps = {\r\n onChange: noop,\r\n onClick: noop,\r\n containerClassName: '',\r\n additionalValidation: noop,\r\n customizedValidation: null,\r\n prepopulateUrl: '',\r\n dropdownOptionAriaLabel: '',\r\n propertyKey: '',\r\n validateOnRender: false,\r\n additionalProperties: {},\r\n customUrlProtocol: false,\r\n enableSpecialCharactersValidation: false,\r\n hideProtocol: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { getUrlPrefixAndDestination } from './utils';\r\n\r\nexport const withNoProtocol = (WrappedComponent) => {\r\n const URLInputWithNoProtocol = (props) => {\r\n const { url, onChange, ...rest } = props;\r\n\r\n const urlWithProtocol = url ? `https://${url}` : url;\r\n\r\n const onChangeWithProtocol = (errors, currentURL) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [urlPrefix, urlWithoutPrefix] = getUrlPrefixAndDestination(currentURL);\r\n return onChange(errors, urlWithoutPrefix);\r\n };\r\n\r\n return ;\r\n };\r\n\r\n URLInputWithNoProtocol.propTypes = {\r\n url: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired.isRequired,\r\n };\r\n\r\n return URLInputWithNoProtocol;\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 (date, formattedValue, metricName, name) {pug_html = pug_html + \"\\u003Cdiv class=\\\"tool-tip-container\\\"\\u003E\\u003Cdiv class=\\\"location-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"date-range\\\"\\u003E\" + (pug.escape(null == (pug_interp = date) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-container\\\"\\u003E\\u003Cdiv class=\\\"bubble-icon\\\"\\u003E\\u003Cdiv class=\\\"dot\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-name\\\"\\u003E\" + (pug.escape(null == (pug_interp = metricName) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"metric-value\\\"\\u003E\" + (pug.escape(null == (pug_interp = formattedValue) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"date\" in locals_for_with?locals_for_with.date:typeof date!==\"undefined\"?date:undefined,\"formattedValue\" in locals_for_with?locals_for_with.formattedValue:typeof formattedValue!==\"undefined\"?formattedValue:undefined,\"metricName\" in locals_for_with?locals_for_with.metricName:typeof metricName!==\"undefined\"?metricName:undefined,\"name\" in locals_for_with?locals_for_with.name:typeof name!==\"undefined\"?name:undefined));;return pug_html;};\nmodule.exports = template;","import _ from 'underscore';\r\n\r\nexport function filterLocationData({ data, granularity, metric }) {\r\n return _.filter(data, item => item[granularity.name] && item[granularity.latitude] && item[granularity.longitude] && item[metric]);\r\n}\r\n","export enum VIEWS {\r\n MAP = 'map-view',\r\n TABLE = 'table-view',\r\n}\r\n\r\nexport const VIEW_STRINGS = {\r\n [VIEWS.MAP]: _TL_('Map'),\r\n [VIEWS.TABLE]: _TL_('List'),\r\n};\r\n\r\nexport const LOCATIONS_PER_PAGE = 5;\r\n\r\nexport const BUBBLE_MAX_RADIUS = 25;\r\nexport const BUBBLE_MIN_RADIUS = 6;\r\n\r\nexport const locationGranularity = {\r\n country: {\r\n name: 'CountryName',\r\n longitude: 'CountryLongitude',\r\n latitude: 'CountryLatitude',\r\n },\r\n county: {\r\n name: 'CountyName',\r\n longitude: 'CountyLongitude',\r\n latitude: 'CountyLatitude',\r\n },\r\n stateOrProvince: {\r\n name: 'StateOrProvince',\r\n longitude: 'SubGeographyLongitude',\r\n latitude: 'SubGeographyLatitude',\r\n },\r\n city: {\r\n name: 'City',\r\n longitude: 'CityLongitude',\r\n latitude: 'CityLatitude',\r\n },\r\n postalCode: {\r\n name: 'PostalCode',\r\n longitude: 'PostalCodeLongitude',\r\n latitude: 'PostalCodeLatitude',\r\n },\r\n};\r\n\r\nexport const METRIC_STRINGS = {\r\n Clicks: _TL_('Clicks'),\r\n Impressions: _TL_('Impr.'),\r\n CTR: _TL_('CTR'),\r\n AverageCPC: _TL_('Avg. CPC'),\r\n Spend: _TL_('Spend'),\r\n TopImpressionRatePercent: _TL_('Top impr. rate'),\r\n AbsoluteTopImpressionRatePercent: _TL_('Abs. top impr. rate'),\r\n ConversionsCredit: _TL_('Conv.'),\r\n PartialConversionRate: _TL_('Conv. rate'),\r\n PartialConversionCPA: _TL_('CPA'),\r\n AdvertiserReportedRevenue: _TL_('Revenue'),\r\n RevenueOnAdSpend: _TL_('Revenue on ad spend'),\r\n};\r\n\r\nexport const METRIC_FULL_STRINGS = {\r\n Clicks: _TL_('Clicks'),\r\n Impressions: _TL_('Impressions'),\r\n CTR: _TL_('CTR'),\r\n AverageCPC: _TL_('Average CPC'),\r\n Spend: _TL_('Spend'),\r\n TopImpressionRatePercent: _TL_('Top impression rate'),\r\n AbsoluteTopImpressionRatePercent: _TL_('Absolute top impression rate'),\r\n ConversionsCredit: _TL_('Conversions'),\r\n PartialConversionRate: _TL_('Conversion rate'),\r\n PartialConversionCPA: _TL_('CPA'),\r\n AdvertiserReportedRevenue: _TL_('Revenue'),\r\n RevenueOnAdSpend: _TL_('Revenue on ad spend'),\r\n};\r\n","import _ from 'underscore';\r\nimport { formatMetric } from '@bingads-webui-campaign-legacy/performance-metric-formatter/index';\r\n\r\nimport { LocationData } from './types';\r\nimport { BUBBLE_MAX_RADIUS, BUBBLE_MIN_RADIUS, METRIC_STRINGS } from './const';\r\n\r\nconst bubbleColorForVNext = '#107C10';\r\nconst bubbleStrokeWidth = 1;\r\nconst fillOpacityRegular = 0.5;\r\n// const fillOpacityHighlight = 1;\r\n\r\nfunction getPushPinIcon({\r\n radius,\r\n fillOpacity,\r\n}) {\r\n const strokeColor = bubbleColorForVNext;\r\n const fillColor = bubbleColorForVNext;\r\n const strokeWidth = bubbleStrokeWidth;\r\n\r\n return `\r\n \r\n \r\n `;\r\n}\r\n\r\nfunction createPushpinOption({ locationInfo }) {\r\n const {\r\n location, radius,\r\n } = locationInfo;\r\n\r\n const svg = getPushPinIcon({\r\n radius,\r\n fillOpacity: fillOpacityRegular,\r\n });\r\n // TODO: we will need this when we hook up with table view\r\n // const svgHighlight = getPushPinIcon({\r\n // radius,\r\n // fillOpacity: fillOpacityHighlight,\r\n // });\r\n\r\n return {\r\n location,\r\n // svgHighlight,\r\n svg,\r\n options: {\r\n anchor: { x: radius, y: radius },\r\n roundClickableArea: true,\r\n },\r\n };\r\n}\r\n\r\nconst customPushpinBuilder = pinOption => ({\r\n Maps,\r\n}) => {\r\n const location = new Maps.Location(pinOption.location.Latitude, pinOption.location.Longitude);\r\n const pin = new Maps.Pushpin(location, _.extend(pinOption.options, {\r\n anchor: new Maps.Point(pinOption.options.anchor.x, pinOption.options.anchor.y),\r\n }, { icon: pinOption.svg }));\r\n\r\n return pin;\r\n};\r\n\r\nexport function formatLocationData({\r\n locationData, granularity, metric, dateRange, i18n,\r\n}): LocationData[] {\r\n const maxValue = Math.abs(_.max(locationData, item => Math.abs(item[metric]))[metric]);\r\n return _.chain(locationData).sortBy(item => -item[metric]).map((item) => {\r\n const formattedValue: string = formatMetric(metric, item[metric]);\r\n const metricName: string = i18n.getString(METRIC_STRINGS[metric]);\r\n const location: { Latitude: string, Longitude: string } = { Latitude: item[granularity.latitude], Longitude: item[granularity.longitude] };\r\n const name: string = item[granularity.name];\r\n const radius: number = Math.max((item[metric] * BUBBLE_MAX_RADIUS) / maxValue, BUBBLE_MIN_RADIUS);\r\n\r\n const pushpinOption = createPushpinOption({\r\n locationInfo: {\r\n location,\r\n radius,\r\n },\r\n });\r\n const getCustomPushpin = customPushpinBuilder(pushpinOption);\r\n\r\n return {\r\n location,\r\n radius: Math.max((item[metric] * BUBBLE_MAX_RADIUS) / maxValue, BUBBLE_MIN_RADIUS),\r\n value: item[metric] as number,\r\n metricName,\r\n date: `${i18n.formatDate(dateRange.start)} - ${i18n.formatDate(dateRange.end)}`,\r\n name,\r\n formattedValue,\r\n getCustomPushpin,\r\n };\r\n })\r\n .first(10)\r\n .value();\r\n}\r\n","import _ from 'underscore';\r\nimport { useContext, useEffect, useState, useCallback } from 'react';\r\n\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { fetchLocationData } from './fetch-location-data';\r\nimport { isUSorCanada } from '../utils/is-us-or-canada';\r\nimport { filterLocationData } from '../utils/filter-location-data';\r\nimport { formatLocationData } from '../utils/format-location-data';\r\nimport { IScopeContext, LocationData } from '../utils/types';\r\nimport { locationGranularity } from '../utils/const';\r\n\r\nexport const useTopLocationsData = ({\r\n metric,\r\n dateRange,\r\n i18n,\r\n willFetchData,\r\n willRender,\r\n}) => {\r\n const { scope } = useContext(ScopeContext) as IScopeContext;\r\n const {\r\n values: {\r\n cid,\r\n aid,\r\n campaignId,\r\n },\r\n } = scope;\r\n\r\n const [locations, setLocations] = useState();\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const setTopLocationValues = useCallback((locationData, granularity) => {\r\n setLocations(formatLocationData({\r\n locationData, granularity, metric, dateRange, i18n,\r\n }));\r\n setIsLoading(false);\r\n willRender();\r\n }, [dateRange, i18n, metric, willRender]);\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n const {\r\n fetchCountryData,\r\n fetchStateOrProvinceData,\r\n fetchCountyData,\r\n fetchCityData,\r\n fetchPostalCodeData,\r\n } = fetchLocationData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n willFetchData();\r\n fetchCountryData.then((countryData) => {\r\n const countryLocationData = filterLocationData({ data: countryData?.value, granularity: locationGranularity.country, metric });\r\n if (_.isEmpty(countryLocationData)) {\r\n setTopLocationValues([], locationGranularity.country);\r\n return;\r\n }\r\n if (_.size(countryLocationData) > 1 && !isUSorCanada(countryLocationData)) {\r\n setTopLocationValues(countryLocationData, locationGranularity.country);\r\n return;\r\n }\r\n\r\n fetchStateOrProvinceData.then((stateOrProvinceData) => {\r\n const stateOrProvinceLocationData = filterLocationData({ data: stateOrProvinceData?.value, granularity: locationGranularity.stateOrProvince, metric });\r\n if (_.size(stateOrProvinceLocationData) > 1) {\r\n setTopLocationValues(stateOrProvinceLocationData, locationGranularity.stateOrProvince);\r\n return;\r\n }\r\n fetchCountyData.then((countyData) => {\r\n const countyLocationData = filterLocationData({ data: countyData?.value, granularity: locationGranularity.county, metric });\r\n if (_.size(countyLocationData) > 1) {\r\n setTopLocationValues(countyLocationData, locationGranularity.county);\r\n return;\r\n }\r\n fetchCityData.then((cityData) => {\r\n const cityLocationData = filterLocationData({ data: cityData?.value, granularity: locationGranularity.city, metric });\r\n\r\n if (_.size(cityLocationData) > 1) {\r\n setTopLocationValues(cityLocationData, locationGranularity.city);\r\n return;\r\n }\r\n fetchPostalCodeData.then((postalCodeData) => {\r\n const postalCodeLocationData = filterLocationData({ data: postalCodeData?.value, granularity: locationGranularity.postalCode, metric });\r\n if (_.isEmpty(postalCodeLocationData)) {\r\n // We can have less data when we drill down the granularity, since we might not have enough granularity for particular data.\r\n // In this case, we just go upper granularities until we find one with data.\r\n if (!_.isEmpty(cityLocationData)) {\r\n setTopLocationValues(cityLocationData, locationGranularity.city);\r\n return;\r\n }\r\n if (!_.isEmpty(countyLocationData)) {\r\n setTopLocationValues(countyLocationData, locationGranularity.county);\r\n return;\r\n }\r\n if (!_.isEmpty(stateOrProvinceLocationData)) {\r\n setTopLocationValues(stateOrProvinceLocationData, locationGranularity.stateOrProvince);\r\n return;\r\n }\r\n setTopLocationValues(countryLocationData, locationGranularity.country);\r\n return;\r\n }\r\n setTopLocationValues(postalCodeLocationData, locationGranularity.postalCode);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n }, [aid, campaignId, cid, dateRange, metric, setTopLocationValues, willFetchData]);\r\n\r\n return { isLoading, locations };\r\n};\r\n","import {\r\n fetchCountryData,\r\n fetchStateOrProvinceData,\r\n fetchCountyData,\r\n fetchCityData,\r\n fetchPostalCodeData,\r\n} from '@bingads-webui-campaign/overview-cards-common';\r\n\r\nexport function fetchLocationData({\r\n cid, aid, campaignId, dateRange, metric,\r\n}) {\r\n const countryData = fetchCountryData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const stateOrProvinceData = fetchStateOrProvinceData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const countyData = fetchCountyData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const cityData = fetchCityData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n const postalCodeData = fetchPostalCodeData({\r\n cid, aid, campaignId, dateRange, metric,\r\n });\r\n\r\n return {\r\n fetchCountryData: countryData,\r\n fetchStateOrProvinceData: stateOrProvinceData,\r\n fetchCountyData: countyData,\r\n fetchCityData: cityData,\r\n fetchPostalCodeData: postalCodeData,\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function isUSorCanada(countryLocationData) {\r\n if (_.size(countryLocationData) !== 2) {\r\n return false;\r\n }\r\n\r\n return _.every(countryLocationData, (country: any) =>\r\n (country.CountryLatitude > 62 && country.CountryLatitude < 64 && country.CountryLongitude > -97 && country.CountryLongitude < -95) ||// Canada\r\n (country.CountryLatitude > 39 && country.CountryLatitude < 41 && country.CountryLongitude > -100 && country.CountryLongitude < -98));// US\r\n}\r\n","import { makeStyles, tokens, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useMetricSelectorStyles = makeStyles({\r\n container: {\r\n alignSelf: 'flex-end',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n iconContainer: {\r\n width: '12px',\r\n height: '12px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n ...shorthands.borderRadius('6px'),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('1px'),\r\n ...shorthands.borderColor(tokens.colorPaletteGreenBackground2),\r\n marginRight: '5px',\r\n justifyContent: 'center',\r\n },\r\n icon: {\r\n width: '4px',\r\n height: '4px',\r\n ...shorthands.borderRadius('4px'),\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('2px'),\r\n ...shorthands.borderColor(tokens.colorStatusSuccessForeground1),\r\n backgroundColor: tokens.colorStatusSuccessForeground1,\r\n },\r\n button: {\r\n paddingTop: 0,\r\n paddingLeft: '5px',\r\n paddingRight: '0px',\r\n paddingBottom: '0px',\r\n width: 'fit-content',\r\n },\r\n buttonText: {\r\n ...shorthands.overflow('hidden'),\r\n lineBreak: 'anywhere',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Menu,\r\n MenuButton,\r\n MenuPopover,\r\n MenuList,\r\n MenuItem,\r\n MenuTrigger,\r\n Body1 as Text,\r\n Tooltip,\r\n} from '@fluentui/react-components';\r\nimport { METRIC_OPTIONS } from '@bingads-webui-campaign-react/top-locations-card-const';\r\n\r\nimport { useMetricSelectorStyles } from '../styles/metric-selector-styles';\r\nimport { MetricSelectorProps } from '../utils/types';\r\nimport { METRIC_STRINGS, METRIC_FULL_STRINGS } from '../utils/const';\r\n\r\nexport function MetricSelector({\r\n metric,\r\n onMetricChange,\r\n i18n,\r\n}: MetricSelectorProps) {\r\n const styles = useMetricSelectorStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {i18n.getString(METRIC_STRINGS[metric])}\r\n \r\n \r\n \r\n \r\n \r\n {METRIC_OPTIONS.map(option => ( onMetricChange(option)}>{i18n.getString(METRIC_STRINGS[option])}))}\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useFooterStyles = makeStyles({\r\n footer: {\r\n marginTop: '12px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React, { useCallback, useContext } from 'react';\r\nimport { Button } from '@fluentui/react-components';\r\nimport { ChevronLeftRegular, ChevronRightRegular } from '@fluentui/react-icons';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\n\r\nimport { useFooterStyles } from '../styles/footer-styles';\r\nimport { IScopeContext, FooterProps } from '../utils/types';\r\n\r\nexport function Footer({\r\n showPagination,\r\n paginationConfig,\r\n i18n,\r\n campaignType,\r\n}: FooterProps) {\r\n const styles = useFooterStyles();\r\n const { scope } = useContext(ScopeContext) as IScopeContext;\r\n const {\r\n current, total, onNext, onPrevious,\r\n } = paginationConfig;\r\n\r\n const onClick = useCallback(() => {\r\n let path = '/campaign/vnext/locations/campaign';\r\n // LinkedIn campaigns don't support campaign locations grid so far, so route user to campaign settings page\r\n if (campaignType === 'LinkedIn') {\r\n path = '/campaign/vnext/settings';\r\n }\r\n scope.save(path);\r\n }, [campaignType, scope]);\r\n\r\n return (\r\n
\r\n \r\n {showPagination &&\r\n
\r\n
\r\n }\r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useNoLocationsStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n },\r\n imageContainer: {\r\n flexGrow: 1,\r\n flexBasis: '0',\r\n maxHeight: '210px',\r\n width: '100%',\r\n overflowY: 'hidden',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n display: 'flex',\r\n backgroundColor: '#FAFAFA',\r\n },\r\n image: {\r\n maxHeight: '148px',\r\n },\r\n title: {\r\n marginTop: '16px',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Image, Subtitle2, Body1 } from '@fluentui/react-components';\r\n\r\nimport { useNoLocationsStyles } from '../styles/no-locations-styles';\r\nimport { i18nProps } from '../utils/types';\r\nimport noDataImage from '../../media/no-data-image.png';\r\n\r\nexport function NoData({ i18n }: { i18n: i18nProps }) {\r\n const styles = useNoLocationsStyles();\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('No\r\n
\r\n {i18n.getString(_TL_('No data available'))}\r\n {i18n.getString(_TL_('To update the tile, select a different date range. If the tile remains blank, your account might have no data.'))}\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Shimmer, ShimmerElementType } from '@fluentui/react';\r\n\r\nconst rowElement = [{ type: ShimmerElementType.line, height: 43 }];\r\nconst mapElement = [{ type: ShimmerElementType.line, height: 240 }];\r\n\r\nexport function TableShimmer() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport function MapShimmer() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useTableStyles = makeStyles({\r\n value: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n});\r\n\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Table, TableCell, TableRow, TableBody, Body1 as Text\r\n} from '@fluentui/react-components';\r\n\r\nimport { TableShimmer } from './shimmer';\r\nimport { LOCATIONS_PER_PAGE } from '../utils/const';\r\nimport { getPageLocations } from '../utils/get-page-locations';\r\nimport { TopLocationsTableProps } from '../utils/types';\r\nimport { useTableStyles } from '../styles/table-styles';\r\n\r\nexport function TopLocationsTable({\r\n i18n,\r\n isLoading,\r\n locations,\r\n paginationConfig,\r\n}: TopLocationsTableProps) {\r\n const styles = useTableStyles();\r\n if (isLoading) {\r\n return ;\r\n }\r\n const rowsToDisplay = getPageLocations(locations, paginationConfig, LOCATIONS_PER_PAGE);\r\n return (\r\n \r\n \r\n {rowsToDisplay.map(({ name, formattedValue }) => (\r\n \r\n \r\n {name}\r\n \r\n \r\n {formattedValue}\r\n \r\n \r\n ))}\r\n \r\n
\r\n );\r\n}\r\n","import { PaginationConfigProps, LocationData } from './types';\r\n\r\nexport function getPageLocations(locations: LocationData[], paginationConfig: PaginationConfigProps, locationsPerPage: number) {\r\n return locations.slice((paginationConfig.current - 1) * locationsPerPage, paginationConfig.current * locationsPerPage);\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useMapStyles = makeStyles({\r\n container: {\r\n height: '240px',\r\n width: '100%',\r\n '& .tool-tip-container': {\r\n ...shorthands.padding('15px'),\r\n boxShadow: '0 3.2px 7.2px 0 rgba(0,0,0,.132), 0 0.6px 1.8px 0 rgba(0,0,0,.108)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.95)',\r\n '@supports (backdrop-filter: blur(60px))': {\r\n backdropFilter: 'blur(60px)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.25)',\r\n },\r\n\r\n '& .date-range': {\r\n whiteSpace: 'nowrap',\r\n ...shorthands.margin('10px 0'),\r\n },\r\n '& .metric-container': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .metric-container .metric-name': {\r\n marginRight: '5px',\r\n },\r\n '& .metric-container .metric-value': {\r\n fontWeight: 'bold',\r\n },\r\n '& .bubble-icon': {\r\n width: '12px',\r\n height: '12px',\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('1px'),\r\n ...shorthands.borderColor('#107C10'),\r\n ...shorthands.borderRadius('6px'),\r\n marginRight: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n '& .bubble-icon .dot': {\r\n width: '4px',\r\n height: '4px',\r\n ...shorthands.borderStyle('solid'),\r\n ...shorthands.borderWidth('2px'),\r\n ...shorthands.borderColor('#107C10'),\r\n ...shorthands.borderRadius('4px'),\r\n backgroundColor: '#107C10',\r\n },\r\n },\r\n },\r\n});\r\n\r\n","import React, { useRef, useMemo, useCallback } from 'react';\r\nimport { BingMapsView, LocationTarget, TARGETING_TYPE } from '@bingads-webui-react/bing-maps';\r\n\r\n// @ts-ignore\r\nimport tooltip from './map-tooltip.pug';\r\nimport { MapShimmer } from './shimmer';\r\nimport { TopLocationsMapProps, LocationData } from '../utils/types';\r\nimport { useMapStyles } from '../styles/map-styles';\r\n\r\nclass TopLocationTarget extends LocationTarget {\r\n topLocation: LocationData;\r\n\r\n constructor(topLocation: LocationData) {\r\n const location = {\r\n GeoPoint: topLocation.location,\r\n ExpandedName: topLocation.name,\r\n };\r\n super(location, TARGETING_TYPE.Top, topLocation.radius, 'mi');\r\n this.topLocation = topLocation;\r\n }\r\n}\r\n\r\nexport function TopLocationsMap({\r\n isLoading,\r\n locations,\r\n}: TopLocationsMapProps) {\r\n const styles = useMapStyles();\r\n const mapRef = useRef();\r\n\r\n const locationTargets = useMemo(() => {\r\n if (locations) {\r\n return locations.map(l => new TopLocationTarget(l));\r\n }\r\n return [];\r\n }, [locations]);\r\n\r\n const onGetTooltipHtmlContent = useCallback((event, locationTarget) => tooltip({\r\n name: locationTarget.topLocation.name,\r\n metricName: `${locationTarget.topLocation.metricName}:`,\r\n formattedValue: locationTarget.topLocation.formattedValue,\r\n date: locationTarget.topLocation.date,\r\n }), []);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import _ from 'underscore';\r\nimport { useState, useEffect, useMemo } from 'react';\r\n\r\nimport { LOCATIONS_PER_PAGE } from '../utils/const';\r\nimport { LocationData, paginationConfigProps } from '../utils/types';\r\n\r\nexport const usePaginationConfig = (locations: Array): paginationConfigProps => {\r\n const [state, setState] = useState({ current: 0, total: 0 });\r\n\r\n useEffect(() => {\r\n if (!_.isEmpty(locations)) {\r\n setState({\r\n current: 1,\r\n total: Math.ceil(locations.length / LOCATIONS_PER_PAGE),\r\n });\r\n }\r\n }, [locations]);\r\n\r\n return useMemo(() => {\r\n const next = state.current + 1;\r\n let onNext: () => void = _.noop;\r\n if (next <= state.total) {\r\n onNext = () => setState({ ...state, current: next });\r\n }\r\n\r\n const previous = state.current - 1;\r\n let onPrevious: () => void = _.noop;\r\n if (previous > 0) {\r\n onPrevious = () => setState({ ...state, current: previous });\r\n }\r\n\r\n return ({\r\n current: state.current,\r\n total: state.total,\r\n onNext,\r\n onPrevious,\r\n });\r\n }, [state]);\r\n};\r\n","import _ from 'underscore';\r\nimport React, { ComponentType, useState, useCallback, useContext } from 'react';\r\nimport { PreferenceContext } from '@bingads-webui-react/preference-context';\r\n\r\nimport { TopLocationsCardProps } from '../utils/types';\r\n\r\nconst cardId = 'CardType-TopLocations';\r\n\r\ntype WithMetricProps = {\r\n preferenceFromServer?: string;\r\n patchPreference?: Function;\r\n} & TopLocationsCardProps;\r\n\r\nexport function withPMaxPreferencesMetric

(WrappedComponent: ComponentType

): ComponentType> {\r\n const HoC = (props) => {\r\n const {\r\n preferenceFromServer,\r\n patchPreference,\r\n } = props;\r\n const preferenceService = useContext(PreferenceContext) as any;\r\n const preferences = preferenceService.findByName('dashboard/preferences');\r\n const cardPreferences = preferences?.Data?.['default-campaign-performancemax']?.cards || [];\r\n const currentCardPreferences: any = _.find(cardPreferences, (card: any) => card.id === cardId);\r\n const initMetric = currentCardPreferences?.options?.metric ?? 'Clicks';\r\n const [metric, setMetric] = useState(preferenceFromServer || initMetric);\r\n\r\n const onMetricChange = useCallback((newMetric: string) => {\r\n setMetric(newMetric);\r\n\r\n if (patchPreference) {\r\n patchPreference({ metric: newMetric });\r\n return;\r\n }\r\n\r\n let cards;\r\n if (!_.find(cardPreferences, (card: any) => card.id === cardId)) {\r\n cards = [...cardPreferences, { id: cardId, options: { metric: newMetric } }];\r\n } else {\r\n cards = cardPreferences.map((card) => {\r\n if (card.id === cardId) {\r\n return {\r\n ...card,\r\n options: {\r\n ...card.options,\r\n metric: newMetric,\r\n },\r\n };\r\n }\r\n return card;\r\n });\r\n }\r\n const preferencesData = preferences?.Data || {};\r\n preferenceService.set({\r\n Name: 'dashboard/preferences',\r\n ...preferences,\r\n Data: {\r\n ...preferencesData,\r\n 'default-campaign-performancemax': {\r\n ...preferencesData['default-campaign-performancemax'],\r\n cards,\r\n },\r\n },\r\n });\r\n }, [cardPreferences, patchPreference, preferenceService, preferences]);\r\n\r\n return ();\r\n };\r\n\r\n return HoC;\r\n}\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useCardStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n },\r\n wideContainer: {\r\n display: 'flex',\r\n },\r\n wideContentWrapper: {\r\n width: '50%',\r\n },\r\n footer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\n","import classNames from 'classnames';\r\nimport React, { useMemo, useEffect } from 'react';\r\nimport { withHeaderState } from '@bingads-webui-campaign-react/overview-card';\r\n\r\nimport { useTopLocationsData } from './use-top-locations-data';\r\nimport { MetricSelector } from './metric-selector';\r\nimport { Footer } from './footer';\r\nimport { NoData } from './no-data';\r\nimport { TopLocationsTable } from './top-locations-table';\r\nimport { TopLocationsMap } from './top-locations-map';\r\nimport { usePaginationConfig } from './use-pagination-config';\r\nimport { withPMaxPreferencesMetric } from './with-preferences-metric';\r\nimport { withBingMapsContext } from './with-bing-maps-context';\r\nimport { useCardStyles } from '../styles/card-styles';\r\nimport { VIEWS } from '../utils/const';\r\nimport { TopLocationsCardProps } from '../utils/types';\r\n\r\n\r\nexport function TopLocationsCardInternal({\r\n headerState,\r\n i18n,\r\n dateRange,\r\n metric,\r\n onMetricChange,\r\n perfMarkerUtils,\r\n campaignType,\r\n}: TopLocationsCardProps) {\r\n const styles = useCardStyles();\r\n const {\r\n willFetchData,\r\n willRender,\r\n done,\r\n } = perfMarkerUtils;\r\n const { isLoading, locations } = useTopLocationsData({\r\n metric,\r\n dateRange,\r\n i18n,\r\n willFetchData,\r\n willRender,\r\n });\r\n const paginationConfig = usePaginationConfig(locations);\r\n const hasLocations = locations?.length > 0;\r\n\r\n useEffect(() => {\r\n if (!isLoading) {\r\n done();\r\n }\r\n }, [done, isLoading, willRender]);\r\n\r\n const contentArea = useMemo(() => {\r\n if (!hasLocations && !isLoading) {\r\n return ;\r\n }\r\n if (headerState?.isWideMode) {\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 if (headerState?.viewOption === VIEWS.MAP) {\r\n return ;\r\n }\r\n return ;\r\n }, [hasLocations, isLoading, headerState, i18n, locations, paginationConfig, styles]);\r\n\r\n\r\n const showPagination = hasLocations && !isLoading && (headerState?.isWideMode || headerState?.viewOption === VIEWS.TABLE);\r\n\r\n return (\r\n
\r\n \r\n {contentArea}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport const TopLocationsCard = withPMaxPreferencesMetric(withBingMapsContext(withHeaderState(TopLocationsCardInternal)));\r\n","import React, { useContext } from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\n\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { BingMapsContextProvider } from '@bingads-webui-react/bing-maps';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\n\r\n// TODO: Send this in serverContext\r\nconst BING_MAPS_API_KEY = 'AgRuCtepgsuuCYV9J6S6w1j8ay2JJwnu8f5EPgv4kkoJoIuka8yui-NzKrvlESTQ';\r\n\r\nexport function withBingMapsContext(WrappedComponent) {\r\n const HOC = (props) => {\r\n const serverContext = useContext(ServerContext) as any;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n HOC.displayName = `withBingMapsContext(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HOC, WrappedComponent);\r\n\r\n return HOC;\r\n}\r\n","import { makeStyles, shorthands } from '@fluentui/react-components';\r\n\r\nexport const useViewSelectorStyles = makeStyles({\r\n container: {\r\n maxWidth: '300px',\r\n display: 'flex',\r\n flexGrow: '0',\r\n justifyContent: 'flex-end',\r\n ...shorthands.gap('5px'),\r\n },\r\n button: {\r\n width: 'fit-content',\r\n minWidth: 'auto',\r\n ...shorthands.padding('0px'),\r\n },\r\n buttonText: {\r\n ...shorthands.overflow('hidden'),\r\n lineBreak: 'anywhere',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n },\r\n});\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport {\r\n Menu,\r\n MenuButton,\r\n MenuPopover,\r\n MenuList,\r\n MenuItem,\r\n MenuTrigger,\r\n Caption1 as Text\r\n} from '@fluentui/react-components';\r\n\r\nimport { useViewSelectorStyles } from '../styles/view-selector-styles';\r\nimport { VIEWS, VIEW_STRINGS } from '../utils/const';\r\nimport { TopLocationViewSelectorProps } from '../utils/types';\r\n\r\nconst WIDE_MODE_WIDTH = 500;\r\n\r\nexport function TopLocationViewSelector({\r\n i18n,\r\n state,\r\n setState,\r\n dimensions,\r\n}: TopLocationViewSelectorProps) {\r\n const styles = useViewSelectorStyles();\r\n\r\n useEffect(() => {\r\n if (!state) {\r\n setState({\r\n viewOption: VIEWS.MAP,\r\n });\r\n }\r\n }, [state, setState]);\r\n\r\n useEffect(() => {\r\n const isWideMode = dimensions?.width > WIDE_MODE_WIDTH;\r\n if (state?.isWideMode !== isWideMode) {\r\n setState(s => ({\r\n ...s,\r\n isWideMode,\r\n }));\r\n }\r\n }, [setState, state, dimensions]);\r\n\r\n const onViewSelected = useCallback((viewOption: VIEWS) => {\r\n setState(s => ({\r\n ...s,\r\n viewOption,\r\n }));\r\n }, [setState]);\r\n\r\n if (!state || state?.isWideMode) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {i18n.getString(_TL_('View:'))} {i18n.getString(VIEW_STRINGS[state.viewOption] ?? _TL_(''))}\r\n \r\n \r\n \r\n \r\n onViewSelected(VIEWS.MAP)}>{i18n.getString(VIEW_STRINGS[VIEWS.MAP])}\r\n onViewSelected(VIEWS.TABLE)}>{i18n.getString(VIEW_STRINGS[VIEWS.TABLE])}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nTopLocationViewSelector.defaultProps = {\r\n state: undefined,\r\n};\r\n"],"names":["bulkEditStyle","_ref","_ref$palette","palette","overflowY","margin","maxHeight","display","minWidth","width","border","maxWidth","fontWeight","textAlign","marginLeft","marginRight","paddingLeft","_objectSpread","marginBottom","underlineLinkStyle","upgradedUrlOverrideStyle","alignItems","whiteSpace","height","fontFamily","content","cursor","getAutomatedRulesStyles","semanticColors","background","concat","neutralPrimaryAlt","themePrimary","themeDark","neutralSecondary","red","color","fontSize","position","float","top","right","lineHeight","neutralPrimary","padding","marginTop","neutralLight","borderTop","verticalAlign","paddingTop","W","M","appearance","backgroundClip","themeDarkAlt","backgroundColor","borderRadius","bodyBackground","paddingBottom","getBulkEditOverrideStyle","_ref$iconFontFamily","iconFontFamily","fontStyle","borderLeft","borderRight","borderColor","neutralLighter","redDark","adColumnPreviewStyle","paddingRight","wordBreak","neutralTertiary","boxShadow","bottom","paddingInline","getInlineDownloadStyle","sharedStyle","pasteStyle","left","columnChooserStyle","ComponentSettings","getColumnChooserOverrideStyle","filterEditorStyle","getFilterEditorOverrideStyle","getTopGridPanelCommonStyle","TopGridPanelUnStyled","_React$PureComponent","props","_this","_classCallCheck","_callSuper","rootRef","React","_inherits","_createClass","key","value","this","current","tabbableNode","filter","getTabbableNodes","item","$","is","length","focus","preventScroll","addDataFocus","panelContent","_this$props","panelView","customClasses","classes","_jsx","BackboneInstanceWrapper","managed","instance","id","ref","className","classNames","topGridPanelCustomStyles","topGridPanelDefaultStyles","children","defaultProps","TopGridPanel","withDefaultStyles","_","_ref$semanticColors","_ref$spacing","spacing","Object","assign","zIndex","outline","datePickerStyle","style","mergeStyles","CustomComponent","Renderer","renderProps","dynamicProps","_objectWithoutProperties","_excluded","withCustomRendering","Component","CustomRenderingWrapper","_Fragment","ActionButton","label","iconName","iconStyles","ariaLabel","onClick","rest","i18n","useContext","I18nContext","buttonIcon","styles","root","DefaultButton","iconProps","getString","ActionButtonWrapped","headerStyles","borderStyle","borderWidth","headerStackStyles","titleStyles","Header","title","actionButton","actionButtonDynamic","as","_jsxs","Stack","horizontal","horizontalAlign","Text","HeaderWrapped","panelStyles","panelContentStyles","Panel","header","headerDynamic","MessageBar","text","FluentMessageBar","rendererProps","MessageBarWrapped","labelStyles","PropertyLabelWrapped","dataStyles","overflow","PropertyDataWrapped","PropertyRow","propertyLabel","propertyLabelDynamic","propertyData","propertyDataDynamic","disableShrink","PropertyLabel","PropertyData","dividerStyles","componentTypes","FluentText","panel","data","generateComponents","registrationMap","schema","customComponentTypes","separatorStyles","unrenderedComponents","c","isRendered","componentsToRenderSchema","apply","_toConsumableArray","schemaComponents","selectedComponentTypes","schemaComponent","commonSchemaStyles","numberOfComponents","field","params","type","separatorStylesForComponent","componentStyles","componentClassName","getDirectlyDefinedDynamicProperties","componentsSchema","components","build","propertiesSchema","dynamicProperties","directlyDefinedComponentDynamicProperties","schemaBasedComponentDynamicProperties","childComponentsDynamicProperties","componentDynamicProperties","dynamicallyHideComponent","componentStylesWithDynamics","GeneratedUI","selectComponentType","dynamicComponentBuilders","useMemo","componentBuilder","propTypes","PropTypes","isRequired","buildDefaultDataProperty","baselineProperty","withAutoRotate","CarouselLayout","enableAutoRotate","permissions","autoRotate","isPlayPausePreviewImageEnabled","AdPreviewCarouselLayoutWrapper","AdPreviewCarouselLayout","AdPreviewCarouselLayoutWrapperEx","AdPreviewCarouselLayoutEx","withCMUITheme","withTheme","UAPMediaPlacementType","MediaPlacementTypeToPlacementTypeMap","_MediaPlacementTypeTo","_defineProperty","EPT","MMA_WideImage_4x1","MMA_LandscapeImage_191x100","MMA_SquareImage_1x1","MMA_VerticalImage_1x2","Audience_Network_WideImage_191x100","MsanV2_MSAN_River_191x100","Microsoft_Edge_Single_Carousel_178x100","undefined","MsanV2_MSN_Carousel_169x100","PMax_MMAV2_MSN_Single_Carousel_169x100","MSN_InArticle_Ad_150x100","MSN_Small_Headline_133x100","Audience_Network_SquareImage_1x1","MsanV2_Microsoft_Edge_Mobile_1x1","MsanV2_Microsoft_Edge_Carouse_l201x100","PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100","MsanV2_MSAN_Banner_2x1","MsanV2_MSN_Partner_Stripe_153x100","PMax_MMAV2_MSN_Partner_Stripe_153x100","MsanV2_MSN_Restoday_124x100","PMax_MMAV2_MSN_Restoday_124x100","MsanV2_MSAN_Rectangle_120x100","ImgExt_Audience_Network_WideImage_191x100","ImgExt_Microsoft_Edge_Single_Carousel_178x100","ImgExt_Bing_Desktop_SingleImage_Extension_178x100","ImgExt_Microsoft_Edge_Medium_Headline_172x100","ImgExt_MSN_Single_Carousel_169x100","ImgExt_MSN_Medium_Headline_155x100","ImgExt_MSN_InArticle_Ad_150x100","ImgExt_MSN_Small_Headline_133x100","ImgExt_Bing_Desktop_MultiImage_Extension_133x100","ImgExt_Bing_Mobile_MultiImage_Extension_133x100","ImgExt_Audience_Network_SquareImage_1x1","ImgExt_MSN_Double_Carousel_93x100","PMax_Audience_Network_WideImage_191x100","PMax_MMA_LandscapeImage_191x100","PMax_Audience_Network_SquareImage_1x1","PMax_MSN_InArticle_Ad_150x100","PMax_MSN_Small_Headline_133x100","PMax_Microsoft_Edge_Single_Carousel_178x100","PMax_MMA_VerticalImage_1x2","PMax_MMA_WideImage_4x1","PlacementType2MediaPlacementTypeMap","_PlacementType2MediaP","transformCroppingParam","param","MediaPlacementType","CropSetting","placementTypes","placementType","cropping","transformImage","image","_ref2","url","originalUrl","originalWidth","originalHeight","cropSettingOnOriginal","placementSettings","roiInfo","expandedMeta","imageCropping","placementsCropping","transformImageParam","useAdPreviewModel","placementConfig","onError","transformedConfig","_ref3","placementSets","_useAdPreviewModelCor","useAdPreviewModelCore","setPlacementConfigCore","setPlacementConfig","changedCropSettingsCore","changedCropSettings","useCallback","config","newConfig","_ref4","_ref5","placements","hasCroppingChanged","map","_ref6","placementMeta","placementCropping","compact","reduce","acc","cropSettings","getSmartCropSettingsFactory","mediaRepository","smartCropActivity","imageMeta","placementMetaList","getCentralCroppedPlacements","ratioAndMinSizeList","aspectRatio","minSize","generateSmartCrop","imageUrl","then","assets","asset","AspectRatio","aspectRatioStr","smartCropping","SourceWidth","Width","SourceHeight","Height","SourceX","X","SourceY","Y","isValidSmartCropping","validateSmartCropSettings","originalImage","Src","minHeight","catch","smartPlacementAndCroppingList","placementsWithoutSmartCropping","croppingList","centralCroppingList","idx","PlacementType2AssociationTypeMap","_PlacementType2Associ","EPlacementType","Boost_Hero_Image_Carousel_200x100","Boost_Hero_Image_Carousel_122x100","Boost_Hero_Image_Carousel_159x100","Boost_Hero_Image_Carousel_180x100","Boost_Hero_Image_Carousel_233x100","Boost_Hero_Image_Carousel_320x100","Boost_Hero_Image_Carousel_57x100","Boost_Windows_Spotlight_191x100","Boost_Discover_Card_1x1","Boost_Prong1_Prong2_Feed_191x100","Boost_Coachmark_175x100","ImgExt_MMAV2_MSN_River_191x100","ImgExt_MMAV2_MSN_Single_Carousel_169x100","Responsive_MMA_WideImage_4x1","Responsive_MMA_LandscapeImage_191x100","Responsive_MMA_SquareImage_1x1","Responsive_MMA_VerticalImage_1x2","Responsive_Audience_Network_WideImage_191x100","Responsive_Audience_Network_SquareImage_1x1","Responsive_Microsoft_Edge_Single_Carousel_178x100","Responsive_MSN_InArticle_Ad_150x100","Responsive_MSN_Small_Headline_133x100","Responsive_Boost_Windows_Spotlight_191x100","Responsive_Boost_Discover_Card_1x1","Responsive_Boost_Prong1_Prong2_Feed_191x100","Responsive_Boost_Coachmark_175x100","Responsive_MsanV2_Microsoft_Edge_Carouse_l201x100","Responsive_MsanV2_Microsoft_Edge_Mobile_1x1","Responsive_MsanV2_MSAN_Banner_2x1","Responsive_MsanV2_MSAN_River_191x100","Responsive_MsanV2_MSAN_Rectangle_120x100","Responsive_MsanV2_MSN_Carousel_169x100","Responsive_MsanV2_MSN_Partner_Stripe_153x100","Responsive_MsanV2_MSN_Restoday_124x100","LinkedIn_Single_Image_Desktop_Landscape","LinkedIn_Single_Image_Mobile_Landscape","LinkedIn_Single_Image_Medium_Rectangle_Landscape","LinkedIn_Single_Image_Mobile_Interstitial_Landscape","LinkedIn_Single_Image_Native_Landscape","LinkedIn_Single_Image_Desktop_Square","LinkedIn_Single_Image_Mobile_Square","LinkedIn_Single_Image_Medium_Rectangle_Square","LinkedIn_Single_Image_Mobile_Interstitial_Square","LinkedIn_Single_Image_Native_Square","LinkedIn_Single_Image_Mobile_Vertical","LinkedIn_Single_Image_Medium_Rectangle_Vertical","LinkedIn_Single_Image_Mobile_Interstitial_Vertical","LinkedIn_Single_Image_Native_Vertical","PMax_MMAV2_MSN_River_191x100","Responsive_PMax_MMA_WideImage_4x1","Responsive_PMax_MMA_LandscapeImage_191x100","Responsive_PMax_MMA_VerticalImage_1x2","Responsive_PMax_Audience_Network_WideImage_191x100","Responsive_PMax_Audience_Network_SquareImage_1x1","Responsive_PMax_Microsoft_Edge_Single_Carousel_178x100","Responsive_PMax_MSN_InArticle_Ad_150x100","Responsive_PMax_MSN_Small_Headline_133x100","Unified_App_Ads_Video_Horizontal","Unified_App_Ads_Bing_Search","Unified_App_Ads_Causal_Games_Dimensions","Unified_App_Ads_MSN_Display","Responsive_PMax_MMAV2_Microsoft_Edge_Single_Carousel_201x100","Responsive_PMax_MMAV2_MSN_Single_Carousel_169x100","Responsive_PMax_MMAV2_MSN_Restoday_124x100","Responsive_PMax_MMAV2_MSN_Partner_Stripe_153x100","Responsive_PMax_MMAV2_MSN_River_191x100","convertEffectSettings","effectSettings","effectKey","effectOptions","effectSrc","backgroundBlur","designerEffect","effectType","effectValue","transformImageExperienceImageList","placementSetsConfig","imageExperienceImageList","isImageFittingEnabled","isAdPreviewRefreshEnabled","imageList","imgExpPlacementList","isLogo","changed","newImageList","placementList","placementListMap","srcList","forEach","src","push","splitPlacementListBySrc","PlacementMetaList","UAPLPlacementMetaListV2","UAPLPlacementMetaList","imageSmartEffect","hasImageCroppingChanged","placementSetName","name","curAssociationType","placement","_ref7","associationType","toLowerCase","placementSmartEffect","isPlacementIncluded","hasImageExperienceData","baseImage","BaseImage","IdString","Id","OriginalUrl","OriginalWidth","OriginalHeight","CropSettings","EffectSettings","isMaunalCropped","_getExpandedImagePlac","hasSmartEffect","imageExpansionType","originalImageCropSettings","CroppingType","getExpandedImageInfo","expandedImageUrl","getExpandedImageUrl","expandedImageWidth","expandedImageHeight","expandedImageCropSettings","extraCheck","UAPCroppingType","ManualCrop","getExpandedImagePlacementInfo","applyImageFitting","ignoreImageFitting","isIncluded","previewImage","useImageExperienceAdPreviewModel","placeholderImage","resetReducerStates","multiImagePlacementSets","PermissionsContext","isPlaceHolderImage","placeHolderUrl","imageExperiencePlacementSets","ret","_ref9","images","newImages","_ref11","onUpdateImageExperienceImageList","activeImageIndices","hasDataChanged","previewImageListState","activeImageIndexList","img","index","AdPreviewGridLayout","GridLayoutCore","AdPreviewSinglePlacementLayout","SinglePlacementLayoutCore","UnstyledAdPreviewCarouselLayout","UnstyledCarouselLayoutCore","AdPreviewPlacementContainerBase","MmaWideImage4x1","MmaLandscapeImage191x100","MmaSquareImage1x1","MmaVerticalImage1x2","AdPreviewPlacementContainerBaseCore","AdPreviewStructuredSnippetExtension","MmaInMsanWideImage191x100","MmaInMsanSquareImage1x1","MmaInMsanMSEdgeSingleCarousel178x100","MmaInMsanMSNInArticle150x100","MmaInMsanMSNSmallHeadline133x100","MmaInMsanV2MicrosoftEdgeCarousel201x100","MmaInMsanV2MicrosoftEdgeMobile1x1","MmaInMsanV2MSANBanner2x1","MmaInMsanV2MSANRiver191x100","MmaInMsanV2MSANRectangle191x100","MmaInMsanV2MSNCarousel169x100","MmaInMsanV2MSNPartnerStripe153x100","MmaInMsanV2MSNRestoday124x100","BoostHeroImageCarousel","BoostWindowsSpotlight191x100","BoostDiscoverCard1x1","BoostStartMenu","BoostActionCenter","BoostBanner","BoostProngFeed191x100","BoostCoachmark175x100","ImgExtWideImage191x100","MSEdgeSingleCarousel178x100","BingDesktopSingleImage178x100","MSEdgeMediumHeadline172x100","MSNSingleCarousel169x100","MSNMediumHeadline155x100","MSNInArticle150x100","MSNSmallHeadline133x100","BingDesktopMultiImage133x100","BingMobileMultiImage133x100","SquareImage1x1","MSNDoubleCarousel93x100","DynamicSearch","ResponsiveSearch","ResponsiveSearchDesktop","ResponsiveSearchMobile","ResponsiveMmaLandscapeImage191x100","ResponsiveMmaSquareImage1x1","ResponsiveMmaVerticalImage1x2","ResponsiveMmaWideImage4x1","ResponsiveMmaInMsanMSEdgeSingleCarousel178x100","ResponsiveMmaInMsanMSNInArticle150x100","ResponsiveMmaInMsanMSNSmallHeadline133x100","ResponsiveMmaInMsanSquareImage1x1","ResponsiveMmaInMsanWideImage191x100","ResponsiveBingSearchText","ResponsiveOutlookMobile","ResponsiveOutlookWeb","LinkedInSingleImageDesktop","LinkedInSingleImageMobile","LinkedInSingleImageMediumRectangle","LinkedInSingleImageMobileInterstitial","LinkedInSingleImageNative","UnifiedAppAdsVideoHorizontalPlacement","UnifiedAppAdsM365OutlookPlacement","UnifiedAppAdsCasualGamesDimensionsPlacement","UnifiedAppAdsMSNDisplayPlacement","UnifiedAppAdsBingSearchPlacement","StructuredSnippetExtension","AdPreviewCalloutExtension","CalloutExtension","AdPreviewPriceExtension","PriceExtension","AdPreviewPromotionExtension","PromotionExtension","AdPreviewSitelinkExtension","SitelinkExtension","AdPreviewAdExtensionComponents","UAPAdExtensionType","SiteLink","Callout","Promotion","StructuredSnippet","Price","emptyTheme","core","withUAPLThemedStyles","WrappedComponent","getStyles","options","prefixClassName","useRawStyles","componentName","HOC","theme","themedStyles","createUseStyles","useStyles","displayName","hoistNonReactStatics","withThemedStyles","defaultAdsLabelStyles","getMmaInMsanV2MicrosoftEdgeCarousel201x100Styles","baseStyles","placementCard","placementImageContainer","placementTextContainer","placementAdsLabel","placementGradient","placementShortHeadline","placementLongHeadline","placementFinalUrl","placementDescription","placementCallToAction","placementBusinessNameWithAdsLabel","textDecoration","backgroundImage","opacity","getMmaInMsanV2MSANBanner2x1Styles","flexDirection","getMmaInMsanV2MSANRiver191x100Styles","widht","getMmaInMsanV2MSNCarousel169x100Styles","getMmaInMsanV2MSNPartnerStripe153x100Styles","getMmaInMsanV2MSNRestoday124x100Styles","getMmaInMsanV2MSANRectangle120x100Styles","getMmaInMsanV2MicrosoftEdgeMobile1x1Styles","getBingSearchTextPlacementStyles","_getBingSearchPlaceme","boxSizing","placementDescriptionContainer","flexGrow","placementLogoContainer","getBingSearchTextDesktopPlacementStyles","_getBingSearchPlaceme2","_excluded2","bingSearchDesktopPlacementRoot","getBingSearchTextMobilePlacementStyles","_getBingSearchPlaceme3","_excluded3","bingSearchMobilePlacementRoot","borderBottom","getOutlookMobilePlacementStyles","_getOutlookPlacementB","getOutlookWebPlacementStyles","_getOutlookPlacementB2","outlookWebCardRoot","transform","getLinkedInSingleImageDesktopStyles","placementCardHeader","placementCardPreview","placementCardFooter","placementLogo","placementCompanyName","placementPromoteText","placementIntroductoryText","placementHeadline","gap","letterSpacing","justifyContent","WebkitBoxOrient","WebkitLineClamp","textDecorationLine","getLinkedInSingleImageMediumRectangleStyles","placementCompanyMeta","placementHeader","getBoostWindowsSpotlight191x100Styles","placementCenterSection","placementSearchIconCenter","placementHotspotsCenterSection","placementTopRightSection","placementCameraIcon","placementTopLeftSection","placementSearchIconTopLeft","placementHotspotsLeftSection","placementWifiIcon","placementBatteryIcon","getDisclaimerStyles","styleOverrides","e","_ref2$palette","additionalLineDisclaimer","extend","popupDisclaimer","disclaimerCallout","getResponsiveSearchAdPlacementBaseStyles","placementContentContainer","placementInlineItems","getResponsiveSearchAdMobilePlacementStyles","_getResponsiveSearchA3","placementImage","getMmaInMsanV2RefreshedMSANRiver191x100Styles","placementInfoContainer","placementBusinessNameContainer","businuessAndLogoContainer","placementCallToActionAsLink","businuessAndAdChoiceContainer","adsLabelClassName","headChoiceIconClassName","adsLabelContainerClassName","textOverflow","getMmaInMsanV2RefreshedMSNRestoday124x100Styles","getMmaInMsanV2RefreshedMSNCarousel169x100Styles","getMmaInMsanV2RefreshedMicrosoftEdgeCarousel201x100Styles","borderImageSource","getMmaInMsanV2RefreshedMSNPartnerStripe153x100Styles","getMmaInMsanV2RefreshedMSANBanner2x1Styles","getMmaInMsanV2RefreshedMicrosoftEdgeMobile1x1Styles","getMmaInMsanV2RefreshedMSANRectangle191x100Styles","smallSizeHeadline","customizedArea","fontZize","borderBottomLeftRadius","getOutlookMobileRefreshedPlacementStyles","overflowX","unreadClassName","threeDot","descriptionWithAction","flexWrap","flexShrink","getOutlookWebRefreshedPlacementStyles","MMAPlacementCardImpl","isEnabled","mmaPlacementCardClassName","classnames","mmaRefreshedPlacementCardRoot","mmaPlacementCardRoot","mmaPlacementCardDisabled","target","rel","href","MMAPlacementCard","PlacementContentContainer","finalUrl","displayUrl","isClickDisabled","placementContentContainerClassName","AdLabelImpl","adLabelRefreshedRoot","adLabelRoot","AdLabel","BusinessNameWithAdsLabelImpl","businessName","showAdsLabel","showAdsIcon","rootClassName","businuessNameRefreshed","businessNameWithAdsLabelRoot","_TL_","alt","BusinessNameWithAdsLabel","GradientImpl","gradientClassName","placementCardGradientRoot","PlacementGradient","withLink","HoC","PlacementText","isMultiLine","placementTextClassName","MultiLineEllipsisText","PlacementHeadline","headlineText","placementHeadlineClassName","PlacementHeadlineWithLink","PlacementFinalUrl","placementFinalUrlClassName","PlacementFinalUrlWithLink","PlacementDescription","description","placementDescriptionClassName","PlacementAction","actionText","placementActionClassName","PlacementImage","enableCrop","previewImageAspectRatio","previewImageHeight","placementImageClassName","CroppedImageView","resizeImageHeight","Image","shouldFadeIn","AdditionalLineDisclaimer","disclaimer","useDefaultStyles","isEmpty","DisclaimerLayout","Link","first","FinalUrls","PopupDisclaimer","_useState","useState","_useState2","_slicedToArray","showCallout","setShowCallout","useRef","Title","ariaLabelledBy","getId","ariaDescribedBy","directionalHint","DirectionalHint","bottomLeftEdge","gapSpace","isBeakVisible","setInitialFocus","onDismiss","PopupText","disabled","BusinessNameWithLogo","showLogo","logo","logoHeight","ChoiceIcon","viewBox","fill","xmlns","d","fillOpacity","ChoiceIconBright","BusinessNameWithChoiceIcon","showBusinessName","showAdIcon","showChoiceIcon","showCallToAction","callToAction","showCallToActionAsLink","showBrightStyleChoiceIcon","showChoiceIconAhead","replace","CircleRightArrow","customizedClassName","largeIconRoot","arrowIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","ThreeDot","threeDotClassName","OutlookPcDesktopUnread","customizedUnreadClassName","OutlookMobileWebUnread","DescriptionWithAction","descriptionWithActionClassName","placementCallToActionClassName","placementCallToActionAsLinkClassName","AdPlacementMmaBase","finalUrlOrigin","placementData","showShortHeadline","shortHeadline","isMultiLineShortHeadline","showLongHeadline","longHeadline","isMultiLineLongHeadline","showFinalUrl","isMultiLineFinalUrl","displayFinalUrlOrigin","showDescription","isMultiLineDescription","showAdLabel","showGradient","showBusinessNameAdLabel","showDots","effectiveImageUrl","effectiveImageWidth","effectiveImageHeight","expandedPlacementCropping","previewHeight","imageBorderRadius","imagePreviewWidth","isValidUrl","URL","origin","placementDotsIcon","dotsIcon","AdPlacementMmaWideImage4x1","AdPlacementMmaLandscapeImage191x100","wordWrap","AdPlacementMmaSquareImage1x1","AdPlacementMmaVerticalImage1x2","AdPlacementMmaInMsanWideImage191x100","AdPlacementMmaInMsanMSEdgeSingleCarousel178x100","AdPlacementMmaInMsanMSNInArticle150x100","AdPlacementMmaInMsanMSNSmallHeadline133x100","AdPlacementMmaInMsanSquareImage1x1","AdPlacementMmaBaseV2","showSmallSizeHeadline","showBusinessNameWithLogoTop","showAdChoiceIconArea","showBusinessNameInAdChoiceArea","CustomizedComponent","customizedComponent","AdPlacementMmaInMsanV2MicrosoftEdgeCarousel201x100","withPermissions","props1","StyledBaseComp","AdPlacementMmaInMsanV2MSANBanner2x1","AdPlacementMmaInMsanV2MSANRiver191x100","props2","AdPlacementMmaInMsanV2MSNCarousel169x100","AdPlacementMmaInMsanV2MSNPartnerStripe153x100","AdPlacementMmaInMsanV2MSNRestoday124x100","AdPlacementMmaInMsanV2MSANRectangle191x100","AdPlacementMmaInMsanV2MicrosoftEdgeMobile1x1","AdPlacementImgExtWideImage191x100","AdPlacementImgExtMSEdgeSingleCarousel178x100","AdPlacementImgExtBingDesktopSingleImage178x100","AdPlacementImgExtMSEdgeMediumHeadline172x100","AdPlacementImgExtMSNSingleCarousel169x100","AdPlacementImgExtMSNMediumHeadline155x100","AdPlacementImgExtMSNInArticle150x100","AdPlacementImgExtMSNSmallHeadline133x100","AdPlacementImgExtSquareImage1x1","AdPlacementImgExtMSNDoubleCarousel93x100","AdPlacementImgExtBingDesktopMultiImage133x100","_ref2$images","imagesWithPadding","AdPlacementImgExtBingMobileMultiImage133x100","direction","carouselState","setCarouselState","handleSelect","selectedIndex","Carousel","activeIndex","onSelect","controls","wrap","Item","textShadow","bingDesktopHeaderImage","BingSearchPlacementBase","adExtensionContainerClassName","adExtensionContainer","AdPlacementBingSearchText","AdPlacementBingSearchTextDesktop","AdPlacementBingSearchTextMobile","OutlookPlacementBase","OutlookRefreshedPlacementBase","showThreeDot","showDescriptionWithAction","CustomizedUnreadComponent","customizedUnreadComponent","AdPlacementOutlookMobile","StyledComp","AdPlacementOutlookWeb","AdPlacementLinkedInSingleImageBase","companyPageName","userProfileImageSrc","introductoryText","headline","showHeader","showIntroductoryText","showfinalUrl","showFooter","showCompanyInFooter","showIntroductoryTextInFooter","renderCallToAction","Button","FluentProvider","webLightTheme","Card","CardHeader","CardPreview","CardFooter","AdPlacementLinkedInSingleImageDesktop","AdPlacementLinkedInSingleImageMobile","AdPlacementLinkedInSingleImageMediumRectangle","AdPlacementLinkedInSingleImageMobileInterstitial","alignSelf","AdPlacementLinkedInSingleImageNative","showfinalUrlInFooter","AppAdsBasePlacement","placementPreview","phoneInnerContent","getAppAdsBasePlacementStyles","borderTopRightRadius","borderTopLeftRadius","videoPlayerRoot","getAppAdsMobileStyles","_getResponsiveSearchA","_getAppAdsBasePlaceme","appAdsPlacementCard","appAdsStyles","flex","AppAdsMSNDisplayPlacement","msnPlacementImage","msnPlacementTextContainer","msnDescription","msnBusinessName","msnBusinessNameWithAdsLabel","_getAppAdsBasePlaceme3","_excluded4","customClassName","ResponsiveAdPlacementOutlookMobile","ResponsiveAdPlacementOutlookWeb","AppAdsM365OutlookPlacement","preview","_getAppAdsBasePlaceme2","previewContent","AdPlacementResponsiveSearchPropTypes","decoratorsData","imageExtension","showAdDisclaimer","showImageExtension","previewTexts","ResponsiveSearchAdPlacementBase","_props$previewTexts","AppAdsBingSearchPlacementBase","AppAdsBingSearchPlacement","AppAdsBingSearchPlacementText","AppAdsCasualGamesDimensionsPlacement","casualGamesBase","casualGamesHeadline","_getAppAdsBasePlaceme4","_excluded5","AppAdsVideoHorizontalPlacementInner","videos","videoRef","useEffect","load","kind","srcLang","default","AppAdsVideoHorizontalPlacement","ResponsiveMMAPlacementCard","ResponsiveAdPlacementMmaBase","imagePreviewHeight","finalImagePreviewHeight","ResponsiveAdPlacementMmaWideImage4x1","ResponsiveAdPlacementMmaLandscapeImage191x100","ResponsiveAdPlacementMmaSquareImage1x1","ResponsiveAdPlacementMmaVerticalImage1x2","ResponsiveAdPlacementMmaInMsanWideImage191x100","ResponsiveAdPlacementMmaInMsanMSEdgeSingleCarousel178x100","ResponsiveAdPlacementMmaInMsanMSNInArticle150x100","ResponsiveAdPlacementMmaInMsanMSNSmallHeadline133x100","ResponsiveAdPlacementMmaInMsanSquareImage1x1","ResponsiveAdPlacementBingSearchText","WindowsSpotlight191x100","hotspots","searchIcon","desc","uri","cameraIcon","wifiIcon","batteryIcon","AdPlacementBoostWindowsSpotlight191x100","AdPlacementBoostHeroImageCarousel","AdPlacementBoostProngFeed191x100","AdPlacementBoostCoachmark175x100","BoostTextAdPlacementBase","showSuggested","showDismissAction","placementSuggestedContainer","placementVectorIcon","vectorIcon","placementSuggestedText","placementDetailsContainer","placementActionContainer","placementDismissAction","AdPlacementBoostStartMenu","AdPlacementBoostActionCenter","AdPlacementBoostBanner","AdPlacementBoostDiscoverCard1x1","AdPlacementResponsiveSearch","AdPlacementResponsiveSearchDesktop","_getResponsiveSearchA2","AdPlacementResponsiveSearchMobile","AdPlacementDynamicSearchPropTypes","placementDisplayUrl","DynamicSearchAdPlacementBase","placementTextCardContainer","placementUrl","placementDisclaimer","AdPlacementDynamicSearch","VideoPlacementInner","videoPlayerRootClass","videoPlayerVertical","VideoPlacement","ContainerBase","titleText","isValid","onRenderHeader","onRenderPlacement","onRenderFooter","previewContainerClassName","containerHeaderClassName","containerTitleClassName","containerFooterClassName","placementContainerClassName","adPreviewContainer","adPreviewContainerError","adPreviewContainerHeader","adPreviewContainerTitle","adPreviewPlacementContainer","adPreviewContainerFooter","arguments","orange","UAPImageType","Image1x1","Image4x1","Image1x2","Image191x100","Image178x100","Image172x100","Image169x100","Image155x100","Image150x100","Image133x100","Image93x100","Image201x100","Image200x100","Image153x100","Image124x100","Image120x100","Image122x100","Image159x100","Image180x100","Image233x100","Image320x100","Image57x100","UAPVideoType","UAPPlacementType","PMax_Video","Boost_Start_Menu","Boost_Action_Center","Boost_Banner","Outlook_Text_Mobile","Outlook_Text_Web","Bing_Search_Mobile","Bing_Search_Desktop","Bing_Search_Text","Responsive_Outlook_Text_Mobile","Responsive_Outlook_Text_Web","Responsive_Bing_Search_Text","Responsive_Boost_Start_Menu","Responsive_Boost_Action_Center","Responsive_Boost_Banner","Responsive_Search","Responsive_Search_Desktop","Responsive_Search_Mobile","Dynamic_Search","Unified_App_Ads_Bing_Search_Text","Unified_App_Ads_M365_Outlook","_UAPLPlacementMetaLis","PT","imageType","hasMultiImages","Image4x5","getPlacementListMetaDataByImageType","imageTypes","types","values","imgType","flatten","uniq","mergePlacementSets","prevPlacementSets","curPlacementSets","newPlacementSets","_loop2","curPlacementSet","i","prevPlacementSet","_mergePlacementList","prevPlacementList","curPlacementList","newPlacementList","_loop","curPlacement","prevPlacement","mergePlacementList","_mergePlacementList2","isListChanged","mergeReducerStates","prevState","curState","prevPreviewState","prevHasDatachanged","prevActiveImageIndices","curPreviewState","curHasDatachanged","curActiveImageIndices","_mergePreviewImageAnd","prevImageAndPlacementSets","curImageAndPlacementSets","prevImageAndPlacementSetsCopy","newImageAndPlacementSets","_loop3","curImageAndPlacementSet","prevImageAndPlacementSet","prevPreviewImage","curPreviewImage","isPreviewImageChanged","_mergePlacementSets","_mergePlacementSets2","isPlacementSetsChanged","splice","mergePreviewImageAndPlacementSets","_mergePreviewImageAnd2","isPreviewStateChanged","newPreviewState","isActiveImageIndicesChanged","AdPreviewModelActions","ADPREVIEW_INIT_STATE","adPreviewReducer","state","action","actionType","actionData","newState","forceToReset","_mergeReducerStates","_mergeReducerStates2","mergedState","imageIndex","imageAndPlacementSets","placementSet","updatePlacementCorpSettings","updatePlacementCorpSettingsByImageType","newPreviewImages","newIndices","sortBy","getCenterCroppedSettings","originalBoxToCrop","originalRatio","Math","abs","scaledSourceWidth","round","centerX","scaledSourceHeight","middleY","_ref$useOriginalImage","useOriginalImageSize","maxCropBox","aspectRatios","ratio","pickSingleImageFromImageList","selectedImage","getImageInfo","pLoadedImage","Promise","resolve","reject","onload","naturalWidth","naturalHeight","onerror","Error","p$ret","loadedImage","manualPlacementCroppings","err","getPlacementSet","placementSetParam","_placementSetParam$ge","getDefaultPlacementsCropping","getPlacementListMetaData","defaultCroppingList","manualCropping","getImageAndPlacementSetList","placementSetsParam","concurrency","curPlacementConfigRef","_useAdPreviewReducer","initState","_useReducer","useReducer","_useReducer2","adPreviewModel","dispatch","_ref10","updateImageCropping","updatePlacementCropping","_ref11$imageIndex","updatePlacementCroppingByImageType","_ref12","_ref12$imageIndex","setActiveImageIndices","_len","indices","Array","_key","useAdPreviewReducer","updateImageCroppingState","updatePlacementCroppingState","updatePlacementCroppingByImageTypeState","newImageCropping","imgAndPlacementSets","newPlacementCropping","_ref9$imageIndex","_ref10$imageIndex","prevModelConfigRef","initializeModel","pNewModelConfig","newModelConfig","_newModelConfig","_toArray","firstConfig","otherConfigs","slice","firstImageInfo","firstPreviewImage","imgInfo","otherPreviewImages","getPlacementSetsViewModel","activeImagesOnly","finalPlacementSets","pickedPreviewImageListState","pImage","_ref13","placementSetViewModel","find","_ref14","imageViewModel","fpIndex","multiImagePlacementSetsViewModel","activeMultiImagePlacementSetsViewModel","singleImagePlacementSetsViewModel","_ref15","_ref16","activeSingleImagePlacementSetsViewModel","_ref17","_ref18","firstImage","allImages","_ref20","activeImages","_ref21","_ref22","resetReducerStatesWrapper","singleImagePlacementSets","UAPPlacementTypeAlias","MMA","WideImage","LandscapeImage","SquareImage","VerticalImage","MSAN","MSEdgeSingleCarousel","MSNInArticle","MSNSmallHeadline","MSANV2","MSEdgeCarousel","MSEdgeMobile","MSANBanner","MSANRiver","MSANRectangle","MSNCarousel","MSNPartnerStripe","MSNRestoday","PMax","AudienceSquareImage","AudienceWideImage","MMALandscapeImage","MMAVerticalImage","MMAWideImage","MMAV2MSEdgeCarousel","MMAV2MSNSingleCarousel","MMAV2MSNRestoday","MMAV2MSNPartnerStripe","MMAV2MSNRiver","Video","PMaxV2","Boost","HeroImageCarousel200x100","HeroImageCarousel122x100","HeroImageCarousel159x100","HeroImageCarousel180x100","HeroImageCarousel233x100","HeroImageCarousel320x100","HeroImageCarousel57x100","WindowsSpotlight","DiscoverCard","StartMenu","ActionCenter","Banner","Prong1Prong2Feed","Coachmark","ImageExt","MSEdgeMediumHeadline","MSNSingleCarousel","MSNMediumHeadline","MSNDoubleCarousel","BingDesktopSingleImage","BingDesktopMultiImage","BingMobileMultiImage","Outlook","Mobile","Web","BingSearch","Desktop","Responsive","Dynamic","LinkedIn","Landscape","SingleImageDesktop","SingleImageMobile","Square","Vertical","UnifiedAppAds","VideoHorizontal","M365Outlook","MSNDisplay","CasualGamesDimensions","BingSearchText","All","AllV2","_ref$extraCheck","UAPImageExpansionType","None","Outpainting","SmartCrop","SingleColorPadding","getCropSettingsFromRoi","_ref2$useOriginalImag","expandedInfo","setROIInfo","_expandedInfo","expandedImageCropSettingsOriginal","expandedImageCropSettingsMap","cropSetting","originalImageCropSettingsMap","CenterCrop","expandedCropSetting","expandedImageInfo","PlacementType2Component","_PlacementType2Compon","_excluded7","_excluded6","getAdPlacementComponent","onRenderEmptyView","gridLayoutContainerClassName","emptyView","placementComponentList","AdPlacementComponent","newPlacement","adPreviewGridLayoutContainer","layoutContainerClassName","_ref$hasContainer","hasContainer","placementComponent","_ref3$hasMultiImages","adPreviewLayoutContainer","bsProps","bsClass","CustomCarousel","carouselRef","indicators","InjectedControls","carouselWrapperClassName","carouselInstance","setCarouselInstance","_useMemo","renderControls","_useMemo2","leftArrowControl","rightArrowControl","BsCarousel","renderIndicators","Caption","setActiveIndex","customCarouselRootClassName","customCarouselLayoutStyles","customPlayPauseButtonsStyles","startAutoRotating","onActiveIndexChange","disableDefaultStyles","useCustomCarousel","customCarouselWrapperClassName","setIndex","curActiveIndex","curSetIndex","_useState3","_useState4","setDirection","_useState5","_useState6","auto","setAuto","_useState7","_useState8","startAutoRotateListner","setStartAutoRotateListner","autoRotateListener","onRenderCarouselHeader","clearAutoRotateListener","clearTimeout","currentIndex","previewCount","nextIndex","setTimeout","start","stop","CarouselComponent","moreCarouselProps","customCarouselWrapper","carouselLayoutContainer","PlayPauseButtons","newI18n","isPlaying","play","pause","playPauseButtons","nextLabel","prevLabel","adPreviewCarousel","baseCarouselLayoutStyles","_ref8","resetOn","LayoutComponent","extensionData","structuredSnippetExtensionContainer","Category","Texts","join","calloutExtensionContainer","priceExtensionContainer","Description","Currency","Occasion","PromotionType","PromotionItem","PromotionDetail","DateRange","hasOccasion","hasPromotionDetail","hasDateRange","promotionExtensionContainer","star","onRenderTile","distUrl","DisplayText","Description1","Description2","DestinationUrl","indexOf","tiles","next","sitelinkExtensionContainer","WhitePadding","Unknown","paddingColor","hasQuery","srcWithQuery","queryParams","ROIInfoObj","JSON","parse","ImageExpansionType","ThumbnailWidth","PaddingImageWidth","ThumbnailHeight","PaddingImageHeight","PaddingColor","ImageCropSetting","cs","sourceHeight","sourceWidth","sourceX","sourceY","croppingType","OriginalImageCropSetting","UnifiedAppWizard","storeType","wizardConfig","perfMarker","instrumentation","InstrumentationContext","wizardName","wizardPerfMarker","createChild","setClarityTag","FluentSwitcherContext","Provider","PerformanceMarkerProvider","immediateDone","Scenario","Activity","Wizard","WizardPerfMarker","wizardMarker","LayoutContainer","template","DefaultTemplate","Layout","component","StepContainer","SaveBlocker","CancelWizardDialog","getIndicatorsWidth","getAssetStepStyles","container","imageExperience","formContainer","previewerContainer","adPreview","windowsAdPreview","transformations","indicatorsWidth","useAssetsStepStyles","useResponsiveStyleWrapper","flowToPlatform","FLOWS","IOS","platforms","ANDROID","WINDOWS","unifiedAppAdsSurfaces","VideoGaming","M365","MsnDisplay","MicrosoftCasualGames","adPreviewConfig","AssetGroupNameSection","flow","isValidating","onDataChange","campaign","onRenderAdGroupNameLabel","TextTitle","titleKey","topicKey","ValidatedFixedPanel","icon","GroupInfoImg","attentionBeaconProps","getExtraProps","getPanelErrorProps","AppSetting","CampaignValidationGroup","StoreAppSelector","platform","isMounted","placeholderText","readOnly","AppSettingReadOnly","isCountryRefinementEnabled","ServerValidatedRemainingCharsValidatedTextField","placeholder","validationProps","AssetGroup","onRenderLabel","AssetsSection","imageExperiencePortalContainerState","transparentLogoExperiencePortalContainerState","imageExpereienceProngPortalContainerState","imageExperienceSpotLightPortalContainerState","prongImageExperienceAddNewImageCallback","imageSpotlightExperienceAddNewImageCallback","transparentLogoContainerRef","logosContainerRef","imageExperienceAddNewImageCallback","imagesContainerRef","imageSpotlightContainerRef","imageProngContainerRef","setAddNewDescriptionCallback","setAddNewShortHeadlinesCallback","mergedI18n","assetPanels","setSelectedVideoId","selectedVideoId","isLoading","useWizardService","context","wizardData","Headlines","Descriptions","headlinesCardSummaryDetails","getHeadlinesCardSummaryDetails","descriptionsCardSummaryDetails","getDescriptionsCardSummaryDetails","_useCollapseState","useCollapseState","_useCollapseState2","allSections","allSectionsExpandedSections","setAllSectionsExpandedSections","_useCollapseState3","PANEL_KEYS","START_END_DATES","_useCollapseState4","moreSettings","moreSettingsExpandedSections","setMoreSettingsExpandedSections","allAssetsExpand","collapseExpander","setActiveKeys","fetch","useVideoAdsCopilot","copilotFetchTaskManager","TaskManager","Subtitle1","Collapse","allPanelItems","skipItemsTypeCheck","activeKeys","checkItems","ImagesPanel","setAddNewImageCallback","ImageAssetsImg","Images","IMAGES","BaseImagePanel","iconAltText","imagesData","ImageSPOTLIGHT","containerRef","portalContainerState","addNewImageCallback","maxUploadNum","SPOTLIGHT_IMAGES","ImagePRONG","PRONG_IMAGES","LogosPanel","logos","logoExperiencePortalContainerState","LOGOS","ShortHeadlinesPanel","TextAssetsImg","featureName","isOptional","SHORT_HEADLINES","DescriptionsPanel","DESCRIPTIONS","VideoPanel","isVideoRequired","skipQualityValidation","VIDEOS","AUDIENCE_SIGNAL","AudienceSignalSection","AudienceSignalPanel","expand","size","weight","DateSettingsPanel","UnmappedFormErrors","withControlErrorHandling","OriginalUnmappedFormErrors","AssetsStepFormInternal","onDataChangeProp","error","scope","useIsMounted","serverContext","ServerContext","_useContext","RecommendationContext","recommendationContext","ImageSPOTLIGHTContainerRef","ImagePRONGContainerRef","portraitContainerRef","stylingProps","useResponsiveStyles","cid","aid","setImageExperiencePortalContainerState","ImageSPOTLIGHTExperiencePortalContainerState","setImageSPOTLIGHTExperiencePortalContainerState","ImagePRONGExperiencePortalContainerState","setImagePRONGExperiencePortalContainerState","_useState9","noop","_useState10","setImageExperienceAddNewImageCallback","_useState11","_useState12","setProngImageExperienceAddNewImageCallback","_useState13","_useState14","setImageSpotlightExperienceAddNewImageCallback","_useState15","_useState16","addNewDescriptionCallback","_useState17","_useState18","addNewShortHeadlinesCallback","_useState19","_useState20","setTransparentLogoExperiencePortalContainerState","_useState21","previewImageId","cropImageObj","_useState22","previewTransparentLogoSharedState","setPreviewTransparentLogoSharedState","_useState23","_useState24","previewImageSPOTLIGHTSharedState","setPreviewImageSPOTLIGHTSharedState","_useState25","_useState26","previewImagePRONGSharedState","setPreviewImagePRONGSharedState","_useState27","_useState28","appLogo","setAppLogo","assetGroup","CallToAction","LongHeadlines","_ref5$videos","TransparentLogo","result","onReset","prevData","ImageList","ImageAssets","Headline0","Headline1","Headline2","LongHeadline0","Description0","onUpdateImageList","_ref6$serverErrors","serverErrors","_ref6$systemErrors","systemErrors","legacyGlobalI18n","window","globalLegacyI18n","get","legacyI18n","buildLegacyI18n","ValidationStringMap","legacyI18nOfListingGroup","mergedTempI18n","mergeI18n","saveFailed","useFormService","isSaving","matchStepState","STEP_STATES","SAVING","isCanceling","CANCELING","PerformanceMarkerContext","_useState29","previewLogoId","editingPlacementType","_useState30","previewImagesSharedState","setPreviewImagesSharedState","postAssetEventLog","isArray","finalUrlFromApp","AppId","AppUrl","_useCopilot","useCopilot","addNewLongHeadlinesCallback","currentCTA","finalUrls","FinalUrlForRecommendation","enableCopilotRecommendations","feature","AssetEventFeature","PMAX","assetScenario","AssetScenario","CREATE_WORK_FLOW","copilotBanner","suggestionPoller","imageExperienceComponents","ValidatedImageExperienceWrapper","imagesContaineRef","logosContaineRef","updateFinalUrlCallback","isLogoEnabled","updatePortalContainerState","initialValue","UAPLPMaxIntegration","showCopilotOptionForImage","IsBackgroundSceneEnabled","imageAssetsOptional","transparentLogoComponent","isBoostPortraitEnabled","customMaxImageCount","imageListPropName","isStoreAppTransparentLogo","isCombinedMsanAndMmaAspectRatios","isCopilotRecommendations","validatedImageSPOTLIGHTExperienceWrapper","isStoreAppSpotLight","validatedImagePRONGExperienceWrapper","isDisplayPlus","isStoreAppProng","previewProps","updateImageList","AppTitle","autoHeightCarousel","customSurfaceKeys","PerfMaxResponsiveAdPreviewUAPL","logoPreviewEnabled","windowsAppAdsPreivew","AppAdsPreview","union","hideHeaderButtons","isAppCampaignPreview","showStart","IconUrl","getGenericImageObjectAsync","iconImage","ActuationGroup","actuationProps","isActive","AttentionBeaconGroup","FormErrorGroup","formErrorProps","errors","showAllValidationErrors","StepHeader","SystemErrors","AssetGroupValidationGroup","CopilotRepositoryProvider","campaignId","locale","getLocale","recommendationType","enableLogoAndCTA","AssetsStepForm","withBannerService","withScope","AssetsStepShell","getAssetsPanels","AdAssetsFormShimmer","AdAssetsPreviewerShimmer","platformToAppStore","Windows","Android","iOS","getBiddingScheme","Type","ManualCpc","ManualCpi","getDefaultCampaignData","platformNamePrefix","cnMarketAccount","Name","generateNameSuggestionSuffix","floor","random","Status","Languages","getDefaultLanguagesViewModel","Budget","Amount","getBudgetRange","CurrentAccount","CurrencyCode","Daily","Default","BiddingScheme","CampaignType","CampaignSubType","locationTargets","getDefaultLocationTargetsViewModel","AppStore","AppPlatform","AppStoreId","TrackingUrlTemplate","useAssetsStepRepository","scenarioContext","ScenarioContext","_useWizardService","send","activity","ActivityContext","versionForLog","getLogVersion","logger","getLoggerWithoutPageInfo","_scope$values","ScopeContext","_useAppStoreRepositor","useAppStoreRepository","searchAppById","oDataConfig","videoRepository","createVideoRepository","folderRepository","createFolderRepository","imageRepository","createImageRepository","uploadVideoIfNeeded","videoPromises","video","uploadVideoMetadata","videoMetadata","newVideoFromMTObject","newVideo","_state$context$wizard","savedAssetGroup","savedCampaign","assetGroupId","saveCampaignsPromise","loadCampaignAsViewModel","assetGroupPromise","loadAssetGroupForWindowsStore","loadAssetGroupWithVideos","savedAssetGroupPromise","_ref2$storeFinalUrl","storeFinalUrl","IsOptional","BusinessName","UrlRulesOption","URL_RULES_OPTIONS","getDefaultAssetGroup","CampaignSettings","settings","appInfo","errorData","trace","save","initialData","assetGroupToSave","campaignToSave","initialAssetGroup","Permissions","initialCampaignViewModel","IsDomesticSimplifiedChineseEnabled","saveCampaign","scenario","activityLogger","createActivity","createDefaultCampaign","signal","WIZARD_EVENTS","UPDATE_WIZARD_DATA","cacheManager","invalidate","assetGroupChanges","originalAssetGroup","saveContext","saveAssetGroup","AssetsStepSettingsShell","getAssetsSettingsPanels","getLocationTargetingStyles","useTargetingStepStyles","TargetingStepShell","_ref$data","targetingInfo","bundleCountries","bundleLocationCriterions","_ref3$campaign","_ref3$assetGroup","LOCATIONS","LANGUAGE_TARGET","expandedSections","setExpandedSections","targetingExpand","errorMapper","apiErrorMapper","LocationTargetingSettingPanel","LanguageTargetPanel","PlacementTargetPanel","PANEL_KEYS_V2","PLACEMENT_TARGET","CampaignDetailsForm","campaignInfo","allSectionsKeys","initiallyExpandedSectionsKeys","isBidStrategyCPC","getBidStrategyOptions","MANUAL_CPC","MANUAL_CPA","CampaignNamePanel","CAMPAIGN_NAME","AppDetailsPanel","APP","BidStrategyPanel","bidStrategyComponentOptions","bidStrategyOptions","hideAdditionalDetails","biddingBannerOptions","isCampaignCreation","BID_STRATEGY","BidValuePanel","bidValueType","BID_VALUE","BudgetPanel","BUDGET","AdSchedulePanel","AD_SCHEDULE","UrlOptionsPanel","urlParameterOptions","showFinalUrlSuffix","showCustomParameters","isTrackingUrlTemplateRequired","isWithError","URL_OPTIONS","ALL_SECTIONS_KEYS","INITIALLY_EXPANDED_SECTIONS_KEYS","CampaignDetailsStepShell","CampaignDetailsEditStepShell","useCampaignDetailsStepRepository","_useBudgetModel","useBudgetModel","budgetModelToViewModel","budgetViewModelToModel","isBudgetInputValid","_ref2$isBudgetAndBidd","isBudgetAndBiddingEnabled","loadPromises","loadCampaign","readLocationCriterions","bundleCountriesAndLocationCriterions","loadBundleCountries","dayTimeCriterions","readDayTimeCriterions","campaignData","modelToViewModelForCampaign","campaignModel","status","locationCriterionsModel","dayTimeCriterionsModel","commonCampaignData","ManualCPC","ManualCPI","budgetAmount","bidStrategy","isBudgetValid","isMarketingMetricValid","savePromises","campaignResults","BudgetStepShell","budgetInfo","wizardState","allExpandedSections","expandSections","useSummarySchemaData","timeDisplayType","setTimeDisplayType","DynamicPermissions","dynamic","loadedStoresData","savedProductFilter","savedListingGroup","getFlowFactors","preferencesService","_preferencesService","initialize","isTwelveHourDisplay","findByName","Data","locations","currentLevelSettings","currentLocations","loc","SelectionStatus","location","campaignName","assetGroupName","appName","appPlatform","autoGeneratedAssets","finalUrlExpansionOptOut","finalUrlExpansions","autoGeneratedTextOptOut","autoGeneratedImageOptOut","budget","currencyCode","bidValue","costPerSale","costPerSaleOptOut","conversionGoals","locationTargeting","targetOption","languages","audienceSignal","AudienceGroup","searchThemes","AssetGroupSearchThemes","shouldFetchFromMT","headlines","descriptions","adScheduleCampaign","startDate","StartDate","endDate","EndDate","adSchedules","dayTimeRanges","useSearcherTimeZone","AdScheduleUseSearcherTimeZone","urlOptions","FinalUrlSuffix","UrlCustomParameters","urlRules","path1","Path1","path2","Path2","mobileFinalUrls","MobileFinalUrls","AssetGroupUrlTargets","newCustomerAcquisition","newCustomerAcquisitionOptOut","buildSchemaData","SummaryStepShell","schemaData","appPlatformString","currentFlow","getCurrentFlow","onAssetsHeaderActionClick","NAVIGATE_TO","stepId","STEP_PATHS","ASSETS","onTargetingHeaderActionClick","TARGETING","onCampaignSettingsHeaderActionClick","CAMPAIGN_DETAILS","onBudgetSettingsHeaderActionClick","hd1","hd2","hd3","targeting","campaignSettings","buildSchema","SummaryShimmer","currentSteps","summaryPageComponentTypes","CAMPAIGN_DETAILS_EDIT","ASSETS_GROUP_EDIT","SUMMARY","UnifiedAppCampaignStepsConfig","view","repository","assetGroupResults","updatedCampaign","newCampaign","isPublishing","updateAssetGroupAndCampaignStatus","UnifiedAppEditCampaignSettingsStepsConfig","UnifiedAppEditAssetGroupSettingsStepConfig","SaveAndPublish","isBlocking","FETCHING","LOADING","onNextClicked","SAVE_AND_EXIT","buttonText","getCurrentStepId","PrimaryButton","SaveAsDraft","_useWizardService2","NextButton","_useWizardService3","SAVE_AND_NEXT","BackButton","_useWizardService4","onBackClicked","BACK","UnifiedAppCampaignFooter","nextButtonText","nextDisabled","backButtonText","cancelButtonText","hideBackButton","isFirstStep","getIsFirstStep","isLastStep","getIsLastStep","tokens","childrenGap","CancelButton","EditFooter","SaveAndExitButton","StepList","currentStepId","displayMode","useResponsiveSize","Constants","ResponsiveSizeBreakpoints","stepListConfig","getStepListConfig","getDefaultOnItemClickFn","step","toStep","includes","steps","firstSubStep","s","isBehind","ResponsiveStepList","getOnItemClickFn","localStorageKey","LocalStorageKeys","UnifiedAppCampaignAdType","useLocalStorageStoreType","defaultStoreType","unifiedAppCampaignStoreType","appConfig","localStorage","supportsStorage","set","useCampaignStoreType","appSettings","APP_STORE_TO_STORE_TYPE","UnifiedAppCampaignWizard","withSiteMap","withRecommendationContext","siteMap","StoreTypes","AndroidPlayStore","wizardFlow","STORE_TYPE_TO_FLOW","routeToNavigateToWhenDone","getRoutePathById","initialStep","initialFlowFactors","initialWizardData","actions","onDone","onExited","UnifiedAppEditCampaignSettingsWizard","currentCampaign","UnifiedAppEditAssetGroupSettingsWizard","ErrorMessages","messages","stopPropagation","onValidate","results","isDirty","ValidationGroup","Campaign","AppAdPreviewControls","onSurfaceChange","onPlacementFilterChange","surfaceChoice","setSurfaceChoice","surfaceMap","Store","placementFilterByPreviewControlState","previewTemplateType","surfaceList","Pivot","onLinkClick","itemKey","PivotItem","headerText","getAdPreviewStyles","white","visibility","merginTop","carouselLayoutClassName","carouselControlsMsn","carouselControlsOthers","customCarouselRoot","carouselLayoutHeader","geCarouselStyleForMsan","previewCarousel","bottomCarouselNavigation","geCarouselStyleForOthers","placementCustomizationPredicate","currentAdData","_React$useState","_React$useState2","adData","setAdData","isAdDataUpdated","newAdData","debouncedSetAdData","cancel","getImageIndexFromId","isPortrait","getPreviewImageIndex","idRequestedByImageExperience","firstImageIndex","imagesToDisplay","previewImageIndex","flat","onAddAspectRatio","imagePlacement","isImageListUpdatedByPreview","onRemoveAspectRatio","onEdit","truncatedAdData","validAdData","substring","shortHeadlineMaxLength","longHeadlineMaxLength","descriptionMaxLength","func","placementFilter","setPlacementFilter","getFirstElement","getLogo","imageArr","PreviewCarouselLayout","usePreviewCarouselLayout","groupType","AdPlacementsGroupType","appAdStart","appAd","placementFilterPredicate","customDefaultImage","previewPlaceholder","surface","getCarouselControlsAndIndicatorsStyleBySurface","newPlacementFilter","headerButtonProps","getIsRequiredByIndex","enableAutoPlay","whitelistedSchemaPropertyKeysForModel","bulkModelToViewModelForCampaign","originalCampaignViewModel","pick","isString","parseInt","bulkModelToViewModelForLocationTargets","locationTargetsModel","CampaignCriterions","bulkModelToViewModelForDayTimeTargets","criterions","bulkUpsertCampaignSettingsEntityErrorMap","getBulkUploadErrorType","ERROR_ENTITY","CampaignLocation","CampaignRadius","CampaignNegativeLocation","CampaignLocationIntent","CampaignDayTimeCriterion","campaignViewModel","viewModelToBulkModelForCampaign","viewModelToBulkModelForLocationTargets","adSchedulesModel","viewModelToBulkModelForAdSchedules","modelToSave","createOrUpdateCampaign","bulkOrSystemError","isBulkWrappedResponse","entity","filteredErrors","removeReferencedEntityInvalidIdErrors","modelToViewModelForBulkErrors","console","warn","unexpectedBulkErrorToString","genericApiError","saveAssetGroupAndLinkedData","roasMtToUI","roas","localizeBudget","useLocalizeBudget","_usePreference","usePreference","preferenceNames","SelectedCurrency","currencyPreference","bidValueCpc","bidValueCpi","cpa","parseFloat","isInitialAdditionalDetailsChecked","currency","parseDecimal","getStylesFunction","getResponsiveStyles","WindowsAppStore","IosAppStore","AppStoreTypes","defaultPanels","panels","parseFileName","nameWithExtension","nameWithoutExt","ext","lastIndexOf","FilePicker","readFile","fileObjects","onFileRead","showErrors","onFileSelected","maximumFileSizeMB","isReachFileSizeLimit","getReachFileSizeLimitErrorMessage","selectedFiles","filePicker","fileIndex","selectedFilesCount","errorArr","fileObj","fileSizeMB","toFixed","reachLimit","handleDraging","isDraging","setState","isFileDraging","enableMultiple","allowedFileExtensions","showExtensionError","filePickerOptions","isNative","displayFilePath","useButton","BackboneFilePicker","on","render","remove","hide","testRef","bind","_this$props2","enableDrag","hideDescription","fileDraggerLabel","fileDraggerTip","fileDraggerDropDescription","useLargeStyling","fileButton","FileDragger","onReadFile","allowedFileExtension","onInvalidExtension","dropDescription","dragging","readFileAsDataURLAsync","file","reader","FileReader","addEventListener","readAsDataURL","MaximumImageFileSizeMB","MaximumVideoFileSizeMB","allowedVideoFileExtensions","defaultAllowedImageExtensions","ImageFilePicker","args","onFileReadInternal","imageSources","maximumFileSize","fileSize","errorLinkText","errorTopic","isMultimediaAd","isAudienceAd","LearnMoreLink","linkText","topic","_this$props3","minimumSize","maxCount","VideoFilePicker","isVideo","imageItemBox","imageContent","objectFit","uploadPreviewStyle","uploadPreviewContainer","uploadTitle","imagePreviewContainer","scrollBar","neutralLighterAlt","imageItemBoxRight","imageItemErrBox","imageName","progressBox","progressLine","statusIcon","completeIcon","green","transition","ongoingIcon","errorIcon","errorMsg","imageSize","UploadPreviewWithCustomPreview","assetList","PreviewComponent","showTitle","getFileSize","fileSizeStr","normalInfoBox","Progress","progressPercentage","progress","uploadingNum","min","previewComponentClasses","imageContentText","exceedMaxUploadNum","errorInfoBox","SimpleImagePreview","UploadPreview","BarUploadProgress","uploadProcessText","uploadedBytes","totalBytes","CircleUploadProgress","getCircleProgressStyle","circle","RadialProgress","UploadProgress","updateProgress","setProgress","uploadProgressBoundary","evt","boundary","loaded","total","updateFilePreviewArrayUploadProgress","previewArr","previous","generatePreviewArray","_ref3$files","files","fileSources","_ref3$customizedOptio","customizedOptions","source","validateImageAsync","imageSource","minimumWidth","minimumHeight","validateImageSyncAsyncWithDimensionParams","validateVideoAsync","defaultProtocols","buildUrl","_ref$protocol","protocol","_ref$url","_ref$protocols","protocols","prefix","parseUrl","regexResult","RegExp","exec","UrlEditor","_React$Component","onUrlChange","onChange","onUrlPartChange","rawInput","_parseUrl","newUrl","newProtocol","fullUrl","buildFullUrl","trim","onProtocolPartChange","_parseUrl2","_this$state","containerClassName","Select","selectClassName","ariaProtocolLabelledBy","ariaProtocolLabel","option","Input","inputClassName","ariaUrlLabelledBy","ariaUrlLabel","UrlEditorValidationAdapter","AdapterFactory","valueToInject","UrlEditorWithValidation","withError","withValidation","UrlEditorForArray","setUrl","urlSchema","properties","urls","isValidCustomUrlProtocol","test","doesUrlContainUnsafeCharacters","UrlLengthLimit","pathLengthLimitErrorMessages","pathLengthLimit","makeStyles","urlInputContainer","shorthands","urlInput","urlProtocol","customUrlProtocol","urlPath","UrlPathFluent","_value","urlDomain","getDomain","onPathChange","path","newValue","validatePath","onPath1Change","event","onPath2Change","mergeClasses","URL_COLON_SLASH_SLASH","DEFAULT_URL_PREFIX","getUrlPrefixAndDestination","defaultUrlPrefix","getUpdatedFullUrlOnPrefixUpdate","urlWithoutPrefix","newPrefix","slash","getUpdatedFullUrlOnTextUpdate","urlPrefix","_getUrlPrefixAndDesti","_getUrlPrefixAndDesti2","destination","urlPrefixOptions","UrlInputFluent","additionalValidation","prepopulateUrl","dropdownOptionAriaLabel","propertyKey","validateOnRender","additionalProperties","textFieldAriaLabel","enableSpecialCharactersValidation","hideProtocol","selectedOptionText","validateAndUpdateUrl","currentURL","finalUrlValidatorError","requiredUrlProtocolAndDomain","urlLengthLimit","lengthLimit","getUrlProtocolAndDomain","validateAdUrl","stringify","onUrlPrefixChanged","newItem","optionValue","onCustomUrlProtocolChanged","onTextChange","contentAfter","Dropdown","onOptionSelect","selectedOptions","Option","withNoProtocol","urlWithProtocol","validateSpecialCharacters","urlPathStyle","flexFlow","TextField","isEmptyUrl","_getUrlPrefixAndDesti3","dest","customizedValidation","suffix","selectedKey","grow","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","date","formattedValue","metricName","escape","call","filterLocationData","granularity","metric","latitude","longitude","VIEWS","VIEW_STRINGS","MAP","TABLE","LOCATIONS_PER_PAGE","locationGranularity","country","county","stateOrProvince","city","postalCode","METRIC_STRINGS","Clicks","Impressions","CTR","AverageCPC","Spend","TopImpressionRatePercent","AbsoluteTopImpressionRatePercent","ConversionsCredit","PartialConversionRate","PartialConversionCPA","AdvertiserReportedRevenue","RevenueOnAdSpend","METRIC_FULL_STRINGS","bubbleColorForVNext","createPushpinOption","locationInfo","radius","svg","getPushPinIcon","anchor","x","y","roundClickableArea","formatLocationData","locationData","dateRange","maxValue","formatMetric","Latitude","Longitude","pushpinOption","max","getCustomPushpin","pinOption","Maps","Location","Pushpin","Point","formatDate","end","useTopLocationsData","willFetchData","willRender","setLocations","setIsLoading","setTopLocationValues","fetchCountryData","fetchStateOrProvinceData","fetchCountyData","fetchCityData","fetchPostalCodeData","fetchLocationData","countryData","countryLocationData","CountryLatitude","CountryLongitude","isUSorCanada","stateOrProvinceData","stateOrProvinceLocationData","countyData","countyLocationData","cityData","cityLocationData","postalCodeData","postalCodeLocationData","useMetricSelectorStyles","iconContainer","colorPaletteGreenBackground2","colorStatusSuccessForeground1","button","lineBreak","MetricSelector","onMetricChange","Menu","MenuTrigger","disableButtonEnhancement","Tooltip","relationship","MenuButton","MenuPopover","MenuList","MenuItem","useFooterStyles","footer","Footer","showPagination","paginationConfig","campaignType","onNext","onPrevious","useNoLocationsStyles","imageContainer","flexBasis","NoData","fit","Subtitle2","Body1","rowElement","line","mapElement","TableShimmer","Shimmer","shimmerElements","MapShimmer","useTableStyles","TopLocationsTable","rowsToDisplay","locationsPerPage","getPageLocations","Table","sortable","TableBody","TableRow","TableCell","useMapStyles","backdropFilter","TopLocationTarget","LocationTarget","constructor","topLocation","super","GeoPoint","ExpandedName","TARGETING_TYPE","Top","TopLocationsMap","mapRef","l","onGetTooltipHtmlContent","locationTarget","BingMapsView","usePaginationConfig","ceil","cardId","useCardStyles","wideContainer","wideContentWrapper","TopLocationsCardInternal","headerState","perfMarkerUtils","done","hasLocations","contentArea","isWideMode","viewOption","TopLocationsCard","BingMapsContextProvider","campaignApiServiceRoot","ServicesEndpoints","CampaignAPI","CampaignAPIPath","campaignApiToken","Token","bingMapsApiKey","getDisplayName","withBingMapsContext","preferenceFromServer","patchPreference","preferenceService","PreferenceContext","preferences","cardPreferences","cards","currentCardPreferences","card","initMetric","setMetric","newMetric","preferencesData","useViewSelectorStyles","WIDE_MODE_WIDTH","TopLocationViewSelector","dimensions","onViewSelected"],"sourceRoot":""}